From daf9f8dbb7ba36eb283221d2c6022039aefaf97d Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期日, 25 十月 2026 00:40:38 +0800
Subject: [PATCH] feat(aftersales): 售后退货单同步MES批次信息并优化工单处理流程

---
 yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/salary/HrmEmployeeSalaryServiceImpl.java |   33 ++++++++++++++++++++++++++++++++-
 1 files changed, 32 insertions(+), 1 deletions(-)

diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/salary/HrmEmployeeSalaryServiceImpl.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/salary/HrmEmployeeSalaryServiceImpl.java
index 6c829eb..2f619ab 100644
--- a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/salary/HrmEmployeeSalaryServiceImpl.java
+++ b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/salary/HrmEmployeeSalaryServiceImpl.java
@@ -4,6 +4,8 @@
 import cn.iocoder.yudao.module.hrm.controller.admin.salary.vo.HrmEmployeeSalaryPageReqVO;
 import cn.iocoder.yudao.module.hrm.dal.dataobject.salary.HrmEmployeeSalaryDO;
 import cn.iocoder.yudao.module.hrm.dal.mysql.salary.HrmEmployeeSalaryMapper;
+import cn.iocoder.yudao.module.hrm.dal.mysql.salary.HrmSalaryStructureMapper;
+import cn.iocoder.yudao.module.hrm.dal.mysql.employee.HrmEmployeeMapper;
 import jakarta.annotation.Resource;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
@@ -12,6 +14,9 @@
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.module.hrm.enums.ErrorCodeConstants.EMPLOYEE_SALARY_NOT_EXISTS;
+import static cn.iocoder.yudao.module.hrm.enums.ErrorCodeConstants.EMPLOYEE_SALARY_EXISTS;
+import static cn.iocoder.yudao.module.hrm.enums.ErrorCodeConstants.HRM_EMPLOYEE_NOT_EXISTS;
+import static cn.iocoder.yudao.module.hrm.enums.ErrorCodeConstants.SALARY_STRUCTURE_NOT_EXISTS;
 
 /**
  * 鍛樺伐钖叕妗f Service 瀹炵幇绫�
@@ -24,9 +29,15 @@
 
     @Resource
     private HrmEmployeeSalaryMapper employeeSalaryMapper;
+    @Resource
+    private HrmSalaryStructureMapper structureMapper;
+    @Resource
+    private HrmEmployeeMapper employeeMapper;
 
     @Override
     public Long createEmployeeSalary(HrmEmployeeSalaryDO salary) {
+        validateReferences(salary);
+        validateUniqueDate(salary);
         employeeSalaryMapper.insert(salary);
         return salary.getId();
     }
@@ -34,6 +45,8 @@
     @Override
     public void updateEmployeeSalary(HrmEmployeeSalaryDO salary) {
         validateEmployeeSalaryExists(salary.getId());
+        validateReferences(salary);
+        validateUniqueDate(salary);
         employeeSalaryMapper.updateById(salary);
     }
 
@@ -69,4 +82,22 @@
         }
     }
 
-}
\ No newline at end of file
+    private void validateReferences(HrmEmployeeSalaryDO salary) {
+        if (salary.getUserId() == null || employeeMapper.selectById(salary.getUserId()) == null) {
+            throw exception(HRM_EMPLOYEE_NOT_EXISTS);
+        }
+        if (salary.getSalaryStructureId() == null
+                || structureMapper.selectById(salary.getSalaryStructureId()) == null) {
+            throw exception(SALARY_STRUCTURE_NOT_EXISTS);
+        }
+    }
+
+    private void validateUniqueDate(HrmEmployeeSalaryDO salary) {
+        HrmEmployeeSalaryDO existing = employeeSalaryMapper.selectByUserIdAndEffectiveDate(
+                salary.getUserId(), salary.getEffectiveDate());
+        if (existing != null && !existing.getId().equals(salary.getId())) {
+            throw exception(EMPLOYEE_SALARY_EXISTS);
+        }
+    }
+
+}

--
Gitblit v1.9.3