From f4151abee349597ed58a405a8a5e48a5d1a1f7a6 Mon Sep 17 00:00:00 2001
From: luoyb <412940104@qq.com>
Date: 星期日, 02 六月 2024 19:06:39 +0800
Subject: [PATCH] fix: 问题修复 1.员工档案中修改合同时性别不能自动带入问题

---
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java |  115 ++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 96 insertions(+), 19 deletions(-)

diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java
index e78f74a..3c12d33 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java
@@ -98,12 +98,13 @@
         //设置部门
         // List<EmpBaseInfo> list = setDeptName(iPage.getRecords());
         List<EmpBaseInfo> list = iPage.getRecords();
+        List<EmpBaseInfo> newList = new ArrayList<>();
         List<DicItem> dicItems = CastUtil.castList(redisService.get("dicItems"), DicItem.class);
         list.forEach(p -> {
             p.setSexName("1".equals(p.getSex()) ? "男" : "女");
             p.setArchivesStatusName("0".equals(p.getArchivesStatus()) ? "未移交" : "已移交");
-            p.setEmpCardStatusName("1".equals(p.getEmpCardStatus()) ? "未发" : "已发");
-            p.setHandbookStatusName("1".equals(p.getHandbookStatus()) ? "未发" : "已发");
+            p.setEmpCardStatusName("0".equals(p.getEmpCardStatus()) ? "未发" : "已发");
+            p.setHandbookStatusName("0".equals(p.getHandbookStatus()) ? "未发" : "已发");
             p.setEmpStatusName("0".equals(p.getEmpStatus()) ? "在职" : "离职");
             //保险类型
             p.setInsuranceTypeName(dicItems.stream()
@@ -157,8 +158,23 @@
                     .findFirst()
                     .map(DicItem::getDicItemName)
                     .orElse(""));
-            p.setCertificateListName(getCertificateListName(p.getCertificateList(),dicItems));
+            p.setCertificateListName(getCertificateListName(p.getCertificateList(), dicItems));
         });
+        // if (StringUtils.isNotBlank(empBaseInfo.getCertificateList())) {
+        //     String[] certificates = empBaseInfo.getCertificateList().split(",");
+        //     list.forEach(k -> {
+        //         String[] dbCertificates = k.getCertificateList().split(",");
+        //         for (String certificate : certificates) {
+        //             if (Arrays.asList(dbCertificates).contains(certificate)) {
+        //                 newList.add(k);
+        //                 break;
+        //             }
+        //         }
+        //     });
+        //     iPage.setRecords(newList);
+        // } else {
+        //     iPage.setRecords(list);
+        // }
         iPage.setRecords(list);
         return iPage;
     }
@@ -194,12 +210,28 @@
         empBaseInfo.setModifier(operatorId);
         this.saveOrUpdate(empBaseInfo);
 
+        addEmpDimissLog(empBaseInfo, operatorId, empId);
+    }
+
+    /**
+     * 增加员工后同步增加入职记录
+     * <p>
+     * date 2021-07-30 09:12
+     *
+     * @param empBaseInfo 员工信息
+     * @param operatorId  操作员Id
+     * @param empId       员工Id
+     * @return void
+     * @author: luoyibo
+     */
+    private void addEmpDimissLog(EmpBaseInfo empBaseInfo, String operatorId, Long empId) {
         EmpDimissionLog dimissionLog = new EmpDimissionLog();
         dimissionLog.setCloseId(SequenceUtil.generateId(0L, ModuleCode.HR_EMPLOYEE));
         dimissionLog.setEmpId(empId);
         dimissionLog.setEntryDate(empBaseInfo.getEntryDate());
         dimissionLog.setDimissionType("20");
         dimissionLog.setRemark(empBaseInfo.getRemark());
+        dimissionLog.setDeptName(empBaseInfo.getAllDeptName());
         dimissionLog.setCreator(operatorId);
         dimissionLog.setModifier(operatorId);
 
@@ -324,6 +356,10 @@
         String operatorId = Optional.of(FebsUtil.getUserId()).orElse("1");
         String[] str = ids.split(",");
         List<String> list = new ArrayList<>(Arrays.asList(str));
+//        for (int i = 0, j = str.length; i < j; i++) {
+//            EmpBaseInfo emp = this.getById(str[i]);
+//            addEmpDimissLog(emp, operatorId, Long.valueOf(str[i]));
+//        }
         return empBaseInfoMapper.momentToNormal(list, operatorId) > 0;
     }
 
@@ -349,6 +385,7 @@
     public boolean closeEmpArchives(EmpDimissionLog empDimissionLog) {
         String operatorId = Optional.of(FebsUtil.getUserId()).orElse("1");
         String[] str = empDimissionLog.getEmpIds().split(",");
+        String[] empDeptNames = empDimissionLog.getDeptNames().split(",");
         List<String> list = new ArrayList<>(Arrays.asList(str));
         String[] strDate = empDimissionLog.getEntryDates().split(",");
 
@@ -365,6 +402,7 @@
             dimissionLog.setReporter(empDimissionLog.getReporter());
             dimissionLog.setCreator(operatorId);
             dimissionLog.setModifier(operatorId);
+            dimissionLog.setDeptName(empDeptNames[i]);
             dimissionLogService.save(dimissionLog);
         }
 
@@ -458,6 +496,10 @@
                 returnList.add(StrUtil.format("导入员工基本信息异常: 出现位置第{}行, 原因:{}员工编号重复", listObject.indexOf(list) + 1, list.get(1).toString()));
                 continue;
             }
+            if (this.count(new LambdaQueryWrapper<EmpBaseInfo>().eq(EmpBaseInfo::getCertificateNumb, list.get(1).toString()).ne(EmpBaseInfo::getDelFlag, 1)) > 0) {
+                returnList.add(StrUtil.format("导入员工基本信息异常: 出现位置第{}行, 原因:{}身份证号重复", listObject.indexOf(list) + 1, list.get(1).toString()));
+                continue;
+            }
             EmpBaseInfo empBaseInfo = new EmpBaseInfo();
             empBaseInfo.setEmpId(SequenceUtil.generateId(0L, ModuleCode.HR_EMPLOYEE));
             empBaseInfo.setArchivesNumb(list.get(0).toString());
@@ -536,7 +578,7 @@
             }
 
             if (StringUtils.isNotBlank(list.get(11).toString())) {
-                empBaseInfo.setEntryDate(DateUtil.parseDate(list.get(11).toString()));
+                empBaseInfo.setEntryDate(DateUtil.parse(list.get(11).toString()));
             }
 
             //最高学历
@@ -619,11 +661,13 @@
                 empBaseInfo.setArchivesStatus(dicItem.getDicItemCode());
             }
             empBaseInfo.setEmpStatus("0");
-            this.save(empBaseInfo);
+            boolean saveResult = this.save(empBaseInfo);
+            //新入职员工需要增加一条入职记录
+            this.addEmpDimissLog(empBaseInfo, "2", empBaseInfo.getEmpId());
         }
     }
 
-    @Override
+//    @Override
     public void getImage(String empId, HttpServletResponse response) throws Exception {
         EmpBaseInfo empBaseInfo = this.getById(empId);
         if (StrUtil.isBlank(empBaseInfo.getImagePath())) {
@@ -696,17 +740,22 @@
                 p.setEmpTypeName("1".equals(p.getEmpType()) ? "正式工" : "临时工");
             }
             if (StringUtils.isNotBlank(p.getDimissionType())) {
-                if ("1".equals(p.getDimissionType())) {
-                    p.setDimissionTypeName("正常离职");
-                } else if ("2".equals(p.getDimissionType())) {
-                    p.setDimissionTypeName("自动离职");
-                } else if ("3".equals(p.getDimissionType())) {
-                    p.setDimissionTypeName("公司劝退");
-                } else if ("4".equals(p.getDimissionType())) {
-                    p.setDimissionTypeName("公司辞退");
-                } else if ("5".equals(p.getDimissionType())) {
-                    p.setDimissionTypeName("试用期内");
-                }
+                // if ("1".equals(p.getDimissionType())) {
+                //     p.setDimissionTypeName("正常离职");
+                // } else if ("2".equals(p.getDimissionType())) {
+                //     p.setDimissionTypeName("自动离职");
+                // } else if ("3".equals(p.getDimissionType())) {
+                //     p.setDimissionTypeName("公司劝退");
+                // } else if ("4".equals(p.getDimissionType())) {
+                //     p.setDimissionTypeName("公司辞退");
+                // } else if ("5".equals(p.getDimissionType())) {
+                //     p.setDimissionTypeName("试用期内");
+                // }
+                p.setDimissionTypeName(dicItems.stream()
+                        .filter(k -> DicCode.IN_OUT_TYPE.equals(k.getDicCode()) && k.getDicItemCode().equals(p.getDimissionType()))
+                        .findFirst()
+                        .map(DicItem::getDicItemName)
+                        .orElse(""));
             }
             p.setInsuranceTypeName("1".equals(p.getInsuranceType()) ? "(深户)五险一档" : "(非深户)五险一档");
             p.setArchivesStatusName("0".equals(p.getArchivesStatus()) ? "未移交" : "已移交");
@@ -1146,8 +1195,8 @@
                 @Override
                 public void accept(QueryWrapper<EmpBaseInfo> wrapper) {
                     for (int i = 0; i < certificates.length; i++) {
-                        String ageBtn = certificates[i];
-                        wrapper.or().like("a.certificateList", ageBtn);
+                        String ageBtn = "|" + certificates[i] + "|";
+                        wrapper.gt("LOCATE('" + ageBtn + "',CONCAT('|',replace( certificateList, ',', '|,|'),'|'))", 0);
                     }
                 }
             };
@@ -1379,4 +1428,32 @@
         }
         return tempName;
     }
+
+    @Override
+    public boolean updateSeniority() {
+        return empBaseInfoMapper.updateSeniority() > 0;
+    }
+
+    @Override
+    public boolean updateDeptName() {
+        return empBaseInfoMapper.updateDeptName() > 0;
+    }
+
+    @Override
+    public boolean updateEmpAge(String userId) {
+        List<EmpBaseInfo> empBaseInfoList = new ArrayList<>();
+        if (StringUtils.isNotBlank(userId)) {
+            EmpBaseInfo empBaseInfo = this.getById(userId);
+            empBaseInfoList.add(empBaseInfo);
+        } else {
+            empBaseInfoList = this.list();
+        }
+        if (empBaseInfoList.size() > 0) {
+            empBaseInfoList.forEach(p -> {
+                p.setAge(DateUtil.ageOfNow(p.getBirthdate()));
+                this.saveOrUpdate(p);
+            });
+        }
+        return false;
+    }
 }

--
Gitblit v1.8.0