Procházet zdrojové kódy

用户变更记录

lamphua před 1 rokem
rodič
revize
a793961bba

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

@@ -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());

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

@@ -24,6 +24,10 @@ public class CmcUserHistory extends BaseEntity
24 24
     @Excel(name = "用户id")
25 25
     private Long userId;
26 26
 
27
+    /** 部门id */
28
+    @Excel(name = "部门id")
29
+    private Long deptId;
30
+
27 31
     /** 技术职称(0正高、1副高、2中级、3助工) */
28 32
     @Excel(name = "技术职称", readConverterExp = "0=正高、1=副高、2=中级、3=助工")
29 33
     private String titles;
@@ -56,22 +60,10 @@ public class CmcUserHistory extends BaseEntity
56 60
     @Excel(name = "更新原因", readConverterExp = "0=误录修改、1=正常调整")
57 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 64
     @Excel(name = "政治面貌")
69 65
     private String politicalAffiliation;
70 66
 
71
-    /** 民族 */
72
-    @Excel(name = "民族")
73
-    private String ethnic;
74
-
75 67
     /** 毕业院校 */
76 68
     @Excel(name = "毕业院校")
77 69
     private String graduateSchool;
@@ -92,9 +84,11 @@ public class CmcUserHistory extends BaseEntity
92 84
     @Excel(name = "合同期满", width = 30, dateFormat = "yyyy-MM-dd")
93 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 93
     public void setHistoryId(Integer historyId)
100 94
     {
@@ -114,6 +108,15 @@ public class CmcUserHistory extends BaseEntity
114 108
     {
115 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 120
     public void setTitles(String titles)
118 121
     {
119 122
         this.titles = titles;
@@ -183,24 +186,6 @@ public class CmcUserHistory extends BaseEntity
183 186
     {
184 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 189
     public void setPoliticalAffiliation(String politicalAffiliation)
205 190
     {
206 191
         this.politicalAffiliation = politicalAffiliation;
@@ -210,15 +195,6 @@ public class CmcUserHistory extends BaseEntity
210 195
     {
211 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 198
     public void setGraduateSchool(String graduateSchool)
223 199
     {
224 200
         this.graduateSchool = graduateSchool;
@@ -264,14 +240,24 @@ public class CmcUserHistory extends BaseEntity
264 240
     {
265 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 263
     @Override

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

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

+ 5
- 6
oa-back/sql/sql.sql Zobrazit soubor

@@ -6880,25 +6880,24 @@ drop table if exists `cmc_user_history`;
6880 6880
 create table `cmc_user_history`  (
6881 6881
   history_id		int				not null	auto_increment 	comment '历史id',
6882 6882
   user_id			bigint			default null				comment '用户id',
6883
+  dept_id			bigint			default null			   comment '部门id',
6883 6884
   pm_level			char(1)			default null			   comment '项目经理级别(0一、1二、2三)',
6884 6885
   titles			char(2)			default null				comment '技术职称(0正高、1副高、2中级、3助工)',
6885 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 6889
   engineer_level	char(1)			default null			   comment '工程师岗级(0一级、1二级、2三级、3四级、4五级、5六级)',
6887 6890
   post_level		char(1)			default null			   comment '岗级(0一岗、1二岗、2三岗、3四岗、4五岗、5六岗、6七岗、7八岗)',
6888 6891
   salary_level		char(1)			default null			   comment '薪档(0一级、1二级、2三级、3四级、4五级、5六级、6七级、7八级)',
6889 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 6893
   political_affiliation varchar(5)	default null				comment '政治面貌',
6893
-  ethnic 			varchar(5) 		default null				comment '民族',
6894 6894
   graduate_school 	varchar(20) 	default null				comment '毕业院校',
6895 6895
   major 			varchar(20) 	default null				comment '专业',
6896 6896
   degree 			char(1) 		default null				comment '学历',
6897 6897
   contract_sign 	date			default null				comment '合同签订',
6898 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 6901
   primary key (`history_id`)
6903 6902
 ) engine = innodb comment = 'cmc用户历史表';
6904 6903
 

+ 4
- 3
oa-ui/src/api/system/user.js Zobrazit soubor

@@ -19,10 +19,11 @@ export function getUser(userId) {
19 19
 }
20 20
 
21 21
 // 查询用户变更信息
22
-export function getUserChangeInfo(userId) {
22
+export function getUserChangeInfo(query) {
23 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 Zobrazit soubor

@@ -1,15 +1,114 @@
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 7
 <template>
2 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 18
   </div>
5 19
 </template>
6 20
 
7 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 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 Zobrazit soubor

@@ -323,8 +323,7 @@ import "@riophae/vue-treeselect/dist/vue-treeselect.css";
323 323
 
324 324
 export default {
325 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 327
   components: { Treeselect },
329 328
   data() {
330 329
     return {
@@ -628,8 +627,8 @@ export default {
628 627
             //   this.form.certificates = this.form.certificates.join(',')
629 628
             // else
630 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 632
             updateUser(this.form).then(response => {
634 633
               this.$modal.msgSuccess("修改成功");
635 634
               this.open = false;
@@ -747,8 +746,6 @@ export default {
747 746
       let newStr = "";
748 747
       if (str) {
749 748
         newStr = str.join(splitStr)
750
-      } else {
751
-        newStr = ""
752 749
       }
753 750
       return newStr
754 751
     }

+ 3
- 3
oa-ui/src/views/oa/staff/projectInfo.vue Zobrazit soubor

@@ -1,8 +1,8 @@
1 1
 <!--
2 2
  * @Author: wrh
3 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 7
 <template>
8 8
   <div>
@@ -70,7 +70,7 @@ export default {
70 70
     // this.getListByProjectLeader();
71 71
     if(this.$route.query){
72 72
       let userId = this.$route.query.userId
73
-      this.getUserInfo(userId)
73
+      // this.getUserInfo(userId)
74 74
     }
75 75
   },
76 76
   methods: {

Loading…
Zrušit
Uložit