提交 | 用户 | 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("&", "&").replace("<", "<").replace(">", ">"), 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 |
|