From 6be17495cd29ba8b28af35da7ba171cbc0d61c21 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期五, 12 六月 2026 14:18:49 +0800
Subject: [PATCH] 根据单个员工计算工资
---
src/main/java/com/ruoyi/staff/dto/StaffSalaryCalculateDto.java | 16 +++
src/main/java/com/ruoyi/staff/controller/StaffSalaryMainController.java | 7 +
src/main/java/com/ruoyi/staff/service/impl/StaffSalaryMainServiceImpl.java | 34 ++++++
src/main/java/com/ruoyi/staff/service/StaffSalaryMainService.java | 3
src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java | 233 +++++++++++++++++++++++++++-------------------
5 files changed, 198 insertions(+), 95 deletions(-)
diff --git a/src/main/java/com/ruoyi/staff/controller/StaffSalaryMainController.java b/src/main/java/com/ruoyi/staff/controller/StaffSalaryMainController.java
index 569ca1c..e4e8a8f 100644
--- a/src/main/java/com/ruoyi/staff/controller/StaffSalaryMainController.java
+++ b/src/main/java/com/ruoyi/staff/controller/StaffSalaryMainController.java
@@ -5,6 +5,7 @@
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.staff.dto.CalculateSalaryDto;
+import com.ruoyi.staff.dto.StaffSalaryCalculateDto;
import com.ruoyi.staff.pojo.StaffSalaryMain;
import com.ruoyi.staff.service.StaffSalaryMainService;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -43,6 +44,12 @@
return staffSalaryMainService.calculateSalary(calculateSalaryDto);
}
+ @Operation(summary = "閫氳繃鍛樺伐id閲嶇畻鍗曚釜鍛樺伐宸ヨ祫")
+ @PostMapping("/calculateByEmployeeId")
+ public AjaxResult calculateByEmployeeId(@RequestBody StaffSalaryCalculateDto calculateSalaryCalculateDto) {
+ return staffSalaryMainService.calculateSalaryByEmployee(calculateSalaryCalculateDto);
+ }
+
@PostMapping("/add")
@Operation(summary = "鏂板缓宸ヨ祫琛�")
@Log(title = "鏂板缓宸ヨ祫琛�", businessType = BusinessType.INSERT)
diff --git a/src/main/java/com/ruoyi/staff/dto/StaffSalaryCalculateDto.java b/src/main/java/com/ruoyi/staff/dto/StaffSalaryCalculateDto.java
new file mode 100644
index 0000000..98a9dc2
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/dto/StaffSalaryCalculateDto.java
@@ -0,0 +1,16 @@
+package com.ruoyi.staff.dto;
+
+import com.ruoyi.staff.pojo.StaffSalaryDetail;
+import lombok.Data;
+
+/**
+ * 鍗曚釜鍛樺伐宸ヨ祫閲嶇畻璇锋眰浣�
+ */
+@Data
+public class StaffSalaryCalculateDto extends StaffSalaryDetail {
+
+ /**
+ * 宸ヨ祫鏈堜唤锛屾牸寮忥細yyyy-MM
+ */
+ private String salaryMonth;
+}
diff --git a/src/main/java/com/ruoyi/staff/service/StaffSalaryMainService.java b/src/main/java/com/ruoyi/staff/service/StaffSalaryMainService.java
index 1794e43..a573b21 100644
--- a/src/main/java/com/ruoyi/staff/service/StaffSalaryMainService.java
+++ b/src/main/java/com/ruoyi/staff/service/StaffSalaryMainService.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.staff.dto.CalculateSalaryDto;
+import com.ruoyi.staff.dto.StaffSalaryCalculateDto;
import com.ruoyi.staff.pojo.StaffSalaryMain;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -27,4 +28,6 @@
AjaxResult delete(List<Long> ids);
AjaxResult calculateSalary(CalculateSalaryDto calculateSalaryDto);
+
+ AjaxResult calculateSalaryByEmployee(StaffSalaryCalculateDto calculateSalaryCalculateDto);
}
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 73d01a6..bf886a2 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java
@@ -164,91 +164,84 @@
return; // 鎴栬繑鍥炵┖鍒楄〃锛屾牴鎹笟鍔¢渶姹傝皟鏁�
}
Long staffId = id.longValue();
- // 绀句繚閲戦
- BigDecimal socialPersonal = new BigDecimal("0.00");
- // 鍏Н閲戦噾棰�
- BigDecimal fundPersonal = new BigDecimal("0.00");
- // 鍩烘湰宸ヨ祫
- BigDecimal basicSalary = new BigDecimal("0.00");
- map.put("fundPersonal", fundPersonal); // 鍏Н閲�
- map.put("socialPersonal", socialPersonal); // 绀句繚閲戦
- map.put("socialSupplementAmount", BigDecimal.ZERO); // 绀句繚琛ョ即閲戦
- map.put("basicSalary", basicSalary); // 鍩烘湰宸ヨ祫
- // 涓◣閲戦
- BigDecimal salaryTax = new BigDecimal("0.00");
- map.put("salaryTax", salaryTax);
- // 璁′欢宸ヨ祫
- BigDecimal pieceSalary = new BigDecimal("0.00");
- map.put("pieceSalary", pieceSalary);
- // 璁℃椂宸ヨ祫
- BigDecimal hourlySalary = new BigDecimal("0.00");
- map.put("hourlySalary", hourlySalary);
- // 鍏朵粬鏀跺叆
- BigDecimal otherIncome = new BigDecimal("0.00");
- map.put("otherIncome", otherIncome);
- // 鍏朵粬鏀嚭
- BigDecimal otherDeduct = new BigDecimal("0.00");
- map.put("otherDeduct", otherDeduct);
- // 搴斿彂宸ヨ祫
- BigDecimal grossSalary = new BigDecimal("0.00");
- map.put("grossSalary", grossSalary);
- // 搴旀墸宸ヨ祫
- BigDecimal deductSalary = new BigDecimal("0.00");
- map.put("deductSalary", deductSalary);
- // 瀹炲彂宸ヨ祫
- BigDecimal netSalary = new BigDecimal("0.00");
- map.put("netSalary", netSalary);
- // 鏍规嵁鎺掔彮鏁版嵁璁$畻鐧界彮澶╂暟鍜屽鐝ぉ鏁�
- BigDecimal dayDays = new BigDecimal("0.00");
- BigDecimal nightDays = new BigDecimal("0.00");
+ // 鍓嶇浼犲叆鐨勫彲缂栬緫鍊间紭鍏堬紝鍏朵綑瀛楁鐢卞悗绔粺涓�璁$畻
+ boolean hasBasicSalaryInput = hasValue(map, "basicSalary");
+ boolean hasDayDaysInput = hasValue(map, "dayDays");
+ boolean hasNightDaysInput = hasValue(map, "nightDays");
+ boolean hasPieceSalaryInput = hasValue(map, "pieceSalary");
+ boolean hasHourlySalaryInput = hasValue(map, "hourlySalary");
+ boolean hasSocialPersonalInput = hasValue(map, "socialPersonal");
+ boolean hasFundPersonalInput = hasValue(map, "fundPersonal");
+
+ BigDecimal basicSalary = getBigDecimal(map, "basicSalary");
+ BigDecimal dayDays = getBigDecimal(map, "dayDays");
+ BigDecimal nightDays = getBigDecimal(map, "nightDays");
+ BigDecimal pieceSalary = getBigDecimal(map, "pieceSalary");
+ BigDecimal hourlySalary = getBigDecimal(map, "hourlySalary");
+ BigDecimal otherIncome = getBigDecimal(map, "otherIncome");
+ BigDecimal otherDeduct = getBigDecimal(map, "otherDeduct");
+ BigDecimal socialPersonalInput = getBigDecimal(map, "socialPersonal");
+ BigDecimal fundPersonalInput = getBigDecimal(map, "fundPersonal");
+ BigDecimal socialPersonal = BigDecimal.ZERO;
+ BigDecimal fundPersonal = BigDecimal.ZERO;
+ BigDecimal salaryTax = BigDecimal.ZERO;
+ BigDecimal grossSalary = BigDecimal.ZERO;
+ BigDecimal deductSalary = BigDecimal.ZERO;
+ BigDecimal netSalary = BigDecimal.ZERO;
+ BigDecimal dayDaysInput = dayDays;
+ BigDecimal nightDaysInput = nightDays;
+ otherIncome = defaultIfNull(otherIncome);
+ otherDeduct = defaultIfNull(otherDeduct);
+ map.put("socialSupplementAmount", BigDecimal.ZERO);
// 鏌ヨ褰撴湀鎺掔彮璁板綍
- List<PersonalShift> shiftList = personalShiftMapper.selectList(new LambdaQueryWrapper<PersonalShift>()
- .eq(PersonalShift::getStaffOnJobId, staffId)
- .like(PersonalShift::getWorkTime, date));
+ BigDecimal computedDayDays = BigDecimal.ZERO;
+ BigDecimal computedNightDays = BigDecimal.ZERO;
+ if (!hasDayDaysInput || !hasNightDaysInput) {
+ List<PersonalShift> shiftList = personalShiftMapper.selectList(new LambdaQueryWrapper<PersonalShift>()
+ .eq(PersonalShift::getStaffOnJobId, staffId)
+ .like(PersonalShift::getWorkTime, date));
- if(!CollectionUtils.isEmpty(shiftList)){
- // 鏀堕泦鎵�鏈夌彮娆¢厤缃甀D
- List<Integer> configIds = shiftList.stream()
- .map(PersonalShift::getPersonalAttendanceLocationConfigId)
- .filter(Objects::nonNull)
- .collect(Collectors.toList());
+ if(!CollectionUtils.isEmpty(shiftList)){
+ // 鏀堕泦鎵�鏈夌彮娆¢厤缃甀D
+ List<Integer> configIds = shiftList.stream()
+ .map(PersonalShift::getPersonalAttendanceLocationConfigId)
+ .filter(Objects::nonNull)
+ .collect(Collectors.toList());
- if(!CollectionUtils.isEmpty(configIds)){
- // 鏌ヨ鐝閰嶇疆淇℃伅
- List<PersonalAttendanceLocationConfig> configList = personalAttendanceLocationConfigMapper.selectList(
- new LambdaQueryWrapper<PersonalAttendanceLocationConfig>()
- .in(PersonalAttendanceLocationConfig::getId, configIds));
+ if(!CollectionUtils.isEmpty(configIds)){
+ // 鏌ヨ鐝閰嶇疆淇℃伅
+ List<PersonalAttendanceLocationConfig> configList = personalAttendanceLocationConfigMapper.selectList(
+ new LambdaQueryWrapper<PersonalAttendanceLocationConfig>()
+ .in(PersonalAttendanceLocationConfig::getId, configIds));
- // 鏋勫缓鐝閰嶇疆鏄犲皠
- Map<Integer, String> configMap = configList.stream()
- .collect(Collectors.toMap(
- PersonalAttendanceLocationConfig::getId,
- PersonalAttendanceLocationConfig::getShift,
- (a, b) -> a));
+ // 鏋勫缓鐝閰嶇疆鏄犲皠
+ Map<Integer, String> configMap = configList.stream()
+ .collect(Collectors.toMap(
+ PersonalAttendanceLocationConfig::getId,
+ PersonalAttendanceLocationConfig::getShift,
+ (a, b) -> a));
- // 缁熻鐧界彮鍜屽鐝ぉ鏁�
- for (PersonalShift shift : shiftList) {
- Integer configId = shift.getPersonalAttendanceLocationConfigId();
- String shiftName = configMap.get(configId);
- if(shiftName != null){
- // 鏍规嵁鐝鍚嶇О鍒ゆ柇锛氬寘鍚�"鐧�"鎴�"鏃�"涓虹櫧鐝紝鍖呭惈"澶�"涓哄鐝�
- if(shiftName.contains("鐧�") || shiftName.contains("鏃�")){
- dayDays = dayDays.add(BigDecimal.ONE);
- } else if(shiftName.contains("澶�")){
- nightDays = nightDays.add(BigDecimal.ONE);
+ // 缁熻鐧界彮鍜屽鐝ぉ鏁�
+ for (PersonalShift shift : shiftList) {
+ Integer configId = shift.getPersonalAttendanceLocationConfigId();
+ String shiftName = configMap.get(configId);
+ if(shiftName != null){
+ // 鏍规嵁鐝鍚嶇О鍒ゆ柇锛氬寘鍚�"鐧�"鎴�"鏃�"涓虹櫧鐝紝鍖呭惈"澶�"涓哄鐝�
+ if(shiftName.contains("鐧�") || shiftName.contains("鏃�")){
+ computedDayDays = computedDayDays.add(BigDecimal.ONE);
+ } else if(shiftName.contains("澶�")){
+ computedNightDays = computedNightDays.add(BigDecimal.ONE);
+ }
}
}
}
}
}
+ dayDays = hasDayDaysInput ? defaultIfNull(dayDaysInput) : computedDayDays;
+ nightDays = hasNightDaysInput ? defaultIfNull(nightDaysInput) : computedNightDays;
map.put("dayDays", dayDays); // 鐧界彮澶╂暟
map.put("nightDays", nightDays); // 澶滅彮澶╂暟
-
- // 鏌ヨ椁愯ˉ鍜屽鐝ˉ璐�
- // 璁$畻椁愯ˉ锛堝洖鏃忕壒鏈夛級鍜屽鐝ˉ鍔�
- BigDecimal mealAmount = new BigDecimal("0.00"); // 椁愯ˉ
- BigDecimal nightAmount = new BigDecimal("0.00"); // 澶滅彮琛ュ姪
// 鑾峰彇椁愯ˉ鍜屽鐝ˉ璐存爣鍑嗭紙浠庤ˉ璐撮厤缃腑鑾峰彇锛�
SubsidyConfiguration subsidyConfig = subsidyConfigurationMapper.selectOne(null);
@@ -265,7 +258,17 @@
return;
}
+ if (!hasBasicSalaryInput) {
+ basicSalary = defaultIfNull(staffOnJobDto.getBasicSalary());
+ } else {
+ basicSalary = defaultIfNull(basicSalary);
+ }
+
String nation = staffOnJobDto.getNation();
+ // 鏌ヨ椁愯ˉ鍜屽鐝ˉ璐�
+ // 璁$畻椁愯ˉ锛堝洖鏃忕壒鏈夛級鍜屽鐝ˉ鍔�
+ BigDecimal mealAmount = new BigDecimal("0.00"); // 椁愯ˉ
+ BigDecimal nightAmount = new BigDecimal("0.00"); // 澶滅彮琛ュ姪
if("鍥炴棌".equals(nation)){
mealAmount = dayDays.add(nightDays).multiply(mealStandard);
}
@@ -277,28 +280,37 @@
map.put("nightAmount", nightAmount); // 澶滅彮琛ュ姪
// 璋冪敤鍩烘湰宸ヨ祫
- basicSalary = staffOnJobDto.getBasicSalary();
map.put("basicSalary", basicSalary);
- // 搴斿彂宸ヨ祫锛堝熀鏈伐璧�+椁愯ˉ+澶滅彮琛ュ姪+鍏朵粬鏀跺叆锛�
- grossSalary = basicSalary.add(mealAmount).add(nightAmount).add(otherIncome);
+ map.put("otherIncome", otherIncome);
+ map.put("otherDeduct", otherDeduct);
+ // 璁℃椂宸ヨ祫 璁′欢宸ヨ祫
+ if (!hasPieceSalaryInput || !hasHourlySalaryInput) {
+ UserProductionAccountingDto userProductionAccountingDto = new UserProductionAccountingDto();
+ userProductionAccountingDto.setUserId(getUidByStaffId(staffId));
+ userProductionAccountingDto.setDate(date);
+ UserAccountDto byUserId = salesLedgerProductionAccountingService.getByUserId(userProductionAccountingDto);
+ if(byUserId != null){
+ if (!hasPieceSalaryInput) {
+ pieceSalary = byUserId.getAccountBalance();
+ }
+ if (!hasHourlySalaryInput) {
+ hourlySalary = byUserId.getAccount();
+ }
+ }
+ }
+ map.put("pieceSalary", defaultIfNull(pieceSalary));
+ map.put("hourlySalary", defaultIfNull(hourlySalary));
+ // 搴斿彂宸ヨ祫锛堝熀鏈伐璧�+椁愯ˉ+澶滅彮琛ュ姪+璁′欢宸ヨ祫+璁℃椂宸ヨ祫+鍏朵粬鏀跺叆锛�
+ grossSalary = basicSalary
+ .add(mealAmount)
+ .add(nightAmount)
+ .add(defaultIfNull(pieceSalary))
+ .add(defaultIfNull(hourlySalary))
+ .add(otherIncome);
map.put("grossSalary", grossSalary);
// 瀹炲彂宸ヨ祫鍒濆鍊�
netSalary = grossSalary;
map.put("netSalary", netSalary);
- // 璁℃椂宸ヨ祫 璁′欢宸ヨ祫
- UserProductionAccountingDto userProductionAccountingDto = new UserProductionAccountingDto();
- userProductionAccountingDto.setUserId(getUidByStaffId(staffId));
- userProductionAccountingDto.setDate(date);
- UserAccountDto byUserId = salesLedgerProductionAccountingService.getByUserId(userProductionAccountingDto);
- if(byUserId != null){
- map.put("pieceSalary", byUserId.getAccountBalance());
- map.put("hourlySalary", byUserId.getAccount());
- // 搴斿彂 瀹炲彂澧炲姞
- grossSalary = grossSalary.add(byUserId.getAccountBalance()).add(byUserId.getAccount());
- map.put("grossSalary", grossSalary);
- netSalary = netSalary.add(byUserId.getAccountBalance()).add(byUserId.getAccount());
- map.put("netSalary", netSalary);
- }
// 2. 鏌ヨ璇ヤ汉鍛樺搴旂殑绀句繚鏂规
List<SchemeApplicableStaff> schemeList = schemeApplicableStaffMapper.selectSchemeByStaffId(staffId);
if (CollectionUtils.isEmpty(schemeList)) {
@@ -320,25 +332,30 @@
socialPersonal = socialPersonal.add(amount);
}
}
- BigDecimal currentMonthSocialPersonal = socialPersonal;
+ BigDecimal currentMonthSocialPersonal = hasSocialPersonalInput ? defaultIfNull(socialPersonalInput) : socialPersonal;
+ if (!hasSocialPersonalInput) {
+ map.put("socialPersonal", currentMonthSocialPersonal);
+ }
+ BigDecimal resolvedFundPersonal = hasFundPersonalInput ? defaultIfNull(fundPersonalInput) : fundPersonal;
+ if (!hasFundPersonalInput) {
+ map.put("fundPersonal", resolvedFundPersonal);
+ }
BigDecimal socialSupplementAmount = calculateSocialSupplementAmount(
staffId,
staffOnJobDto,
targetMonth,
currentScheme,
currentDetailList,
- socialPersonal
+ currentMonthSocialPersonal
);
BigDecimal totalSocialPersonal = currentMonthSocialPersonal.add(socialSupplementAmount);
- map.put("socialPersonal", currentMonthSocialPersonal);
- map.put("fundPersonal", fundPersonal);
map.put("socialSupplementAmount", socialSupplementAmount);
// 涓◣閲戦锛堢ぞ淇濈増锛�
- BigDecimal bigDecimal = TaxCalculator.calculateMonthlyTax(grossSalary, totalSocialPersonal, fundPersonal);
+ BigDecimal bigDecimal = TaxCalculator.calculateMonthlyTax(grossSalary, totalSocialPersonal, resolvedFundPersonal);
map.put("salaryTax", bigDecimal);
// 搴旀墸宸ヨ祫 = 涓◣ + 鍏Н閲戜釜浜� + 绀句繚涓汉 + 绀句繚琛ョ即 + 鍏朵粬鏀嚭
- deductSalary = bigDecimal.add(fundPersonal).add(totalSocialPersonal).add(otherDeduct);
+ deductSalary = bigDecimal.add(resolvedFundPersonal).add(totalSocialPersonal).add(otherDeduct);
map.put("deductSalary", deductSalary);
// 瀹炲彂宸ヨ祫 = 搴斿彂宸ヨ祫 - 搴旀墸宸ヨ祫
@@ -347,6 +364,32 @@
}
+ private BigDecimal getBigDecimal(Map<String, Object> map, String key) {
+ if (map == null || !map.containsKey(key) || map.get(key) == null) {
+ return null;
+ }
+ Object value = map.get(key);
+ if (value instanceof BigDecimal) {
+ return (BigDecimal) value;
+ }
+ if (value instanceof Number) {
+ return new BigDecimal(value.toString());
+ }
+ String text = String.valueOf(value).trim();
+ if (text.isEmpty()) {
+ return null;
+ }
+ return new BigDecimal(text);
+ }
+
+ private boolean hasValue(Map<String, Object> map, String key) {
+ return map != null && map.containsKey(key) && map.get(key) != null;
+ }
+
+ private BigDecimal defaultIfNull(BigDecimal value) {
+ return value == null ? BigDecimal.ZERO : value;
+ }
+
/**
* 閫氳繃鍛樺伐Id鑾峰彇鐢ㄦ埛id
* @param staffId
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 dcbd9c7..967ab9e 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/StaffSalaryMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffSalaryMainServiceImpl.java
@@ -7,6 +7,7 @@
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.project.system.mapper.SysUserDeptMapper;
import com.ruoyi.staff.dto.CalculateSalaryDto;
+import com.ruoyi.staff.dto.StaffSalaryCalculateDto;
import com.ruoyi.staff.mapper.StaffLeaveMapper;
import com.ruoyi.staff.mapper.StaffSalaryDetailMapper;
import com.ruoyi.staff.mapper.StaffSalaryMainMapper;
@@ -20,6 +21,7 @@
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -135,6 +137,38 @@
return AjaxResult.success(mapList);
}
+ @Override
+ public AjaxResult calculateSalaryByEmployee(StaffSalaryCalculateDto calculateSalaryCalculateDto) {
+ if (calculateSalaryCalculateDto == null || calculateSalaryCalculateDto.getStaffOnJobId() == null
+ || StringUtils.isEmpty(calculateSalaryCalculateDto.getSalaryMonth())) {
+ return AjaxResult.error("鍙傛暟閿欒");
+ }
+ Map<String, Object> result = new HashMap<>();
+ result.put("id", calculateSalaryCalculateDto.getStaffOnJobId().intValue());
+ result.put("staffOnJobId", calculateSalaryCalculateDto.getStaffOnJobId());
+ result.put("basicSalary", calculateSalaryCalculateDto.getBasicSalary());
+ result.put("dayDays", calculateSalaryCalculateDto.getDayDays());
+ result.put("nightDays", calculateSalaryCalculateDto.getNightDays());
+ result.put("pieceSalary", calculateSalaryCalculateDto.getPieceSalary());
+ result.put("hourlySalary", calculateSalaryCalculateDto.getHourlySalary());
+ result.put("otherIncome", calculateSalaryCalculateDto.getOtherIncome());
+ result.put("otherDeduct", calculateSalaryCalculateDto.getOtherDeduct());
+ result.put("socialPersonal", calculateSalaryCalculateDto.getSocialPersonal());
+ result.put("fundPersonal", calculateSalaryCalculateDto.getFundPersonal());
+ result.put("salaryTax", calculateSalaryCalculateDto.getSalaryTax());
+ result.put("grossSalary", calculateSalaryCalculateDto.getGrossSalary());
+ result.put("deductSalary", calculateSalaryCalculateDto.getDeductSalary());
+ result.put("netSalary", calculateSalaryCalculateDto.getNetSalary());
+ result.put("remark", calculateSalaryCalculateDto.getRemark());
+ result.put("salaryMonth", calculateSalaryCalculateDto.getSalaryMonth());
+ schemeApplicableStaffService.calculateByEmployeeId(
+ calculateSalaryCalculateDto.getStaffOnJobId().intValue(),
+ result,
+ calculateSalaryCalculateDto.getSalaryMonth()
+ );
+ return AjaxResult.success(result);
+ }
+
public List<Map<String, Object>> setSchemeApplicableStaffUserInfo(List<Long> ids) {
if(CollectionUtils.isEmpty(ids)){
return new ArrayList<>();
--
Gitblit v1.9.3