From b97dc921008fc61a7e0d9de04dbce2956e65e178 Mon Sep 17 00:00:00 2001
From: yubo <autumnal_wind@yeah.net>
Date: 星期二, 10 三月 2026 12:46:53 +0800
Subject: [PATCH] feat(hr): 添加员工转正和退休管理功能

---
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpAccessoryServiceImpl.java |   68 ++++++++++++++++++++-------------
 1 files changed, 41 insertions(+), 27 deletions(-)

diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpAccessoryServiceImpl.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpAccessoryServiceImpl.java
index a168c5a..2b65e56 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpAccessoryServiceImpl.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpAccessoryServiceImpl.java
@@ -40,6 +40,7 @@
 import javax.servlet.http.HttpServletResponse;
 import java.io.*;
 import java.util.*;
+import java.util.function.Consumer;
 
 /**
  * 附件管理 Service实现
@@ -92,29 +93,16 @@
         if (StrUtil.isNotBlank(vo.getEntryDate())) {
             queryWrapper.between("a.entryDate", vo.getEntryDate().split(",")[0], vo.getEntryDate().split(",")[1]);
         }
-        if (StrUtil.isNotBlank(vo.getAge())) {
-            String[] arr = vo.getAge().split(",");
-            for (String s : arr) {
-                if (StrUtil.equals(s, "18-29")) {
-                    queryWrapper.or().between("a.age", 18, 29);
-                }
-                if (StrUtil.equals(s, "30-39")) {
-                    queryWrapper.or().between("a.age", 30, 39);
-                }
-                if (StrUtil.equals(s, "40-49")) {
-                    queryWrapper.or().between("a.age", 40, 49);
-                }
-                if (StrUtil.equals(s, "50-59")) {
-                    queryWrapper.or().between("a.age", 50, 59);
-                }
-                if (StrUtil.equals(s, "60-69")) {
-                    queryWrapper.or().between("a.age", 60, 69);
-                }
-                if (StrUtil.equals(s, "69-999")) {
-                    queryWrapper.or().ge("a.age", 69);
-                }
-            }
 
+        if (StringUtils.isNotBlank(vo.getAge())) {
+            String[] ages = vo.getAge().split(",");
+            Consumer<QueryWrapper<EmpAccessoryVO>> consumer = wrapper -> {
+                for (int i = 0; i < ages.length; i++) {
+                    String ageBtn = ages[i];
+                    wrapper.or().between("a.Age", ageBtn.split("-")[0], ageBtn.split("-")[1]);
+                }
+            };
+            queryWrapper.and(consumer);
         }
         if (StrUtil.isNotBlank(vo.getArchivesStatus())) {
             queryWrapper.in("a.archivesStatus", vo.getArchivesStatus().split(","));
@@ -148,6 +136,20 @@
         }
         if (StringUtils.isNotBlank(vo.getEntryType())) {
             queryWrapper.in("a.entryType", vo.getEntryType().split(","));
+        }        if (StringUtils.isNotBlank(vo.getCertificateList())) {
+            String[] certificates = vo.getCertificateList().split(",");
+            Consumer<QueryWrapper<EmpAccessoryVO>> consumer = new Consumer<QueryWrapper<EmpAccessoryVO>>() {
+                @Override
+                public void accept(QueryWrapper<EmpAccessoryVO> 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);
+                    }
+                }
+            };
+            queryWrapper.and(consumer);
         }
         queryWrapper.inSql("c.dept_Id", remoteDeptService.userRightDepts());
         if (StrUtil.isNotBlank(vo.getFileName())){
@@ -184,8 +186,7 @@
                 queryWrapper.orderByAsc("a.certificateNumb");
             }
         }
-
-        queryWrapper.groupBy(" a.delFlag,a.empName,a.empStatus,a.empId,a.certificateNumb,a.empNumb,deptName,a.jobName");
+        queryWrapper.groupBy(" a.delFlag,a.empName,a.empStatus,a.empId,a.certificateNumb,a.empNumb,deptName,a.jobName,a.deptId");
         Page<EmpAccessory> page = new Page<>(request.getPageNum(), request.getPageSize());
        // String querySql = empAccessoryMapper.getQuerySql();
        //List<Label> labelList = labelService.findLabels(new Label());
@@ -218,13 +219,13 @@
     public void createEmpAccessory(Long labelid, MultipartFile file, Long empId) throws FebsException, IOException {
         EmpBaseInfo empBaseInfo = empBaseInfoService.getById(empId);
         String nameAndCertificateNumb = empBaseInfo.getEmpName() + "_" + empBaseInfo.getCertificateNumb() + "/";
-        Dict dict = MyUtil.filesUpload(file, properties.getUploadSinglePath() + nameAndCertificateNumb, snowflake.nextIdStr());
+        Dict dict = MyUtil.filesUpload(file, properties.getUploadSinglePath() + nameAndCertificateNumb);
         EmpAccessory accessory = new EmpAccessory();
         accessory.setCreatetime(new Date());
         accessory.setCreator(FebsUtil.getUserId());
         accessory.setDelFlag(0);
         accessory.setEmpid(empId);
-        accessory.setFilesaddress(dict.getStr("newName"));
+        accessory.setFilesaddress(dict.getStr("fileName"));
         accessory.setFilesformat(StrUtil.isBlank(dict.getStr("suffix")) ? dict.getStr("suffix") : dict.getStr("suffix").substring(1));
         accessory.setAccessoryid(SequenceUtil.generateId(0L, ModuleCode.HR_FIlE));
         accessory.setFilesname(dict.getStr("fileName"));
@@ -241,9 +242,22 @@
         if ( empAccessory.getFilesname().lastIndexOf(".")<=0){
             throw  new FebsException("文件名格式错误");
         }
+
+        EmpAccessory accessory = this.getById(empAccessory.getAccessoryid());
+
+        EmpBaseInfo empBaseInfo = empBaseInfoService.getById(accessory.getEmpid());
+        String nameAndCertificateNumb = empBaseInfo.getEmpName() + "_" + empBaseInfo.getCertificateNumb() + "/";
+        if (FileUtil.exist(properties.getUploadSinglePath() + nameAndCertificateNumb+empAccessory.getFilesname())){
+            throw  new FebsException("文件已经存在");
+        }
+
+        File file = new File(properties.getUploadSinglePath() + nameAndCertificateNumb+accessory.getFilesaddress());
+        FileUtil.rename(file,empAccessory.getFilesname(),true);
         LambdaUpdateWrapper<EmpAccessory> wrapper = new LambdaUpdateWrapper<>();
         wrapper.eq(EmpAccessory::getAccessoryid,empAccessory.getAccessoryid())
-                .set(EmpAccessory::getFilesname,empAccessory.getFilesname()).set(EmpAccessory::getFilesformat,  empAccessory.getFilesname().substring( empAccessory.getFilesname().lastIndexOf(".")+1));
+                .set(EmpAccessory::getFilesname,empAccessory.getFilesname())
+                .set(EmpAccessory::getFilesaddress,empAccessory.getFilesname())
+                .set(EmpAccessory::getFilesformat,  empAccessory.getFilesname().substring( empAccessory.getFilesname().lastIndexOf(".")+1));
         this.update(wrapper);
     }
 

--
Gitblit v1.8.0