From 5d25a8a01ae3070668bc60b2597591ef2ba13e5b Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期五, 18 九月 2026 18:09:06 +0800
Subject: [PATCH] feat(薪酬核算): 全勤奖支持工资表行内调整

---
 src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java |   17 ++++++++++++-----
 1 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java
index 4cd0b2c..72a8248 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java
@@ -168,7 +168,7 @@
             return;
         }
         BigDecimal basicSalary = resolveBasicSalary(map, staffOnJobDto);
-        BigDecimal attendanceBonus = resolveAttendanceBonus(staffOnJobDto);
+        BigDecimal attendanceBonus = resolveAttendanceBonus(map, staffOnJobDto);
         BigDecimal otherIncome = normalizeMoney(getBigDecimal(map, "otherIncome"));
         BigDecimal otherDeduct = normalizeMoney(getBigDecimal(map, "otherDeduct"));
         BigDecimal socialSupplementAmount = resolveSocialSupplementAmount(map, staffOnJobDto);
@@ -274,11 +274,18 @@
     }
 
     /**
-     * 鑾峰彇鍛樺伐鏈�鏂板叏鍕ゅ閲戙��
-     * 鍏ㄥ嫟濂栭噾缁熶竴浠ュ憳宸ユ。妗堥厤缃负鍑嗐��
+     * 鑾峰彇鍛樺伐鍏ㄥ嫟濂栭噾銆�
+     * 浼樺厛浣跨敤宸ヨ祫琛ㄦ湰娆′紶鍏ョ殑鍊硷紙鏀寔琛屽唴璋冩暣锛屽惈璋冩暣涓� 0锛夛紝鏈紶鏃跺洖钀藉埌鍛樺伐妗f閰嶇疆銆�
      */
-    private BigDecimal resolveAttendanceBonus(StaffOnJob staffOnJobDto) {
-        // 鍏ㄥ嫟濂栭噾鐩存帴鍙栧憳宸ユ。妗堥噷鐨勬渶鏂伴厤缃��
+    private BigDecimal resolveAttendanceBonus(Map<String, Object> map, StaffOnJob staffOnJobDto) {
+        // 琛屽唴璋冩暣浼樺厛锛氬彧瑕佹湰娆′紶鍏ュ叏鍕ゅ锛堝寘鎷� 0锛夛紝灏辩洿鎺ラ噰鐢ㄤ紶鍏ュ�硷紝璐熸暟鎸� 0 澶勭悊銆�
+        if (hasValue(map, "attendanceBonus")) {
+            BigDecimal passed = normalizeMoney(getBigDecimal(map, "attendanceBonus"));
+            return passed.compareTo(BigDecimal.ZERO) < 0
+                    ? BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP)
+                    : passed;
+        }
+        // 鏈紶鍏ユ椂淇濇寔鍘熼�昏緫锛屽彇鍛樺伐妗f閲岀殑鏈�鏂伴厤缃��
         return staffOnJobDto.getAttendanceBonus() == null
                 ? BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP)
                 : normalizeMoney(staffOnJobDto.getAttendanceBonus());

--
Gitblit v1.9.3