Browse Source

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

dongpo 6 months ago
parent
commit
a1354b374c

+ 1 - 1
yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/controller/admin/info/EmployeeInfoController.java

@@ -70,7 +70,7 @@ public class EmployeeInfoController {
     @Operation(summary = "更新员工信息")
     @PreAuthorize("@ss.hasPermission('employee:info:update')")
     public CommonResult<Boolean> updateInfo(@Valid @RequestBody EmployeeInfoSaveReqVO updateReqVO) {
-        infoService.updateInfo(updateReqVO);
+        infoService.updateEmpInfo(updateReqVO);
         return success(true);
     }
 

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

@@ -51,12 +51,19 @@ public interface EmployeeInfoService {
     Long createInfo(@Valid EmployeeInfoSaveReqVO createReqVO);
 
     /**
-     * 更新员工信息
+     * 更新员工信息(接口用)
      *
      * @param updateReqVO 更新信息
      */
     Integer updateInfo(@Valid EmployeeInfoSaveReqVO updateReqVO);
 
+    /**
+     * 更新员工信息(修改用)
+     *
+     * @param updateReqVO 更新信息
+     */
+    Integer updateEmpInfo(@Valid EmployeeInfoSaveReqVO updateReqVO);
+
     /**
      * 删除员工信息
      *

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

@@ -244,8 +244,65 @@ public class EmployeeInfoServiceImpl implements EmployeeInfoService {
             }
             updateReqVO.setPosition(post.getName());
         }
-        if (updateReqVO.getRemainingAnnualLeave() == null && updateReqVO.getUsedAnnualLeave() == null) {
-            updateReqVO.setRemainingAnnualLeave(updateReqVO.getBaseAnnualLeave().subtract(employeeInfoDO.getUsedAnnualLeave()));
+        EmployeeInfoDO updateObj = BeanUtils.toBean(updateReqVO, EmployeeInfoDO.class);
+        return infoMapper.updateById(updateObj);
+    }
+
+    @Override
+    @TenantIgnore
+    public Integer updateEmpInfo(EmployeeInfoSaveReqVO updateReqVO) {
+        // 校验存在
+        validateInfoExists(updateReqVO.getId());
+        EmployeeInfoDO employeeInfoDO = this.getInfo(updateReqVO.getId());
+        if (employeeInfoDO == null) {
+            throw exception(EMPLOYEE_INFO_NOT_EXISTS);
+        }
+        // 获取用户信息和租户ID
+        LoginUser user = SecurityFrameworkUtils.getLoginUser();
+        Long tenantId = user != null && user.getTenantId() != null ? user.getTenantId() : 0L;
+
+        // 假设 employeeInfoDO 和 updateReqVO 已经被正确定义和初始化
+        String newPhone = updateReqVO.getPhone();
+        String currentPhone = employeeInfoDO.getPhone();
+        // 部门
+        if (updateReqVO.getDeptId() != null) {
+            DeptDO dept = deptService.getDept(updateReqVO.getDeptId());
+            if (dept != null && StringUtils.isNotBlank(dept.getName())) {
+                updateReqVO.setDeptName(dept.getName());
+            }
+        }
+        // 检查新电话号码是否为空
+        if (newPhone == null || newPhone.isEmpty()) {
+            throw exception(EMPLOYEE_INFO_PHONE_NOT_NULL);
+        }
+
+        // 如果新电话号码不为空,且与当前电话号码不同,则进行判重检查
+        if (!newPhone.equals(currentPhone)) {
+            // 手机号+租户判重
+            EmployeeInfoQueryReqVO reqVO = new EmployeeInfoQueryReqVO();
+            reqVO.setPhone(newPhone);
+            reqVO.setTenantId(tenantId);
+            EmployeeInfoDO infoDO = this.getInfo(reqVO);
+            if (infoDO != null) {
+                // 如果找到了相同的电话号码和租户ID,则抛出异常
+                throw exception(EMPLOYEE_INFO_PHONE_EXISTS);
+            }
+        }
+
+        EmployeeInfoHistorySaveReqVO historySaveReqVO = BeanUtils.toBean(employeeInfoDO, EmployeeInfoHistorySaveReqVO.class);
+        historySaveReqVO.setEmployeeId(employeeInfoDO.getId());
+        historySaveReqVO.setId(null);
+        employeeInfoHistoryService.createInfoHistory(historySaveReqVO);// 插入历史数据
+        // 更新
+        if(updateReqVO.getPostId() != null) {
+            PostDO post = postService.getPost(updateReqVO.getPostId());
+            if (post == null) {
+                throw exception(POST_NOT_FOUND);
+            }
+            updateReqVO.setPosition(post.getName());
+        }
+        if (updateReqVO.getBaseAnnualLeave() != null && updateReqVO.getUsedAnnualLeave() != null) {
+            updateReqVO.setRemainingAnnualLeave(updateReqVO.getBaseAnnualLeave().subtract(updateReqVO.getUsedAnnualLeave()));
         }
         EmployeeInfoDO updateObj = BeanUtils.toBean(updateReqVO, EmployeeInfoDO.class);
         return infoMapper.updateById(updateObj);