From 687e4da4b6fb9147b12eb0cd5072e1dda02abc00 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期四, 19 六月 2025 16:11:44 +0800
Subject: [PATCH] no message

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaveItem.java              |   19 ++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WaveService.java          |   10 ++
 rsf-admin/src/page/orders/wave/WaveItemList.jsx                                           |   44 ++++++-----
 rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java         |    5 +
 rsf-admin/src/page/orders/wave/WaveList.jsx                                               |    8 -
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaveServiceImpl.java |   66 ++++++++++++---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/WaveItemExceStatus.java     |   28 +++++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WaveController.java    |   10 ++
 8 files changed, 149 insertions(+), 41 deletions(-)

diff --git a/rsf-admin/src/page/orders/wave/WaveItemList.jsx b/rsf-admin/src/page/orders/wave/WaveItemList.jsx
index 99ee024..ea1c70f 100644
--- a/rsf-admin/src/page/orders/wave/WaveItemList.jsx
+++ b/rsf-admin/src/page/orders/wave/WaveItemList.jsx
@@ -34,20 +34,16 @@
     useGetRecordId,
     Button,
 } from 'react-admin';
+import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
+import PauseCircleOutlineIcon from '@mui/icons-material/PauseCircleOutline';
+import PlayArrowOutlinedIcon from '@mui/icons-material/PlayArrowOutlined';
 import { Box, Typography, Card, Stack } from '@mui/material';
+import ContentCreate from '@mui/icons-material/Create';
+import PageDrawer from "../../components/PageDrawer";
 import { styled } from '@mui/material/styles';
 import WaveItemCreate from "./WaveItemCreate";
-import EmptyData from "../../components/EmptyData";
-import MyCreateButton from "../../components/MyCreateButton";
-import MyExportButton from '../../components/MyExportButton';
-import PageDrawer from "../../components/PageDrawer";
 import WaveItemEdit from "./WaveItemEdit";
-import MyField from "../../components/MyField";
-import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
-import * as Common from '@/utils/common';
-import ContentCreate from '@mui/icons-material/Create';
-import PlayArrowOutlinedIcon from '@mui/icons-material/PlayArrowOutlined';
-import PauseCircleOutlineIcon from '@mui/icons-material/PauseCircleOutline';
+
 const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
     '& .css-1vooibu-MuiSvgIcon-root': {
         height: '.9em'
@@ -58,7 +54,7 @@
     '& .column-name': {
     },
     '& .opt': {
-        width: 200
+        width: 140
     },
 }));
 
@@ -126,7 +122,6 @@
                     bulkActionButtons={
                         <>
                             <BulkStartButton />
-                            <BulkPauseButton />
                         </>
                     }
                     rowClick={(id, resource, record) => false}
@@ -153,6 +148,9 @@
                     <DateField source="createTime" label="common.field.createTime" showTime />
                     <BooleanField source="statusBool" label="common.field.status" sortable={false} />
                     <TextField source="memo" label="common.field.memo" sortable={false} />
+                    <WrapperField cellClassName="opt" label="common.field.opt">
+                        <BulkPauseButton />
+                    </WrapperField>
                 </StyledDatagrid>
             </List>
             <WaveItemEdit
@@ -185,28 +183,34 @@
     return (
         <Button label="ra.action.edit" onClick={editClick} startIcon={<ContentCreate />} />
     )
-
 }
 
 
 const BulkStartButton = () => {
     const { data, selectedIds, onUnselectItems } = useListContext();
-
-    const startClick = () => {
-        onUnselectItems()
+    const waveId = useGetRecordId();
+    const startClick = async () => {
+        onUnselectItems();
+        const { data: { code, data, msg } } = await request.post('/wave/selects/task', { wave: waveId, waveItem: selectedIds });
+        if (code === 200) {
+            notify(msg);
+            setAutoExce(false)
+        } else {
+            notify(msg);
+        }
     }
     return (
-        <Button label="toolbar.start" onClick={startClick} startIcon={<PlayArrowOutlinedIcon />} variant="outlined" />
+        <Button label="toolbar.publicWorking" onClick={startClick} startIcon={<PlayArrowOutlinedIcon />} variant="outlined" />
     )
 }
 
 const BulkPauseButton = () => {
     const { data, selectedIds, onUnselectItems } = useListContext();
-
+    const record = useRecordContext();
     const pauseClick = () => {
-        onUnselectItems()
+        onUnselectItems();
     }
     return (
-        <Button label="toolbar.pause" onClick={pauseClick} startIcon={<PauseCircleOutlineIcon />} variant="outlined" />
+        record?.exceStatus == 2 ? <Button label="toolbar.pause" onClick={pauseClick} startIcon={<PauseCircleOutlineIcon />} /> : <></>
     )
 }
\ No newline at end of file
diff --git a/rsf-admin/src/page/orders/wave/WaveList.jsx b/rsf-admin/src/page/orders/wave/WaveList.jsx
index 7630ae4..f8576d0 100644
--- a/rsf-admin/src/page/orders/wave/WaveList.jsx
+++ b/rsf-admin/src/page/orders/wave/WaveList.jsx
@@ -95,18 +95,14 @@
     const [drawerVal, setDrawerVal] = useState(false);
 
     useEffect(() => {
-        console.log('-------->');
         getConfig()
     }, [])
 
     const getConfig = async () => {
         const { data: { code, data, msg } } = await request.get('/config/flag/' + DEFAULT_WAVE_AUTO_EXCE);
         if (code === 200) {
-            setAutoExce(data?.flag)
-            notify(msg);
-        } else {
-            notify(msg);
-        }
+            setAutoExce(JSON.parse(data?.val))
+        } 
     }
 
     return (
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 7c95b75..14d46fe 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
@@ -130,6 +130,16 @@
         return waveService.publicTask(map, getLoginUserId());
     }
 
+    @PreAuthorize("hasAuthority('manager:wave:update')")
+    @ApiOperation("閫夋嫨鏄庣粏涓嬪彂浠诲姟")
+    @PostMapping("/wave/selects/task")
+    public R waveToTask(@RequestBody Map<String, Object> map) {
+        if (Cools.isEmpty(map) || Cools.isEmpty(map.get("wave"))) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        return waveService.waveToTask(map, getLoginUserId());
+    }
+
     @PreAuthorize("hasAuthority('manager:wave:list')")
     @ApiOperation("娉㈡鍑哄簱浠诲姟棰勮")
     @PostMapping("/wave/locs/preview/page")
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaveItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaveItem.java
index d0194e9..971ec72 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaveItem.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WaveItem.java
@@ -5,7 +5,11 @@
 import java.text.SimpleDateFormat;
 import java.util.Date;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.vincent.rsf.server.system.constant.DictTypeCode;
+import com.vincent.rsf.server.system.entity.DictData;
+import com.vincent.rsf.server.system.service.DictDataService;
 import lombok.experimental.Accessors;
 import org.springframework.format.annotation.DateTimeFormat;
 import java.text.SimpleDateFormat;
@@ -21,6 +25,7 @@
 import com.vincent.rsf.server.system.entity.User;
 import java.io.Serializable;
 import java.util.Date;
+import java.util.Objects;
 
 @Data
 @Accessors(chain = true)
@@ -259,6 +264,20 @@
 //            null    // 澶囨敞
 //    );
 
+    public String getExceStatus$(){
+        if (Cools.isEmpty(this.exceStatus)) {
+            return null;
+        }
+        DictDataService dictDataService = SpringUtils.getBean(DictDataService.class);
+        DictData dictDatas = dictDataService.getOne(new LambdaQueryWrapper<DictData>()
+                .eq(DictData::getDictTypeCode, DictTypeCode.SYS_WAVE_EXCE_STATUS)
+                .eq(DictData::getValue, this.exceStatus));
+        if (Objects.isNull(dictDatas) || Objects.isNull(dictDatas.getLabel())) {
+            return null;
+        }
+        return dictDatas.getValue() + "." + dictDatas.getLabel();
+    }
+
     public String getStatus$(){
         if (null == this.status){ return null; }
         switch (this.status){
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/WaveItemExceStatus.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/WaveItemExceStatus.java
new file mode 100644
index 0000000..eeff475
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/WaveItemExceStatus.java
@@ -0,0 +1,28 @@
+package com.vincent.rsf.server.manager.enums;
+
+
+/**
+* @author Ryan
+* @description 娉㈡鏄庣粏鎵ц鐘舵��
+* @param
+* @return
+* @time 2025/6/19 14:18
+*/
+public enum WaveItemExceStatus {
+
+    //娉㈡鎵ц鐘舵��
+    WAVE_ITEM_EXCE_STATUS_UN("0", "鏈墽琛�"),
+    WAVE_EXCE_STATUS_ING("1", "鎵ц涓�"),
+    WAVE_EXCE_STATUS_SEED("2", "宸蹭笅鍙�"),
+    WAVE_EXCE_STATUS_DONE("3", "瀹屾垚"),
+    ;
+
+    WaveExceStatus(String val, String desc) {
+        this.val = Short.parseShort(val);
+        this.desc = desc;
+    }
+
+    public Short val;
+
+    public String desc;
+}
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 55a559b..c6afb77 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
@@ -37,4 +37,14 @@
     * @time 2025/6/17 10:03
     */
     R cancelWave(List<Long> ids);
+
+    /**
+     * @param
+     * @param loginUserId
+     * @return
+     * @author Ryan
+     * @description 閫夋嫨鏄庣粏涓嬪彂浠诲姟
+     * @time 2025/4/25 16:24
+     */
+    R waveToTask(Map<String, Object> map, Long loginUserId);
 }
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 97f2276..dc7c842 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
@@ -1,5 +1,6 @@
 package com.vincent.rsf.server.manager.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -61,14 +62,58 @@
         if (Objects.isNull(itemParams) || itemParams.isEmpty()) {
             throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
-        List<WaveItem> items = JSONArray.parseArray(JSONArray.toJSONString(itemParams), WaveItem.class);
         String waveId = map.get("wave").toString();
         Wave waves = this.getById(Long.parseLong(waveId));
         if (Objects.isNull(waves)) {
             throw new CoolException("娉㈡鏁版嵁涓嶅瓨鍦紒锛�");
         }
-        List<WaveItem> waveItems = waveItemService.list(new LambdaQueryWrapper<WaveItem>().eq(WaveItem::getWaveId, waves.getId()));
+        List<WaveItem> waveItems = waveItemService.list(new LambdaQueryWrapper<WaveItem>()
+                .eq(WaveItem::getWaveId, waves.getId())
+                .apply("anfme > work_qty"));
         if (waveItems.isEmpty()) {
+            throw new CoolException("娉㈡鏄庣粏涓嶅瓨鍦紒锛�");
+        }
+        /**鐢熸垚鍑哄簱浠诲姟*/
+        try {
+            generateOutTask(waveItems, loginUserId, waves);
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            throw new CoolException("鍑哄簱浠诲姟鐢熸垚澶辫触锛侊紒锛�");
+        }
+        List<Long> orderIds = waveItems.stream().map(WaveItem::getOrderId).collect(Collectors.toList());
+        /**淇敼鍑哄簱鍗曠姸鎬�*/
+        if (!asnOrderService.update(new LambdaUpdateWrapper<AsnOrder>()
+                .set(AsnOrder::getExceStatus, AsnExceStatus.OUT_STOCK_STATUS_TASK_WORKING.val)
+                .in(AsnOrder::getId, orderIds))) {
+            throw new CoolException("鍑哄簱鍗曟嵁鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+        }
+        return R.ok();
+    }
+
+
+    /**
+     * 閫夋嫨娉㈡鏄庣粏涓嬪彂浠诲姟
+     * @param map
+     * @param loginUserId
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R waveToTask(Map<String, Object> map, Long loginUserId) {
+        if (Objects.isNull(map.get("waveItem"))) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        String waveId = map.get("wave").toString();
+        Wave waves = this.getById(Long.parseLong(waveId));
+        if (Objects.isNull(waves)) {
+            throw new CoolException("娉㈡鏁版嵁涓嶅瓨鍦紒锛�");
+        }
+        List<Long> waveItems = JSONArray.parseArray(JSON.toJSONString(map.get("waveItem")), Long.class);
+        if (waveItems.isEmpty()) {
+            throw new CoolException("娉㈡鏄庣粏涓嶈兘涓虹┖锛侊紒");
+        }
+        List<WaveItem> items = waveItemService.listByIds(waveItems);
+        if (items.isEmpty()) {
             throw new CoolException("娉㈡鏄庣粏涓嶅瓨鍦紒锛�");
         }
         /**鐢熸垚鍑哄簱浠诲姟*/
@@ -78,18 +123,7 @@
             log.error(e.getMessage());
             throw new CoolException("鍑哄簱浠诲姟鐢熸垚澶辫触锛侊紒锛�");
         }
-        //TODO 1. 鏍规嵁娉㈡鏄庣粏鐢熸垚鍑哄簱浠诲姟
-        // 2. 鏍规嵁鐗╂枡SKU瀵绘壘绗﹀悎鐗╂枡搴撲綅  {1. 鏍规嵁鐗╂枡缂栫爜锛屾壒娆★紝鍔ㄦ�佸瓧娈� 鏌ヨ绗﹀悎鐨勫簱浣嶏紝鍐嶆牴鎹簱浣嶄腑鐗╂枡鐨勬暟閲忛�夋嫨鏈�閫傚悎鐨勫簱浣� 2. 鍒ゆ柇褰撳墠璁㈠崟鏄叏鎷栧嚭搴撹繕鏄嫞鏂欏叆搴搣
-        // 3. 淇敼涓诲崟銆佹尝娆℃墽琛屾暟閲�
-        // 4. 鍒ゆ柇鍏ㄤ粨鍑哄簱鎴栨嫞鏂欏嚭搴�
-        List<Long> orderIds = waveItems.stream().map(WaveItem::getOrderId).collect(Collectors.toList());
-        /**淇敼鍑哄簱鍗曠姸鎬�*/
-        if (!asnOrderService.update(new LambdaUpdateWrapper<AsnOrder>()
-                .set(AsnOrder::getExceStatus, AsnExceStatus.OUT_STOCK_STATUS_TASK_WORKING.val)
-                .in(AsnOrder::getId, orderIds))) {
-            throw new CoolException("鍑哄簱鍗曟嵁鐘舵�佷慨鏀瑰け璐ワ紒锛�");
-        }
-        return R.ok();
+        return null;
     }
 
     /**
@@ -113,6 +147,7 @@
             }
             List<Long> list = locItems.stream().map(LocItem::getLocId).collect(Collectors.toList());
             /**鏍规嵁渚涘簲鍟嗘壒娆★紝鐗╂枡鐮侊紝 鍔ㄦ�佸瓧娈垫煡璇㈡寚瀹氱殑鐗╂枡搴撳瓨淇℃伅*/
+            //TODO 杩欓噷闇�瑕佽鏍规嵁娉㈡瑙勫垯鏌ユ壘搴撳瓨淇℃伅
             List<LocItem> items = locItemService.list(new LambdaQueryWrapper<LocItem>()
                     .eq(LocItem::getSplrBatch, param.getSplrBatch())
                     .in(LocItem::getLocId, list)
@@ -141,7 +176,7 @@
             List<LocItem> locItems = listMap.get(key);
             LocItem item1 = locItems.stream().findFirst().get();
             WaveItem waveItem = waveItemService.getById(item1.getSource());
-            if (null == waveItem || Objects.isNull(waveItem)) {
+            if (Objects.isNull(waveItem)) {
                 throw new CoolException("鏁版嵁閿欒锛氭尝娆℃槑缁嗕笉瀛樺湪锛侊紒");
             }
             //TODO 褰撳墠浠诲姟瀹屾垚鍚庯紝閫氳繃瀹氭椂浜嬩欢鍒ゆ柇鏄叏鐩樺嚭搴擄紝杩樻槸鎷f枡鍐嶅叆搴�
@@ -194,6 +229,7 @@
             taskItems.forEach(item -> {
                 boolean update = waveItemService.update(new LambdaUpdateWrapper<WaveItem>()
                         .eq(WaveItem::getId, item.getSource())
+                                .set(WaveItem::getExceStatus, AsnExceStatus)
                         .set(WaveItem::getWorkQty, item.getAnfme()));
                 if (!update) {
                     throw new CoolException("娉㈡鎵ц鏁伴噺淇敼澶辫触锛侊紒");
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java
index 3fd143e..135674c 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/DictTypeCode.java
@@ -70,4 +70,9 @@
      */
     public final static String SYS_WAVE_RULE_CODE =  "sys_wave_rule_code";
 
+    /**
+     * 娉㈡涓嬪彂鎵ц鐘舵��
+     */
+    public final static String SYS_WAVE_EXCE_STATUS =  "sys_wave_exce_status";
+
 }

--
Gitblit v1.9.1