From a6f41778b7770deee34870d53c889d4d06821d7b Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期三, 02 七月 2025 14:00:37 +0800
Subject: [PATCH] 终止波次功能优化

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaveServiceImpl.java |   50 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 50 insertions(+), 0 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaveServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaveServiceImpl.java
index 86e2788..37146fe 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaveServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaveServiceImpl.java
@@ -56,6 +56,8 @@
     private WaveService waveService;
     @Autowired
     private WaveRuleServiceImpl waveRuleService;
+    @Autowired
+    private WaveOrderRelaServiceImpl waveOrderRelaService;
 
     /**
      * @param
@@ -213,6 +215,54 @@
     }
 
     /**
+     * 缁堟娉㈡涓嬪彂浠诲姟
+     *
+     * @param id
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R stopPubTask(Long id) {
+        Wave wave = this.getById(id);
+        if (Objects.isNull(wave)) {
+            throw new CoolException("娉㈡鍗曚笉瀛樺湪锛侊紒");
+        }
+        List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>()
+                .eq(TaskItem::getSourceId, wave.getId()));
+        if (!taskItems.isEmpty()) {
+            throw new CoolException("宸茬敓鎴愪换鍔′笉鍙粓姝㈠綋鍓嶆尝娆★紒锛�");
+        }
+
+        List<WaveOrderRela> orderRelas = waveOrderRelaService.list(new LambdaQueryWrapper<WaveOrderRela>().eq(WaveOrderRela::getWaveId, id));
+        if (orderRelas.isEmpty()) {
+            throw new CoolException("鏃犲叧鑱旀槑缁�!!");
+        }
+
+        List<Long> orderIds = orderRelas.stream().map(WaveOrderRela::getOrderItemId).collect(Collectors.toList());
+        List<AsnOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().in(AsnOrderItem::getId, orderIds));
+        orderItems.forEach(asnOrderItem -> {
+            asnOrderItem.setWorkQty(0.0);
+            if (!asnOrderItemService.updateById(asnOrderItem)) {
+                throw new CoolException("鍗曟嵁鏄庣粏鏇存柊澶辫触锛�!");
+            }
+        });
+
+        List<Long> orders = orderRelas.stream().map(WaveOrderRela::getOrderId).collect(Collectors.toList());
+        if (!asnOrderService.update(new LambdaUpdateWrapper<AsnOrder>()
+                .set(AsnOrder::getWorkQty, 0.0)
+                .set(AsnOrder::getExceStatus, AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val)
+                .in(AsnOrder::getId, orders))) {
+            throw new CoolException("鍗曟嵁鏇存柊澶辫触锛�!");
+        }
+
+        this.update(new LambdaUpdateWrapper<Wave>()
+                .eq(Wave::getId, id)
+                .set(Wave::getExceStatus, WaveExceStatus.WAVE_EXCE_STATUS_TASK.val));
+
+        return R.ok();
+    }
+
+    /**
      * @param
      * @param loginUserId
      * @param wave

--
Gitblit v1.9.1