|
@@ -1,12 +1,12 @@
|
1
|
1
|
package com.ruoyi.web.controller.system;
|
2
|
2
|
|
3
|
3
|
import java.lang.reflect.Field;
|
4
|
|
-import java.util.ArrayList;
|
5
|
4
|
import java.util.List;
|
6
|
5
|
import java.util.stream.Collectors;
|
7
|
6
|
import javax.servlet.http.HttpServletResponse;
|
8
|
7
|
|
9
|
8
|
import com.alibaba.fastjson2.JSON;
|
|
9
|
+import com.alibaba.fastjson2.JSONArray;
|
10
|
10
|
import com.alibaba.fastjson2.JSONObject;
|
11
|
11
|
import com.ruoyi.common.utils.DateUtils;
|
12
|
12
|
import com.ruoyi.oa.domain.CmcUserHistory;
|
|
@@ -131,35 +131,129 @@ public class SysUserController extends BaseController
|
131
|
131
|
/**
|
132
|
132
|
* 根据用户编号获取变更记录
|
133
|
133
|
*/
|
134
|
|
- @GetMapping("/change/{userId}")
|
135
|
|
- public AjaxResult getChangeInfo(@PathVariable(value = "userId", required = false) Long userId) throws NoSuchFieldException {
|
|
134
|
+ @GetMapping("/change")
|
|
135
|
+ public TableDataInfo getChangeInfo(SysUser user) {
|
|
136
|
+ startPage();
|
|
137
|
+ Long userId = user.getUserId();
|
136
|
138
|
SysUser sysUser = userService.selectUserById(userId);
|
|
139
|
+ List<Long> userPostList = postService.selectPostListByUserId(userId);
|
|
140
|
+ List<Long> userRoleList = roleService.selectRoleListByUserId(userId);
|
|
141
|
+ sysUser.setRoleIds(userRoleList.toArray(new Long[userRoleList.size()]));
|
|
142
|
+ sysUser.setPostIds(userPostList.toArray(new Long[userPostList.size()]));
|
137
|
143
|
JSONObject jsonObj = (JSONObject) JSON.toJSON(sysUser);
|
138
|
144
|
CmcUserHistory userHistory = new CmcUserHistory();
|
139
|
145
|
userHistory.setUserId(userId);
|
140
|
146
|
List<CmcUserHistory> cmcUserHistoryList = cmcUserHistoryService.selectCmcUserHistoryList(userHistory);
|
141
|
147
|
Field[] fields = userHistory.getClass().getDeclaredFields();
|
142
|
|
- JSONObject jsonObject = new JSONObject();
|
|
148
|
+ JSONArray jsonArray = new JSONArray();
|
|
149
|
+ int changeNumber = 1;
|
143
|
150
|
for (int i = 0; i < cmcUserHistoryList.size(); i++) {
|
144
|
151
|
JSONObject beforeChangeHistoryJsonObj = (JSONObject) JSON.toJSON(cmcUserHistoryList.get(i));
|
145
|
152
|
JSONObject afterChangeHistoryJsonObj = new JSONObject();
|
146
|
|
- if (i == cmcUserHistoryList.size() - 1)
|
|
153
|
+ if (i == 0)
|
147
|
154
|
afterChangeHistoryJsonObj = (JSONObject) JSON.toJSON(jsonObj);
|
148
|
155
|
else
|
149
|
|
- afterChangeHistoryJsonObj = (JSONObject) JSON.toJSON(cmcUserHistoryList.get(i + 1));
|
|
156
|
+ afterChangeHistoryJsonObj = (JSONObject) JSON.toJSON(cmcUserHistoryList.get(i - 1));
|
150
|
157
|
for (Field field : fields) {
|
|
158
|
+ JSONObject jsonObject = new JSONObject();
|
151
|
159
|
String fieldName = field.getName().split("\\.")[field.getName().split("\\.").length - 1];
|
152
|
|
- if (!fieldName.equals("historyId") && !fieldName.equals("serialVersionUID") && !fieldName.equals("updateReason") && !fieldName.equals("updateTime")) {
|
153
|
|
- if (beforeChangeHistoryJsonObj.getString(fieldName) != null && afterChangeHistoryJsonObj.getString(fieldName) != null && !beforeChangeHistoryJsonObj.getString(fieldName).equals(afterChangeHistoryJsonObj.getString(fieldName)))
|
154
|
|
- jsonObject.put("变更" + (cmcUserHistoryList.indexOf(cmcUserHistoryList.get(i)) + 1), fieldName + ":" + beforeChangeHistoryJsonObj.getString(fieldName) + "变更为" + afterChangeHistoryJsonObj.getString(fieldName) + ";变更日期:" + DateFormatUtils.format(beforeChangeHistoryJsonObj.getDate("updateTime"), "yyyy-MM-dd"));
|
155
|
|
- else if (beforeChangeHistoryJsonObj.getString(fieldName) == null && afterChangeHistoryJsonObj.getString(fieldName) != null)
|
156
|
|
- jsonObject.put("变更" + (cmcUserHistoryList.indexOf(cmcUserHistoryList.get(i)) + 1), fieldName + ":" + beforeChangeHistoryJsonObj.getString(fieldName) + "变更为" + afterChangeHistoryJsonObj.getString(fieldName) + ";变更日期:" + DateFormatUtils.format(beforeChangeHistoryJsonObj.getDate("updateTime"), "yyyy-MM-dd"));
|
157
|
|
- else if (beforeChangeHistoryJsonObj.getString(fieldName) != null && afterChangeHistoryJsonObj.getString(fieldName) == null)
|
158
|
|
- jsonObject.put("变更" + (cmcUserHistoryList.indexOf(cmcUserHistoryList.get(i)) + 1), fieldName + ":" + beforeChangeHistoryJsonObj.getString(fieldName) + "变更为" + afterChangeHistoryJsonObj.getString(fieldName) + ";变更日期:" + DateFormatUtils.format(beforeChangeHistoryJsonObj.getDate("updateTime"), "yyyy-MM-dd"));
|
|
160
|
+ if (!fieldName.equals("historyId") && !fieldName.equals("serialVersionUID") && !fieldName.equals("updateReason") && !fieldName.equals("updateTime")) {
|
|
161
|
+ if (!fieldName.equals("roleIds") && !fieldName.equals("postIds")) {
|
|
162
|
+ if ((beforeChangeHistoryJsonObj.getString(fieldName) != null && afterChangeHistoryJsonObj.getString(fieldName) != null
|
|
163
|
+ && !beforeChangeHistoryJsonObj.getString(fieldName).equals(afterChangeHistoryJsonObj.getString(fieldName)))
|
|
164
|
+ || (beforeChangeHistoryJsonObj.getString(fieldName) == null && afterChangeHistoryJsonObj.getString(fieldName) != null)
|
|
165
|
+ || (beforeChangeHistoryJsonObj.getString(fieldName) != null && afterChangeHistoryJsonObj.getString(fieldName) == null)) {
|
|
166
|
+ if (fieldName.equals("deptId")) {
|
|
167
|
+ jsonObject.put("before", deptService.selectDeptById(beforeChangeHistoryJsonObj.getLong(fieldName)).getDeptName());
|
|
168
|
+ jsonObject.put("after", deptService.selectDeptById(afterChangeHistoryJsonObj.getLong(fieldName)).getDeptName());
|
|
169
|
+ }
|
|
170
|
+ else {
|
|
171
|
+ jsonObject.put("before", beforeChangeHistoryJsonObj.getString(fieldName));
|
|
172
|
+ jsonObject.put("after", afterChangeHistoryJsonObj.getString(fieldName));
|
|
173
|
+ }
|
|
174
|
+ jsonObject.put("id", changeNumber++);
|
|
175
|
+ jsonObject.put("field", getFieldName(fieldName));
|
|
176
|
+ jsonObject.put("date", DateFormatUtils.format(beforeChangeHistoryJsonObj.getDate("updateTime"), "yyyy-MM-dd"));
|
|
177
|
+ jsonArray.add(jsonObject);
|
|
178
|
+ }
|
|
179
|
+ } else {
|
|
180
|
+ if (i == 0) {
|
|
181
|
+ if (!beforeChangeHistoryJsonObj.getString(fieldName).equals(StringUtils.join(afterChangeHistoryJsonObj.getJSONArray(fieldName), ","))) {
|
|
182
|
+ if (fieldName.equals("roleIds")) {
|
|
183
|
+ getRoleOrPostName(beforeChangeHistoryJsonObj.getString(fieldName), jsonObject, "role", "before");
|
|
184
|
+ getRoleOrPostName(StringUtils.join(afterChangeHistoryJsonObj.getJSONArray(fieldName), ","), jsonObject, "role", "after");
|
|
185
|
+ }
|
|
186
|
+ else {
|
|
187
|
+ getRoleOrPostName(beforeChangeHistoryJsonObj.getString(fieldName), jsonObject, "post", "before");
|
|
188
|
+ getRoleOrPostName(StringUtils.join(afterChangeHistoryJsonObj.getJSONArray(fieldName), ","), jsonObject, "post", "after");
|
|
189
|
+ }
|
|
190
|
+ jsonObject.put("id", changeNumber++);
|
|
191
|
+ jsonObject.put("field", getFieldName(fieldName));
|
|
192
|
+ jsonObject.put("date", DateFormatUtils.format(beforeChangeHistoryJsonObj.getDate("updateTime"), "yyyy-MM-dd"));
|
|
193
|
+ jsonArray.add(jsonObject);
|
|
194
|
+ }
|
|
195
|
+ }
|
|
196
|
+ else {
|
|
197
|
+ if (!beforeChangeHistoryJsonObj.getString(fieldName).equals(afterChangeHistoryJsonObj.getString(fieldName))) {
|
|
198
|
+ if (fieldName.equals("roleIds")) {
|
|
199
|
+ getRoleOrPostName(beforeChangeHistoryJsonObj.getString(fieldName), jsonObject, "role", "before");
|
|
200
|
+ getRoleOrPostName(afterChangeHistoryJsonObj.getString(fieldName), jsonObject, "role", "after");
|
|
201
|
+ }
|
|
202
|
+ else {
|
|
203
|
+ getRoleOrPostName(beforeChangeHistoryJsonObj.getString(fieldName), jsonObject, "post", "before");
|
|
204
|
+ getRoleOrPostName(afterChangeHistoryJsonObj.getString(fieldName), jsonObject, "post", "after");
|
|
205
|
+ }
|
|
206
|
+ jsonObject.put("id", changeNumber++);
|
|
207
|
+ jsonObject.put("field", getFieldName(fieldName));
|
|
208
|
+ jsonObject.put("date", DateFormatUtils.format(beforeChangeHistoryJsonObj.getDate("updateTime"), "yyyy-MM-dd"));
|
|
209
|
+ jsonArray.add(jsonObject);
|
|
210
|
+ }
|
|
211
|
+ }
|
|
212
|
+ }
|
159
|
213
|
}
|
160
|
214
|
}
|
161
|
215
|
}
|
162
|
|
- return success(jsonObject);
|
|
216
|
+ return getDataTable(jsonArray);
|
|
217
|
+ }
|
|
218
|
+
|
|
219
|
+ private void getRoleOrPostName(String fieldValue, JSONObject jsonObject, String roleOrPost, String beforeOrAfter) {
|
|
220
|
+ if (!fieldValue.equals("") && fieldValue.split(",").length > 0) {
|
|
221
|
+ StringBuilder names = new StringBuilder();
|
|
222
|
+ for (String id : fieldValue.split(",")) {
|
|
223
|
+ if (roleOrPost.equals("role"))
|
|
224
|
+ names.append(roleService.selectRoleById(Long.parseLong(id)).getRoleName()).append(",");
|
|
225
|
+ else
|
|
226
|
+ names.append(postService.selectPostById(Long.parseLong(id)).getPostName()).append(",");
|
|
227
|
+ }
|
|
228
|
+ if (beforeOrAfter.equals("before"))
|
|
229
|
+ jsonObject.put("before", names.substring(0, names.length() - 1));
|
|
230
|
+ else
|
|
231
|
+ jsonObject.put("after", names.substring(0, names.length() - 1));
|
|
232
|
+ }
|
|
233
|
+ }
|
|
234
|
+
|
|
235
|
+ /**
|
|
236
|
+ * 获取字段名备注
|
|
237
|
+ */
|
|
238
|
+ private String getFieldName(String fieldName) {
|
|
239
|
+ JSONObject jsonObject = new JSONObject();
|
|
240
|
+ jsonObject.put("deptId", "部门");
|
|
241
|
+ jsonObject.put("pmLevel", "项目经理级别");
|
|
242
|
+ jsonObject.put("titles", "技术职称");
|
|
243
|
+ jsonObject.put("certificates", "执业证书");
|
|
244
|
+ jsonObject.put("engineerLevel", "工程师岗级");
|
|
245
|
+ jsonObject.put("postLevel", "岗级");
|
|
246
|
+ jsonObject.put("salaryLevel", "薪档");
|
|
247
|
+ jsonObject.put("operatorLevel", "技工等级");
|
|
248
|
+ jsonObject.put("politicalAffiliation", "政治面貌");
|
|
249
|
+ jsonObject.put("graduateSchool", "毕业院校");
|
|
250
|
+ jsonObject.put("major", "专业");
|
|
251
|
+ jsonObject.put("degree", "学历");
|
|
252
|
+ jsonObject.put("contractSign", "合同签订");
|
|
253
|
+ jsonObject.put("contractExpire", "合同期满");
|
|
254
|
+ jsonObject.put("roleIds", "角色");
|
|
255
|
+ jsonObject.put("postIds", "岗位");
|
|
256
|
+ return jsonObject.getString(fieldName);
|
163
|
257
|
}
|
164
|
258
|
|
165
|
259
|
/**
|
|
@@ -200,6 +294,7 @@ public class SysUserController extends BaseController
|
200
|
294
|
CmcUserHistory cmcUserHistory = new CmcUserHistory();
|
201
|
295
|
SysUser sysUser = userService.selectUserById(user.getUserId());
|
202
|
296
|
cmcUserHistory.setUserId(user.getUserId());
|
|
297
|
+ cmcUserHistory.setDeptId(user.getDeptId());
|
203
|
298
|
cmcUserHistory.setTitles(sysUser.getTitles());
|
204
|
299
|
cmcUserHistory.setCertificates(sysUser.getCertificates());
|
205
|
300
|
cmcUserHistory.setEngineerLevel(sysUser.getEngineerLevel());
|
|
@@ -207,18 +302,17 @@ public class SysUserController extends BaseController
|
207
|
302
|
cmcUserHistory.setSalaryLevel(sysUser.getSalaryLevel());
|
208
|
303
|
cmcUserHistory.setPmLevel(sysUser.getPmLevel());
|
209
|
304
|
cmcUserHistory.setOperatorLevel(sysUser.getOperatorLevel());
|
210
|
|
- cmcUserHistory.setIdCard(sysUser.getIdCard());
|
211
|
|
- cmcUserHistory.setNativePlace(sysUser.getNativePlace());
|
212
|
305
|
cmcUserHistory.setPoliticalAffiliation(sysUser.getPoliticalAffiliation());
|
213
|
|
- cmcUserHistory.setEthnic(sysUser.getEthnic());
|
214
|
306
|
cmcUserHistory.setGraduateSchool(sysUser.getGraduateSchool());
|
215
|
307
|
cmcUserHistory.setMajor(sysUser.getMajor());
|
216
|
308
|
cmcUserHistory.setDegree(sysUser.getDegree());
|
217
|
309
|
cmcUserHistory.setContractSign(sysUser.getContractSign());
|
218
|
310
|
cmcUserHistory.setContractExpire(sysUser.getContractExpire());
|
219
|
|
- cmcUserHistory.setHomePlace(sysUser.getHomePlace());
|
220
|
311
|
cmcUserHistory.setUpdateReason(user.getUpdateReason());
|
221
|
312
|
cmcUserHistory.setUpdateTime(DateUtils.getNowDate());
|
|
313
|
+ cmcUserHistory.setRoleIds(StringUtils.join(roleService.selectRoleListByUserId(user.getUserId()),","));
|
|
314
|
+ cmcUserHistory.setPostIds(StringUtils.join(postService.selectPostListByUserId(user.getUserId()),","));
|
|
315
|
+ cmcUserHistory.setUpdateTime(DateUtils.getNowDate());
|
222
|
316
|
cmcUserHistoryService.insertCmcUserHistory(cmcUserHistory);
|
223
|
317
|
userService.checkUserAllowed(user);
|
224
|
318
|
userService.checkUserDataScope(user.getUserId());
|