From 155319d1e4f8e61f5f3b60a783be035f03b47c66 Mon Sep 17 00:00:00 2001
From: tuqin <tuqin@local>
Date: 星期二, 03 十一月 2026 12:16:50 +0800
Subject: [PATCH] fix(hrm): 修复各列表员工姓名全空 + 保存核算重复插入

---
 yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/salary/HrmSalaryCalculationServiceImpl.java |   19 ++++++++++++++++++-
 1 files changed, 18 insertions(+), 1 deletions(-)

diff --git a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/salary/HrmSalaryCalculationServiceImpl.java b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/salary/HrmSalaryCalculationServiceImpl.java
index 7f1d49e..eeee784 100644
--- a/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/salary/HrmSalaryCalculationServiceImpl.java
+++ b/yudao-module-hrm/src/main/java/cn/iocoder/yudao/module/hrm/service/salary/HrmSalaryCalculationServiceImpl.java
@@ -642,7 +642,24 @@
     public void saveSalaryCalculationList(List<HrmSalaryCalculationDO> calculationList) {
         for (HrmSalaryCalculationDO calculation : calculationList) {
             if (calculation.getId() == null) {
-                // 鏂板璁板綍锛岀敓鎴愭牳绠楀崟鍙�
+                // 鏂板鍓嶅厛鏌ラ噸锛氬悓涓�鍛樺伐锛堢郴缁熻处鍙� ID锛�+ 鍚屼竴鍛ㄦ湡 鍙厑璁稿瓨鍦ㄤ竴鏉¤褰曘��
+                // 鍓嶇銆岄瑙堟暟鎹� 鈫� 淇濆瓨鏍哥畻銆嶈蛋鐨勫氨鏄繖閲岋紝涓嶆煡閲嶄細閲嶅鎻掑叆銆�
+                List<HrmSalaryCalculationDO> existList = salaryCalculationMapper
+                        .selectListByUserIdAndPeriod(calculation.getUserId(), calculation.getPeriod());
+                if (CollUtil.isNotEmpty(existList)) {
+                    HrmSalaryCalculationDO existing = existList.get(0);
+                    // 宸茬‘璁�/宸插彂鏀剧殑璁板綍涓嶅厑璁歌瑕嗙洊锛岀洿鎺ヨ烦杩�
+                    if (existing.getStatus() != null && existing.getStatus() != 0) {
+                        continue;
+                    }
+                    // 寰呯‘璁ょ殑璁板綍锛氳鐩栭噸绠楃粨鏋滐紝淇濈暀鍘熷崟鍙�
+                    calculation.setId(existing.getId());
+                    calculation.setNo(existing.getNo());
+                    calculation.setStatus(0);
+                    salaryCalculationMapper.updateById(calculation);
+                    continue;
+                }
+                // 纭疄鏄柊澧烇紝鐢熸垚鏍哥畻鍗曞彿
                 String no = noRedisDAO.generateSalaryCalculationNo();
                 while (salaryCalculationMapper.selectByNo(no) != null) {
                     no = noRedisDAO.generateSalaryCalculationNo();

--
Gitblit v1.9.3