From f2732b0a8c5bc4e1ddbcafa5eeffd1e6ed2e52b7 Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期二, 10 三月 2026 13:19:59 +0800
Subject: [PATCH] yys 优化员工工资计算逻辑
---
src/main/java/com/ruoyi/staff/service/impl/StaffSalaryMainServiceImpl.java | 18 ++++++++++--------
src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java | 26 +++++++++++++-------------
2 files changed, 23 insertions(+), 21 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 068bcfb..7d59c26 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java
@@ -173,13 +173,13 @@
}
Long staffId = id.longValue();
// 绀句繚閲戦
- BigDecimal schemeAmount = new BigDecimal("0.00");
+ BigDecimal socialPersonal = new BigDecimal("0.00");
// 鍏Н閲戦噾棰�
- BigDecimal gjj = new BigDecimal("0.00");
+ BigDecimal fundPersonal = new BigDecimal("0.00");
// 鍩烘湰宸ヨ祫
BigDecimal basicSalary = new BigDecimal("0.00");
- map.put("gjj", gjj); // 鍏Н閲�
- map.put("schemeAmount", schemeAmount); // 绀句繚閲戦
+ map.put("fundPersonal", fundPersonal); // 鍏Н閲�
+ map.put("socialPersonal", socialPersonal); // 绀句繚閲戦
map.put("basicSalary", basicSalary); // 鍩烘湰宸ヨ祫
// 涓◣閲戦
BigDecimal salaryTax = new BigDecimal("0.00");
@@ -215,7 +215,7 @@
// 搴斿彂宸ヨ祫
map.put("grossSalary", basicSalary);
// 涓◣閲戦锛堟棤绀句繚鐗堬級
- BigDecimal bigDecimal = TaxCalculator.calculateMonthlyTax(basicSalary, schemeAmount, gjj);
+ BigDecimal bigDecimal = TaxCalculator.calculateMonthlyTax(basicSalary, socialPersonal, fundPersonal);
map.put("salaryTax", bigDecimal);
// 璁℃椂宸ヨ祫 璁′欢宸ヨ祫
UserProductionAccountingDto userProductionAccountingDto = new UserProductionAccountingDto();
@@ -244,22 +244,22 @@
continue;
}
for (SchemeInsuranceDetail detail : detailList) {
- if("浣忔埧鍏Н閲�".equals(detail.getInsuranceType())){
- gjj = gjj.add(calculateByEmployeeIdType(detail.getInsuranceType(),gjj, staffOnJobDto, detail));
+ if("鍏Н閲�".equals(detail.getInsuranceType())){
+ fundPersonal = fundPersonal.add(calculateByEmployeeIdType(detail.getInsuranceType(),fundPersonal, staffOnJobDto, detail));
}else{
- schemeAmount = schemeAmount.add(calculateByEmployeeIdType(detail.getInsuranceType(),schemeAmount, staffOnJobDto, detail));
+ socialPersonal = socialPersonal.add(calculateByEmployeeIdType(detail.getInsuranceType(),socialPersonal, staffOnJobDto, detail));
}
}
}
- map.put("schemeAmount", schemeAmount);
- map.put("gjj", gjj);
+ map.put("socialPersonal", socialPersonal);
+ map.put("fundPersonal", fundPersonal);
// 涓◣閲戦锛堢ぞ淇濈増锛�
- bigDecimal = TaxCalculator.calculateMonthlyTax(basicSalary, schemeAmount, gjj);
+ bigDecimal = TaxCalculator.calculateMonthlyTax(basicSalary, socialPersonal, fundPersonal);
map.put("salaryTax", bigDecimal);
// 搴旀墸宸ヨ祫
- map.put("deductSalary", bigDecimal.add(gjj).add(schemeAmount));
+ map.put("deductSalary", bigDecimal.add(fundPersonal).add(socialPersonal));
// 瀹炲彂宸ヨ祫
- map.put("netSalary", basicSalary.subtract(bigDecimal).subtract(gjj).subtract(schemeAmount));
+ map.put("netSalary", basicSalary.subtract(bigDecimal).subtract(fundPersonal).subtract(socialPersonal));
}
diff --git a/src/main/java/com/ruoyi/staff/service/impl/StaffSalaryMainServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/StaffSalaryMainServiceImpl.java
index 4179275..c2d8519 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/StaffSalaryMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffSalaryMainServiceImpl.java
@@ -107,15 +107,17 @@
return AjaxResult.error("鍙傛暟閿欒");
}
// 寰呭鏍镐笉鍙紪杈�
- if(staffSalaryMain1.getStatus() > 2){
- return AjaxResult.error("寰呭鏍镐笉鍙紪杈�");
- }
+// if(staffSalaryMain1.getStatus() > 3){
+// return AjaxResult.error("寰呭鏍镐笉鍙紪杈�");
+// }
staffSalaryMainMapper.updateById(staffSalaryMain);
- staffSalaryDetailMapper.delete(new LambdaQueryWrapper<StaffSalaryDetail>().eq(StaffSalaryDetail::getMainId, staffSalaryMain.getId()));
- staffSalaryMain.getStaffSalaryDetailList().forEach(detail -> {
- detail.setMainId(staffSalaryMain.getId());
- });
- staffSalaryDetailService.saveBatch(staffSalaryMain.getStaffSalaryDetailList());
+ if(org.apache.commons.collections4.CollectionUtils.isNotEmpty(staffSalaryMain.getStaffSalaryDetailList())){
+ staffSalaryDetailMapper.delete(new LambdaQueryWrapper<StaffSalaryDetail>().eq(StaffSalaryDetail::getMainId, staffSalaryMain.getId()));
+ staffSalaryMain.getStaffSalaryDetailList().forEach(detail -> {
+ detail.setMainId(staffSalaryMain.getId());
+ });
+ staffSalaryDetailService.saveBatch(staffSalaryMain.getStaffSalaryDetailList());
+ }
// 鍜岃储鍔¤仈鍔紝鏂板鏀嚭
if(staffSalaryMain.getStatus().equals(5)){
AccountExpense accountExpense = new AccountExpense();
--
Gitblit v1.9.3