增加对1,2,3,7,10.20等非单据类型的保存时执行处理(把每行参数拼接一起)
| | |
| | | * 保存时执行的存储过程的存储过程参数列表 |
| | | */ |
| | | private String DProcPram = "";// 保存时执行的存储过程参数列表 |
| | | private String DProcValues = "";// 保存时执行的存储过程参数值 |
| | | /** |
| | | * 自定义生成单号参数列表 |
| | | */ |
| | |
| | | SqlInfo info = null; |
| | | try { |
| | | SpObserver.setDBtoInstance("_" + dbid); |
| | | if(this.DProcValues!=""){ |
| | | this.DProcPram="'"+this.DProcValues+"'"; |
| | | } |
| | | info = gridService.doExecute( |
| | | new DoExecuteParameter(doc, this.winType, this.formID, this.detailSql, this.headSql, |
| | | this.procName, this.saveProc, this.DProc, this.DProcPram, sqlDel, null, null, |
| | |
| | | } |
| | | } else { |
| | | //第三表不需要执行删除时过程 |
| | | this.getProcValues(map, ""); |
| | | this.getProcValues(map, json.getgType()); |
| | | } |
| | | deletedSql=" delete " + name + " where 1=1 " + key1.toString().replaceAll("&", "&"); |
| | | if(json.getOtherTable()!=null&&fl!=2){ |
| | |
| | | * |
| | | * @param map |
| | | */ |
| | | private void getProcValues(HashMap map, String li) { |
| | | //this.getProcValues(map, this.tempProc, this.saveProc); |
| | | //String s = ""; |
| | | // if(this.formID!=9646||(this.formID==9646&& "1".equals((String)map.get("treetype"))))//只有是菜单时候才执行设置大图标, 2是角色,现在角色也可以设置大图标 by2015-5-13, |
| | | //s = getRecordValues(map, li); |
| | | //if (s != null && !"".equalsIgnoreCase(s) && !this.checkProcSame(s, totalProc)) this.totalProc.add(s); |
| | | this.DProcPram = getRecordValues(map, this.DProcPram); |
| | | private void getProcValues(HashMap map, String type) { |
| | | if(";1;2;3;7;10;20;30;".contains(";"+type+";")){ |
| | | String str= getRecordValues(map, this.DProcPram); |
| | | str=str.replaceAll("','",","); |
| | | if(str!="") { |
| | | if (this.DProcValues == "") { |
| | | this.DProcValues += str.substring(1, str.length() - 1);//去掉'引号 |
| | | } else { |
| | | this.DProcValues += ";" + str.substring(1, str.length() - 1);//去掉'引号 |
| | | } |
| | | } |
| | | }else { |
| | | this.DProcPram = getRecordValues(map, this.DProcPram); |
| | | } |
| | | this.PerProcPram = getRecordValues(map, this.PerProcPram); |
| | | this.ExcelProc = getRecordValues(map, this.ExcelProc); |
| | | this.canelProc = getRecordValues(map, this.canelProc); |
| | |
| | | /** |
| | | * @param map 通过传需要替换的参数列表,取得当前记录集对应的值 |
| | | */ |
| | | private String getRecordValues(HashMap map, String prams) { |
| | | public String getRecordValues(HashMap map, String prams) { |
| | | if (StringUtils.isBlank(prams)) { |
| | | return ""; |
| | | } |
| | |
| | | } |
| | | } else { |
| | | if (PanelDataList != null && PanelDataList.size() > 0) |
| | | this.getProcValues(PanelDataList.get(0), ""); |
| | | this.getProcValues(PanelDataList.get(0),this.winType+"" ); |
| | | } |
| | | } |
| | | } |
| | |
| | | this.getProcValues(map, str); |
| | | } |
| | | } else { |
| | | this.getProcValues(map, ""); |
| | | this.getProcValues(map, json.getgType()); |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | } else { |
| | | up.putAll(vs); |
| | | this.getProcValues(up, ""); |
| | | this.getProcValues(up, json.getgType()); |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | if (up.get("formid") != null && "".equalsIgnoreCase(up.get("formid"))) { |
| | | up.putAll(v); |
| | | this.getProcValues(up, ""); |
| | | this.getProcValues(up, json.getgType()); |
| | | this.detailSql.add(this.getRecordValues(up,"p9651 menuid,usercode,hasiconpermission")+"\n"); |
| | | continue;//防止只是修改大图标,提交时没有formid而出错 |
| | | } |
| | |
| | | } |
| | | this.detailSql.add(sb.toString()); |
| | | up.putAll(v); |
| | | this.getProcValues(up, ""); |
| | | this.getProcValues(up, json.getgType()); |
| | | this.detailSql.add(this.getRecordValues(up,"p9651 menuid,usercode,hasiconpermission")+"\n"); |
| | | } |
| | | |
| | |
| | | this.isSave = false; |
| | | } |
| | | } |
| | | /*if (update != null && update.size() > 0) {//保存时触发每一行 |
| | | for (String str : update) { |
| | | for (HashMap map : update1) |
| | | this.getProcValues(map, str); |
| | | } |
| | | } else { |
| | | if (update1 != null && update1.size() > 0) |
| | | this.getProcValues(update1.get(0), ""); |
| | | else |
| | | this.isSave = false; |
| | | }*/ |
| | | update = null; |
| | | } |
| | | |
| | |
| | | } |
| | | } else { |
| | | up.putAll(v); |
| | | this.getProcValues(up, ""); |
| | | this.getProcValues(up, json.getgType()); |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | } else { |
| | | if (update1 != null && update1.size() > 0) |
| | | this.getProcValues(update1.get(0), ""); |
| | | this.getProcValues(update1.get(0), this.winType+""); |
| | | } |
| | | } |
| | | |
| | |
| | | package com.yc.action.tree; |
| | | |
| | | import com.yc.action.BaseAction; |
| | | import com.yc.action.grid.GTGrid; |
| | | import com.yc.factory.FactoryBean; |
| | | import com.yc.service.BaseService; |
| | | import com.yc.service.tree.TreeJson; |
| | | import com.yc.utils.JsonUtil; |
| | | import com.yc.utils.SessionKey; |
| | | import org.apache.commons.lang.StringUtils; |
| | |
| | | import java.sql.Types; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.StringJoiner; |
| | | |
| | | /** |
| | | * 树操作数据SQL 拼装类 |
| | | * @author heqing.hbs@gmail.com |
| | |
| | | if("modifyname".equalsIgnoreCase((String) k) &&up.get("modifyname")!=null){ |
| | | key.append("[" + k + "]"); |
| | | key.append("='"+session.getAttribute(SessionKey.HRNAME)+"'"); |
| | | }else if("modifycode".equalsIgnoreCase((String) k) &&up.get("modifycode")!=null){ |
| | | key.append("[" + k + "]"); |
| | | key.append("='"+session.getAttribute(SessionKey.HRCODE)+"'"); |
| | | }else if("modifydate".equalsIgnoreCase((String) k) &&up.get("modifydate")!=null){ |
| | | key.append("[" + k + "]"); |
| | | key.append("=getdate()"); |
| | |
| | | key.append(","); |
| | | value.append(","); |
| | | } |
| | | else if("modifycode".equalsIgnoreCase((String) k) &&map.get("modifycode")!=null){ |
| | | key.append("["+k+"]"); |
| | | value.append("'"+session.getAttribute(SessionKey.HRCODE)+"'"); |
| | | key.append(","); |
| | | value.append(","); |
| | | } |
| | | else if("modifydate".equalsIgnoreCase((String) k) &&map.get("modifydate")!=null){ |
| | | key.append("["+k+"]"); |
| | | value.append("getdate()"); |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 拼接保存时执行过程,每行取对应的参数值,最后组成一串传过去 p120201Save 'DD001;DD002' |
| | | * @param treeJson |
| | | * @param dProcValuesParm |
| | | * @return |
| | | */ |
| | | public String getDProcValues(TreeJson treeJson,String dProcValuesParm) { |
| | | StringJoiner dProcValues = new StringJoiner(";"); |
| | | GTGrid grid = (GTGrid) FactoryBean.getBean("GTGrid"); |
| | | if (treeJson.getInsertedRecords() != null && treeJson.getInsertedRecords().size() > 0) { |
| | | for (HashMap<String, String> map : treeJson.getInsertedRecords()) { |
| | | dProcValues.add(getResultValues(grid,map,dProcValuesParm)); |
| | | } |
| | | } |
| | | if (treeJson.getInsertedRecords() != null && treeJson.getUpdatedRecords().size() > 0) { |
| | | for (HashMap<String, String> map : treeJson.getUpdatedRecords()) { |
| | | dProcValues.add(getResultValues(grid,map,dProcValuesParm)); |
| | | } |
| | | } |
| | | if (treeJson.getInsertedRecords() != null && treeJson.getDeleteRecords().size() > 0) { |
| | | for (HashMap<String, String> map : treeJson.getDeleteRecords()) { |
| | | dProcValues.add(getResultValues(grid,map,dProcValuesParm)); |
| | | } |
| | | } |
| | | return dProcValues.length()==0?"":(" '"+dProcValues.toString()+"' "); |
| | | } |
| | | private String getResultValues(GTGrid grid,HashMap map, String parm){ |
| | | String str = grid.getRecordValues(map, parm); |
| | | str = str.replaceAll("','", ","); |
| | | return str.substring(1, str.length() - 1);//去掉'引号 |
| | | } |
| | | protected int getType(SqlRowSetMetaData md,String id){ |
| | | int s=3; |
| | | for(int i=1;i<=md.getColumnCount();i++){ |
| | |
| | | import java.io.PrintWriter; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * |
| | | * @author heqing.hbs@gmail.com |
| | | * @updatedBy |
| | | * @updateTime 2011-5-20 上午09:47:50 |
| | | */ |
| | | @Controller |
| | | public class Tree_2 extends BaseAction{ |
| | | |
| | | |
| | | |
| | | private SqlRowSetMetaData md1; |
| | | @RequestMapping("/tree_2_save.do") |
| | | public void addNode(HttpServletRequest request,HttpServletResponse response) throws IOException{ |
| | | String treeJsonStr=request.getParameter("treeJson"); |
| | | String strFormid=request.getParameter("formid"); |
| | | if(StringUtils.isBlank(strFormid)){//针对导入2类型的excel xin 2023-2-21 17:30:45 |
| | | strFormid=(String) request.getAttribute("formid"); |
| | | } |
| | | if(StringUtils.isBlank(strFormid))return; |
| | | int formid=-1; |
| | | String tableName =null; |
| | | String message=""; |
| | | try{ |
| | | |
| | | formid = Integer.parseInt(strFormid); |
| | | tableName = gformIfc.getGformInfo("hdtable",formid).get("hdtable").toString(); |
| | | if(tableName==null||"".equals(tableName))return; |
| | | SpObserver.setDBtoInstance("_"+request.getSession().getAttribute(SessionKey.DATA_BASE_ID)); |
| | | md=treeIfc.getMetaDataByTableName(tableName); |
| | | md1=treeIfc.getMetaDataByTableName("_sysAudit"); |
| | | }catch (Exception e) { |
| | | return; |
| | | }finally{ |
| | | SpObserver.setDBtoInstance(); |
| | | } |
| | | TreeJson treeJson=null; |
| | | if(StringUtils.isBlank(treeJsonStr)){//针对导入2类型的excel xin 2023-2-21 17:30:45 |
| | | treeJson=(TreeJson) request.getAttribute("treeJson"); |
| | | message="已完成!"; |
| | | }else{ |
| | | treeJson=fromJson(treeJsonStr); |
| | | } |
| | | // TreeJson treeJson=fromJson(treeJsonStr); |
| | | int status=0; |
| | | List<String> sql=new ArrayList<String>();//保存所有sql语句(新增,修改) |
| | | TreeUtils treeUtils = new TreeUtils(); |
| | | |
| | | //获得自动增长列和计算列--需要对其进行排除 |
| | | List<String> autoColumn = treeIfc.getAutovalComputedColumns(tableName); |
| | | |
| | | try{ |
| | | SpObserver.setDBtoInstance("_" + request.getSession().getAttribute(SessionKey.DATA_BASE_ID)); |
| | | treeUtils.convert2InsertSQL(treeJson.getInsertedRecords(), tableName, sql, autoColumn, md,request.getSession()); |
| | | treeUtils.convert2UpdateSQL(treeJson.getUpdatedRecords(),tableName,sql,autoColumn,md,"",request.getSession()); |
| | | treeUtils.convert2DragSQL(treeJson.getDragRecords(), tableName, sql, "(1=1)"); |
| | | treeUtils.convert2DeleteSQL(treeJson.getDeleteRecords(), tableName, sql, "(1=1)"); |
| | | treeUtils.convert2AuditSQL(treeJson.getAuditRecords(), md1, request, sql); |
| | | if (sql.size() > 0) { |
| | | DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request.getSession().getAttribute(SessionKey.DATA_BASE_ID) + ""); |
| | | treeIfc.doBatchExcute(sql, strFormid, dataSourceEntity.getLimitDepartmentNumber() + "", tableName); |
| | | public class Tree_2 extends BaseAction { |
| | | |
| | | } |
| | | sql = null; |
| | | status = 0; |
| | | } catch (NumberFormatException e1) { |
| | | sql.clear(); |
| | | status = 1; |
| | | message = getErrorMsg(message, e1); |
| | | } catch (Exception e) { |
| | | sql = null; |
| | | status = 2; |
| | | message = getErrorMsg(message, e); |
| | | } finally { |
| | | SpObserver.setDBtoInstance(); |
| | | } |
| | | |
| | | private SqlRowSetMetaData md1; |
| | | |
| | | @RequestMapping("/tree_2_save.do") |
| | | public void addNode(HttpServletRequest request, HttpServletResponse response) throws IOException { |
| | | String treeJsonStr = request.getParameter("treeJson"); |
| | | String strFormid = request.getParameter("formid"); |
| | | if (StringUtils.isBlank(strFormid)) {//针对导入2类型的excel xin 2023-2-21 17:30:45 |
| | | strFormid = (String) request.getAttribute("formid"); |
| | | } |
| | | if (StringUtils.isBlank(strFormid)) return; |
| | | int formid = -1; |
| | | String tableName = null; |
| | | String dealAfterDocSave = null; |
| | | String message = ""; |
| | | try { |
| | | |
| | | formid = Integer.parseInt(strFormid); |
| | | SpObserver.setDBtoInstance("_" + request.getSession().getAttribute(SessionKey.DATA_BASE_ID)); |
| | | Map<String, Object> gformInfo = gformIfc.getGformInfo("hdtable,DealAfterDocSave", formid); |
| | | tableName = gformInfo.get("hdtable").toString(); |
| | | dealAfterDocSave = gformInfo.get("DealAfterDocSave").toString(); |
| | | if (tableName == null || "".equals(tableName)) return; |
| | | md = treeIfc.getMetaDataByTableName(tableName); |
| | | md1 = treeIfc.getMetaDataByTableName("_sysAudit"); |
| | | } catch (Exception e) { |
| | | return; |
| | | } finally { |
| | | SpObserver.setDBtoInstance(); |
| | | } |
| | | TreeJson treeJson = null; |
| | | if (StringUtils.isBlank(treeJsonStr)) {//针对导入2类型的excel xin 2023-2-21 17:30:45 |
| | | treeJson = (TreeJson) request.getAttribute("treeJson"); |
| | | message = "已完成!"; |
| | | } else { |
| | | treeJson = fromJson(treeJsonStr); |
| | | } |
| | | int status = 0; |
| | | List<String> sql = new ArrayList<String>();//保存所有sql语句(新增,修改) |
| | | TreeUtils treeUtils = new TreeUtils(); |
| | | |
| | | //获得自动增长列和计算列--需要对其进行排除 |
| | | List<String> autoColumn = treeIfc.getAutovalComputedColumns(tableName); |
| | | |
| | | try { |
| | | SpObserver.setDBtoInstance("_" + request.getSession().getAttribute(SessionKey.DATA_BASE_ID)); |
| | | treeUtils.convert2InsertSQL(treeJson.getInsertedRecords(), tableName, sql, autoColumn, md, request.getSession()); |
| | | treeUtils.convert2UpdateSQL(treeJson.getUpdatedRecords(), tableName, sql, autoColumn, md, "", request.getSession()); |
| | | treeUtils.convert2DragSQL(treeJson.getDragRecords(), tableName, sql, "(1=1)"); |
| | | treeUtils.convert2DeleteSQL(treeJson.getDeleteRecords(), tableName, sql, "(1=1)"); |
| | | treeUtils.convert2AuditSQL(treeJson.getAuditRecords(), md1, request, sql); |
| | | //保存时处理 |
| | | if (org.apache.commons.lang3.StringUtils.isNotBlank(dealAfterDocSave)) { |
| | | String[] docSave=dealAfterDocSave.split("\\s+"); |
| | | sql.add(" exec "+docSave[0]+" "+treeUtils.getDProcValues(treeJson,docSave[1] )); |
| | | } |
| | | if (sql.size() > 0) { |
| | | DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request.getSession().getAttribute(SessionKey.DATA_BASE_ID) + ""); |
| | | treeIfc.doBatchExcute(sql, strFormid, dataSourceEntity.getLimitDepartmentNumber() + "", tableName); |
| | | |
| | | } |
| | | sql = null; |
| | | status = 0; |
| | | } catch (NumberFormatException e1) { |
| | | sql.clear(); |
| | | status = 1; |
| | | message = getErrorMsg(message, e1); |
| | | } catch (Exception e) { |
| | | sql = null; |
| | | status = 2; |
| | | message = getErrorMsg(message, e); |
| | | } finally { |
| | | SpObserver.setDBtoInstance(); |
| | | } |
| | | // PrintWriter out=response.getWriter(); |
| | | response.setCharacterEncoding("utf-8"); |
| | | ResponseUtils.printJson(response, "{\"status\":\""+status+"\",\"message\":\""+message.replaceAll("\"", "'")+"\"}"); |
| | | } |
| | | private String getErrorMsg(String message, Exception e) { |
| | | if(e.getCause()!=null){ |
| | | message= e.getCause().getMessage(); |
| | | }else { |
| | | message=e.getMessage();//下面这样写可能会截断异常错误的内容,所以直接抛出信息好了 xin 2023-4-6 17:08:30 |
| | | response.setCharacterEncoding("utf-8"); |
| | | ResponseUtils.printJson(response, "{\"status\":\"" + status + "\",\"message\":\"" + message.replaceAll("\"", "'") + "\"}"); |
| | | } |
| | | |
| | | private String getErrorMsg(String message, Exception e) { |
| | | if (e.getCause() != null) { |
| | | message = e.getCause().getMessage(); |
| | | } else { |
| | | message = e.getMessage();//下面这样写可能会截断异常错误的内容,所以直接抛出信息好了 xin 2023-4-6 17:08:30 |
| | | // String[] mes = e.getMessage().split(";"); |
| | | // if (mes.length >= 1) message = mes[mes.length - 1]; |
| | | // String[] tempMsg = message.split(":"); |
| | | // if (tempMsg.length > 1) { |
| | | // message = tempMsg[1]; |
| | | // } |
| | | } |
| | | return message; |
| | | } |
| | | @RequestMapping("/getRowid.do") |
| | | public void getRowId(HttpServletRequest request,HttpServletResponse response) throws IOException |
| | | { |
| | | try{ |
| | | SpObserver.setDBtoInstance("_"+request.getSession().getAttribute(SessionKey.DATA_BASE_ID)); |
| | | String rowid= treeIfc.getRowID(); |
| | | response.setCharacterEncoding("utf-8"); |
| | | PrintWriter out=response.getWriter(); |
| | | out.write(rowid); |
| | | out.flush(); |
| | | out.close(); |
| | | }finally{ |
| | | SpObserver.setDBtoInstance(); |
| | | } |
| | | } |
| | | public TreeJson fromJson(String json){ |
| | | Gson gson = new Gson(); |
| | | } |
| | | return message; |
| | | } |
| | | |
| | | @RequestMapping("/getRowid.do") |
| | | public void getRowId(HttpServletRequest request, HttpServletResponse response) throws IOException { |
| | | try { |
| | | SpObserver.setDBtoInstance("_" + request.getSession().getAttribute(SessionKey.DATA_BASE_ID)); |
| | | String rowid = treeIfc.getRowID(); |
| | | response.setCharacterEncoding("utf-8"); |
| | | PrintWriter out = response.getWriter(); |
| | | out.write(rowid); |
| | | out.flush(); |
| | | out.close(); |
| | | } finally { |
| | | SpObserver.setDBtoInstance(); |
| | | } |
| | | } |
| | | |
| | | public TreeJson fromJson(String json) { |
| | | Gson gson = new Gson(); |
| | | // return gson.fromJson(json.replace("&", "&").replace("<", "<").replace(">", ">"), new com.google.gson.reflect.TypeToken<TreeJson>() { |
| | | // }.getType() ); |
| | | return gson.fromJson(json, new com.google.gson.reflect.TypeToken<TreeJson>() { |
| | | }.getType() ); |
| | | } |
| | | return gson.fromJson(json, new com.google.gson.reflect.TypeToken<TreeJson>() { |
| | | }.getType()); |
| | | } |
| | | |
| | | @RequestMapping("/tree_2_autocode.do") |
| | | public void getAutoCode(int formid,String fields,String configs,HttpServletRequest request,HttpServletResponse response) throws IOException{ |
| | | String autocode=""; |
| | | try{ |
| | | String [] field=null; |
| | | if("".equals(fields))return; |
| | | field=fields.split(";"); |
| | | String []config=configs.split(";"); |
| | | if(config.length!=3)throw new Exception(); |
| | | autocode+="["; |
| | | for(int i=0;i<field.length;i++){ |
| | | autocode+="{'field':'"+field[i]+"','value':'"+gridServiceIfc.getAutoCode(formid, Integer.parseInt(config[1]), field[i])+"'}"; |
| | | } |
| | | autocode+="]"; |
| | | }catch(Exception e){ |
| | | autocode="错误信息:自动编号字段生成出错!"; |
| | | } |
| | | response.setCharacterEncoding("utf-8"); |
| | | PrintWriter out=response.getWriter(); |
| | | out.write(autocode); |
| | | out.flush(); |
| | | out.close(); |
| | | } |
| | | @RequestMapping("/tree_2_autocode.do") |
| | | public void getAutoCode(int formid, String fields, String configs, HttpServletRequest request, HttpServletResponse response) throws IOException { |
| | | String autocode = ""; |
| | | try { |
| | | String[] field = null; |
| | | if ("".equals(fields)) return; |
| | | field = fields.split(";"); |
| | | String[] config = configs.split(";"); |
| | | if (config.length != 3) throw new Exception(); |
| | | autocode += "["; |
| | | for (int i = 0; i < field.length; i++) { |
| | | autocode += "{'field':'" + field[i] + "','value':'" + gridServiceIfc.getAutoCode(formid, Integer.parseInt(config[1]), field[i]) + "'}"; |
| | | } |
| | | autocode += "]"; |
| | | } catch (Exception e) { |
| | | autocode = "错误信息:自动编号字段生成出错!"; |
| | | } |
| | | response.setCharacterEncoding("utf-8"); |
| | | PrintWriter out = response.getWriter(); |
| | | out.write(autocode); |
| | | out.flush(); |
| | | out.close(); |
| | | } |
| | | |
| | | private SqlRowSetMetaData md; |
| | | @Autowired |
| | | private com.yc.service.tree.TreeIfc treeIfc; |
| | | @Autowired |
| | | private GridServiceIfc gridServiceIfc; |
| | | @Autowired |
| | | private GformIfc gformIfc; |
| | | private SqlRowSetMetaData md; |
| | | @Autowired |
| | | private com.yc.service.tree.TreeIfc treeIfc; |
| | | @Autowired |
| | | private GridServiceIfc gridServiceIfc; |
| | | @Autowired |
| | | private GformIfc gformIfc; |
| | | } |
| | | |
| | |
| | | import java.io.PrintWriter; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @Controller |
| | | public class Tree_20 { |
| | | |
| | | @RequestMapping("/tree_20_save2.do") |
| | | public void tree_20_save(HttpServletRequest request,HttpServletResponse response) throws IOException{ |
| | | |
| | | String treeJsonStr=request.getParameter("treeJson"); |
| | | String formid=request.getParameter("formid"); |
| | | String where = request.getParameter("where"); |
| | | String tableName=null; |
| | | try{ |
| | | SpObserver.setDBtoInstance("_"+request.getSession().getAttribute(SessionKey.DATA_BASE_ID)); |
| | | tableName = gformIfc.getGformInfo("dttable", Integer.parseInt(formid)).get("dttable").toString(); |
| | | if(StringUtils.isBlank(tableName)||StringUtils.isBlank(where))return; |
| | | md=treeIfc.getMetaDataByTableName(tableName); |
| | | }finally{ |
| | | SpObserver.setDBtoInstance(); |
| | | } |
| | | TreeJson treeJson=fromJson(treeJsonStr); |
| | | |
| | | int status=0; |
| | | String message=""; |
| | | List<String> sql=new ArrayList<String>();//保存所有sql语句(新增,修改) |
| | | TreeUtils treeUtils = new TreeUtils(); |
| | | |
| | | //获得自动增长列和计算列--需要对其进行排除 |
| | | List<String> autoColumn = treeIfc.getAutovalComputedColumns(tableName); |
| | | where = null == where ? "" : where; |
| | | try{ |
| | | treeUtils.convert2InsertSQL(treeJson.getInsertedRecords(),tableName,sql,autoColumn,md,request.getSession()); |
| | | treeUtils.convert2UpdateSQL(treeJson.getUpdatedRecords(),tableName,sql,autoColumn,md,where,request.getSession()); |
| | | treeUtils.convert2DragSQL(treeJson.getDragRecords(),tableName,sql,where); |
| | | treeUtils.convert2DeleteSQL(treeJson.getDeleteRecords(),tableName,sql,where); |
| | | // for(int i=0;i<sql.size();i++){ |
| | | // System.out.println(sql.get(i)); |
| | | // treeIfc.doExcute(sql.get(i)); |
| | | // } |
| | | if(sql.size()>0){ |
| | | try{ |
| | | SpObserver.setDBtoInstance("_" + request.getSession().getAttribute(SessionKey.DATA_BASE_ID)); |
| | | treeIfc.doBatchExcute(sql, "", "", ""); |
| | | }finally{ |
| | | SpObserver.setDBtoInstance(); |
| | | } |
| | | } |
| | | sql.clear(); |
| | | status=1; |
| | | }catch (NumberFormatException e) { |
| | | sql.clear(); |
| | | status=0; |
| | | message=e.getMessage().split(":")[1].replace("\"", ""); |
| | | }catch (TransientDataAccessResourceException e) { |
| | | sql.clear(); |
| | | status=2; |
| | | message=e.getMessage().split(":")[1].replace("\"", ""); |
| | | } |
| | | catch(Exception e) |
| | | { |
| | | sql.clear(); |
| | | status=2; |
| | | if(e.getCause()!=null) |
| | | message=e.getCause().getMessage(); |
| | | else { |
| | | String[] mes = e.getMessage().split(";"); |
| | | if (mes.length >= 2) { |
| | | String[] ms=mes[mes.length-1].split(":"); |
| | | if(ms.length>1){ |
| | | message=ms[1]; |
| | | }else{ |
| | | message=ms[0]; |
| | | } |
| | | |
| | | @RequestMapping("/tree_20_save2.do") |
| | | public void tree_20_save(HttpServletRequest request, HttpServletResponse response) throws IOException { |
| | | |
| | | String treeJsonStr = request.getParameter("treeJson"); |
| | | String formid = request.getParameter("formid"); |
| | | String where = request.getParameter("where"); |
| | | String tableName = null; |
| | | String dealAfterDocSave = null; |
| | | try { |
| | | SpObserver.setDBtoInstance("_" + request.getSession().getAttribute(SessionKey.DATA_BASE_ID)); |
| | | Map<String, Object> gformInfo = gformIfc.getGformInfo("hdtable,DealAfterDocSave", Integer.parseInt(formid)); |
| | | tableName = gformInfo.get("hdtable").toString(); |
| | | dealAfterDocSave = gformInfo.get("DealAfterDocSave").toString(); |
| | | if (StringUtils.isBlank(tableName) || StringUtils.isBlank(where)) return; |
| | | md = treeIfc.getMetaDataByTableName(tableName); |
| | | } finally { |
| | | SpObserver.setDBtoInstance(); |
| | | } |
| | | TreeJson treeJson = fromJson(treeJsonStr); |
| | | |
| | | int status = 0; |
| | | String message = ""; |
| | | List<String> sql = new ArrayList<String>();//保存所有sql语句(新增,修改) |
| | | TreeUtils treeUtils = new TreeUtils(); |
| | | |
| | | //获得自动增长列和计算列--需要对其进行排除 |
| | | List<String> autoColumn = treeIfc.getAutovalComputedColumns(tableName); |
| | | where = null == where ? "" : where; |
| | | try { |
| | | treeUtils.convert2InsertSQL(treeJson.getInsertedRecords(), tableName, sql, autoColumn, md, request.getSession()); |
| | | treeUtils.convert2UpdateSQL(treeJson.getUpdatedRecords(), tableName, sql, autoColumn, md, where, request.getSession()); |
| | | treeUtils.convert2DragSQL(treeJson.getDragRecords(), tableName, sql, where); |
| | | treeUtils.convert2DeleteSQL(treeJson.getDeleteRecords(), tableName, sql, where); |
| | | //保存时处理 |
| | | if (org.apache.commons.lang3.StringUtils.isNotBlank(dealAfterDocSave)) { |
| | | String[] docSave=dealAfterDocSave.split("\\s+"); |
| | | sql.add(" exec "+docSave[0]+" "+treeUtils.getDProcValues(treeJson,docSave[1] )); |
| | | } |
| | | if (sql.size() > 0) { |
| | | try { |
| | | SpObserver.setDBtoInstance("_" + request.getSession().getAttribute(SessionKey.DATA_BASE_ID)); |
| | | treeIfc.doBatchExcute(sql, "", "", ""); |
| | | } finally { |
| | | SpObserver.setDBtoInstance(); |
| | | } |
| | | } |
| | | sql.clear(); |
| | | status = 1; |
| | | } catch (NumberFormatException e) { |
| | | sql.clear(); |
| | | status = 0; |
| | | message = e.getMessage().split(":")[1].replace("\"", ""); |
| | | } catch (TransientDataAccessResourceException e) { |
| | | sql.clear(); |
| | | status = 2; |
| | | message = e.getMessage().split(":")[1].replace("\"", ""); |
| | | } catch (Exception e) { |
| | | sql.clear(); |
| | | status = 2; |
| | | if (e.getCause() != null) |
| | | message = e.getCause().getMessage(); |
| | | else { |
| | | String[] mes = e.getMessage().split(";"); |
| | | if (mes.length >= 2) { |
| | | String[] ms = mes[mes.length - 1].split(":"); |
| | | if (ms.length > 1) { |
| | | message = ms[1]; |
| | | } else { |
| | | message = ms[0]; |
| | | } |
| | | // message = mes[2]; |
| | | } |
| | | } |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | e.printStackTrace(); |
| | | } |
| | | // response.setContentType("text/html;charset=utf8"); |
| | | response.setCharacterEncoding("utf-8"); |
| | | PrintWriter out=response.getWriter(); |
| | | out.write("{\"status\":\""+status+"\",\"message\":\""+message.replace("\"", "'")+"\"}"); |
| | | out.flush(); |
| | | out.close(); |
| | | } |
| | | @RequestMapping("/getRowid_20.do") |
| | | public void getRowId(HttpServletRequest request,HttpServletResponse response) throws IOException |
| | | { |
| | | try{ |
| | | SpObserver.setDBtoInstance("_"+request.getSession().getAttribute(SessionKey.DATA_BASE_ID)); |
| | | String rowid= treeIfc.getRowID(); |
| | | response.setCharacterEncoding("utf-8"); |
| | | PrintWriter out=response.getWriter(); |
| | | out.write(rowid); |
| | | out.flush(); |
| | | out.close(); |
| | | }finally{ |
| | | SpObserver.setDBtoInstance(); |
| | | } |
| | | } |
| | | public TreeJson fromJson(String json){ |
| | | Gson gson = new Gson(); |
| | | return gson.fromJson(json.replace("&", "&").replace("<", "<").replace(">", ">"), new com.google.gson.reflect.TypeToken<TreeJson>() { |
| | | }.getType() ); |
| | | } |
| | | response.setCharacterEncoding("utf-8"); |
| | | PrintWriter out = response.getWriter(); |
| | | out.write("{\"status\":\"" + status + "\",\"message\":\"" + message.replace("\"", "'") + "\"}"); |
| | | out.flush(); |
| | | out.close(); |
| | | } |
| | | |
| | | @RequestMapping("/tree_20_autocode.do") |
| | | public void getAutoCode(int formid,String fields,String configs,HttpServletRequest request,HttpServletResponse response) throws IOException{ |
| | | String autocode=""; |
| | | try{ |
| | | String [] field=null; |
| | | if("".equals(fields))return; |
| | | field=fields.split(";"); |
| | | String []config=configs.split(";"); |
| | | if(config.length!=3)throw new Exception(); |
| | | autocode+="["; |
| | | try{ |
| | | SpObserver.setDBtoInstance("_"+request.getSession().getAttribute(SessionKey.DATA_BASE_ID)); |
| | | for(int i=0;i<field.length;i++){ |
| | | autocode+="{'field':'"+field[i]+"','value':'"+gridServiceIfc.getAutoCode(formid, Integer.parseInt(config[1]), field[i])+"'}"; |
| | | } |
| | | }finally{ |
| | | SpObserver.setDBtoInstance(); |
| | | } |
| | | autocode+="]"; |
| | | }catch(Exception e){ |
| | | autocode="错误信息:自动编号字段生成出错!"; |
| | | } |
| | | response.setCharacterEncoding("utf-8"); |
| | | PrintWriter out=response.getWriter(); |
| | | out.write(autocode); |
| | | out.flush(); |
| | | out.close(); |
| | | } |
| | | @RequestMapping("/getRowid_20.do") |
| | | public void getRowId(HttpServletRequest request, HttpServletResponse response) throws IOException { |
| | | try { |
| | | SpObserver.setDBtoInstance("_" + request.getSession().getAttribute(SessionKey.DATA_BASE_ID)); |
| | | String rowid = treeIfc.getRowID(); |
| | | response.setCharacterEncoding("utf-8"); |
| | | PrintWriter out = response.getWriter(); |
| | | out.write(rowid); |
| | | out.flush(); |
| | | out.close(); |
| | | } finally { |
| | | SpObserver.setDBtoInstance(); |
| | | } |
| | | } |
| | | |
| | | private SqlRowSetMetaData md; |
| | | |
| | | @Autowired |
| | | private com.yc.service.tree.TreeIfc treeIfc; |
| | | |
| | | @Autowired |
| | | private GridServiceIfc gridServiceIfc; |
| | | |
| | | @Autowired |
| | | GformIfc gformIfc; |
| | | public TreeJson fromJson(String json) { |
| | | Gson gson = new Gson(); |
| | | return gson.fromJson(json.replace("&", "&").replace("<", "<").replace(">", ">"), new com.google.gson.reflect.TypeToken<TreeJson>() { |
| | | }.getType()); |
| | | } |
| | | |
| | | @RequestMapping("/tree_20_autocode.do") |
| | | public void getAutoCode(int formid, String fields, String configs, HttpServletRequest request, HttpServletResponse response) throws IOException { |
| | | String autocode = ""; |
| | | try { |
| | | String[] field = null; |
| | | if ("".equals(fields)) return; |
| | | field = fields.split(";"); |
| | | String[] config = configs.split(";"); |
| | | if (config.length != 3) throw new Exception(); |
| | | autocode += "["; |
| | | try { |
| | | SpObserver.setDBtoInstance("_" + request.getSession().getAttribute(SessionKey.DATA_BASE_ID)); |
| | | for (int i = 0; i < field.length; i++) { |
| | | autocode += "{'field':'" + field[i] + "','value':'" + gridServiceIfc.getAutoCode(formid, Integer.parseInt(config[1]), field[i]) + "'}"; |
| | | } |
| | | } finally { |
| | | SpObserver.setDBtoInstance(); |
| | | } |
| | | autocode += "]"; |
| | | } catch (Exception e) { |
| | | autocode = "错误信息:自动编号字段生成出错!"; |
| | | } |
| | | response.setCharacterEncoding("utf-8"); |
| | | PrintWriter out = response.getWriter(); |
| | | out.write(autocode); |
| | | out.flush(); |
| | | out.close(); |
| | | } |
| | | |
| | | private SqlRowSetMetaData md; |
| | | |
| | | @Autowired |
| | | private com.yc.service.tree.TreeIfc treeIfc; |
| | | |
| | | @Autowired |
| | | private GridServiceIfc gridServiceIfc; |
| | | |
| | | @Autowired |
| | | GformIfc gformIfc; |
| | | } |