From 5b83294fac4605b569a5a0d1c5e0f310026d10d4 Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期四, 12 三月 2026 10:22:06 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_New' into dev_New

---
 src/main/java/com/ruoyi/staff/service/impl/StaffSalaryMainServiceImpl.java |   74 +++++++++++++++++++++++++++++--------
 1 files changed, 58 insertions(+), 16 deletions(-)

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..3093c63 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/StaffSalaryMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffSalaryMainServiceImpl.java
@@ -2,16 +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.StaffLeaveMapper;
+import com.ruoyi.staff.mapper.StaffOnJobMapper;
 import com.ruoyi.staff.mapper.StaffSalaryDetailMapper;
-import com.ruoyi.staff.pojo.SchemeApplicableStaff;
-import com.ruoyi.staff.pojo.StaffSalaryDetail;
-import com.ruoyi.staff.pojo.StaffSalaryMain;
+import com.ruoyi.staff.pojo.*;
 import com.ruoyi.staff.mapper.StaffSalaryMainMapper;
 import com.ruoyi.staff.service.StaffSalaryDetailService;
 import com.ruoyi.staff.service.StaffSalaryMainService;
@@ -52,6 +56,15 @@
 
     @Autowired
     private SysUserMapper sysUserMapper;
+
+    @Autowired
+    private StaffOnJobMapper staffOnJobMapper;
+
+    @Autowired
+    private StaffLeaveMapper staffLeaveMapper;
+
+    @Autowired
+    private AccountExpenseMapper accountExpenseMapper;
 
     @Override
     public AjaxResult listPage(Page page, StaffSalaryMain staffSalaryMain) {
@@ -95,15 +108,32 @@
             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();
+            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,18 +148,29 @@
     }
 
     @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("鏃犲憳宸�");
         }
+        List<Map<String, Object>> mapList = new ArrayList<>();
         for (Map<String, Object> id : longs) {
-            schemeApplicableStaffService.calculateByEmployeeId((Integer) id.get("id"),id);
+            // 鍒ゆ柇鍛樺伐鏄惁涓哄綋鏈堢鑱�
+            if((Integer) id.get("staffState") == 0){
+                StaffLeave id1 = staffLeaveMapper.selectOne(new LambdaQueryWrapper<StaffLeave>()
+                        .eq(StaffLeave::getStaffOnJobId, id.get("id"))
+                        .like(StaffLeave::getCreateTime, calculateSalaryDto.getDate()));
+                if(id1 == null){
+                    continue;
+                }
+            }
+            schemeApplicableStaffService.calculateByEmployeeId((Integer) id.get("id"),id,calculateSalaryDto.getDate());
+            mapList.add(id);
         }
-        return AjaxResult.success(longs);
+        return AjaxResult.success(mapList);
     }
 
     public List<Map<String, Object>> setSchemeApplicableStaffUserInfo(List<Long> ids) {
@@ -139,4 +180,5 @@
         // 閫氳繃閮ㄩ棬鑾峰彇浜哄憳id
         return sysUserDeptMapper.setSchemeApplicableStaffUserInfo(ids);
     }
+
 }

--
Gitblit v1.9.3