Sfoglia il codice sorgente

用户变更记录

lamphua 1 anno fa
parent
commit
a793961bba

+ 112
- 18
oa-back/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java Vedi File

1
 package com.ruoyi.web.controller.system;
1
 package com.ruoyi.web.controller.system;
2
 
2
 
3
 import java.lang.reflect.Field;
3
 import java.lang.reflect.Field;
4
-import java.util.ArrayList;
5
 import java.util.List;
4
 import java.util.List;
6
 import java.util.stream.Collectors;
5
 import java.util.stream.Collectors;
7
 import javax.servlet.http.HttpServletResponse;
6
 import javax.servlet.http.HttpServletResponse;
8
 
7
 
9
 import com.alibaba.fastjson2.JSON;
8
 import com.alibaba.fastjson2.JSON;
9
+import com.alibaba.fastjson2.JSONArray;
10
 import com.alibaba.fastjson2.JSONObject;
10
 import com.alibaba.fastjson2.JSONObject;
11
 import com.ruoyi.common.utils.DateUtils;
11
 import com.ruoyi.common.utils.DateUtils;
12
 import com.ruoyi.oa.domain.CmcUserHistory;
12
 import com.ruoyi.oa.domain.CmcUserHistory;
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
         SysUser sysUser = userService.selectUserById(userId);
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
         JSONObject jsonObj = (JSONObject) JSON.toJSON(sysUser);
143
         JSONObject jsonObj = (JSONObject) JSON.toJSON(sysUser);
138
         CmcUserHistory userHistory = new CmcUserHistory();
144
         CmcUserHistory userHistory = new CmcUserHistory();
139
         userHistory.setUserId(userId);
145
         userHistory.setUserId(userId);
140
         List<CmcUserHistory> cmcUserHistoryList = cmcUserHistoryService.selectCmcUserHistoryList(userHistory);
146
         List<CmcUserHistory> cmcUserHistoryList = cmcUserHistoryService.selectCmcUserHistoryList(userHistory);
141
         Field[] fields = userHistory.getClass().getDeclaredFields();
147
         Field[] fields = userHistory.getClass().getDeclaredFields();
142
-        JSONObject jsonObject = new JSONObject();
148
+        JSONArray jsonArray = new JSONArray();
149
+        int changeNumber = 1;
143
         for (int i = 0; i < cmcUserHistoryList.size(); i++) {
150
         for (int i = 0; i < cmcUserHistoryList.size(); i++) {
144
             JSONObject beforeChangeHistoryJsonObj = (JSONObject) JSON.toJSON(cmcUserHistoryList.get(i));
151
             JSONObject beforeChangeHistoryJsonObj = (JSONObject) JSON.toJSON(cmcUserHistoryList.get(i));
145
             JSONObject afterChangeHistoryJsonObj = new JSONObject();
152
             JSONObject afterChangeHistoryJsonObj = new JSONObject();
146
-            if (i == cmcUserHistoryList.size() - 1)
153
+            if (i == 0)
147
                 afterChangeHistoryJsonObj = (JSONObject) JSON.toJSON(jsonObj);
154
                 afterChangeHistoryJsonObj = (JSONObject) JSON.toJSON(jsonObj);
148
             else
155
             else
149
-                afterChangeHistoryJsonObj = (JSONObject) JSON.toJSON(cmcUserHistoryList.get(i + 1));
156
+                afterChangeHistoryJsonObj = (JSONObject) JSON.toJSON(cmcUserHistoryList.get(i - 1));
150
             for (Field field : fields) {
157
             for (Field field : fields) {
158
+                JSONObject jsonObject = new JSONObject();
151
                 String fieldName = field.getName().split("\\.")[field.getName().split("\\.").length - 1];
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
         CmcUserHistory cmcUserHistory = new CmcUserHistory();
294
         CmcUserHistory cmcUserHistory = new CmcUserHistory();
201
         SysUser sysUser = userService.selectUserById(user.getUserId());
295
         SysUser sysUser = userService.selectUserById(user.getUserId());
202
         cmcUserHistory.setUserId(user.getUserId());
296
         cmcUserHistory.setUserId(user.getUserId());
297
+        cmcUserHistory.setDeptId(user.getDeptId());
203
         cmcUserHistory.setTitles(sysUser.getTitles());
298
         cmcUserHistory.setTitles(sysUser.getTitles());
204
         cmcUserHistory.setCertificates(sysUser.getCertificates());
299
         cmcUserHistory.setCertificates(sysUser.getCertificates());
205
         cmcUserHistory.setEngineerLevel(sysUser.getEngineerLevel());
300
         cmcUserHistory.setEngineerLevel(sysUser.getEngineerLevel());
207
         cmcUserHistory.setSalaryLevel(sysUser.getSalaryLevel());
302
         cmcUserHistory.setSalaryLevel(sysUser.getSalaryLevel());
208
         cmcUserHistory.setPmLevel(sysUser.getPmLevel());
303
         cmcUserHistory.setPmLevel(sysUser.getPmLevel());
209
         cmcUserHistory.setOperatorLevel(sysUser.getOperatorLevel());
304
         cmcUserHistory.setOperatorLevel(sysUser.getOperatorLevel());
210
-        cmcUserHistory.setIdCard(sysUser.getIdCard());
211
-        cmcUserHistory.setNativePlace(sysUser.getNativePlace());
212
         cmcUserHistory.setPoliticalAffiliation(sysUser.getPoliticalAffiliation());
305
         cmcUserHistory.setPoliticalAffiliation(sysUser.getPoliticalAffiliation());
213
-        cmcUserHistory.setEthnic(sysUser.getEthnic());
214
         cmcUserHistory.setGraduateSchool(sysUser.getGraduateSchool());
306
         cmcUserHistory.setGraduateSchool(sysUser.getGraduateSchool());
215
         cmcUserHistory.setMajor(sysUser.getMajor());
307
         cmcUserHistory.setMajor(sysUser.getMajor());
216
         cmcUserHistory.setDegree(sysUser.getDegree());
308
         cmcUserHistory.setDegree(sysUser.getDegree());
217
         cmcUserHistory.setContractSign(sysUser.getContractSign());
309
         cmcUserHistory.setContractSign(sysUser.getContractSign());
218
         cmcUserHistory.setContractExpire(sysUser.getContractExpire());
310
         cmcUserHistory.setContractExpire(sysUser.getContractExpire());
219
-        cmcUserHistory.setHomePlace(sysUser.getHomePlace());
220
         cmcUserHistory.setUpdateReason(user.getUpdateReason());
311
         cmcUserHistory.setUpdateReason(user.getUpdateReason());
221
         cmcUserHistory.setUpdateTime(DateUtils.getNowDate());
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
         cmcUserHistoryService.insertCmcUserHistory(cmcUserHistory);
316
         cmcUserHistoryService.insertCmcUserHistory(cmcUserHistory);
223
         userService.checkUserAllowed(user);
317
         userService.checkUserAllowed(user);
224
         userService.checkUserDataScope(user.getUserId());
318
         userService.checkUserDataScope(user.getUserId());

+ 32
- 46
oa-back/ruoyi-system/src/main/java/com/ruoyi/oa/domain/CmcUserHistory.java Vedi File

24
     @Excel(name = "用户id")
24
     @Excel(name = "用户id")
25
     private Long userId;
25
     private Long userId;
26
 
26
 
27
+    /** 部门id */
28
+    @Excel(name = "部门id")
29
+    private Long deptId;
30
+
27
     /** 技术职称(0正高、1副高、2中级、3助工) */
31
     /** 技术职称(0正高、1副高、2中级、3助工) */
28
     @Excel(name = "技术职称", readConverterExp = "0=正高、1=副高、2=中级、3=助工")
32
     @Excel(name = "技术职称", readConverterExp = "0=正高、1=副高、2=中级、3=助工")
29
     private String titles;
33
     private String titles;
56
     @Excel(name = "更新原因", readConverterExp = "0=误录修改、1=正常调整")
60
     @Excel(name = "更新原因", readConverterExp = "0=误录修改、1=正常调整")
57
     private String updateReason;
61
     private String updateReason;
58
 
62
 
59
-    /** 身份证号码 */
60
-    @Excel(name = "身份证号码")
61
-    private String idCard;
62
-
63
-    /** 籍贯 */
64
-    @Excel(name = "籍贯")
65
-    private String nativePlace;
66
-
67
     /** 政治面貌 */
63
     /** 政治面貌 */
68
     @Excel(name = "政治面貌")
64
     @Excel(name = "政治面貌")
69
     private String politicalAffiliation;
65
     private String politicalAffiliation;
70
 
66
 
71
-    /** 民族 */
72
-    @Excel(name = "民族")
73
-    private String ethnic;
74
-
75
     /** 毕业院校 */
67
     /** 毕业院校 */
76
     @Excel(name = "毕业院校")
68
     @Excel(name = "毕业院校")
77
     private String graduateSchool;
69
     private String graduateSchool;
92
     @Excel(name = "合同期满", width = 30, dateFormat = "yyyy-MM-dd")
84
     @Excel(name = "合同期满", width = 30, dateFormat = "yyyy-MM-dd")
93
     private Date contractExpire;
85
     private Date contractExpire;
94
 
86
 
95
-    /** 家庭住址 */
96
-    @Excel(name = "家庭住址")
97
-    private String homePlace;
87
+    /** 角色组 */
88
+    private String roleIds;
89
+
90
+    /** 岗位组 */
91
+    private String postIds;
98
 
92
 
99
     public void setHistoryId(Integer historyId)
93
     public void setHistoryId(Integer historyId)
100
     {
94
     {
114
     {
108
     {
115
         return userId;
109
         return userId;
116
     }
110
     }
111
+    public void setDeptId(Long deptId)
112
+    {
113
+        this.deptId = deptId;
114
+    }
115
+
116
+    public Long getDeptId()
117
+    {
118
+        return deptId;
119
+    }
117
     public void setTitles(String titles)
120
     public void setTitles(String titles)
118
     {
121
     {
119
         this.titles = titles;
122
         this.titles = titles;
183
     {
186
     {
184
         return updateReason;
187
         return updateReason;
185
     }
188
     }
186
-    public void setIdCard(String idCard)
187
-    {
188
-        this.idCard = idCard;
189
-    }
190
-
191
-    public String getIdCard()
192
-    {
193
-        return idCard;
194
-    }
195
-    public void setNativePlace(String nativePlace)
196
-    {
197
-        this.nativePlace = nativePlace;
198
-    }
199
-
200
-    public String getNativePlace()
201
-    {
202
-        return nativePlace;
203
-    }
204
     public void setPoliticalAffiliation(String politicalAffiliation)
189
     public void setPoliticalAffiliation(String politicalAffiliation)
205
     {
190
     {
206
         this.politicalAffiliation = politicalAffiliation;
191
         this.politicalAffiliation = politicalAffiliation;
210
     {
195
     {
211
         return politicalAffiliation;
196
         return politicalAffiliation;
212
     }
197
     }
213
-    public void setEthnic(String ethnic)
214
-    {
215
-        this.ethnic = ethnic;
216
-    }
217
-
218
-    public String getEthnic()
219
-    {
220
-        return ethnic;
221
-    }
222
     public void setGraduateSchool(String graduateSchool)
198
     public void setGraduateSchool(String graduateSchool)
223
     {
199
     {
224
         this.graduateSchool = graduateSchool;
200
         this.graduateSchool = graduateSchool;
264
     {
240
     {
265
         return contractExpire;
241
         return contractExpire;
266
     }
242
     }
267
-    public void setHomePlace(String homePlace)
243
+    public String getRoleIds()
244
+    {
245
+        return roleIds;
246
+    }
247
+
248
+    public void setRoleIds(String roleIds)
249
+    {
250
+        this.roleIds = roleIds;
251
+    }
252
+
253
+    public String getPostIds()
268
     {
254
     {
269
-        this.homePlace = homePlace;
255
+        return postIds;
270
     }
256
     }
271
 
257
 
272
-    public String getHomePlace()
258
+    public void setPostIds(String postIds)
273
     {
259
     {
274
-        return homePlace;
260
+        this.postIds = postIds;
275
     }
261
     }
276
 
262
 
277
     @Override
263
     @Override

+ 15
- 18
oa-back/ruoyi-system/src/main/resources/mapper/oa/CmcUserHistoryMapper.xml Vedi File

7
     <resultMap type="CmcUserHistory" id="CmcUserHistoryResult">
7
     <resultMap type="CmcUserHistory" id="CmcUserHistoryResult">
8
         <result property="historyId"    column="history_id"    />
8
         <result property="historyId"    column="history_id"    />
9
         <result property="userId"    column="user_id"    />
9
         <result property="userId"    column="user_id"    />
10
+        <result property="deptId"    column="dept_id"    />
10
         <result property="titles"    column="titles"    />
11
         <result property="titles"    column="titles"    />
11
         <result property="certificates"    column="certificates"    />
12
         <result property="certificates"    column="certificates"    />
13
+        <result property="roleIds"    column="roleIds"    />
14
+        <result property="postIds"    column="postIds"    />
12
         <result property="pmLevel"    column="pm_level"    />
15
         <result property="pmLevel"    column="pm_level"    />
13
         <result property="engineerLevel"    column="engineer_level"    />
16
         <result property="engineerLevel"    column="engineer_level"    />
14
         <result property="postLevel"    column="post_level"    />
17
         <result property="postLevel"    column="post_level"    />
16
         <result property="operatorLevel"    column="operator_level"    />
19
         <result property="operatorLevel"    column="operator_level"    />
17
         <result property="updateTime"    column="update_time"    />
20
         <result property="updateTime"    column="update_time"    />
18
         <result property="updateReason"    column="update_reason"    />
21
         <result property="updateReason"    column="update_reason"    />
19
-        <result property="idCard"    column="id_card"    />
20
-        <result property="nativePlace"    column="native_place"    />
21
         <result property="politicalAffiliation"    column="political_affiliation"    />
22
         <result property="politicalAffiliation"    column="political_affiliation"    />
22
-        <result property="ethnic"    column="ethnic"    />
23
         <result property="graduateSchool"    column="graduate_school"    />
23
         <result property="graduateSchool"    column="graduate_school"    />
24
         <result property="major"    column="major"    />
24
         <result property="major"    column="major"    />
25
         <result property="degree"    column="degree"    />
25
         <result property="degree"    column="degree"    />
26
         <result property="contractSign"    column="contract_sign"    />
26
         <result property="contractSign"    column="contract_sign"    />
27
         <result property="contractExpire"    column="contract_expire"    />
27
         <result property="contractExpire"    column="contract_expire"    />
28
-        <result property="homePlace"    column="home_place"    />
29
     </resultMap>
28
     </resultMap>
30
 
29
 
31
     <sql id="selectCmcUserHistoryVo">
30
     <sql id="selectCmcUserHistoryVo">
32
-        select history_id, user_id, titles, certificates, pm_level, engineer_level, post_level, salary_level, operator_level, update_time, update_reason, id_card,
33
-               native_place, political_affiliation, ethnic, graduate_school, major, degree, contract_sign, contract_expire, home_place from cmc_user_history
31
+        select history_id, user_id, dept_id, titles, certificates, roleIds, postIds, pm_level, engineer_level, post_level, salary_level, operator_level, update_time, update_reason,
32
+            political_affiliation, graduate_school, major, degree, contract_sign, contract_expire from cmc_user_history
34
     </sql>
33
     </sql>
35
 
34
 
36
     <select id="selectCmcUserHistoryList" parameterType="CmcUserHistory" resultMap="CmcUserHistoryResult">
35
     <select id="selectCmcUserHistoryList" parameterType="CmcUserHistory" resultMap="CmcUserHistoryResult">
45
             <if test="salaryLevel != null  and salaryLevel != ''"> and salary_level = #{salaryLevel}</if>
44
             <if test="salaryLevel != null  and salaryLevel != ''"> and salary_level = #{salaryLevel}</if>
46
             <if test="updateReason != null  and updateReason != ''"> and update_reason = #{updateReason}</if>
45
             <if test="updateReason != null  and updateReason != ''"> and update_reason = #{updateReason}</if>
47
         </where>
46
         </where>
47
+        order by update_time desc
48
     </select>
48
     </select>
49
     
49
     
50
     <select id="selectCmcUserHistoryByUserId" parameterType="Long" resultMap="CmcUserHistoryResult">
50
     <select id="selectCmcUserHistoryByUserId" parameterType="Long" resultMap="CmcUserHistoryResult">
56
         insert into cmc_user_history
56
         insert into cmc_user_history
57
         <trim prefix="(" suffix=")" suffixOverrides=",">
57
         <trim prefix="(" suffix=")" suffixOverrides=",">
58
             <if test="userId != null">user_id,</if>
58
             <if test="userId != null">user_id,</if>
59
+            <if test="deptId != null">dept_id,</if>
59
             <if test="titles != null">titles,</if>
60
             <if test="titles != null">titles,</if>
60
             <if test="certificates != null">certificates,</if>
61
             <if test="certificates != null">certificates,</if>
62
+            <if test="roleIds != null">roleIds,</if>
63
+            <if test="postIds != null">postIds,</if>
61
             <if test="pmLevel != null">pm_level,</if>
64
             <if test="pmLevel != null">pm_level,</if>
62
             <if test="engineerLevel != null">engineer_level,</if>
65
             <if test="engineerLevel != null">engineer_level,</if>
63
             <if test="postLevel != null">post_level,</if>
66
             <if test="postLevel != null">post_level,</if>
65
             <if test="operatorLevel != null">operator_level,</if>
68
             <if test="operatorLevel != null">operator_level,</if>
66
             <if test="updateTime != null">update_time,</if>
69
             <if test="updateTime != null">update_time,</if>
67
             <if test="updateReason != null">update_reason,</if>
70
             <if test="updateReason != null">update_reason,</if>
68
-            <if test="idCard != null">id_card,</if>
69
-            <if test="nativePlace != null">native_place,</if>
70
             <if test="politicalAffiliation != null">political_affiliation,</if>
71
             <if test="politicalAffiliation != null">political_affiliation,</if>
71
-            <if test="ethnic != null">ethnic,</if>
72
             <if test="graduateSchool != null">graduate_school,</if>
72
             <if test="graduateSchool != null">graduate_school,</if>
73
             <if test="major != null">major,</if>
73
             <if test="major != null">major,</if>
74
             <if test="degree != null">degree,</if>
74
             <if test="degree != null">degree,</if>
75
             <if test="contractSign != null">contract_sign,</if>
75
             <if test="contractSign != null">contract_sign,</if>
76
             <if test="contractExpire != null">contract_expire,</if>
76
             <if test="contractExpire != null">contract_expire,</if>
77
-            <if test="homePlace != null">home_place,</if>
78
          </trim>
77
          </trim>
79
         <trim prefix="values (" suffix=")" suffixOverrides=",">
78
         <trim prefix="values (" suffix=")" suffixOverrides=",">
80
             <if test="userId != null">#{userId},</if>
79
             <if test="userId != null">#{userId},</if>
80
+            <if test="deptId != null">#{deptId},</if>
81
             <if test="titles != null">#{titles},</if>
81
             <if test="titles != null">#{titles},</if>
82
             <if test="certificates != null">#{certificates},</if>
82
             <if test="certificates != null">#{certificates},</if>
83
+            <if test="roleIds != null">#{roleIds},</if>
84
+            <if test="postIds != null">#{postIds},</if>
83
             <if test="pmLevel != null">#{pmLevel},</if>
85
             <if test="pmLevel != null">#{pmLevel},</if>
84
             <if test="engineerLevel != null">#{engineerLevel},</if>
86
             <if test="engineerLevel != null">#{engineerLevel},</if>
85
             <if test="postLevel != null">#{postLevel},</if>
87
             <if test="postLevel != null">#{postLevel},</if>
87
             <if test="operatorLevel != null">#{operatorLevel},</if>
89
             <if test="operatorLevel != null">#{operatorLevel},</if>
88
             <if test="updateTime != null">#{updateTime},</if>
90
             <if test="updateTime != null">#{updateTime},</if>
89
             <if test="updateReason != null">#{updateReason},</if>
91
             <if test="updateReason != null">#{updateReason},</if>
90
-            <if test="idCard != null">#{idCard},</if>
91
-            <if test="nativePlace != null">#{nativePlace},</if>
92
             <if test="politicalAffiliation != null">#{politicalAffiliation},</if>
92
             <if test="politicalAffiliation != null">#{politicalAffiliation},</if>
93
-            <if test="ethnic != null">#{ethnic},</if>
94
             <if test="graduateSchool != null">#{graduateSchool},</if>
93
             <if test="graduateSchool != null">#{graduateSchool},</if>
95
             <if test="major != null">#{major},</if>
94
             <if test="major != null">#{major},</if>
96
             <if test="degree != null">#{degree},</if>
95
             <if test="degree != null">#{degree},</if>
97
             <if test="contractSign != null">#{contractSign},</if>
96
             <if test="contractSign != null">#{contractSign},</if>
98
             <if test="contractExpire != null">#{contractExpire},</if>
97
             <if test="contractExpire != null">#{contractExpire},</if>
99
-            <if test="homePlace != null">#{homePlace},</if>
100
          </trim>
98
          </trim>
101
     </insert>
99
     </insert>
102
 
100
 
104
         update cmc_user_history
102
         update cmc_user_history
105
         <trim prefix="SET" suffixOverrides=",">
103
         <trim prefix="SET" suffixOverrides=",">
106
             <if test="userId != null">user_id = #{userId},</if>
104
             <if test="userId != null">user_id = #{userId},</if>
105
+            <if test="deptId != null">dept_id = #{deptId},</if>
107
             <if test="titles != null">titles = #{titles},</if>
106
             <if test="titles != null">titles = #{titles},</if>
108
             <if test="certificates != null">certificates = #{certificates},</if>
107
             <if test="certificates != null">certificates = #{certificates},</if>
108
+            <if test="roleIds != null">roleIds = #{roleIds},</if>
109
+            <if test="postIds != null">postIds = #{postIds},</if>
109
             <if test="pmLevel != null">pm_level = #{pmLevel},</if>
110
             <if test="pmLevel != null">pm_level = #{pmLevel},</if>
110
             <if test="engineerLevel != null">engineer_level = #{engineerLevel},</if>
111
             <if test="engineerLevel != null">engineer_level = #{engineerLevel},</if>
111
             <if test="postLevel != null">post_level = #{postLevel},</if>
112
             <if test="postLevel != null">post_level = #{postLevel},</if>
113
             <if test="operatorLevel != null and operatorLevel != ''">#{operatorLevel},</if>
114
             <if test="operatorLevel != null and operatorLevel != ''">#{operatorLevel},</if>
114
             <if test="updateTime != null">update_time = #{updateTime},</if>
115
             <if test="updateTime != null">update_time = #{updateTime},</if>
115
             <if test="updateReason != null">update_reason = #{updateReason},</if>
116
             <if test="updateReason != null">update_reason = #{updateReason},</if>
116
-            <if test="idCard != null">#{idCard},</if>
117
-            <if test="nativePlace != null">#{nativePlace},</if>
118
             <if test="politicalAffiliation != null">#{politicalAffiliation},</if>
117
             <if test="politicalAffiliation != null">#{politicalAffiliation},</if>
119
-            <if test="ethnic != null">#{ethnic},</if>
120
             <if test="graduateSchool != null">#{graduateSchool},</if>
118
             <if test="graduateSchool != null">#{graduateSchool},</if>
121
             <if test="major != null">#{major},</if>
119
             <if test="major != null">#{major},</if>
122
             <if test="degree != null">#{degree},</if>
120
             <if test="degree != null">#{degree},</if>
123
             <if test="contractSign != null">#{contractSign},</if>
121
             <if test="contractSign != null">#{contractSign},</if>
124
             <if test="contractExpire != null">#{contractExpire},</if>
122
             <if test="contractExpire != null">#{contractExpire},</if>
125
-            <if test="homePlace != null">#{homePlace},</if>
126
         </trim>
123
         </trim>
127
         where history_id  = #{historyId}
124
         where history_id  = #{historyId}
128
     </update>
125
     </update>

+ 5
- 6
oa-back/sql/sql.sql Vedi File

6880
 create table `cmc_user_history`  (
6880
 create table `cmc_user_history`  (
6881
   history_id		int				not null	auto_increment 	comment '历史id',
6881
   history_id		int				not null	auto_increment 	comment '历史id',
6882
   user_id			bigint			default null				comment '用户id',
6882
   user_id			bigint			default null				comment '用户id',
6883
+  dept_id			bigint			default null			   comment '部门id',
6883
   pm_level			char(1)			default null			   comment '项目经理级别(0一、1二、2三)',
6884
   pm_level			char(1)			default null			   comment '项目经理级别(0一、1二、2三)',
6884
   titles			char(2)			default null				comment '技术职称(0正高、1副高、2中级、3助工)',
6885
   titles			char(2)			default null				comment '技术职称(0正高、1副高、2中级、3助工)',
6885
   certificates		varchar(9)		default null				comment '执业证书(0注测、1注规、2注岩、3注安、4注会)',
6886
   certificates		varchar(9)		default null				comment '执业证书(0注测、1注规、2注岩、3注安、4注会)',
6887
+  roleIds			varchar(9)		default null				comment '角色',
6888
+  postIds			varchar(9)		default null				comment '岗位',
6886
   engineer_level	char(1)			default null			   comment '工程师岗级(0一级、1二级、2三级、3四级、4五级、5六级)',
6889
   engineer_level	char(1)			default null			   comment '工程师岗级(0一级、1二级、2三级、3四级、4五级、5六级)',
6887
   post_level		char(1)			default null			   comment '岗级(0一岗、1二岗、2三岗、3四岗、4五岗、5六岗、6七岗、7八岗)',
6890
   post_level		char(1)			default null			   comment '岗级(0一岗、1二岗、2三岗、3四岗、4五岗、5六岗、6七岗、7八岗)',
6888
   salary_level		char(1)			default null			   comment '薪档(0一级、1二级、2三级、3四级、4五级、5六级、6七级、7八级)',
6891
   salary_level		char(1)			default null			   comment '薪档(0一级、1二级、2三级、3四级、4五级、5六级、6七级、7八级)',
6889
   operator_level	char(1)			default null			   comment '技工等级(0一级、1二级、2三级)',
6892
   operator_level	char(1)			default null			   comment '技工等级(0一级、1二级、2三级)',
6890
-  id_card 			char(18) 		default null				comment '身份证号码',
6891
-  native_place 		varchar(50) 	default null				comment '籍贯',
6892
   political_affiliation varchar(5)	default null				comment '政治面貌',
6893
   political_affiliation varchar(5)	default null				comment '政治面貌',
6893
-  ethnic 			varchar(5) 		default null				comment '民族',
6894
   graduate_school 	varchar(20) 	default null				comment '毕业院校',
6894
   graduate_school 	varchar(20) 	default null				comment '毕业院校',
6895
   major 			varchar(20) 	default null				comment '专业',
6895
   major 			varchar(20) 	default null				comment '专业',
6896
   degree 			char(1) 		default null				comment '学历',
6896
   degree 			char(1) 		default null				comment '学历',
6897
   contract_sign 	date			default null				comment '合同签订',
6897
   contract_sign 	date			default null				comment '合同签订',
6898
   contract_expire 	date			default null				comment '合同期满',
6898
   contract_expire 	date			default null				comment '合同期满',
6899
-  home_place 		varchar(255) 	default null				comment '家庭住址',
6900
-  update_time		date			default null				comment '更新时间',
6901
-  update_reason	char(1) 		default null				comment '更新原因(0误录修改、1正常调整)',
6899
+  update_time		datetime		default null				comment '更新时间',
6900
+  update_reason		char(1) 		default null				comment '更新原因(0误录修改、1正常调整)',
6902
   primary key (`history_id`)
6901
   primary key (`history_id`)
6903
 ) engine = innodb comment = 'cmc用户历史表';
6902
 ) engine = innodb comment = 'cmc用户历史表';
6904
 
6903
 

+ 4
- 3
oa-ui/src/api/system/user.js Vedi File

19
 }
19
 }
20
 
20
 
21
 // 查询用户变更信息
21
 // 查询用户变更信息
22
-export function getUserChangeInfo(userId) {
22
+export function getUserChangeInfo(query) {
23
   return request({
23
   return request({
24
-    url: '/system/user/change/' + parseStrEmpty(userId),
25
-    method: 'get'
24
+    url: '/system/user/change',
25
+    method: 'get',
26
+    params: query
26
   })
27
   })
27
 }
28
 }
28
 
29
 

+ 105
- 6
oa-ui/src/views/oa/staff/changeRecord.vue Vedi File

1
+<!--
2
+ * @Author: wrh
3
+ * @Date: 2024-03-25 17:38:39
4
+ * @LastEditors: wrh
5
+ * @LastEditTime: 2024-05-17 18:10:49
6
+-->
1
 <template>
7
 <template>
2
   <div>
8
   <div>
3
-
9
+    <el-table v-loading="loading" :data="changeRecordList">
10
+      <el-table-column label="序号" align="center" prop="id" />
11
+      <el-table-column label="类型" align="center" prop="field" />
12
+      <el-table-column label="变更前" align="center" prop="before" />
13
+      <el-table-column label="变更后" align="center" prop="after" />
14
+      <el-table-column label="变更日期" align="center" prop="date" />
15
+    </el-table>
16
+    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
17
+      @pagination="getChangeRecordList" />
4
   </div>
18
   </div>
5
 </template>
19
 </template>
6
 
20
 
7
 <script>
21
 <script>
8
-  export default {
9
-    
22
+import { parseTime } from "@/utils/ruoyi";
23
+import { getUserChangeInfo } from "@/api/system/user";
24
+export default {
25
+  dicts: ['sys_user_titles', 'sys_user_certificates', 'sys_user_pmlevel', 'sys_user_engineerlevel', 'sys_user_operatorlevel', 'sys_user_postlevel', 'sys_user_salarylevel', 'sys_user_political', 'sys_user_degree'],
26
+  data() {
27
+    return {
28
+      // 遮罩层
29
+      loading: true,
30
+      // 总条数
31
+      total: 0,
32
+      // 变更记录表格数据
33
+      changeRecordList: [],
34
+      queryParams: {
35
+        pageNum: 1,
36
+        pageSize: 10,
37
+        userId: undefined
38
+      },
39
+    };
40
+  },
41
+  created() {
42
+    this.getChangeRecordList();
43
+  },
44
+  methods: {
45
+    /** 查询变更记录列表 */
46
+    getChangeRecordList() {
47
+      this.loading = true;
48
+      this.queryParams.userId = Number(this.$route.query.userId);
49
+      getUserChangeInfo(this.queryParams).then(response => {
50
+        for (let row of response.rows) {
51
+          if (row.field == '执业证书') {
52
+            row.before = this.formatDict(this.dict.type.sys_user_certificates, row.before);
53
+            row.after = this.formatDict(this.dict.type.sys_user_certificates, row.after);
54
+          }
55
+          else if (row.field == '项目经理级别') {
56
+            row.before = this.formatDict(this.dict.type.sys_user_pmlevel, row.before);
57
+            row.after = this.formatDict(this.dict.type.sys_user_pmlevel, row.after);
58
+          }
59
+          else if (row.field == '技术职称') {
60
+            row.before = this.formatDict(this.dict.type.sys_user_titles, row.before);
61
+            row.after = this.formatDict(this.dict.type.sys_user_titles, row.after);
62
+          }
63
+          else if (row.field == '工程师岗级') {
64
+            row.before = this.formatDict(this.dict.type.sys_user_engineerlevel, row.before);
65
+            row.after = this.formatDict(this.dict.type.sys_user_engineerlevel, row.after);
66
+          }
67
+          else if (row.field == '岗级') {
68
+            row.before = this.formatDict(this.dict.type.sys_user_postlevel, row.before);
69
+            row.after = this.formatDict(this.dict.type.sys_user_postlevel, row.after);
70
+          }
71
+          else if (row.field == '薪档') {
72
+            row.before = this.formatDict(this.dict.type.sys_user_salarylevel, row.before);
73
+            row.after = this.formatDict(this.dict.type.sys_user_salarylevel, row.after);
74
+          }
75
+          else if (row.field == '技工等级') {
76
+            row.before = this.formatDict(this.dict.type.sys_user_operatorlevel, row.before);
77
+            row.after = this.formatDict(this.dict.type.sys_user_operatorlevel, row.after);
78
+          }
79
+          else if (row.field == '政治面貌') {
80
+            row.before = this.formatDict(this.dict.type.sys_user_political, row.before);
81
+            row.after = this.formatDict(this.dict.type.sys_user_political, row.after);
82
+          }
83
+          else if (row.field == '学历') {
84
+            row.before = this.formatDict(this.dict.type.sys_user_degree, row.before);
85
+            row.after = this.formatDict(this.dict.type.sys_user_degree, row.after);
86
+          }
87
+          else if (row.field == '合同期满' || row.field == '合同签订') {
88
+            row.before = parseTime(row.before, '{y}-{m}-{d}');
89
+            row.after = parseTime(row.after, '{y}-{m}-{d}');
90
+          }
91
+          this.changeRecordList.push(row);
92
+        }
93
+        this.total = response.total;
94
+        this.loading = false;
95
+      });
96
+    },
97
+
98
+    formatDict(arr, val) {
99
+      if (val != null && val != undefined && val != "") {
100
+        let valArr = val.split(',');
101
+        let result = []
102
+        for (let i of valArr) {
103
+          result.push(arr[i].label)
104
+        }
105
+        return result.join(' / ')
106
+      }
107
+      else
108
+        return "无";
109
+    },
10
   }
110
   }
111
+}
11
 </script>
112
 </script>
12
 
113
 
13
-<style lang="scss" scoped>
14
-
15
-</style>
114
+<style lang="scss" scoped></style>

+ 3
- 6
oa-ui/src/views/oa/staff/index.vue Vedi File

323
 
323
 
324
 export default {
324
 export default {
325
   name: "Staff",
325
   name: "Staff",
326
-  dicts: ['sys_normal_disable', 'sys_user_sex', 'sys_user_titles', 'sys_user_certificates',
327
-    'sys_user_pmlevel', 'sys_user_engineerlevel', 'sys_user_operatorlevel', 'sys_user_postlevel', 'sys_user_salarylevel', 'sys_user_political', 'sys_user_degree'],
326
+  dicts: ['sys_normal_disable', 'sys_user_sex', 'sys_user_titles', 'sys_user_certificates', 'sys_user_pmlevel', 'sys_user_engineerlevel', 'sys_user_operatorlevel', 'sys_user_postlevel', 'sys_user_salarylevel', 'sys_user_political', 'sys_user_degree'],
328
   components: { Treeselect },
327
   components: { Treeselect },
329
   data() {
328
   data() {
330
     return {
329
     return {
628
             //   this.form.certificates = this.form.certificates.join(',')
627
             //   this.form.certificates = this.form.certificates.join(',')
629
             // else
628
             // else
630
             //   this.form.certificates = '';
629
             //   this.form.certificates = '';
631
-            this.form.certificates = this.formatArrayToString(this.form.certificates, ',');
632
-            this.form.politicalAffiliation = this.formatArrayToString(this.form.politicalAffiliation, ',')
630
+            this.form.certificates = this.formatArrayToString(this.form.certificates, ',') == '' ? undefined : this.formatArrayToString(this.form.certificates, ',');
631
+            this.form.politicalAffiliation = this.formatArrayToString(this.form.politicalAffiliation, ',') ? undefined : this.formatArrayToString(this.form.politicalAffiliation, ',');
633
             updateUser(this.form).then(response => {
632
             updateUser(this.form).then(response => {
634
               this.$modal.msgSuccess("修改成功");
633
               this.$modal.msgSuccess("修改成功");
635
               this.open = false;
634
               this.open = false;
747
       let newStr = "";
746
       let newStr = "";
748
       if (str) {
747
       if (str) {
749
         newStr = str.join(splitStr)
748
         newStr = str.join(splitStr)
750
-      } else {
751
-        newStr = ""
752
       }
749
       }
753
       return newStr
750
       return newStr
754
     }
751
     }

+ 3
- 3
oa-ui/src/views/oa/staff/projectInfo.vue Vedi File

1
 <!--
1
 <!--
2
  * @Author: wrh
2
  * @Author: wrh
3
  * @Date: 2024-03-25 17:38:39
3
  * @Date: 2024-03-25 17:38:39
4
- * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-05-15 19:05:45
4
+ * @LastEditors: wrh
5
+ * @LastEditTime: 2024-05-17 14:56:12
6
 -->
6
 -->
7
 <template>
7
 <template>
8
   <div>
8
   <div>
70
     // this.getListByProjectLeader();
70
     // this.getListByProjectLeader();
71
     if(this.$route.query){
71
     if(this.$route.query){
72
       let userId = this.$route.query.userId
72
       let userId = this.$route.query.userId
73
-      this.getUserInfo(userId)
73
+      // this.getUserInfo(userId)
74
     }
74
     }
75
   },
75
   },
76
   methods: {
76
   methods: {

Loading…
Annulla
Salva