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