From d89118c8c2f83e4d39f05b774e9019141f0a6341 Mon Sep 17 00:00:00 2001
From: yubo <autumnal_wind@yeah.net>
Date: 星期三, 24 九月 2025 09:35:11 +0800
Subject: [PATCH] fix: 修复数据库表名大小写不一致问题及SQL查询错误

---
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java |   72 ++++++++++++++++++++++++++++++++++--
 1 files changed, 68 insertions(+), 4 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 c38bb66..d37361d 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
@@ -28,6 +28,7 @@
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -661,13 +662,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())) {
@@ -1448,12 +1449,75 @@
         } else {
             empBaseInfoList = this.list();
         }
-        if (empBaseInfoList.size() > 0) {
-            empBaseInfoList.forEach(p -> {
+        if (!empBaseInfoList.isEmpty()) {
+            empBaseInfoList.parallelStream().forEach(p -> {
                 p.setAge(DateUtil.ageOfNow(p.getBirthdate()));
                 this.saveOrUpdate(p);
             });
         }
         return false;
     }
+
+    @Override
+    public void updateAnnualLeave(String userId) {
+        EmpBaseInfo empBaseInfo = this.getById(userId);
+        int holiday = calculateHoliday(empBaseInfo.getEntryDate());
+        empBaseInfo.setAnnualLeave(holiday);
+        baseMapper.update(null, new LambdaUpdateWrapper<EmpBaseInfo>()
+                .set(EmpBaseInfo::getAnnualLeave, holiday)
+                .eq(EmpBaseInfo::getEmpId, empBaseInfo.getEmpId()));
+    }
+
+    @Override
+    public void updateAnnualLeave() {
+        List<EmpBaseInfo> list = this.list();
+        list.parallelStream().forEach(p -> {
+            int holiday = calculateHoliday(p.getEntryDate());
+            p.setAnnualLeave(holiday);
+            baseMapper.update(null, new LambdaUpdateWrapper<EmpBaseInfo>()
+                    .set(EmpBaseInfo::getAnnualLeave, holiday)
+                    .eq(EmpBaseInfo::getEmpId, p.getEmpId()));
+        });
+    }
+
+    @Override
+    public void updateEmpBaseKeyInfo() {
+        List<EmpBaseInfo> list = this.list();
+        list.parallelStream().forEach(p -> {
+            int holiday = calculateHoliday(p.getEntryDate());
+            int age = calculateAge(p.getBirthdate());
+
+            baseMapper.update(null, new LambdaUpdateWrapper<EmpBaseInfo>()
+                    .set(EmpBaseInfo::getAnnualLeave, holiday)
+                    .set(EmpBaseInfo::getAge, age)
+                    .eq(EmpBaseInfo::getEmpId, p.getEmpId()));
+        });
+    }
+
+    /**
+     * 根据设置的参数计算员工的年假
+     * @param date 入职日期
+     * @return 年假天数
+     */
+    private int calculateHoliday(Date date) {
+        int holiday = 0;
+        int joinYear = DateUtil.ageOfNow(date);
+        String configValue = redisService.get("annual_leave").toString();
+        String[] values = StrUtil.split(configValue, "|");
+        String[] condition = StrUtil.split(values[0], ",");
+        String[] days = StrUtil.split(values[1], ",");
+        if (condition.length == 2) {
+            int one = Integer.parseInt(condition[0]);
+            int two = Integer.parseInt(condition[1]);
+            if (joinYear >= one && joinYear < two) {
+                holiday = Integer.parseInt(days[0]);
+            } else if (joinYear >= two) {
+                holiday = Integer.parseInt(days[1]);
+            }
+        }
+        return holiday;
+    }
+    private int  calculateAge(Date date){
+        return DateUtil.ageOfNow(date);
+    }
 }

--
Gitblit v1.8.0