Browse Source

Merge remote-tracking branch 'origin/master_20240722' into master_20240722

dongpo 6 months ago
parent
commit
bd547e710c
15 changed files with 159 additions and 40 deletions
  1. 3 1
      yudao-module-personnel/yudao-module-attendance-api/src/main/java/cn/iocoder/yudao/module/attendance/enums/ErrorCodeConstants.java
  2. 120 3
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/service/leave/AttendanceLeaveServiceImpl.java
  3. 1 3
      yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/service/workdaysetting/AttendanceWorkdaySettingServiceImpl.java
  4. 4 3
      yudao-module-personnel/yudao-module-employee-api/src/main/java/cn/iocoder/yudao/module/employee/api/dto/EmployeeRespDTO.java
  5. 3 3
      yudao-module-personnel/yudao-module-employee-api/src/main/java/cn/iocoder/yudao/module/employee/api/dto/EmployeeSaveReqDTO.java
  6. 3 3
      yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/controller/admin/info/vo/EmployeeInfoHistoryPageReqVO.java
  7. 3 3
      yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/controller/admin/info/vo/EmployeeInfoHistoryRespVO.java
  8. 3 3
      yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/controller/admin/info/vo/EmployeeInfoHistorySaveReqVO.java
  9. 3 3
      yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/controller/admin/info/vo/EmployeeInfoPageReqVO.java
  10. 3 3
      yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/controller/admin/info/vo/EmployeeInfoQueryReqVO.java
  11. 3 3
      yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/controller/admin/info/vo/EmployeeInfoRespVO.java
  12. 3 3
      yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/controller/admin/info/vo/EmployeeInfoSaveReqVO.java
  13. 3 3
      yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/dal/dataobject/info/EmployeeInfoDO.java
  14. 3 3
      yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/dal/dataobject/info/EmployeeInfoHistoryDO.java
  15. 1 0
      yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/service/info/EmployeeInfoServiceImpl.java

+ 3 - 1
yudao-module-personnel/yudao-module-attendance-api/src/main/java/cn/iocoder/yudao/module/attendance/enums/ErrorCodeConstants.java

@@ -18,5 +18,7 @@ public interface ErrorCodeConstants {
     ErrorCode ATTENDANCE_LEAVE_NOT_EXISTS = new ErrorCode(1_013_000_004, "请假信息不存在");
     ErrorCode ATTENDANCE_BUSINESS_NOT_EXISTS = new ErrorCode(1_013_000_005, "出差信息不存在");
     ErrorCode ATTENDANCE_OUT_NOT_EXISTS = new ErrorCode(1_013_000_006, "公务外出信息不存在");
-    ErrorCode WORKDAY_SETTING_NOT_EXISTS = new ErrorCode(1_013_000_007, "考勤工作日设置不存在");
+    ErrorCode ATTENDANCE_WORKDAY_SETTING_NOT_EXISTS = new ErrorCode(1_013_000_007, "考勤工作日设置不存在");
+    ErrorCode ATTENDANCE_EMAINING_ANNUAL_LEAVE_IS_INSUFFICIENT = new ErrorCode(1_013_000_008, "剩余年假不足");
+    ErrorCode ATTENDANCE_UPDATING_EMPLOYEE_INFO_ERROR = new ErrorCode(1_013_000_009, "考勤更新员工信息时发生错误");
 }

+ 120 - 3
yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/service/leave/AttendanceLeaveServiceImpl.java

@@ -12,16 +12,19 @@ import cn.iocoder.yudao.module.attendance.dal.dataobject.leave.AttendanceLeaveDO
 import cn.iocoder.yudao.module.attendance.dal.mysql.leave.AttendanceLeaveMapper;
 import cn.iocoder.yudao.module.employee.api.EmployeeApi;
 import cn.iocoder.yudao.module.employee.api.dto.EmployeeRespDTO;
+import cn.iocoder.yudao.module.employee.api.dto.EmployeeSaveReqDTO;
 import cn.iocoder.yudao.module.infra.api.file.FileApi;
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.util.List;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.module.attendance.enums.ErrorCodeConstants.ATTENDANCE_LEAVE_NOT_EXISTS;
+import static cn.iocoder.yudao.module.attendance.enums.ErrorCodeConstants.*;
 
 /**
  * 请假信息 Service 实现类
@@ -40,6 +43,7 @@ public class AttendanceLeaveServiceImpl implements AttendanceLeaveService {
     private FileApi fileApi;
 
     @Override
+    @DSTransactional // 多数据源,使用 @DSTransactional 保证本地事务,以及数据源的切换
     public Long createLeave(AttendanceLeaveSaveReqVO createReqVO) {
         // 获取用户信息和租户ID
         LoginUser user = SecurityFrameworkUtils.getLoginUser();
@@ -66,6 +70,28 @@ public class AttendanceLeaveServiceImpl implements AttendanceLeaveService {
         leaveMapper.insert(leave);
         // 保存业务uuid到附件中
         fileApi.updateFileBiz(createReqVO.getFileIdList(), infoId);
+        if ("年假".equals(createReqVO.getLeaveType())) {
+            // 获取剩余年假和申请天数
+            BigDecimal remainingAnnualLeave = employee.getRemainingAnnualLeave();
+            String requestDayStr = createReqVO.getDay(); // 更清晰的变量名
+            BigDecimal requestDays = new BigDecimal(requestDayStr); // 假设getDay返回的是可以解析为double的字符串
+
+            // 检查剩余年假是否足够
+            if (remainingAnnualLeave.compareTo(requestDays) < 0) {
+                throw exception(ATTENDANCE_EMAINING_ANNUAL_LEAVE_IS_INSUFFICIENT);
+            }
+            // 如果剩余年假足够,进行扣减操作
+            employee.setRemainingAnnualLeave(remainingAnnualLeave.subtract(requestDays));
+            employee.setUsedAnnualLeave(employee.getUsedAnnualLeave().add(requestDays));
+            // 创建一个DTO来更新员工信息(假设EmployeeSaveReqDTO已经包含了所有必要的字段)
+            EmployeeSaveReqDTO updateObj = BeanUtils.toBean(employee, EmployeeSaveReqDTO.class);
+            // 更新员工信息
+            try {
+                employeeApi.updateEmployee(updateObj);
+            } catch (Exception e) {
+                throw exception(ATTENDANCE_UPDATING_EMPLOYEE_INFO_ERROR);
+            }
+        }
         // 返回
         return leave.getId();
     }
@@ -79,13 +105,86 @@ public class AttendanceLeaveServiceImpl implements AttendanceLeaveService {
     }
 
     @Override
+    @DSTransactional // 多数据源,使用 @DSTransactional 保证本地事务,以及数据源的切换
     public void updateLeave(AttendanceLeaveSaveReqVO updateReqVO) {
         // 校验存在
         validateLeaveExists(updateReqVO.getId());
-        // 保存业务uuid到附件中
-        fileApi.updateFileBiz(updateReqVO.getFileIdList(), updateReqVO.getLeaveId());
+        // 查询原数据
+        AttendanceLeaveDO oldLeave = leaveMapper.selectById(updateReqVO.getId());
         // 请假人信息
         EmployeeRespDTO employee = employeeApi.getEmployeeById(updateReqVO.getEmployeeId());
+        if (oldLeave.getEmployeeId().equals(employee.getId())) {// 员工ID不变
+            if ("年假".equals(oldLeave.getLeaveType()) && "年假".equals(updateReqVO.getLeaveType())) {
+                // 新旧都是年假,对比天数进行增减
+                BigDecimal oldDays = new BigDecimal(oldLeave.getDay());
+                BigDecimal newDays = new BigDecimal(updateReqVO.getDay());
+                BigDecimal differenceDays = newDays.subtract(oldDays);// 差值
+                // 获取剩余年假和申请天数
+                BigDecimal remainingAnnualLeave = employee.getRemainingAnnualLeave();
+                if (remainingAnnualLeave.compareTo(differenceDays) < 0) {
+                    throw exception(ATTENDANCE_EMAINING_ANNUAL_LEAVE_IS_INSUFFICIENT);
+                }
+                // 如果剩余年假足够,进行扣减操作
+                employee.setRemainingAnnualLeave(remainingAnnualLeave.subtract(differenceDays));
+                employee.setUsedAnnualLeave(employee.getUsedAnnualLeave().add(differenceDays));
+                EmployeeSaveReqDTO updateObj = BeanUtils.toBean(employee, EmployeeSaveReqDTO.class);
+                // 更新员工信息
+                try {
+                    employeeApi.updateEmployee(updateObj);
+                } catch (Exception e) {
+                    throw exception(ATTENDANCE_UPDATING_EMPLOYEE_INFO_ERROR);
+                }
+            }
+            if (!"年假".equals(oldLeave.getLeaveType()) && "年假".equals(updateReqVO.getLeaveType())) {
+                // 新的是年假、旧的不是
+                BigDecimal remainingAnnualLeave = employee.getRemainingAnnualLeave();
+                String requestDayStr = updateReqVO.getDay();
+                BigDecimal requestDays = new BigDecimal(requestDayStr);
+                // 检查剩余年假是否足够
+                if (remainingAnnualLeave.compareTo(requestDays) < 0) {
+                    throw exception(ATTENDANCE_EMAINING_ANNUAL_LEAVE_IS_INSUFFICIENT);
+                }
+                // 如果剩余年假足够,进行扣减操作
+                employee.setRemainingAnnualLeave(remainingAnnualLeave.subtract(requestDays));
+                employee.setUsedAnnualLeave(employee.getUsedAnnualLeave().add(requestDays));
+                EmployeeSaveReqDTO updateObj = BeanUtils.toBean(employee, EmployeeSaveReqDTO.class);
+                // 更新员工信息
+                try {
+                    employeeApi.updateEmployee(updateObj);
+                } catch (Exception e) {
+                    throw exception(ATTENDANCE_UPDATING_EMPLOYEE_INFO_ERROR);
+                }
+            }
+            if ("年假".equals(oldLeave.getLeaveType()) && !"年假".equals(updateReqVO.getLeaveType())) {
+                // 旧的是年假,新的不是,归还年假天数
+                BigDecimal remainingAnnualLeave = employee.getRemainingAnnualLeave();
+                BigDecimal oldDays = new BigDecimal(oldLeave.getDay());
+                employee.setRemainingAnnualLeave(remainingAnnualLeave.add(oldDays));
+                employee.setUsedAnnualLeave(employee.getUsedAnnualLeave().subtract(oldDays));
+                // 创建一个DTO来更新员工信息(假设EmployeeSaveReqDTO已经包含了所有必要的字段)
+                EmployeeSaveReqDTO updateObj = BeanUtils.toBean(employee, EmployeeSaveReqDTO.class);
+                // 更新员工信息
+                try {
+                    employeeApi.updateEmployee(updateObj);
+                } catch (Exception e) {
+                    throw exception(ATTENDANCE_UPDATING_EMPLOYEE_INFO_ERROR);
+                }
+            }
+        }
+//        else {// 员工ID变化
+//            if ("年假".equals(oldLeave.getLeaveType()) && "年假".equals(updateReqVO.getLeaveType())) {
+//                // 新旧都是年假
+//            }
+//            if (!"年假".equals(oldLeave.getLeaveType()) && "年假".equals(updateReqVO.getLeaveType())) {
+//                // 新的是年假、旧的不是
+//            }
+//            if ("年假".equals(oldLeave.getLeaveType()) && !"年假".equals(updateReqVO.getLeaveType())) {
+//                // 旧的是年假,新的不是
+//            }
+//        }
+
+        // 保存业务uuid到附件中
+        fileApi.updateFileBiz(updateReqVO.getFileIdList(), updateReqVO.getLeaveId());
         updateReqVO.setEmployeeId(employee.getId());
         updateReqVO.setEmployeeName(employee.getName());
         updateReqVO.setEmployeePhone(employee.getPhone());
@@ -97,9 +196,27 @@ public class AttendanceLeaveServiceImpl implements AttendanceLeaveService {
     }
 
     @Override
+    @DSTransactional // 多数据源,使用 @DSTransactional 保证本地事务,以及数据源的切换
     public void deleteLeave(Long id) {
         // 校验存在
         validateLeaveExists(id);
+        // 查询原数据
+        AttendanceLeaveDO oldLeave = leaveMapper.selectById(id);
+        // 请假人信息
+        EmployeeRespDTO employee = employeeApi.getEmployeeById(oldLeave.getEmployeeId());
+        if ("年假".equals(oldLeave.getLeaveType())) {
+            BigDecimal remainingAnnualLeave = employee.getRemainingAnnualLeave();
+            BigDecimal oldDays = new BigDecimal(oldLeave.getDay());
+            employee.setRemainingAnnualLeave(remainingAnnualLeave.add(oldDays));
+            employee.setUsedAnnualLeave(employee.getUsedAnnualLeave().subtract(oldDays));
+            EmployeeSaveReqDTO updateObj = BeanUtils.toBean(employee, EmployeeSaveReqDTO.class);
+            // 更新员工信息
+            try {
+                employeeApi.updateEmployee(updateObj);
+            } catch (Exception e) {
+                throw exception(ATTENDANCE_UPDATING_EMPLOYEE_INFO_ERROR);
+            }
+        }
         // 删除
         leaveMapper.deleteById(id);
     }

+ 1 - 3
yudao-module-personnel/yudao-module-attendance-biz/src/main/java/cn/iocoder/yudao/module/attendance/service/workdaysetting/AttendanceWorkdaySettingServiceImpl.java

@@ -4,7 +4,6 @@ import cn.iocoder.yudao.framework.security.core.LoginUser;
 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.transaction.annotation.Transactional;
 
 import java.text.DateFormat;
 import java.text.ParseException;
@@ -13,7 +12,6 @@ import java.util.*;
 import cn.iocoder.yudao.module.attendance.controller.admin.workdaysetting.vo.*;
 import cn.iocoder.yudao.module.attendance.dal.dataobject.workdaysetting.AttendanceWorkdaySettingDO;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 
 import cn.iocoder.yudao.module.attendance.dal.mysql.workdaysetting.AttendanceWorkdaySettingMapper;
@@ -63,7 +61,7 @@ public class AttendanceWorkdaySettingServiceImpl implements AttendanceWorkdaySet
 
     private void validateWorkdaySettingExists(Long id) {
         if (workdaySettingMapper.selectById(id) == null) {
-            throw exception(WORKDAY_SETTING_NOT_EXISTS);
+            throw exception(ATTENDANCE_WORKDAY_SETTING_NOT_EXISTS);
         }
     }
 

+ 4 - 3
yudao-module-personnel/yudao-module-employee-api/src/main/java/cn/iocoder/yudao/module/employee/api/dto/EmployeeRespDTO.java

@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.employee.api.dto;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.*;
 
+import java.math.BigDecimal;
 import java.time.LocalDate;
 
 /**
@@ -88,15 +89,15 @@ public class EmployeeRespDTO {
     /**
      * 年假基准天数
      */
-    private Integer baseAnnualLeave;
+    private BigDecimal baseAnnualLeave;
     /**
      * 已使用年假天数
      */
-    private Integer usedAnnualLeave;
+    private BigDecimal usedAnnualLeave;
     /**
      * 剩余年假天数
      */
-    private Integer remainingAnnualLeave;
+    private BigDecimal remainingAnnualLeave;
 
     /**
      * 最新合同开始日期

+ 3 - 3
yudao-module-personnel/yudao-module-employee-api/src/main/java/cn/iocoder/yudao/module/employee/api/dto/EmployeeSaveReqDTO.java

@@ -136,17 +136,17 @@ public class EmployeeSaveReqDTO {
     /**
      * 年假基准天数
      */
-    private Integer baseAnnualLeave;
+    private BigDecimal baseAnnualLeave;
 
     /**
      * 已使用年假天数
      */
-    private Integer usedAnnualLeave;
+    private BigDecimal usedAnnualLeave;
 
     /**
      * 剩余年假天数
      */
-    private Integer remainingAnnualLeave;
+    private BigDecimal remainingAnnualLeave;
 
     /**
      * 出生日期

+ 3 - 3
yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/controller/admin/info/vo/EmployeeInfoHistoryPageReqVO.java

@@ -95,13 +95,13 @@ public class EmployeeInfoHistoryPageReqVO extends PageParam {
     private String bankCardNumber;
 
     @Schema(description = "年假基准天数")
-    private Integer baseAnnualLeave;
+    private BigDecimal baseAnnualLeave;
 
     @Schema(description = "已使用年假天数")
-    private Integer usedAnnualLeave;
+    private BigDecimal usedAnnualLeave;
 
     @Schema(description = "剩余年假天数")
-    private Integer remainingAnnualLeave;
+    private BigDecimal remainingAnnualLeave;
 
     @Schema(description = "出生日期")
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)

+ 3 - 3
yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/controller/admin/info/vo/EmployeeInfoHistoryRespVO.java

@@ -120,15 +120,15 @@ public class EmployeeInfoHistoryRespVO {
 
     @Schema(description = "年假基准天数")
     @ExcelProperty("年假基准天数")
-    private Integer baseAnnualLeave;
+    private BigDecimal baseAnnualLeave;
 
     @Schema(description = "已使用年假天数")
     @ExcelProperty("已使用年假天数")
-    private Integer usedAnnualLeave;
+    private BigDecimal usedAnnualLeave;
 
     @Schema(description = "剩余年假天数")
     @ExcelProperty("剩余年假天数")
-    private Integer remainingAnnualLeave;
+    private BigDecimal remainingAnnualLeave;
 
     @Schema(description = "出生日期")
     @ExcelProperty("出生日期")

+ 3 - 3
yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/controller/admin/info/vo/EmployeeInfoHistorySaveReqVO.java

@@ -92,13 +92,13 @@ public class EmployeeInfoHistorySaveReqVO {
     private String bankCardNumber;
 
     @Schema(description = "年假基准天数")
-    private Integer baseAnnualLeave;
+    private BigDecimal baseAnnualLeave;
 
     @Schema(description = "已使用年假天数")
-    private Integer usedAnnualLeave;
+    private BigDecimal usedAnnualLeave;
 
     @Schema(description = "剩余年假天数")
-    private Integer remainingAnnualLeave;
+    private BigDecimal remainingAnnualLeave;
 
     @Schema(description = "出生日期")
     private LocalDate birthDate;

+ 3 - 3
yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/controller/admin/info/vo/EmployeeInfoPageReqVO.java

@@ -95,13 +95,13 @@ public class EmployeeInfoPageReqVO extends PageParam {
     private String bankCardNumber;
 
     @Schema(description = "年假基准天数")
-    private Integer baseAnnualLeave;
+    private BigDecimal baseAnnualLeave;
 
     @Schema(description = "已使用年假天数")
-    private Integer usedAnnualLeave;
+    private BigDecimal usedAnnualLeave;
 
     @Schema(description = "剩余年假天数")
-    private Integer remainingAnnualLeave;
+    private BigDecimal remainingAnnualLeave;
 
     @Schema(description = "出生日期")
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)

+ 3 - 3
yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/controller/admin/info/vo/EmployeeInfoQueryReqVO.java

@@ -99,13 +99,13 @@ public class EmployeeInfoQueryReqVO extends PageParam {
     private String bankCardNumber;
 
     @Schema(description = "年假基准天数")
-    private Integer baseAnnualLeave;
+    private BigDecimal baseAnnualLeave;
 
     @Schema(description = "已使用年假天数")
-    private Integer usedAnnualLeave;
+    private BigDecimal usedAnnualLeave;
 
     @Schema(description = "剩余年假天数")
-    private Integer remainingAnnualLeave;
+    private BigDecimal remainingAnnualLeave;
 
     @Schema(description = "出生日期")
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)

+ 3 - 3
yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/controller/admin/info/vo/EmployeeInfoRespVO.java

@@ -119,15 +119,15 @@ public class EmployeeInfoRespVO {
 
     @Schema(description = "年假基准天数")
     @ExcelProperty("年假基准天数")
-    private Integer baseAnnualLeave;
+    private BigDecimal baseAnnualLeave;
 
     @Schema(description = "已使用年假天数")
     @ExcelProperty("已使用年假天数")
-    private Integer usedAnnualLeave;
+    private BigDecimal usedAnnualLeave;
 
     @Schema(description = "剩余年假天数")
     @ExcelProperty("剩余年假天数")
-    private Integer remainingAnnualLeave;
+    private BigDecimal remainingAnnualLeave;
 
     @Schema(description = "出生日期")
     @ExcelProperty("出生日期")

+ 3 - 3
yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/controller/admin/info/vo/EmployeeInfoSaveReqVO.java

@@ -92,13 +92,13 @@ public class EmployeeInfoSaveReqVO {
     private String bankCardNumber;
 
     @Schema(description = "年假基准天数")
-    private Integer baseAnnualLeave;
+    private BigDecimal baseAnnualLeave;
 
     @Schema(description = "已使用年假天数")
-    private Integer usedAnnualLeave;
+    private BigDecimal usedAnnualLeave;
 
     @Schema(description = "剩余年假天数")
-    private Integer remainingAnnualLeave;
+    private BigDecimal remainingAnnualLeave;
 
     @Schema(description = "出生日期")
     private LocalDate birthDate;

+ 3 - 3
yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/dal/dataobject/info/EmployeeInfoDO.java

@@ -126,15 +126,15 @@ public class EmployeeInfoDO extends BaseDO {
     /**
      * 年假基准天数
      */
-    private Integer baseAnnualLeave;
+    private BigDecimal baseAnnualLeave;
     /**
      * 已使用年假天数
      */
-    private Integer usedAnnualLeave;
+    private BigDecimal usedAnnualLeave;
     /**
      * 剩余年假天数
      */
-    private Integer remainingAnnualLeave;
+    private BigDecimal remainingAnnualLeave;
     /**
      * 出生日期
      */

+ 3 - 3
yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/dal/dataobject/info/EmployeeInfoHistoryDO.java

@@ -127,15 +127,15 @@ public class EmployeeInfoHistoryDO extends BaseDO {
     /**
      * 年假基准天数
      */
-    private Integer baseAnnualLeave;
+    private BigDecimal baseAnnualLeave;
     /**
      * 已使用年假天数
      */
-    private Integer usedAnnualLeave;
+    private BigDecimal usedAnnualLeave;
     /**
      * 剩余年假天数
      */
-    private Integer remainingAnnualLeave;
+    private BigDecimal remainingAnnualLeave;
     /**
      * 出生日期
      */

+ 1 - 0
yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/service/info/EmployeeInfoServiceImpl.java

@@ -175,6 +175,7 @@ public class EmployeeInfoServiceImpl implements EmployeeInfoService {
 //            createReqVO.setTenantId(tenantId);
 //        }
         createReqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
+        createReqVO.setRemainingAnnualLeave(createReqVO.getBaseAnnualLeave().subtract(createReqVO.getUsedAnnualLeave()));
         // 生成id
         createReqVO.setInfoId(IdUtil.fastSimpleUUID());
         EmployeeInfoDO info = BeanUtils.toBean(createReqVO, EmployeeInfoDO.class);