From 306a7bb0c562a97b52bbc411774303ccf5f07374 Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期二, 10 三月 2026 09:19:37 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_New' into dev_New
---
src/main/resources/application-newTest.yml | 8 ++++
src/main/java/com/ruoyi/staff/dto/CalculateSalaryDto.java | 18 +++++++++
src/main/java/com/ruoyi/staff/controller/StaffSalaryMainController.java | 5 +-
src/main/java/com/ruoyi/staff/service/impl/StaffSalaryMainServiceImpl.java | 36 ++++++++++++++++--
src/main/java/com/ruoyi/account/pojo/AccountExpense.java | 2
src/main/java/com/ruoyi/staff/service/StaffSalaryMainService.java | 3 +
src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java | 42 ++++++++++++++++++++
7 files changed, 105 insertions(+), 9 deletions(-)
diff --git a/src/main/java/com/ruoyi/account/pojo/AccountExpense.java b/src/main/java/com/ruoyi/account/pojo/AccountExpense.java
index 1ad0463..cbb6eed 100644
--- a/src/main/java/com/ruoyi/account/pojo/AccountExpense.java
+++ b/src/main/java/com/ruoyi/account/pojo/AccountExpense.java
@@ -35,7 +35,7 @@
private Long businessId;
/**
- * 涓氬姟绫诲瀷 1-浠樻 2-杩樻
+ * 涓氬姟绫诲瀷 1-浠樻 2-杩樻 3-钖祫鍙戞斁
*/
private Integer businessType;
diff --git a/src/main/java/com/ruoyi/staff/controller/StaffSalaryMainController.java b/src/main/java/com/ruoyi/staff/controller/StaffSalaryMainController.java
index 51e8002..ad43b6c 100644
--- a/src/main/java/com/ruoyi/staff/controller/StaffSalaryMainController.java
+++ b/src/main/java/com/ruoyi/staff/controller/StaffSalaryMainController.java
@@ -4,6 +4,7 @@
import com.ruoyi.framework.aspectj.lang.annotation.Log;
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.pojo.StaffSalaryMain;
import com.ruoyi.staff.service.StaffSalaryMainService;
import io.swagger.annotations.Api;
@@ -39,8 +40,8 @@
@ApiOperation("閫氳繃閮ㄩ棬ids鑾峰彇鐢ㄦ埛淇℃伅璁$畻姣忎釜鍛樺伐鐨勫伐璧�")
@PostMapping("/calculateSalary")
- public AjaxResult calculateSalary(@RequestBody List<Long> ids) {
- return staffSalaryMainService.calculateSalary(ids);
+ public AjaxResult calculateSalary(@RequestBody CalculateSalaryDto calculateSalaryDto) {
+ return staffSalaryMainService.calculateSalary(calculateSalaryDto);
}
@PostMapping("/add")
diff --git a/src/main/java/com/ruoyi/staff/dto/CalculateSalaryDto.java b/src/main/java/com/ruoyi/staff/dto/CalculateSalaryDto.java
new file mode 100644
index 0000000..214d6aa
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/dto/CalculateSalaryDto.java
@@ -0,0 +1,18 @@
+package com.ruoyi.staff.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author :yys
+ * @date : 2026/3/9 11:53
+ */
+@Data
+public class CalculateSalaryDto {
+
+ private List<Long> ids;
+
+ private String date;
+
+}
diff --git a/src/main/java/com/ruoyi/staff/service/StaffSalaryMainService.java b/src/main/java/com/ruoyi/staff/service/StaffSalaryMainService.java
index bb90d61..1794e43 100644
--- a/src/main/java/com/ruoyi/staff/service/StaffSalaryMainService.java
+++ b/src/main/java/com/ruoyi/staff/service/StaffSalaryMainService.java
@@ -2,6 +2,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.pojo.StaffSalaryMain;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -25,5 +26,5 @@
AjaxResult delete(List<Long> ids);
- AjaxResult calculateSalary(List<Long> ids);
+ AjaxResult calculateSalary(CalculateSalaryDto calculateSalaryDto);
}
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..068bcfb 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/SchemeApplicableStaffServiceImpl.java
@@ -4,6 +4,9 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.production.dto.UserAccountDto;
+import com.ruoyi.production.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;
@@ -58,6 +61,9 @@
@Autowired
private StaffOnJobMapper staffOnJobMapper;
+
+ @Autowired
+ private SalesLedgerProductionAccountingService salesLedgerProductionAccountingService;
@Override
@@ -160,7 +166,7 @@
* 閫氳繃鍛樺伐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; // 鎴栬繑鍥炵┖鍒楄〃锛屾牴鎹笟鍔¢渶姹傝皟鏁�
@@ -211,6 +217,20 @@
// 涓◣閲戦锛堟棤绀句繚鐗堬級
BigDecimal bigDecimal = TaxCalculator.calculateMonthlyTax(basicSalary, schemeAmount, gjj);
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)) {
@@ -244,6 +264,26 @@
}
/**
+ * 閫氳繃鍛樺伐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
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 f299b95..4179275 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/StaffSalaryMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffSalaryMainServiceImpl.java
@@ -2,14 +2,20 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.account.mapper.AccountExpenseMapper;
+import com.ruoyi.account.pojo.AccountExpense;
+import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.domain.SysUserDept;
import com.ruoyi.project.system.mapper.SysUserDeptMapper;
import com.ruoyi.project.system.mapper.SysUserMapper;
+import com.ruoyi.staff.dto.CalculateSalaryDto;
+import com.ruoyi.staff.mapper.StaffOnJobMapper;
import com.ruoyi.staff.mapper.StaffSalaryDetailMapper;
import com.ruoyi.staff.pojo.SchemeApplicableStaff;
+import com.ruoyi.staff.pojo.StaffOnJob;
import com.ruoyi.staff.pojo.StaffSalaryDetail;
import com.ruoyi.staff.pojo.StaffSalaryMain;
import com.ruoyi.staff.mapper.StaffSalaryMainMapper;
@@ -52,6 +58,12 @@
@Autowired
private SysUserMapper sysUserMapper;
+
+ @Autowired
+ private StaffOnJobMapper staffOnJobMapper;
+
+ @Autowired
+ private AccountExpenseMapper accountExpenseMapper;
@Override
public AjaxResult listPage(Page page, StaffSalaryMain staffSalaryMain) {
@@ -104,6 +116,21 @@
detail.setMainId(staffSalaryMain.getId());
});
staffSalaryDetailService.saveBatch(staffSalaryMain.getStaffSalaryDetailList());
+ // 鍜岃储鍔¤仈鍔紝鏂板鏀嚭
+ if(staffSalaryMain.getStatus().equals(5)){
+ AccountExpense accountExpense = new AccountExpense();
+ accountExpense.setBusinessType(3);
+ accountExpense.setExpenseMoney(staffSalaryMain.getTotalSalary());
+ accountExpense.setBusinessId(staffSalaryMain.getId());
+ accountExpense.setExpenseDate(new Date());
+ accountExpense.setExpenseMethod("2");
+ accountExpense.setExpenseType("1");
+ accountExpense.setExpenseDescribed(staffSalaryMain.getSalaryTitle());
+ accountExpense.setNote(staffSalaryMain.getRemark());
+ accountExpense.setInputUser(SecurityUtils.getLoginUser().getNickName());
+ accountExpense.setInputTime(new Date());
+ accountExpenseMapper.insert(accountExpense);
+ }
return AjaxResult.success("淇敼鎴愬姛");
}
@@ -118,16 +145,16 @@
}
@Override
- public AjaxResult calculateSalary(List<Long> ids) {
- if(CollectionUtils.isEmpty(ids)){
+ public AjaxResult calculateSalary(CalculateSalaryDto calculateSalaryDto) {
+ if(CollectionUtils.isEmpty(calculateSalaryDto.getIds())){
return AjaxResult.error("鍙傛暟閿欒");
}
- List<Map<String, Object>> longs = setSchemeApplicableStaffUserInfo(ids); // 閫氳繃閮ㄩ棬ids鑾峰彇鐢ㄦ埛淇℃伅
+ List<Map<String, Object>> longs = setSchemeApplicableStaffUserInfo(calculateSalaryDto.getIds()); // 閫氳繃閮ㄩ棬ids鑾峰彇鐢ㄦ埛淇℃伅
if(CollectionUtils.isEmpty(longs)){
return AjaxResult.error("鏃犲憳宸�");
}
for (Map<String, Object> id : longs) {
- schemeApplicableStaffService.calculateByEmployeeId((Integer) id.get("id"),id);
+ schemeApplicableStaffService.calculateByEmployeeId((Integer) id.get("id"),id,calculateSalaryDto.getDate());
}
return AjaxResult.success(longs);
}
@@ -139,4 +166,5 @@
// 閫氳繃閮ㄩ棬鑾峰彇浜哄憳id
return sysUserDeptMapper.setSchemeApplicableStaffUserInfo(ids);
}
+
}
diff --git a/src/main/resources/application-newTest.yml b/src/main/resources/application-newTest.yml
index 4d3029c..2e51bd7 100644
--- a/src/main/resources/application-newTest.yml
+++ b/src/main/resources/application-newTest.yml
@@ -15,6 +15,14 @@
captchaType: math
# 鍗忓悓瀹℃壒缂栧彿鍓嶇紑(閰嶇疆鏂囦欢鍚庣紑鍛藉悕)
approvalNumberPrefix: NEWTEST
+ # 涓帹 Unipush 閰嶇疆
+ getui:
+ appId: PfjyAAE0FK64FaO1w2CMb1
+ appKey: zTMb831OEL6J4GK1uE3Ob4
+ masterSecret: K1GFtsv42v61tXGnF7SGE5
+ domain: https://restapi.getui.cn/v2/
+ # 绂荤嚎鎺ㄩ�佷娇鐢ㄧ殑鍖呭悕/缁勪欢鍚�
+ intentComponent: uni.app.UNI099A590/io.dcloud.PandoraEntry
# 寮�鍙戠幆澧冮厤缃�
server:
# 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
--
Gitblit v1.9.3