From 5bced9128f41b7615040074ddbe04b608f0632e7 Mon Sep 17 00:00:00 2001
From: skyouc <creaycat@gmail.com>
Date: 星期四, 25 十二月 2025 16:11:48 +0800
Subject: [PATCH] 出库添加一键完结功能

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java |   21 +++++++++++++++++++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/OutStockService.java          |    2 ++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/OutStockController.java    |   11 +++++++++++
 rsf-admin/src/page/orders/outStock/OutOrderList.jsx                                           |   25 +++++++++++++++++++++++++
 4 files changed, 59 insertions(+), 0 deletions(-)

diff --git a/rsf-admin/src/page/orders/outStock/OutOrderList.jsx b/rsf-admin/src/page/orders/outStock/OutOrderList.jsx
index ef38068..814e17b 100644
--- a/rsf-admin/src/page/orders/outStock/OutOrderList.jsx
+++ b/rsf-admin/src/page/orders/outStock/OutOrderList.jsx
@@ -55,6 +55,7 @@
 import PublicIcon from '@mui/icons-material/Public';
 import SelectMatnrModal from "./SelectMatnrModal";
 import EditIcon from '@mui/icons-material/Edit';
+import TaskIcon from '@mui/icons-material/Task';
 import OutOrderPreview from "./OutOrderPreview";
 import AddIcon from '@mui/icons-material/Add';
 import OutStockPublic from "./OutStockPublic";
@@ -203,6 +204,7 @@
             <MyButton setCreateDialog={setManualDialog} setmodalType={setmodalType} />
             <EditButton label="toolbar.detail" icon={(<DetailsIcon />)}></EditButton>
             <CancelButton />
+            <CompleteButton />
             <PublicButton setDrawerVal={setDrawerVal} drawerVal={drawerVal} setSelect={setSelect} />
           </WrapperField>
         </StyledDatagrid>
@@ -259,6 +261,29 @@
   );
 }
 
+//瀹屾垚鍗曟嵁
+const CompleteButton = () => {
+  const record = useRecordContext();
+  const notify = useNotify();
+  const refresh = useRefresh();
+  const requestComplete = async () => {
+    const { data: { code, data, msg } } = await request.get(`/outStock/complete/${record.id}`);
+    if (code === 200) {
+      notify(msg);
+      refresh()
+    } else {
+      notify(msg);
+    }
+  }
+
+  return (
+    // record.exceStatus === 1 && (record.anfme === record.qty ? <Button onClick={requestComplete} label={"toolbar.complete"} color="secondary">
+    //   <TaskIcon />
+    // </Button> : )
+    record.exceStatus != 15 ? <ConfirmButton label={"toolbar.complete"} color="secondary" startIcon={<TaskIcon />} onConfirm={requestComplete} /> : <></>
+  )
+}
+
 const MyButton = ({ setCreateDialog, setmodalType }) => {
   const record = useRecordContext();
   const handleEditClick = (btn) => {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/OutStockController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/OutStockController.java
index aa78e0c..9d4c3a2 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/OutStockController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/OutStockController.java
@@ -256,6 +256,17 @@
         return outStockService.saveOutStock(params, getLoginUserId());
     }
 
+    @GetMapping("/outStock/complete/{id}")
+    @ApiOperation("瀹屾垚鍑哄簱鍗�")
+    @PreAuthorize("hasAuthority('manager:outStock:update')")
+    public R complete(@PathVariable Long id) {
+        if (Objects.isNull(id)) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        return outStockService.completeOutOrderById(id);
+    }
+
+
     @ApiOperation("鍗曟嵁淇℃伅淇敼")
     @PostMapping("/outStock/items/update")
     @PreAuthorize("hasAuthority('manager:outStock:update')")
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/OutStockService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/OutStockService.java
index c482666..13e0d9a 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/OutStockService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/OutStockService.java
@@ -32,4 +32,6 @@
 
     R cancelOutOrderByItems(List<WkOrderItem> orderItems);
 
+    R completeOutOrderById(Long id);
+
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
index 8481e7a..2539e2e 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
@@ -728,4 +728,25 @@
 
         return waveItems;
     }
+
+
+    /**
+     * @param id
+     * @return
+     * @author Ryan
+     * @description 瀹屾垚鍑哄簱鍗�
+     * @time 2025/4/25 10:07
+     */
+    @Override
+    public R completeOutOrderById(Long id) {
+        WkOrder order = this.getById(id);
+        if (Objects.isNull(order)) {
+            return R.error("鍑哄簱鍗曚笉瀛樺湪锛侊紒");
+        }
+        order.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_DONE.val);
+        if (!this.updateById(order)) {
+            throw new CoolException("瀹屾垚鍑哄簱鍗曞け璐ワ紒锛�");
+        }
+         return R.ok("瀹屾垚鍑哄簱鍗曟垚鍔燂紒锛�");
+    }
 }

--
Gitblit v1.9.1