From 353f44a6a33b1f557c1fb8e11eda4d425b8db668 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期三, 01 七月 2026 13:43:28 +0800
Subject: [PATCH] Merge branch 'dev_New_pro' of http://114.132.189.42:9002/r/product-inventory-management-after into dev_New_pro

---
 src/main/java/com/ruoyi/approve/service/impl/ApprovalTemplateServiceImpl.java |   30 ++++++++++++++++++++++++++++++
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java |    6 ++++--
 2 files changed, 34 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/ruoyi/approve/service/impl/ApprovalTemplateServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/ApprovalTemplateServiceImpl.java
index a0b07d5..9a5f0b8 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApprovalTemplateServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApprovalTemplateServiceImpl.java
@@ -13,6 +13,8 @@
 import com.ruoyi.approve.bean.vo.ApprovalTemplateVo;
 import com.ruoyi.approve.mapper.ApprovalTemplateMapper;
 import com.ruoyi.approve.mapper.ApprovalTemplateNodeApproverMapper;
+import com.ruoyi.approve.mapper.ApprovalInstanceMapper;
+import com.ruoyi.approve.pojo.ApprovalInstance;
 import com.ruoyi.approve.pojo.ApprovalTemplate;
 import com.ruoyi.approve.pojo.ApprovalTemplateNode;
 import com.ruoyi.approve.pojo.ApprovalTemplateNodeApprover;
@@ -48,6 +50,7 @@
     private final ApprovalTemplateMapper approvalTemplateMapper;
     private final ApprovalTemplateNodeService approvalTemplateNodeService;
     private final ApprovalTemplateNodeApproverMapper approvalTemplateNodeApproverMapper;
+    private final ApprovalInstanceMapper approvalInstanceMapper;
     private final FileUtil fileUtil;
 
     @Override
@@ -82,6 +85,10 @@
 
     @Override
     public Boolean updateApprovalTemplateDto(ApprovalTemplateDto approvalTemplateDto) {
+        // 妫�鏌ユā鏉挎槸鍚﹁瀹℃壒瀹炰緥寮曠敤
+        if (isTemplateReferenced(approvalTemplateDto.getId())) {
+            throw new RuntimeException("璇ュ鎵规ā鏉垮凡琚鎵规祦绋嬪紩鐢紝鏃犳硶缂栬緫");
+        }
         approvalTemplateMapper.updateById(approvalTemplateDto);
         approvalTemplateNodeService.remove(
                 new LambdaQueryWrapper<ApprovalTemplateNode>()
@@ -111,6 +118,12 @@
     public Boolean delete(List<Long> ids) {
         if (ids == null || ids.isEmpty()) {
             return false;
+        }
+        // 妫�鏌ユā鏉挎槸鍚﹁瀹℃壒瀹炰緥寮曠敤
+        for (Long id : ids) {
+            if (isTemplateReferenced(id)) {
+                throw new RuntimeException("瀹℃壒妯℃澘锛圛D: " + id + "锛夊凡琚鎵规祦绋嬪紩鐢紝鏃犳硶鍒犻櫎");
+            }
         }
         ApprovalTemplate updateEntity = new ApprovalTemplate();
         updateEntity.setDeleted(1);
@@ -275,4 +288,21 @@
         BeanUtils.copyProperties(approver, approverVo);
         return approverVo;
     }
+
+    /**
+     * 妫�鏌ュ鎵规ā鏉挎槸鍚﹁瀹℃壒瀹炰緥寮曠敤
+     * @param templateId 妯℃澘ID
+     * @return true 琛ㄧず琚紩鐢紝false 琛ㄧず鏈寮曠敤
+     */
+    private boolean isTemplateReferenced(Long templateId) {
+        if (templateId == null) {
+            return false;
+        }
+        Long count = approvalInstanceMapper.selectCount(
+                new LambdaQueryWrapper<ApprovalInstance>()
+                        .eq(ApprovalInstance::getTemplateId, templateId)
+                        .eq(ApprovalInstance::getDeleted, 0)
+        );
+        return count != null && count > 0;
+    }
 }
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
index 92c44c3..fa60c68 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -98,9 +98,10 @@
         List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectSalesLedgerProductList(salesLedgerProduct);
         if(!CollectionUtils.isEmpty(salesLedgerProducts)){
             salesLedgerProducts.forEach(item -> {
-                // 鍙戣揣淇℃伅锛堝彇鏈�鏂颁竴鏉★級
+                // 鍙戣揣淇℃伅锛堝彇鏈�鏂颁竴鏉★紝鍙煡璇㈠鏍搁�氳繃鎴栧凡鍙戣揣鐨勮褰曪級
                 ShippingInfo latestShippingInfo = shippingInfoMapper.selectOne(new LambdaQueryWrapper<ShippingInfo>()
                         .eq(ShippingInfo::getSalesLedgerProductId, item.getId())
+                        .in(ShippingInfo::getStatus, "瀹℃牳閫氳繃", "宸插彂璐�")
                         .orderByDesc(ShippingInfo::getCreateTime)
                         .last("limit 1"));
                 if(latestShippingInfo != null){
@@ -108,9 +109,10 @@
                     item.setExpressCompany(latestShippingInfo.getExpressCompany());
                     item.setExpressNumber(latestShippingInfo.getExpressNumber());
                 }
-                // 杞︾墝鍙凤細鍙栨墍鏈夊彂璐ц褰曠殑杞︾墝鍙凤紝閫楀彿鎷兼帴
+                // 杞︾墝鍙凤細鍙栨墍鏈夊鏍搁�氳繃鎴栧凡鍙戣揣璁板綍鐨勮溅鐗屽彿锛岄�楀彿鎷兼帴
                 List<ShippingInfo> allShippingInfos = shippingInfoMapper.selectList(new LambdaQueryWrapper<ShippingInfo>()
                         .eq(ShippingInfo::getSalesLedgerProductId, item.getId())
+                        .in(ShippingInfo::getStatus, "瀹℃牳閫氳繃", "宸插彂璐�")
                         .orderByAsc(ShippingInfo::getCreateTime));
                 if(!CollectionUtils.isEmpty(allShippingInfos)){
                     String carNumbers = allShippingInfos.stream()

--
Gitblit v1.9.3