xinyb
2024-08-30 f5cc47742dd3d2f2ffd8443ffc82a912683f7824
提交 | 用户 | age
a6a76f 1 package com.yc.action.tree;
F 2
3 import com.google.gson.Gson;
4 import com.yc.action.BaseAction;
c9beda 5 import com.yc.action.grid.GridUtils;
3e30bf 6 import com.yc.entity.DataSourceEntity;
F 7 import com.yc.multiData.MultiDataSource;
a6a76f 8 import com.yc.multiData.SpObserver;
2f071f 9 import com.yc.sdk.weixincp3rd.action.ExternalContactTag;
X 10 import com.yc.sdk.weixincp3rd.entity.CallBackMsg;
a6a76f 11 import com.yc.service.commons.GformIfc;
F 12 import com.yc.service.grid.GridServiceIfc;
13 import com.yc.service.tree.TreeJson;
2f071f 14 import com.yc.utils.GTJson;
a6a76f 15 import com.yc.utils.ResponseUtils;
F 16 import com.yc.utils.SessionKey;
3e30bf 17 import org.apache.commons.lang.StringUtils;
F 18 import org.springframework.beans.factory.annotation.Autowired;
19 import org.springframework.jdbc.support.rowset.SqlRowSetMetaData;
20 import org.springframework.stereotype.Controller;
21 import org.springframework.web.bind.annotation.RequestMapping;
22
23 import javax.servlet.http.HttpServletRequest;
24 import javax.servlet.http.HttpServletResponse;
25 import java.io.IOException;
26 import java.io.PrintWriter;
27 import java.util.ArrayList;
28 import java.util.List;
67465e 29 import java.util.Map;
a6a76f 30
F 31 /**
32  * @author heqing.hbs@gmail.com
33  * @updatedBy
34  * @updateTime 2011-5-20 上午09:47:50
35  */
36 @Controller
67465e 37 public class Tree_2 extends BaseAction {
a6a76f 38
67465e 39
F 40     private SqlRowSetMetaData md1;
2f071f 41     @Autowired
X 42     ExternalContactTag externalContactTag;
67465e 43
F 44     @RequestMapping("/tree_2_save.do")
45     public void addNode(HttpServletRequest request, HttpServletResponse response) throws IOException {
46         String treeJsonStr = request.getParameter("treeJson");
47         String strFormid = request.getParameter("formid");
330e5b 48         boolean isImport = (request.getAttribute("isImport") == null ? false : true);//是导入进来的
67465e 49         if (StringUtils.isBlank(strFormid)) {//针对导入2类型的excel xin 2023-2-21 17:30:45
F 50             strFormid = (String) request.getAttribute("formid");
51         }
52         if (StringUtils.isBlank(strFormid)) return;
53         int formid = -1;
54         String tableName = null;
55         String dealAfterDocSave = null;
330e5b 56         String importProcName = null;//导入时|执行存储过程名称
67465e 57         String message = "";
F 58         try {
59
60             formid = Integer.parseInt(strFormid);
61             SpObserver.setDBtoInstance("_" + request.getSession().getAttribute(SessionKey.DATA_BASE_ID));
330e5b 62             Map<String, Object> gformInfo = gformIfc.getGformInfo("hdtable,DealAfterDocSave,importProcName", formid);
67465e 63             tableName = gformInfo.get("hdtable").toString();
c9beda 64             dealAfterDocSave = GridUtils.prossRowSetDataType_String(gformInfo,"DealAfterDocSave");
330e5b 65             importProcName = GridUtils.prossRowSetDataType_String(gformInfo,"importProcName");//导入时|执行存储过程名称
67465e 66             if (tableName == null || "".equals(tableName)) return;
F 67             md = treeIfc.getMetaDataByTableName(tableName);
68             md1 = treeIfc.getMetaDataByTableName("_sysAudit");
69         } catch (Exception e) {
70             return;
71         } finally {
72             SpObserver.setDBtoInstance();
73         }
74         TreeJson treeJson = null;
75         if (StringUtils.isBlank(treeJsonStr)) {//针对导入2类型的excel xin 2023-2-21 17:30:45
76             treeJson = (TreeJson) request.getAttribute("treeJson");
77             message = "已完成!";
78         } else {
79             treeJson = fromJson(treeJsonStr);
80         }
2f071f 81         if ("170612".equals(strFormid)) {//添加标签组
X 82             GTJson json = new GTJson();
83             json.setFormid(strFormid);
84             json.setUpdatedRecords(treeJson.getUpdatedRecords());
85             json.setDeletedRecords(treeJson.getDeleteRecords());
86             CallBackMsg msg = externalContactTag.setGroupTag(json, request, response);
87             if (msg.getErrcode() != 0) {
88                 response.setCharacterEncoding("utf-8");
89                 ResponseUtils.printJson(response, "{\"status\":\"" + 2 + "\",\"message\":\"" + msg.getErrmsg().replaceAll("\"", "'") + "\"}");
90             }
91         }
67465e 92         int status = 0;
F 93         List<String> sql = new ArrayList<String>();//保存所有sql语句(新增,修改)
94         TreeUtils treeUtils = new TreeUtils();
95
96         //获得自动增长列和计算列--需要对其进行排除
97         List<String> autoColumn = treeIfc.getAutovalComputedColumns(tableName);
98
99         try {
100             SpObserver.setDBtoInstance("_" + request.getSession().getAttribute(SessionKey.DATA_BASE_ID));
101             treeUtils.convert2InsertSQL(treeJson.getInsertedRecords(), tableName, sql, autoColumn, md, request.getSession());
102             treeUtils.convert2UpdateSQL(treeJson.getUpdatedRecords(), tableName, sql, autoColumn, md, "", request.getSession());
103             treeUtils.convert2DragSQL(treeJson.getDragRecords(), tableName, sql, "(1=1)");
104             treeUtils.convert2DeleteSQL(treeJson.getDeleteRecords(), tableName, sql, "(1=1)");
105             treeUtils.convert2AuditSQL(treeJson.getAuditRecords(), md1, request, sql);
106             //保存时处理
107             if (org.apache.commons.lang3.StringUtils.isNotBlank(dealAfterDocSave)) {
108                 String[] docSave=dealAfterDocSave.split("\\s+");
109                 sql.add(" exec "+docSave[0]+" "+treeUtils.getDProcValues(treeJson,docSave[1] ));
110             }
330e5b 111             if(StringUtils.isNotBlank(importProcName) && isImport){
X 112                 sql.add(" exec "+importProcName);
113             }
67465e 114             if (sql.size() > 0) {
F 115                 DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request.getSession().getAttribute(SessionKey.DATA_BASE_ID) + "");
116                 treeIfc.doBatchExcute(sql, strFormid, dataSourceEntity.getLimitDepartmentNumber() + "", tableName);
117
118             }
119             sql = null;
120             status = 0;
121         } catch (NumberFormatException e1) {
122             sql.clear();
123             status = 1;
124             message = getErrorMsg(message, e1);
125         } catch (Exception e) {
126             sql = null;
127             status = 2;
128             message = getErrorMsg(message, e);
129         } finally {
130             SpObserver.setDBtoInstance();
131         }
a6a76f 132 //        PrintWriter out=response.getWriter();
67465e 133         response.setCharacterEncoding("utf-8");
F 134         ResponseUtils.printJson(response, "{\"status\":\"" + status + "\",\"message\":\"" + message.replaceAll("\"", "'") + "\"}");
135     }
136
137     private String getErrorMsg(String message, Exception e) {
138         if (e.getCause() != null) {
139             message = e.getCause().getMessage();
140         } else {
141             message = e.getMessage();//下面这样写可能会截断异常错误的内容,所以直接抛出信息好了 xin 2023-4-6 17:08:30
09e239 142 //            String[] mes = e.getMessage().split(";");
X 143 //            if (mes.length >= 1) message = mes[mes.length - 1];
144 //            String[] tempMsg = message.split(":");
145 //            if (tempMsg.length > 1) {
146 //                message = tempMsg[1];
147 //            }
67465e 148         }
F 149         return message;
150     }
151
152     @RequestMapping("/getRowid.do")
153     public void getRowId(HttpServletRequest request, HttpServletResponse response) throws IOException {
154         try {
155             SpObserver.setDBtoInstance("_" + request.getSession().getAttribute(SessionKey.DATA_BASE_ID));
156             String rowid = treeIfc.getRowID();
157             response.setCharacterEncoding("utf-8");
158             PrintWriter out = response.getWriter();
159             out.write(rowid);
160             out.flush();
161             out.close();
162         } finally {
163             SpObserver.setDBtoInstance();
164         }
165     }
166
167     public TreeJson fromJson(String json) {
168         Gson gson = new Gson();
a6a76f 169 //        return gson.fromJson(json.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;"), new com.google.gson.reflect.TypeToken<TreeJson>() {   
F 170 //        }.getType() );
67465e 171         return gson.fromJson(json, new com.google.gson.reflect.TypeToken<TreeJson>() {
F 172         }.getType());
173     }
a6a76f 174
67465e 175     @RequestMapping("/tree_2_autocode.do")
F 176     public void getAutoCode(int formid, String fields, String configs, HttpServletRequest request, HttpServletResponse response) throws IOException {
177         String autocode = "";
178         try {
179             String[] field = null;
180             if ("".equals(fields)) return;
181             field = fields.split(";");
182             String[] config = configs.split(";");
183             if (config.length != 3) throw new Exception();
184             autocode += "[";
185             for (int i = 0; i < field.length; i++) {
186                 autocode += "{'field':'" + field[i] + "','value':'" + gridServiceIfc.getAutoCode(formid, Integer.parseInt(config[1]), field[i]) + "'}";
187             }
188             autocode += "]";
189         } catch (Exception e) {
190             autocode = "错误信息:自动编号字段生成出错!";
191         }
192         response.setCharacterEncoding("utf-8");
193         PrintWriter out = response.getWriter();
194         out.write(autocode);
195         out.flush();
196         out.close();
197     }
a6a76f 198
67465e 199     private SqlRowSetMetaData md;
F 200     @Autowired
201     private com.yc.service.tree.TreeIfc treeIfc;
202     @Autowired
203     private GridServiceIfc gridServiceIfc;
204     @Autowired
205     private GformIfc gformIfc;
a6a76f 206 }
F 207