From 96a020a65509f807ac3d27872f903e22f2218165 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期五, 31 七月 2026 16:54:43 +0800
Subject: [PATCH] 员工新增修改问题解决

---
 yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java |   66 +++++++++++++++++++++++++++++----
 1 files changed, 58 insertions(+), 8 deletions(-)

diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java
index 72fadf6..58632cf 100644
--- a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java
+++ b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/employee/HrmEmployeeServiceImpl.java
@@ -113,24 +113,24 @@
         employeeMapper.insert(employee);
         Long employeeId = employee.getId();
         // 7. 鍚屾娣诲姞鏁欒偛缁忓巻
-        if (CollUtil.isNotEmpty(createReqVO.getEducationList())) {
-            createReqVO.getEducationList().forEach(educationVO -> {
+        if (CollUtil.isNotEmpty(createReqVO.getEducations())) {
+            createReqVO.getEducations().forEach(educationVO -> {
                 HrmEmployeeEducationDO education = BeanUtils.toBean(educationVO, HrmEmployeeEducationDO.class);
                 education.setEmployeeId(employeeId);
                 educationMapper.insert(education);
             });
         }
         // 8. 鍚屾娣诲姞宸ヤ綔缁忓巻
-        if (CollUtil.isNotEmpty(createReqVO.getWorkHistoryList())) {
-            createReqVO.getWorkHistoryList().forEach(workHistoryVO -> {
+        if (CollUtil.isNotEmpty(createReqVO.getWorkHistories())) {
+            createReqVO.getWorkHistories().forEach(workHistoryVO -> {
                 HrmEmployeeWorkHistoryDO workHistory = BeanUtils.toBean(workHistoryVO, HrmEmployeeWorkHistoryDO.class);
                 workHistory.setEmployeeId(employeeId);
                 workHistoryMapper.insert(workHistory);
             });
         }
         // 9. 鍚屾娣诲姞绱ф�ヨ仈绯讳汉
-        if (CollUtil.isNotEmpty(createReqVO.getEmergencyContactList())) {
-            createReqVO.getEmergencyContactList().forEach(emergencyContactVO -> {
+        if (CollUtil.isNotEmpty(createReqVO.getEmergencyContacts())) {
+            createReqVO.getEmergencyContacts().forEach(emergencyContactVO -> {
                 HrmEmployeeEmergencyContactDO emergencyContact = BeanUtils.toBean(emergencyContactVO, HrmEmployeeEmergencyContactDO.class);
                 emergencyContact.setEmployeeId(employeeId);
                 emergencyContactMapper.insert(emergencyContact);
@@ -148,6 +148,7 @@
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void updateEmployee(HrmEmployeeSaveReqVO updateReqVO) {
         // 鏍¢獙瀛樺湪
         HrmEmployeeDO employee = validateEmployeeExists(updateReqVO.getId());
@@ -160,20 +161,69 @@
                 && employeeMapper.selectByPhone(updateReqVO.getPhone()) != null) {
             throw exception(EMPLOYEE_PHONE_EXISTS);
         }
-        // 鏇存柊
+        // 鏇存柊鍛樺伐涓昏〃
         HrmEmployeeDO updateObj = BeanUtils.toBean(updateReqVO, HrmEmployeeDO.class);
         // roleIds 瀛樺偍涓� JSON
         if (CollUtil.isNotEmpty(updateReqVO.getRoleIds())) {
             updateObj.setRoleIds(JSONUtil.toJsonStr(updateReqVO.getRoleIds()));
         }
         employeeMapper.updateById(updateObj);
+        Long employeeId = updateReqVO.getId();
+
+        // 鍚屾鏁欒偛缁忓巻
+        syncEducationList(employeeId, updateReqVO.getEducations());
+        // 鍚屾宸ヤ綔缁忓巻
+        syncWorkHistoryList(employeeId, updateReqVO.getWorkHistories());
+        // 鍚屾绱ф�ヨ仈绯讳汉
+        syncEmergencyContactList(employeeId, updateReqVO.getEmergencyContacts());
+    }
+
+    private void syncEducationList(Long employeeId, List<HrmEmployeeEducationSaveReqVO> newList) {
+        educationMapper.deleteByEmployeeId(employeeId);
+        if (CollUtil.isNotEmpty(newList)) {
+            newList.forEach(vo -> {
+                HrmEmployeeEducationDO education = BeanUtils.toBean(vo, HrmEmployeeEducationDO.class);
+                education.setId(null);
+                education.setEmployeeId(employeeId);
+                educationMapper.insert(education);
+            });
+        }
+    }
+
+    private void syncWorkHistoryList(Long employeeId, List<HrmEmployeeWorkHistorySaveReqVO> newList) {
+        workHistoryMapper.deleteByEmployeeId(employeeId);
+        if (CollUtil.isNotEmpty(newList)) {
+            newList.forEach(vo -> {
+                HrmEmployeeWorkHistoryDO workHistory = BeanUtils.toBean(vo, HrmEmployeeWorkHistoryDO.class);
+                workHistory.setId(null);
+                workHistory.setEmployeeId(employeeId);
+                workHistoryMapper.insert(workHistory);
+            });
+        }
+    }
+
+    private void syncEmergencyContactList(Long employeeId, List<HrmEmployeeEmergencyContactSaveReqVO> newList) {
+        emergencyContactMapper.deleteByEmployeeId(employeeId);
+        if (CollUtil.isNotEmpty(newList)) {
+            newList.forEach(vo -> {
+                HrmEmployeeEmergencyContactDO emergencyContact = BeanUtils.toBean(vo, HrmEmployeeEmergencyContactDO.class);
+                emergencyContact.setId(null);
+                emergencyContact.setEmployeeId(employeeId);
+                emergencyContactMapper.insert(emergencyContact);
+            });
+        }
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void deleteEmployee(Long id) {
         // 鏍¢獙瀛樺湪
         validateEmployeeExists(id);
-        // 鍒犻櫎
+        // 绾ц仈鍒犻櫎瀛愯〃
+        educationMapper.deleteByEmployeeId(id);
+        workHistoryMapper.deleteByEmployeeId(id);
+        emergencyContactMapper.deleteByEmployeeId(id);
+        // 鍒犻櫎鍛樺伐
         employeeMapper.deleteById(id);
     }
 

--
Gitblit v1.9.3