From 8f7e1bf264a5beaca1cf563452bc9ef72dea848f Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期三, 21 五月 2025 08:16:22 +0800
Subject: [PATCH] 修复取消组托,收货数量修改错误问题

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java      |   64 ++++++++++++++++
 rsf-admin/src/page/orders/purchase/PurchaseList.jsx                                            |    4 
 rsf-admin/src/page/task/TaskList.jsx                                                           |    4 
 rsf-admin/src/page/waitPakin/WaitPakinList.jsx                                                 |    8 +-
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java |    3 
 rsf-admin/src/i18n/zh.js                                                                       |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java               |    1 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java         |   99 +++---------------------
 8 files changed, 90 insertions(+), 95 deletions(-)

diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js
index e71dd67..9b0169f 100644
--- a/rsf-admin/src/i18n/zh.js
+++ b/rsf-admin/src/i18n/zh.js
@@ -187,7 +187,7 @@
         taskItem: '浠诲姟妗f槑缁�',
         taskLog: '浠诲姟鍘嗗彶妗�',
         taskItemLog: '浠诲姟鏄庣粏鍘嗗彶妗�',
-        stock: '鍏ュ嚭搴撳瓨淇℃伅',
+        stock: '鍏ュ嚭搴撳巻鍙�',
         stockItem: '鍗曟嵁鏄庣粏',
         locItem: '搴撲綅鏄庣粏',
         histories: '鍘嗗彶妗�',
diff --git a/rsf-admin/src/page/orders/purchase/PurchaseList.jsx b/rsf-admin/src/page/orders/purchase/PurchaseList.jsx
index 254601e..bc2d2c4 100644
--- a/rsf-admin/src/page/orders/purchase/PurchaseList.jsx
+++ b/rsf-admin/src/page/orders/purchase/PurchaseList.jsx
@@ -124,7 +124,7 @@
         <StyledDatagrid
           preferenceKey='purchase'
           bulkActionButtons={() => <BulkDeleteButton mutationMode="pessimistic"/>}
-          rowClick={'edit'}
+          rowClick={false}
           expand={false}
           expandSingle={true}
           omit={['id', 'createTime', 'createBy','channel', 'platCode', 'memo', 'channel','startTime','workQty', 'endTime']}
@@ -151,7 +151,7 @@
           {/* <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">
-            <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
+            <EditButton label="toolbar.detail" sx={{ padding: '1px', fontSize: '.75rem' }} />
             <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode="pessimistic"/>
           </WrapperField>
         </StyledDatagrid>
diff --git a/rsf-admin/src/page/task/TaskList.jsx b/rsf-admin/src/page/task/TaskList.jsx
index 463508a..068a809 100644
--- a/rsf-admin/src/page/task/TaskList.jsx
+++ b/rsf-admin/src/page/task/TaskList.jsx
@@ -25,6 +25,7 @@
     SelectInput,
     NumberInput,
     Button,
+    EditButton,
 } from 'react-admin';
 import { Box, Typography, Card, Stack, Drawer } from '@mui/material';
 import { styled } from '@mui/material/styles';
@@ -129,7 +130,7 @@
                             <BulkDeleteButton mutationMode={OPERATE_MODE} />
                         </>
                     }
-                    rowClick={'edit'}
+                    rowClick={false}
                     expand={false}
                     expandSingle={true}
                     omit={['id', 'createTime', 'createBy', 'memo', 'robotCode', 'exceStatus', 'expDesc', 'expCode', 'status', 'sort']}
@@ -156,6 +157,7 @@
                     {/* <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" onClick={(e) => e.stopPropagation()} >
+                        <EditButton  label="toolbar.detail"/>
                         <DoneButton sx={{ padding: '1px', fontSize: '.75rem' }} ></DoneButton>
                         <CancelButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
                         <SetTopButton sx={{ padding: '1px', fontSize: '.75rem' }} ></SetTopButton>
diff --git a/rsf-admin/src/page/waitPakin/WaitPakinList.jsx b/rsf-admin/src/page/waitPakin/WaitPakinList.jsx
index 82dfe95..f8213de 100644
--- a/rsf-admin/src/page/waitPakin/WaitPakinList.jsx
+++ b/rsf-admin/src/page/waitPakin/WaitPakinList.jsx
@@ -93,7 +93,7 @@
     const [drawerVal, setDrawerVal] = useState(false);
 
     const CreateTaskButton = () => {
-        const record = useRecordContext();        
+        const record = useRecordContext();
         const notify = useNotify();
         const refresh = useRefresh();
         const { selectedIds, onUnselectItems, data } = useListContext();
@@ -115,7 +115,7 @@
     }
 
     const CreateTaskRowButton = () => {
-        const record = useRecordContext();        
+        const record = useRecordContext();
         const refresh = useRefresh();
 
         const createTask = (event) => {
@@ -124,7 +124,7 @@
             setSource([record])
             refresh()
         }
-    
+
         return (
             <>
                 <Button onClick={(event) => createTask(event)} label={"toolbar.createTask"}>
@@ -166,7 +166,7 @@
                             <CreateTaskButton />
                             {/* <BulkDeleteButton mutationMode={OPERATE_MODE} /> */}
                         </>}
-                    rowClick='edit'
+                    rowClick={false}
                     omit={['id', 'createTime', 'createBy', 'memo']}
                 >
                     <NumberField source="id" />
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java
index 114e815..1456ea1 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java
@@ -31,17 +31,13 @@
 
     @Autowired
     private TaskService taskService;
-
     @Autowired
     private TaskItemService taskItemService;
-
     @Autowired
     private WaitPakinService waitPakinService;
-
     @Autowired
     private LocService locService;
-    @Autowired
-    private BasStationService basStationService;
+
 
     @PreAuthorize("hasAuthority('manager:task:list')")
     @PostMapping("/task/page")
@@ -103,75 +99,8 @@
         if (Objects.isNull(ids) || ids.length < 1) {
             return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
-        List<Short> longs = Arrays.asList(TaskStsType.GENERATE_IN.id, TaskStsType.GENERATE_OUT.id);
-        List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().in(Task::getId, ids).in(Task::getTaskStatus, longs));
-        if (tasks.isEmpty()) {
-            throw new CoolException("浠诲姟宸插鎵ц鐘舵�佷笉鍙彇娑堬紒锛�");
-        }
-        for (Task task : tasks) {
-            //鎭㈠缁勬墭鐘舵��
-            WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>()
-                    .eq(WaitPakin::getBarcode, task.getBarcode())
-            );
-            if (null != waitPakin) {
-                waitPakin.setIoStatus(Short.valueOf(PakinIOStatus.PAKIN_IO_STATUS_DONE.val));
-                if (!waitPakinService.updateById(waitPakin)) {
-                    throw new CoolException("鏇存柊缁勬墭鐘舵�佸け璐ワ紒锛�");
-
-                }
-            }
-            Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>()
-                    .eq(Loc::getCode, task.getTaskType() < 100 ? task.getTargLoc() : task.getOrgLoc())
-            );
-            if (null != loc
-                    && (loc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_S.type)
-                    || loc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_R.type))) {
-
-                loc.setUseStatus(LocStsType.LOC_STS_TYPE_O.type);
-                if (!locService.updateById(loc)) {
-                    throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐ワ紒锛�");
-                }
-            }
-            if (task.getWarehType().equals(WarehType.WAREHOUSE_TYPE_AGV.id)){
-                BasStation basStation = null;
-                if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type)
-                        || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_IN.type)
-                ){
-                    basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
-                            .eq(BasStation::getStationName, task.getOrgSite())
-                            .eq(BasStation::getUseStatus, StaUseStatusType.TYPE_R.type)
-                    );
-
-
-                } else if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type)
-                        || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_IN.type)
-                        || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_OUT.type)
-                        || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type)
-                        || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_OUT.type)
-                ) {
-                    basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
-                            .eq(BasStation::getStationName, task.getTargLoc())
-                            .eq(BasStation::getUseStatus, StaUseStatusType.TYPE_R.type)
-                    );
-                }
-                if (null == basStation) {
-                    throw new CoolException("绔欑偣鐘舵�侀敊璇紒锛�");
-                }
-                basStation.setUseStatus(StaUseStatusType.TYPE_F.type);
-                if (!basStationService.updateById(basStation)){
-                    throw new CoolException("鏇存柊绔欑偣鐘舵�佸け璐ワ紒锛�");
-                }
-            }
-
-
-        }
-        if (!taskService.removeByIds(Arrays.asList(ids))) {
-            return R.error("Delete Fail");
-        }
-        if (!taskItemService.remove(new LambdaQueryWrapper<TaskItem>().in(TaskItem::getTaskId, ids))) {
-            return R.error("Details delete Failed");
-        }
-        return R.ok("Delete Success").add(ids);
+       return taskService.removeTask(ids);
+//        return R.ok("Delete Success").add(ids);
     }
 
     @PreAuthorize("hasAuthority('manager:task:list')")
@@ -208,24 +137,24 @@
 //        }
 //        taskService.completeTask(tasks);
         for (Task task : tasks) {
-            task.setTaskStatus(task.getTaskType() < (short)100 ? TaskStsType.COMPLETE_IN.id : TaskStsType.COMPLETE_OUT.id);
+            task.setTaskStatus(task.getTaskType() < (short) 100 ? TaskStsType.COMPLETE_IN.id : TaskStsType.COMPLETE_OUT.id);
         }
-        if (!taskService.updateBatchById(tasks)){
+        if (!taskService.updateBatchById(tasks)) {
             return R.error("瀹屾垚浠诲姟澶辫触");
         }
 
         return R.ok("瀹屾垚浠诲姟鎴愬姛");
     }
 
-    @PreAuthorize("hasAuthority('manager:task:update')")
-    @ApiOperation("鍙栨秷浠诲姟")
-    @PostMapping("/task/cancel/{id}")
-    public R cancelTask(@PathVariable String id) {
-        if (Objects.isNull(id)) {
-            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
-        }
-        return R.ok();
-    }
+//    @PreAuthorize("hasAuthority('manager:task:update')")
+//    @ApiOperation("鍙栨秷浠诲姟")
+//    @PostMapping("/task/cancel/{id}")
+//    public R cancelTask(@PathVariable String id) {
+//        if (Objects.isNull(id)) {
+//            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+//        }
+//        return R.ok();
+//    }
 
     @PreAuthorize("hasAuthority('manager:task:update')")
     @ApiOperation("浠诲姟鍑哄簱缃《")
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java
index 7978c57..0d8adf9 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java
@@ -19,4 +19,5 @@
 //    R completeTask(String id);
      void completeTask(List<Task> task) throws Exception;
 
+    R removeTask(Long[] ids);
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
index a943509..0863d97 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
@@ -60,6 +60,8 @@
     private WaveItemService waveItemService;
     @Autowired
     private WaveService waveService;
+    @Autowired
+    private BasStationService basStationService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -383,6 +385,68 @@
         }
     }
 
+    @Override
+    public R removeTask(Long[] ids) {
+        List<Short> longs = Arrays.asList(TaskStsType.GENERATE_IN.id, TaskStsType.GENERATE_OUT.id);
+        List<Task> tasks = this.list(new LambdaQueryWrapper<Task>().in(Task::getId, ids).in(Task::getTaskStatus, longs));
+        if (tasks.isEmpty()) {
+            throw new CoolException("浠诲姟宸插鎵ц鐘舵�佷笉鍙彇娑堬紒锛�");
+        }
+        for (Task task : tasks) {
+            //鎭㈠缁勬墭鐘舵��
+            WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>()
+                    .eq(WaitPakin::getBarcode, task.getBarcode())
+            );
+            if (null != waitPakin) {
+                waitPakin.setIoStatus(Short.valueOf(PakinIOStatus.PAKIN_IO_STATUS_DONE.val));
+                if (!waitPakinService.updateById(waitPakin)) {
+                    throw new CoolException("鏇存柊缁勬墭鐘舵�佸け璐ワ紒锛�");
+                }
+            }
+            Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, task.getTaskType() < TaskStsType.UPDATED_IN.id ? task.getTargLoc() : task.getOrgLoc()));
+            if (null != loc
+                    && (loc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_S.type)
+                    || loc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_R.type))) {
+
+                loc.setUseStatus(LocStsType.LOC_STS_TYPE_O.type);
+                if (!locService.updateById(loc)) {
+                    throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐ワ紒锛�");
+                }
+            }
+            if (!Objects.isNull(task.getWarehType()) && task.getWarehType().equals(WarehType.WAREHOUSE_TYPE_AGV.id)) {
+                BasStation basStation = null;
+                if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type) || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_IN.type) ) {
+                    basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
+                            .eq(BasStation::getStationName, task.getOrgSite())
+                            .eq(BasStation::getUseStatus, StaUseStatusType.TYPE_R.type)
+                    );
+                } else if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type)
+                        || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_IN.type)
+                        || task.getTaskType().equals(TaskType.TASK_TYPE_MERGE_OUT.type)
+                        || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type)
+                        || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_OUT.type)
+                ) {
+                    basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
+                            .eq(BasStation::getStationName, task.getTargLoc())
+                            .eq(BasStation::getUseStatus, StaUseStatusType.TYPE_R.type)
+                    );
+                }
+                if (null == basStation) {
+                    throw new CoolException("绔欑偣鐘舵�侀敊璇紒锛�");
+                }
+                basStation.setUseStatus(StaUseStatusType.TYPE_F.type);
+                if (!basStationService.updateById(basStation)) {
+                    throw new CoolException("鏇存柊绔欑偣鐘舵�佸け璐ワ紒锛�");
+                }
+            }
+        }
+        if (!this.removeByIds(Arrays.asList(ids))) {
+            throw new CoolException("Delete Fail");
+        }
+
+        return R.ok("鎿嶄綔鎴愬姛");
+    }
+
     /**
      * @author Ryan
      * @date 2025/5/20
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
index e035315..1d8d4f1 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
@@ -298,8 +298,7 @@
                     continue;
                 }
                 double sum = pakin.stream().mapToDouble(WaitPakinItem::getAnfme).sum();
-                item.setWorkQty(item.getWorkQty() - sum)
-                        .setAnfme(item.getAnfme() + sum);
+                item.setWorkQty(item.getWorkQty() - sum);
                 if (!warehouseAreasItemService.updateById(item)) {
                     throw new CoolException("鏀惰揣鍖烘暟鎹洖婊氬け璐ワ紒锛�");
                 }

--
Gitblit v1.9.1