From 55d694aaae4e421b5e55cd941500e08f85cb5d4d Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 27 八月 2026 18:21:33 +0800
Subject: [PATCH] feat(sales): 添加框架合同订单功能并优化销售台账管理

---
 src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java |   23 ++++++++++++++++++++++-
 1 files changed, 22 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
index be34bc0..82049ab 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
@@ -23,9 +23,12 @@
 import com.ruoyi.sales.dto.ShippingApproveDto;
 import com.ruoyi.sales.dto.ShippingInfoDto;
 import com.ruoyi.sales.dto.ShippingProductDetailDto;
+import com.ruoyi.sales.mapper.SalesLedgerMapper;
 import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
 import com.ruoyi.sales.mapper.ShippingInfoMapper;
 import com.ruoyi.sales.mapper.ShippingProductDetailMapper;
+import com.ruoyi.sales.pojo.SalesLedger;
+import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import com.ruoyi.sales.pojo.ShippingInfo;
 import com.ruoyi.sales.pojo.ShippingProductDetail;
 import com.ruoyi.sales.service.ShippingInfoService;
@@ -52,6 +55,8 @@
 
 
     private final SalesLedgerProductMapper salesLedgerProductMapper;
+
+    private final SalesLedgerMapper salesLedgerMapper;
 
     private final StockUtils stockUtils;
 
@@ -172,9 +177,25 @@
     @Override
     public boolean addReq(ShippingInfoDto req) {
 
-        // 鏍¢獙璇ヤ骇鍝佹槸鍚﹀凡鏈夊緟瀹℃牳/瀹℃牳涓殑鍙戣揣璁板綍锛岄槻姝㈤噸澶嶆彁浜�
+        // 妗嗘灦鍚堝悓鍙敤浜庣櫥璁颁骇鍝佽寖鍥达紝瀹為檯鍙戣揣蹇呴』鍏宠仈妗嗘灦璁㈠崟浜у搧銆�
         Long salesLedgerProductId = req.getSalesLedgerProductId();
         if (salesLedgerProductId != null) {
+            SalesLedgerProduct product = salesLedgerProductMapper.selectById(salesLedgerProductId);
+            if (product == null) {
+                throw new RuntimeException("閿�鍞骇鍝佷笉瀛樺湪");
+            }
+            if (req.getSalesLedgerId() != null
+                    && !java.util.Objects.equals(req.getSalesLedgerId(), product.getSalesLedgerId())) {
+                throw new RuntimeException("鍙戣揣鍙拌处涓庨攢鍞骇鍝佷笉鍖归厤");
+            }
+            SalesLedger ledger = salesLedgerMapper.selectById(product.getSalesLedgerId());
+            if (ledger == null || (!java.util.Objects.equals(ledger.getContractType(), 1)
+                    && !java.util.Objects.equals(ledger.getContractType(), 3))) {
+                throw new RuntimeException("璇ラ攢鍞骇鍝佷笉鍏佽鍙戣揣");
+            }
+        }
+        // 鏍¢獙璇ヤ骇鍝佹槸鍚﹀凡鏈夊緟瀹℃牳/瀹℃牳涓殑鍙戣揣璁板綍锛岄槻姝㈤噸澶嶆彁浜�
+        if (salesLedgerProductId != null) {
             long pendingCount = this.count(new LambdaQueryWrapper<ShippingInfo>()
                     .eq(ShippingInfo::getSalesLedgerProductId, salesLedgerProductId)
                     .in(ShippingInfo::getStatus, "寰呭鏍�", "瀹℃牳涓�"));

--
Gitblit v1.9.3