From 43d6ae86bc229a1a75637fae33be378e105016e3 Mon Sep 17 00:00:00 2001
From: cl <1442464845@qq.com>
Date: 星期日, 29 三月 2026 20:47:11 +0800
Subject: [PATCH] RCS通知

---
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java |   30 ++++++++++++++++++++++++++++++
 1 files changed, 30 insertions(+), 0 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
index a1b887c..90b7bdd 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
@@ -118,7 +118,34 @@
     private WarehouseAreasItemService warehouseAreasItemService;
     @Autowired
     private ConfigService configService;
+    @Autowired
+    private TaskItemService taskItemService;
+    @Autowired
+    private TaskService taskService;
 
+    /**
+     * 浜戜粨鏀瑰崟/鍙栨秷鍓嶏細浠诲姟鏄庣粏宸插叧鑱旇鍗曟嵁涓斾富浠诲姟鏈�昏緫鍒犻櫎鍒欎笉鍏佽
+     */
+    private void assertWkOrderNoLinkedTask(Long wkOrderId) {
+        if (wkOrderId == null) {
+            return;
+        }
+        List<TaskItem> links = taskItemService.list(new LambdaQueryWrapper<TaskItem>()
+                .select(TaskItem::getTaskId)
+                .and(w -> w.eq(TaskItem::getOrderId, wkOrderId)
+                        .or(o -> o.eq(TaskItem::getSourceId, wkOrderId)
+                                .eq(TaskItem::getOrderType, OrderType.ORDER_OUT.type))));
+        if (links.isEmpty()) {
+            return;
+        }
+        Set<Long> taskIds = links.stream().map(TaskItem::getTaskId).filter(Objects::nonNull).collect(Collectors.toSet());
+        if (taskIds.isEmpty()) {
+            return;
+        }
+        if (taskService.count(new LambdaQueryWrapper<Task>().in(Task::getId, taskIds)) > 0) {
+            throw new CoolException("璇ュ崟鎹凡鐢熸垚浠诲姟锛屼笉鍙慨鏀广�佸彇娑堟垨鍒犻櫎锛侊紒");
+        }
+    }
 
     /**
      * @author Ryan
@@ -465,6 +492,7 @@
                     WkOrder order = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>()
                             .eq(WkOrder::getPoCode, syncOrder.getOrderInternalCode()));
                     if (!Objects.isNull(order)) {
+                        assertWkOrderNoLinkedTask(order.getId());
                         // 浠呮湭鎵ц鐘舵�佸彲琚� order/add 淇敼锛堝叆搴撴湭鎵ц銆佸嚭搴撲换鍔″垵濮嬶級
                         List<Short> editableStatus = Arrays.asList(AsnExceStatus.ASN_EXCE_STATUS_UN_EXCE.val
                                 ,AsnExceStatus.ASN_EXCE_STATUS_UN_EXCE.val
@@ -943,6 +971,7 @@
             if (Objects.isNull(wkOrder)) {
                 throw new CoolException("璇风‘璁ゅ崟鎹細" + order.getOrderNo() + "鏄惁宸茬粡鎵ц鎴栨槸鍚﹀悓姝ワ紒锛�");
             }
+            assertWkOrderNoLinkedTask(wkOrder.getId());
             order.getOrderItems().forEach(orderItem -> {
                 WkOrderItem wkOrderItem = asnOrderItemService.getOne(new LambdaUpdateWrapper<WkOrderItem>()
                         .eq(WkOrderItem::getMatnrCode, orderItem.getMatnr())
@@ -1006,6 +1035,7 @@
                 throw new CoolException("鍗曟嵁涓嶅瓨鍦紝鏃犳硶鍙栨秷锛侊紒璇锋彁渚涘崟鎹唴鐮�(orderInternalCode)鎴栧崟鍙�(orderNo)銆�");
             }
             final WkOrder finalWkOrder = wkOrder;
+            assertWkOrderNoLinkedTask(finalWkOrder.getId());
             // 宸茬粍鎵樹笉鍙彇娑�
             long pakinCount = waitPakinItemService.count(new LambdaQueryWrapper<WaitPakinItem>()
                     .eq(WaitPakinItem::getAsnId, finalWkOrder.getId()));

--
Gitblit v1.9.1