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/WaveService.java          |    7 +++
 rsf-admin/src/page/orders/wave/WaveList.jsx                                               |    7 +--
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaveServiceImpl.java |   50 +++++++++++++++++++++++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaveController.java    |   20 ++--------
 4 files changed, 64 insertions(+), 20 deletions(-)

diff --git a/rsf-admin/src/page/orders/wave/WaveList.jsx b/rsf-admin/src/page/orders/wave/WaveList.jsx
index 3b9de8c..7066c06 100644
--- a/rsf-admin/src/page/orders/wave/WaveList.jsx
+++ b/rsf-admin/src/page/orders/wave/WaveList.jsx
@@ -227,9 +227,8 @@
     const refresh = useRefresh()
     const notify = useNotify()
 
-    const stopClick = async (event) => {
-        event.stopPropagation()
-        const { data: { code, data, msg } } = await request.post('', { val: true, flag: 'WaveAutoExce' });
+    const stopClick = async () => {
+        const { data: { code, data, msg } } = await request.post('/wave/stop/pub/' + record?.id);
         if (code === 200) {
             notify(msg);
         } else {
@@ -238,7 +237,7 @@
     }
 
     return (
-        <ConfirmButton label={"toolbar.stopPub"} startIcon={<StopOutlinedIcon />} onConfirm={stopClick} size='small' />
+        record?.exceStatus != 3 ? <ConfirmButton label={"toolbar.stopPub"} startIcon={<StopOutlinedIcon />} onConfirm={stopClick} size='small' /> : <></>
     )
 }
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaveController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaveController.java
index 77fd2ea..154b9bd 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaveController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaveController.java
@@ -24,6 +24,7 @@
 import com.vincent.rsf.server.manager.service.TaskItemService;
 import com.vincent.rsf.server.manager.service.WaveService;
 import com.vincent.rsf.server.manager.service.impl.TaskItemLogServiceImpl;
+import com.vincent.rsf.server.manager.service.impl.WaveItemServiceImpl;
 import com.vincent.rsf.server.system.controller.BaseController;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
@@ -45,6 +46,8 @@
     private OutStockService outStockService;
     @Autowired
     private TaskItemLogService taskItemLogService;
+    @Autowired
+    private WaveItemServiceImpl waveItemService;
 
     @PreAuthorize("hasAuthority('manager:wave:list')")
     @PostMapping("/wave/page")
@@ -193,22 +196,7 @@
         if (Objects.isNull(id)) {
             return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
-        Wave wave = waveService.getById(id);
-        if (Objects.isNull(wave)) {
-            throw new CoolException("娉㈡鍗曚笉瀛樺湪锛侊紒");
-        }
-        List<TaskItemLog> taskItems = taskItemLogService.list(new LambdaQueryWrapper<TaskItemLog>().eq(TaskItemLog::getSourceId, wave.getId()));
-        if (taskItems.isEmpty()) {
-            
-
-        } else {
-            
-        }
-
-        waveService.update(new LambdaUpdateWrapper<Wave>()
-                .eq(Wave::getId, id)
-                .set(Wave::getExceStatus, WaveExceStatus.WAVE_EXCE_STATUS_TASK.val));
-        return R.ok();
+        return waveService.stopPubTask(id);
     }
 
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaveService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaveService.java
index c6afb77..211bbe7 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaveService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaveService.java
@@ -47,4 +47,11 @@
      * @time 2025/4/25 16:24
      */
     R waveToTask(Map<String, Object> map, Long loginUserId);
+
+    /**
+     * 缁堟涓嬪彂
+     * @param id
+     * @return
+     */
+    R stopPubTask(Long id);
 }
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