From dfa9258c8879dbb0d1bfc00d7f939031d0bb623b Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期四, 29 一月 2026 18:32:05 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_New' into dev_New

---
 src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java |   90 +++++++++++++++++++++++++++++++++++++++------
 1 files changed, 78 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
index ddc3718..ca0cc8e 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
@@ -1,6 +1,7 @@
 package com.ruoyi.approve.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -12,18 +13,21 @@
 import com.ruoyi.approve.service.IApproveNodeService;
 import com.ruoyi.approve.vo.ApproveProcessVO;
 import com.ruoyi.common.enums.FileNameType;
+import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.device.mapper.DeviceRepairMapper;
 import com.ruoyi.device.pojo.DeviceRepair;
 import com.ruoyi.other.service.impl.TempFileServiceImpl;
+import com.ruoyi.procurementrecord.utils.StockUtils;
 import com.ruoyi.project.system.domain.SysUser;
 import com.ruoyi.project.system.mapper.SysUserMapper;
 import com.ruoyi.project.system.service.ISysNoticeService;
-import com.ruoyi.sales.mapper.CommonFileMapper;
-import com.ruoyi.sales.mapper.SalesQuotationMapper;
-import com.ruoyi.sales.mapper.SalesQuotationProductMapper;
-import com.ruoyi.sales.mapper.ShippingInfoMapper;
+import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
+import com.ruoyi.purchase.pojo.PurchaseLedger;
+import com.ruoyi.purchase.service.impl.PurchaseLedgerServiceImpl;
+import com.ruoyi.sales.mapper.*;
 import com.ruoyi.sales.pojo.CommonFile;
+import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import com.ruoyi.sales.pojo.SalesQuotation;
 import com.ruoyi.sales.pojo.ShippingInfo;
 import com.ruoyi.sales.service.impl.CommonFileServiceImpl;
@@ -40,7 +44,7 @@
 import java.util.List;
 
 @Service
-@RequiredArgsConstructor
+//@RequiredArgsConstructor
 public class ApproveNodeServiceImpl extends ServiceImpl<ApproveNodeMapper, ApproveNode> implements IApproveNodeService {
 
     @Autowired
@@ -61,11 +65,23 @@
     private DeviceRepairMapper deviceRepairMapper;
 
     @Autowired
+    private PurchaseLedgerMapper purchaseLedgerMapper;
+
+    @Autowired
     private SalesQuotationMapper salesQuotationMapper;
 
     @Autowired
     private ShippingInfoMapper shippingInfoMapper;
 
+    @Autowired
+    private CommonFileServiceImpl commonFileService;
+    @Autowired
+    private StockUtils stockUtils;
+    @Autowired
+    private SalesLedgerProductMapper salesLedgerProductMapper;
+
+    @Autowired
+    private PurchaseLedgerServiceImpl purchaseLedgerServiceImpl;
 
 
     public ApproveProcess getApproveById(String id) {
@@ -107,12 +123,14 @@
         LambdaQueryWrapper<ApproveNode> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(ApproveNode::getApproveProcessId, id);
         queryWrapper.eq(ApproveNode::getDeleteFlag, 0);
+        queryWrapper.eq(ApproveNode::getApproveNodeStatus, 0);
         List<ApproveNode> list = list(queryWrapper);
         // 鎸夌収 approveNodeOrder 瀛楁鍗囧簭鎺掑簭
         list.sort(Comparator.comparingInt(ApproveNode::getApproveNodeOrder));
         LambdaQueryWrapper<ApproveProcess> approveProcessLambdaQueryWrapper = new LambdaQueryWrapper<>();
         approveProcessLambdaQueryWrapper.eq(ApproveProcess::getApproveId, id)
                 .eq(ApproveProcess::getApproveDelete, 0)
+                .eq(ApproveProcess::getApproveStatus, 0)
                 .last("limit 1");
         ApproveProcess approveProcess = approveProcessMapper.selectOne(approveProcessLambdaQueryWrapper);
         if(approveProcess != null && approveProcess.getApproveStatus() == 3){
@@ -138,6 +156,7 @@
         LambdaQueryWrapper<ApproveProcess> approveProcessLambdaQueryWrapper = new LambdaQueryWrapper<>();
         approveProcessLambdaQueryWrapper.eq(ApproveProcess::getApproveId, approveNode.getApproveProcessId())
                 .eq(ApproveProcess::getApproveDelete, 0)
+                .eq(ApproveProcess::getApproveStatus, 0)
                 .last("limit 1");
         ApproveProcess approveProcess = approveProcessMapper.selectOne(approveProcessLambdaQueryWrapper);
         if(approveProcess == null) throw new RuntimeException("瀹℃壒涓嶅瓨鍦�");
@@ -145,6 +164,7 @@
         approveNodeLambdaQueryWrapper.eq(ApproveNode::getApproveProcessId, approveNode.getApproveProcessId())
                 .eq(ApproveNode::getApproveNodeOrder, approveNode.getApproveNodeOrder() + 1)
                 .eq(ApproveNode::getDeleteFlag, 0)
+                .eq(ApproveNode::getApproveNodeStatus, 0)
                 .last("limit 1");
         ApproveNode approveNode1 = approveNodeMapper.selectOne(approveNodeLambdaQueryWrapper);
         approveProcess.setApproveStatus(status);
@@ -167,6 +187,37 @@
                 deviceRepair.setStatus(2);
             }
             deviceRepairMapper.updateById(deviceRepair);
+        }
+
+        //閲囪喘瀹℃牳
+        if(approveProcess.getApproveType().equals(5)){
+            PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectOne(new LambdaQueryWrapper<PurchaseLedger>()
+                    .eq(PurchaseLedger::getPurchaseContractNumber, approveProcess.getApproveReason())
+                    .last("limit 1"));
+            if(purchaseLedger != null) {
+                if (status.equals(2)) {
+                    // 鍚屾剰
+                    purchaseLedger.setApprovalStatus(3);
+                    List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(new QueryWrapper<SalesLedgerProduct>()
+                            .lambda().eq(SalesLedgerProduct::getSalesLedgerId, purchaseLedger.getId()).eq(SalesLedgerProduct::getType, 2));
+                    for (SalesLedgerProduct salesLedgerProduct : salesLedgerProducts) {
+                        // 璐ㄦ
+                        if (salesLedgerProduct.getIsChecked()) {
+                            purchaseLedgerServiceImpl.addQualityInspect(purchaseLedger, salesLedgerProduct);
+                        }else {
+                            //鐩存帴鍏ュ簱
+                            stockUtils.addStock(salesLedgerProduct.getProductModelId(), salesLedgerProduct.getQuantity(), StockQualifiedRecordTypeEnum.PURCHASE_STOCK_IN.getCode(), purchaseLedger.getId());
+                        }
+                    }
+                } else if (status.equals(3)) {
+                    // 鎷掔粷
+                    purchaseLedger.setApprovalStatus(4);
+                } else if (status.equals(1)) {
+                    // 瀹℃牳涓�
+                    purchaseLedger.setApprovalStatus(2);
+                }
+                purchaseLedgerMapper.updateById(purchaseLedger);
+            }
         }
         // 閿�鍞姤浠风姸鎬佷慨鏀�
         if(approveProcess.getApproveType().equals(6)){
@@ -194,7 +245,7 @@
                 if(status.equals(2)){
                     shippingInfo.setStatus("瀹℃牳閫氳繃");
                 }else if(status.equals(3)){
-                    shippingInfo.setType("瀹℃牳鎷掔粷");
+                    shippingInfo.setStatus("瀹℃牳鎷掔粷");
                 }else if(status.equals(1)){
                     shippingInfo.setStatus("瀹℃牳涓�");
                 }
@@ -220,10 +271,17 @@
                         .eq(ApproveProcess::getApproveId, approveNode.getApproveProcessId())).get(0);
                 if (approveProcess.getApproveUserIds().split(",").length > nodeOrder){
                     String id = approveProcess.getApproveUserIds().split(",")[nodeOrder];
-                    sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()),
-                            approveNode.getApproveProcessId()+"娴佺▼缂栧彿鐨勫鎵归渶瑕佹偍瀹℃牳!!!!!",
-                            Arrays.asList(Long.valueOf(id)),
-                            "/collaborativeApproval/approvalProcess?approveType="+approveProcess.getApproveType()+"&approveId="+approveNode.getApproveProcessId());
+                    if (approveProcess.getApproveType()==8){
+                        sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()),
+                                approveProcess.getApproveId() + "娴佺▼缂栧彿鐨勫鎵归渶瑕佹偍瀹℃牳!!!!!",
+                                Arrays.asList(Long.valueOf(id)),
+                                "/safeProduction/safeWorkApproval?approveType=" + approveProcess.getApproveType() + "&approveId=" + approveProcess.getApproveId());
+                    }else {
+                        sysNoticeService.simpleNoticeByUser(approveProcessType(approveProcess.getApproveType()),
+                                approveProcess.getApproveId() + "娴佺▼缂栧彿鐨勫鎵归渶瑕佹偍瀹℃牳!!!!!",
+                                Arrays.asList(Long.valueOf(id)),
+                                "/collaborativeApproval/approvalProcess?approveType=" + approveProcess.getApproveType() + "&approveId=" + approveProcess.getApproveId());
+                    }
                 }
                 break;
             case 2:
@@ -237,11 +295,17 @@
     }
 
     @Override
-    public void delApproveNodeByApproveId(Long id) {
+    public void delApproveNodeByApproveId(String id) {
+        List<ApproveNode> approveNodes = approveNodeMapper.selectList(new LambdaQueryWrapper<ApproveNode>()
+                .eq(ApproveNode::getApproveProcessId, id));
         UpdateWrapper<ApproveNode> queryWrapper = new UpdateWrapper<>();
         queryWrapper.lambda().set(ApproveNode::getDeleteFlag, 1)
                 .eq(ApproveNode::getApproveProcessId, id);
         update(queryWrapper);
+        // 鍒犻櫎闄勪欢
+        for (ApproveNode approveNode : approveNodes) {
+            commonFileService.deleteByBusinessId(approveNode.getId(), FileNameType.ApproveNode.getValue());
+        }
     }
 
     //瀹℃壒绫诲瀷鑾峰彇(涓庡墠绔〉闈㈠搴�)
@@ -260,7 +324,9 @@
             case 6:
                 return "鎶ヤ环瀹℃壒";
             case 7:
-                return "鍑哄簱瀹℃壒";
+                return "鍙戣揣瀹℃壒";
+            case 8:
+                return "鍗遍櫓浣滀笟瀹℃壒";
         }
         return null;
     }

--
Gitblit v1.9.3