From 2e71bdbcdf853bb35e68016b84f0254f7366bfeb Mon Sep 17 00:00:00 2001
From: chenhj <1263187585@qq.com>
Date: 星期五, 24 四月 2026 11:14:28 +0800
Subject: [PATCH] 文件工具类变更
---
src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java | 105 ++++++++++++++++++++++++++++++++--------------------
1 files changed, 65 insertions(+), 40 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 e8d3982..bd61ca3 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java
@@ -2,32 +2,33 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.production.bean.dto.UserAccountDto;
+import com.ruoyi.production.bean.dto.UserProductionAccountingDto;
+import com.ruoyi.production.service.SalesLedgerProductionAccountingService;
import com.ruoyi.project.system.domain.SysDept;
import com.ruoyi.project.system.domain.SysUser;
-import com.ruoyi.project.system.domain.SysUserDept;
import com.ruoyi.project.system.mapper.SysDeptMapper;
-import com.ruoyi.project.system.mapper.SysUserDeptMapper;
import com.ruoyi.project.system.mapper.SysUserMapper;
import com.ruoyi.staff.controller.TaxCalculator;
-import com.ruoyi.staff.dto.StaffOnJobDto;
+import com.ruoyi.staff.mapper.SchemeApplicableStaffMapper;
import com.ruoyi.staff.mapper.SchemeInsuranceDetailMapper;
import com.ruoyi.staff.mapper.StaffOnJobMapper;
import com.ruoyi.staff.pojo.SchemeApplicableStaff;
-import com.ruoyi.staff.mapper.SchemeApplicableStaffMapper;
import com.ruoyi.staff.pojo.SchemeInsuranceDetail;
import com.ruoyi.staff.pojo.StaffOnJob;
-import com.ruoyi.staff.service.IStaffOnJobService;
import com.ruoyi.staff.service.SchemeApplicableStaffService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.beans.factory.annotation.Autowired;
+import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
-import javax.annotation.Resource;
import java.math.BigDecimal;
-import java.util.*;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
import java.util.stream.Collectors;
/**
@@ -39,25 +40,15 @@
* @since 2026-03-05 11:50:17
*/
@Service
+@RequiredArgsConstructor
public class SchemeApplicableStaffServiceImpl extends ServiceImpl<SchemeApplicableStaffMapper, SchemeApplicableStaff> implements SchemeApplicableStaffService {
- @Autowired
- private SchemeApplicableStaffMapper schemeApplicableStaffMapper;
-
- @Autowired
- private SchemeInsuranceDetailMapper schemeInsuranceDetailMapper;
-
- @Autowired
- private SysUserDeptMapper sysUserDeptMapper;
-
- @Autowired
- private SysUserMapper sysUserMapper;
-
- @Autowired
- private SysDeptMapper sysDeptMapper;
-
- @Autowired
- private StaffOnJobMapper staffOnJobMapper;
+ private final SchemeApplicableStaffMapper schemeApplicableStaffMapper;
+ private final SchemeInsuranceDetailMapper schemeInsuranceDetailMapper;
+ private final SysUserMapper sysUserMapper;
+ private final SysDeptMapper sysDeptMapper;
+ private final StaffOnJobMapper staffOnJobMapper;
+ private final SalesLedgerProductionAccountingService salesLedgerProductionAccountingService;
@Override
@@ -160,20 +151,20 @@
* 閫氳繃鍛樺伐id璁$畻绀句繚鏂规
* @param id
*/
- public void calculateByEmployeeId(Integer id,Map<String, Object> map) {
+ public void calculateByEmployeeId(Integer id,Map<String, Object> map,String date) {
// 1. 鍏ュ弬鏍¢獙
if (id == null) {
return; // 鎴栬繑鍥炵┖鍒楄〃锛屾牴鎹笟鍔¢渶姹傝皟鏁�
}
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");
@@ -209,8 +200,22 @@
// 搴斿彂宸ヨ祫
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();
+ 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)) {
@@ -224,26 +229,46 @@
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));
}
/**
+ * 閫氳繃鍛樺伐Id鑾峰彇鐢ㄦ埛id
+ * @param staffId
+ * @return
+ */
+ public Long getUidByStaffId(Long staffId){
+ StaffOnJob staffOnJob = staffOnJobMapper.selectById(staffId);
+ if(staffOnJob == null){
+ return -1L; // 杩斿洖涓嶅瓨鍦↖d
+ }
+ SysUser sysUser = sysUserMapper.selectOne(new LambdaQueryWrapper<SysUser>()
+ .eq(SysUser::getUserName, staffOnJob.getStaffNo())
+ .eq(SysUser::getDelFlag, "0")
+ .last("limit 1"));
+ if(sysUser == null){
+ return -1L; // 杩斿洖涓嶅瓨鍦↖d
+ }
+ return sysUser.getUserId();
+ }
+
+ /**
* 璁$畻
* @param type
* @param bigDecimal
--
Gitblit v1.9.3