From 35f70b350f298bbac8de18adf613990122004c4e Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期五, 12 六月 2026 11:23:13 +0800
Subject: [PATCH] 修改工资计算逻辑
---
src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java | 21 +++++++++------------
1 files changed, 9 insertions(+), 12 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 f22db90..73d01a6 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java
@@ -285,9 +285,6 @@
// 瀹炲彂宸ヨ祫鍒濆鍊�
netSalary = grossSalary;
map.put("netSalary", netSalary);
- // 涓◣閲戦锛堟棤绀句繚鐗堬級
- BigDecimal bigDecimal = TaxCalculator.calculateMonthlyTax(basicSalary, socialPersonal, fundPersonal);
- map.put("salaryTax", bigDecimal);
// 璁℃椂宸ヨ祫 璁′欢宸ヨ祫
UserProductionAccountingDto userProductionAccountingDto = new UserProductionAccountingDto();
userProductionAccountingDto.setUserId(getUidByStaffId(staffId));
@@ -323,6 +320,7 @@
socialPersonal = socialPersonal.add(amount);
}
}
+ BigDecimal currentMonthSocialPersonal = socialPersonal;
BigDecimal socialSupplementAmount = calculateSocialSupplementAmount(
staffId,
staffOnJobDto,
@@ -331,18 +329,16 @@
currentDetailList,
socialPersonal
);
- if (socialSupplementAmount.compareTo(BigDecimal.ZERO) > 0) {
- socialPersonal = socialPersonal.add(socialSupplementAmount);
- }
- map.put("socialPersonal", socialPersonal);
+ BigDecimal totalSocialPersonal = currentMonthSocialPersonal.add(socialSupplementAmount);
+ map.put("socialPersonal", currentMonthSocialPersonal);
map.put("fundPersonal", fundPersonal);
map.put("socialSupplementAmount", socialSupplementAmount);
// 涓◣閲戦锛堢ぞ淇濈増锛�
- bigDecimal = TaxCalculator.calculateMonthlyTax(basicSalary, socialPersonal, fundPersonal);
+ BigDecimal bigDecimal = TaxCalculator.calculateMonthlyTax(grossSalary, totalSocialPersonal, fundPersonal);
map.put("salaryTax", bigDecimal);
- // 搴旀墸宸ヨ祫 = 涓◣ + 鍏Н閲戜釜浜� + 绀句繚涓汉 + 鍏朵粬鏀嚭
- deductSalary = bigDecimal.add(fundPersonal).add(socialPersonal).add(otherDeduct);
+ // 搴旀墸宸ヨ祫 = 涓◣ + 鍏Н閲戜釜浜� + 绀句繚涓汉 + 绀句繚琛ョ即 + 鍏朵粬鏀嚭
+ deductSalary = bigDecimal.add(fundPersonal).add(totalSocialPersonal).add(otherDeduct);
map.put("deductSalary", deductSalary);
// 瀹炲彂宸ヨ祫 = 搴斿彂宸ヨ祫 - 搴旀墸宸ヨ祫
@@ -473,6 +469,7 @@
/**
* 缁熻鍛樺伐褰撳勾1鏈堝埌鐩爣鏈堜唤涔嬪墠宸茬即绾崇殑绀句繚涓汉閮ㄥ垎鎬婚
+ * 杩欓噷鍚屾椂鍖呭惈 socialPersonal 鍜� socialSupplementAmount锛岄伩鍏嶅巻鍙茶ˉ缂存儏褰㈣閲嶅璁$畻銆�
*
* 鏌ヨ閫昏緫锛�
* 1. 鏍规嵁鐩爣鏈堜唤鑾峰彇褰撳勾骞翠唤鍓嶇紑锛堝 "2024-"锛�
@@ -525,8 +522,8 @@
// 6. 绱姞绀句繚涓汉閮ㄥ垎閲戦
return detailList.stream()
- .map(StaffSalaryDetail::getSocialPersonal) // 鑾峰彇绀句繚涓汉閮ㄥ垎
- .filter(Objects::nonNull)
+ .map(detail -> defaultZero(detail.getSocialPersonal())
+ .add(defaultZero(detail.getSocialSupplementAmount())))
.reduce(BigDecimal.ZERO, BigDecimal::add); // 绱姞姹傚拰
}
--
Gitblit v1.9.3