From e67ab87058ea64c3a9d24df70f1b9a18a9f14a0e Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期四, 31 七月 2025 16:40:16 +0800
Subject: [PATCH] 调拔单功能优化

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java     |   72 ++++++------
 rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/AsnExceStatus.java              |    7 
 rsf-admin/src/page/orders/transfer/ManualCreate.jsx                                           |   45 +++---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java    |  143 ++++++++++++++---------
 rsf-admin/src/page/components/WarehouseSelect.jsx                                             |    4 
 rsf-admin/src/page/orders/transfer/CreateBySelectMats.jsx                                     |    8 +
 rsf-admin/src/page/orders/outStock/MatnrInfoModal.jsx                                         |   32 ++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java              |    1 
 9 files changed, 188 insertions(+), 128 deletions(-)

diff --git a/rsf-admin/src/page/components/WarehouseSelect.jsx b/rsf-admin/src/page/components/WarehouseSelect.jsx
index 33ead33..74f4653 100644
--- a/rsf-admin/src/page/components/WarehouseSelect.jsx
+++ b/rsf-admin/src/page/components/WarehouseSelect.jsx
@@ -16,7 +16,7 @@
     }, [dictTypeCode]);
 
     const http = async () => {
-        const res = await request.post('/warehouseAreas/page', {current: 1, pageSize: 100});
+        const res = await request.post('/warehouseAreas/page', { current: 1, pageSize: 100 });
         if (res?.data?.code === 200) {
             setList(res.data.data.records.map((item) => {
                 return {
@@ -40,7 +40,7 @@
     const validValue = list.some(item => item.id === value) ? value : '';
 
     return (
-        <FormControl fullWidth>
+        <FormControl required fullWidth>
             <InputLabel id="demo-select-small-label">{label}</InputLabel>
             <Select
                 labelId="demo-select-small-label"
diff --git a/rsf-admin/src/page/orders/outStock/MatnrInfoModal.jsx b/rsf-admin/src/page/orders/outStock/MatnrInfoModal.jsx
index 37a571f..169718f 100644
--- a/rsf-admin/src/page/orders/outStock/MatnrInfoModal.jsx
+++ b/rsf-admin/src/page/orders/outStock/MatnrInfoModal.jsx
@@ -13,6 +13,7 @@
     styled
 } from '@mui/material';
 import DialogCloseButton from "../../components/DialogCloseButton";
+import { EDIT_MODE, DEFAULT_START_PAGE, DEFAULT_PAGE_SIZE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting';
 import { useTranslate, useNotify, useRefresh } from 'react-admin';
 import request from '@/utils/request';
 import { DataGrid } from '@mui/x-data-grid';
@@ -35,7 +36,9 @@
     const [tableData, setTableData] = useState([]);
     const [dyFields, setDyFields] = useState([]);
     const [selectedRows, setSelectedRows] = useState([]);
-
+    const [page, setPage] = useState({ page: DEFAULT_START_PAGE, pageSize: DEFAULT_PAGE_SIZE });
+    const [rowCount, setRowCount] = useState(0);
+    const [isLoading, setIsLoading] = useState(false);
     const handleChange = (e) => {
         const { name, value } = e.target;
         setFormData(() => ({
@@ -74,22 +77,27 @@
     };
 
     const getData = async () => {
+        setIsLoading(true)
         const res = await request.post(`/matnr/page`, {
             ...formData,
-            current: 1,
-            pageSize: 100,
+            current: page?.page,
+            pageSize: page?.pageSize,
             orderBy: "create_time desc"
         });
         if (res?.data?.code === 200) {
             setTableData(res.data.data.records);
+            setRowCount(res.data?.data?.total);
+
         } else {
             notify(res.data.msg);
         }
+        setIsLoading(false)
+
     };
 
     useEffect(() => {
         getData();
-    }, [open]);
+    }, [open, page]);
 
     const handleSearch = () => {
         getData()
@@ -158,6 +166,9 @@
                         tableData={tableData}
                         setTableData={setTableData}
                         dyFields={dyFields}
+                        page={page}
+                        rowCount={rowCount}
+                        setPage={setPage}
                         setDyFields={setDyFields}
                         selectedRows={selectedRows}
                         setSelectedRows={setSelectedRows}
@@ -177,7 +188,7 @@
 
 export default MatnrInfoModal;
 
-const AsnWareModalTable = ({ tableData, setTableData, selectedRows, setSelectedRows, dyFields, setDyFields }) => {
+const AsnWareModalTable = ({ tableData, setTableData, page, isLoading, pageSize, setPage, rowCount, selectedRows, setSelectedRows, dyFields, setDyFields }) => {
     const translate = useTranslate();
     const notify = useNotify();
 
@@ -241,6 +252,17 @@
                 disableColumnMenu={true}
                 disableColumnSorting
                 disableMultipleColumnsSorting
+                rowCount={rowCount}
+                paginationMode="server"
+                paginationModel={page}
+                onPaginationModelChange={setPage}
+                loading={isLoading}
+                slotProps={{
+                    loadingOverlay: {
+                        variant: 'linear-progress',
+                        noRowsVariant: 'linear-progress',
+                    },
+                }}
             />
         </div>
     );
diff --git a/rsf-admin/src/page/orders/transfer/CreateBySelectMats.jsx b/rsf-admin/src/page/orders/transfer/CreateBySelectMats.jsx
index c00ad64..b3efed9 100644
--- a/rsf-admin/src/page/orders/transfer/CreateBySelectMats.jsx
+++ b/rsf-admin/src/page/orders/transfer/CreateBySelectMats.jsx
@@ -79,6 +79,7 @@
                 return acc;
             }, {});
             return {
+                id: el.id,
                 matnrId: el.matnrId,
                 maktx: el.maktx,
                 matnrCode: el.matnrCode,
@@ -272,14 +273,19 @@
 
     return (
         <div style={{ height: 400, width: '100%' }}>
-
             <DataGrid
                 rows={tableData}
                 rowCount={rowCount}
                 columns={columns}
                 paginationMode="server"
                 paginationModel={page}
+                checkboxSelection
                 onPaginationModelChange={setPage}
+                onRowSelectionModelChange={handleSelectionChange}
+                selectionModel={selectedRows}
+                disableColumnMenu={true}
+                disableColumnSorting
+                disableMultipleColumnsSorting
                 loading={isLoading}
                 slotProps={{
                     loadingOverlay: {
diff --git a/rsf-admin/src/page/orders/transfer/ManualCreate.jsx b/rsf-admin/src/page/orders/transfer/ManualCreate.jsx
index b30ef5b..3704528 100644
--- a/rsf-admin/src/page/orders/transfer/ManualCreate.jsx
+++ b/rsf-admin/src/page/orders/transfer/ManualCreate.jsx
@@ -59,7 +59,7 @@
     const [disabled, setDisabled] = useState(false);
     const [selectedRows, setSelectedRows] = useState([]);
     const [createDialog, setCreateDialog] = useState(false);
-    const [formData, setFormData] = useState({});
+    const [formData, setFormData] = useState({ type: '1', orgAreaId: null, tarAreaId: null });
     const [list, setList] = useState([]);
 
     const handleClose = (event, reason) => {
@@ -139,6 +139,18 @@
         }
     }
 
+    const newAddClick = () => {
+        if (formData.orgAreaId == null || formData.orgAreaId == undefined) {
+            notify("鍘熷簱鍖轰笉鑳戒负绌猴紒锛�", { type: 'error' })
+            return
+        }
+        if (formData.tarAreaId == null || formData.tarAreaId == undefined) {
+            notify("鐩爣搴撳尯涓嶈兘涓虹┖锛侊紒", { type: 'error' })
+            return
+        }
+        setCreateDialog(true)
+    }
+
 
     const handleChange = (value, name) => {
         setFormData((prevData) => ({
@@ -159,7 +171,6 @@
                                 variant="filled"
                                 onChange={(e) => handleChange(e.target.value, 'type')}
                                 dictTypeCode="sys_transfer_type"
-                                required
                             />
                         </Grid>
                         <Grid item md={2}>
@@ -167,7 +178,6 @@
                                 value={formData.orgAreaId}
                                 variant="filled"
                                 dictTypeCode="warehouse"
-                                required
                                 onChange={(e) => handleChange(e.target.value, 'orgAreaId')}
                                 label={translate("table.field.transfer.orgAreaName")} />
                         </Grid>
@@ -177,7 +187,6 @@
                                 value={formData.tarAreaId}
                                 dictTypeCode="warehouse"
                                 variant="filled"
-                                required
                                 onChange={(e) => handleChange(e.target.value, 'tarAreaId')}
                             />
                         </Grid>
@@ -185,7 +194,7 @@
                 </SimpleForm>
                 <Box sx={{ mt: 2 }}>
                     <Stack direction="row" spacing={2} sx={{ justifyContent: "flex-end" }}>
-                        <Button variant="contained" onClick={() => setCreateDialog(true)} >
+                        <Button variant="contained" onClick={newAddClick} >
                             {translate('common.action.newAddMats')}
                         </Button>
                         <ConfirmButton label={"toolbar.delete"} variant="outlined" color="error" onConfirm={handleDeleteItem} />
@@ -195,7 +204,7 @@
                     <TransferTableView
                         tabelData={tabelData}
                         setTableData={setTableData}
-                        asnId={orderId}
+                        orderId={orderId}
                         selectedRows={selectedRows}
                         setSelectedRows={setSelectedRows}
                         tableRef={tableRef}>
@@ -209,6 +218,8 @@
                 <CreateBySelectMats
                     open={createDialog}
                     setOpen={setCreateDialog}
+                    selectedRows={selectedRows}
+                    setSelectedRows={setSelectedRows}
                     data={tabelData}
                     setData={setTableData}
                 />
@@ -454,6 +465,11 @@
 
     tableRef.current = useGridApiRef();
 
+    const tableIds = tabelData.map(map => map.id);
+    // setSelectedRows(tableIds);
+    // // console.log(selectedRows);
+    
+
     return (
         <Box>
             <DataGrid
@@ -461,12 +477,6 @@
                 rows={tabelData}
                 columns={columns}
                 disableRowSelectionOnClick
-                getRowId={(row) => row.matnrId ? row.matnrId : row.id}
-                disableColumnFilter
-                disableColumnSelector
-                disableColumnSorting
-                disableMultipleColumnsSorting
-                processRowUpdate={processRowUpdate}
                 initialState={{
                     pagination: {
                         paginationModel: {
@@ -477,8 +487,8 @@
                 pageSizeOptions={[15, 25, 50, 100]}
                 editMode="row"
                 checkboxSelection
+                rowSelectionModel={tableIds}
                 onRowSelectionModelChange={handleSelectionChange}
-                selectionModel={selectedRows}
                 sx={{
                     height: 580,
                     '& .MuiDataGrid-cell input': {
@@ -486,15 +496,6 @@
                     },
                 }}
             />
-            {/* <Box sx={{
-                padding: 2,
-                position: 'absolute',
-                right: 1
-            }}>
-                <Button variant="contained" onClick={() => handleSubmit()} startIcon={<SaveIcon/>} >
-                    {translate('toolbar.confirm')}
-                </Button>
-            </Box> */}
         </Box>
     );
 };
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/AsnExceStatus.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/AsnExceStatus.java
index e7bb2da..f3e67f5 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/AsnExceStatus.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/AsnExceStatus.java
@@ -13,9 +13,10 @@
     ASN_EXCE_STATUS_UN_EXCE("0", "鏈墽琛�"),
     ASN_EXCE_STATUS_EXCE_ING("1", "鎵ц涓�"),
     ASN_EXCE_STATUS_RECEIPT_DONE("2", "鏀惰揣瀹屾垚"),
-    ASN_EXCE_STATUS_TASK_DONE("3", "宸插畬鎴�"),
-    ASN_EXCE_STATUS_TASK_CANCEL("4", "鍙栨秷"),
-    ASN_EXCE_STATUS_TASK_CLOSE("5", "宸插叧闂�"),
+    ASN_EXCE_STATUS_TASK_EXCE("3", "浠诲姟鎵ц涓�"),
+    ASN_EXCE_STATUS_TASK_DONE("4", "宸插畬鎴�"),
+    ASN_EXCE_STATUS_TASK_CANCEL("8", "鍙栨秷"),
+    ASN_EXCE_STATUS_TASK_CLOSE("9", "宸插叧闂�"),
 
     //PO鍗曟墽琛岀姸鎬�
 //    PO_EXCE_STATUS_UN_EXCE("0", "鏈墽琛�"),
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java
index 2723349..e83f81f 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java
@@ -6,8 +6,10 @@
 import com.vincent.rsf.server.manager.entity.*;
 import com.vincent.rsf.server.manager.enums.AsnExceStatus;
 import com.vincent.rsf.server.manager.enums.OrderType;
+import com.vincent.rsf.server.manager.enums.OrderWorkType;
 import com.vincent.rsf.server.manager.enums.POExceStatus;
 import com.vincent.rsf.server.manager.service.*;
+import com.vincent.rsf.server.manager.service.impl.TransferOrderServiceImpl;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
@@ -42,6 +44,8 @@
     private AsnOrderLogService asnOrderLogService;
     @Autowired
     private AsnOrderItemLogService asnOrderItemLogService;
+    @Autowired
+    private TransferOrderService transferOrderService;
 
     /**
      * @param
@@ -52,10 +56,10 @@
      */
     @Scheduled(cron = "0/35 * * * * ?  ")
     @Transactional(rollbackFor = Exception.class)
-    public void moveOrderToLog() {
+    public void InStockToLog() {
         List<WkOrder> wkOrders = asnOrderService.list(new LambdaQueryWrapper<WkOrder>()
                 .eq(WkOrder::getType, OrderType.ORDER_IN.type)
-                .eq(WkOrder::getExceStatus, AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val));
+                .eq(WkOrder::getExceStatus, AsnExceStatus.ASN_EXCE_STATUS_TASK_EXCE.val));
         if (wkOrders.isEmpty()) {
             return;
         }
@@ -79,8 +83,8 @@
     public void outStockComplete() {
         List<WkOrder> wkOrders = asnOrderService.list(new LambdaQueryWrapper<WkOrder>()
                 .eq(WkOrder::getType, OrderType.ORDER_OUT.type)
-                .eq(WkOrder::getExceStatus, AsnExceStatus.OUT_STOCK_STATUS_TASK_DONE.val)
-                .apply("anfme = work_qty")
+                .eq(WkOrder::getExceStatus, AsnExceStatus.OUT_STOCK_STATUS_TASK_WORKING.val)
+                .apply("anfme = qty")
         );
         if (wkOrders.isEmpty()) {
             return;
@@ -102,7 +106,7 @@
      * @time 2025/6/16 08:56
      */
     @Transactional(rollbackFor = Exception.class)
-    public void moveOrderToLog(List<WkOrder> wkOrders, String type) throws Exception{
+    public void moveOrderToLog(List<WkOrder> wkOrders, String type) {
         Set<Long> longSet = wkOrders.stream().map(WkOrder::getId).collect(Collectors.toSet());
         List<WkOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>()
                 .in(WkOrderItem::getOrderId, longSet));
@@ -111,64 +115,93 @@
         }
 
         for (WkOrder order : wkOrders) {
-            AsnOrderLog orderLog = new AsnOrderLog();
-            if (type.equals(OrderType.ORDER_OUT.type)) {
-                order.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val);
-                order.setQty(order.getWorkQty());
-            }
-            BeanUtils.copyProperties(order, orderLog);
-            orderLog.setId(null);
-            orderLog.setAsnId(order.getId());
+            AsnOrderLog one = asnOrderLogService.getOne(new LambdaQueryWrapper<AsnOrderLog>().eq(AsnOrderLog::getCode, order.getCode()), false);
+            if (Objects.isNull(one)) {
+                AsnOrderLog orderLog = new AsnOrderLog();
+                if (type.equals(OrderType.ORDER_OUT.type)) {
+                    order.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val);
+                    order.setQty(order.getWorkQty());
+                }
+                BeanUtils.copyProperties(order, orderLog);
+                orderLog.setId(null);
+                orderLog.setAsnId(order.getId());
 
-            if (!asnOrderLogService.save(orderLog)) {
-                throw new CoolException("涓诲崟鍘嗗彶妗f坊鍔犲け璐ワ紒锛�");
-            }
+                if (!asnOrderLogService.save(orderLog)) {
+                    throw new CoolException("涓诲崟鍘嗗彶妗f坊鍔犲け璐ワ紒锛�");
+                }
 
-            List<AsnOrderItemLog> logs = new ArrayList<>();
-            List<WkOrderItem> items = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>()
-                    .eq(WkOrderItem::getOrderId, order.getId()));
-            items.forEach(item -> {
-                AsnOrderItemLog itemLog = new AsnOrderItemLog();
-                BeanUtils.copyProperties(item, itemLog);
-                itemLog.setAsnItemId(itemLog.getId())
-                        .setId(null)
-                        .setMatnrId(item.getMatnrId())
-                        .setLogId(orderLog.getId())
-                        .setAsnId(item.getOrderId());
-                logs.add(itemLog);
-            });
+                List<AsnOrderItemLog> logs = new ArrayList<>();
+                List<WkOrderItem> items = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>()
+                        .eq(WkOrderItem::getOrderId, order.getId()));
+                items.forEach(item -> {
+                    AsnOrderItemLog itemLog = new AsnOrderItemLog();
+                    BeanUtils.copyProperties(item, itemLog);
+                    itemLog.setAsnItemId(itemLog.getId())
+                            .setId(null)
+                            .setMatnrId(item.getMatnrId())
+                            .setLogId(orderLog.getId())
+                            .setAsnId(item.getOrderId());
+                    logs.add(itemLog);
+                });
 
-            if (!asnOrderItemLogService.saveBatch(logs)) {
-                throw new CoolException("鍗曟嵁鏄庣粏鍘嗗彶妗d繚瀛樺け璐ワ紒锛�");
-            }
+                if (!asnOrderItemLogService.saveBatch(logs)) {
+                    throw new CoolException("鍗曟嵁鏄庣粏鍘嗗彶妗d繚瀛樺け璐ワ紒锛�");
+                }
 
-            //鏇存柊PO/DO鍗曟墽琛岀姸鎬�
-            if (type.equals(OrderType.ORDER_IN.type)) {
-                if (!Objects.isNull(order.getPoId())) {
-                    if (!purchaseService.update(new LambdaUpdateWrapper<Purchase>()
-                            .set(Purchase::getExceStatus, POExceStatus.PO_EXCE_STATUS_ALL_DONE.val)
-                            .eq(Purchase::getId, order.getPoId()))) {
-                        throw new CoolException("PO鍗曟洿鏂扮姸鎬佹洿鏂板け璐ワ紒锛�");
+                //鏇存柊PO/DO鍗曟墽琛岀姸鎬�
+                if (type.equals(OrderType.ORDER_IN.type)) {
+                    if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_OTHER_TERANSFER.type)) {
+                        order.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val);
+                        if (!asnOrderService.updateById(order)) {
+                            throw new CoolException("鍗曟嵁鐘舵�佹洿鏂板け璐ワ紒锛�");
+                        }
+
+                        List<TransferOrder> orders = transferOrderService.list(new LambdaQueryWrapper<TransferOrder>().eq(TransferOrder::getTransferId, order.getPoId()));
+                        if (orders.isEmpty()) {
+                            throw new CoolException("鏁版嵁閿欒锛氬叧鑱旇〃淇℃伅涓嶅瓨鍦紒锛�");
+                        }
+                        Set<Long> orderIds = orders.stream().map(TransferOrder::getOrderId).collect(Collectors.toSet());
+                        if (!asnOrderItemService.remove(new LambdaQueryWrapper<WkOrderItem>()
+                                .in(WkOrderItem::getOrderId, orderIds))) {
+                            throw new CoolException("鍘熷崟鎹槑缁嗗垹闄ゅけ璐ワ紒锛�");
+                        }
+                        if (!this.asnOrderService.removeByIds(orderIds)) {
+                            throw new CoolException("鍘熷崟鎹垹闄ゅけ璐ワ紒锛�");
+                        }
+                        return;
+                    } else {
+                        if (!Objects.isNull(order.getPoId())) {
+                            purchaseService.update(new LambdaUpdateWrapper<Purchase>()
+                                    .set(Purchase::getExceStatus, POExceStatus.PO_EXCE_STATUS_ALL_DONE.val)
+                                    .eq(Purchase::getId, order.getPoId()));
+                        }
+                    }
+                } else {
+                    if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_STOCK_TERANSFER.type)) {
+                        order.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_DONE.val);
+                        if (!asnOrderService.updateById(order)) {
+                            throw new CoolException("鍗曟嵁鐘舵�佹洿鏂板け璐ワ紒锛�");
+                        }
+                        //濡傛灉涓鸿皟鎷斿崟鎵ц瀹屾垚锛岄渶妫�鏌ヨ皟鎷斿叆搴撳崟鏄惁瀹屾垚锛屽畬鎴愬悗鎵嶈兘鍒犻櫎鍗曟嵁淇℃伅
+                        return;
+                    } else {
+                        if (!Objects.isNull(order.getPoId())) {
+                            deliveryService.update(new LambdaUpdateWrapper<Delivery>()
+                                    .eq(Delivery::getId, order.getPoId())
+                                    .set(Delivery::getExceStatus, POExceStatus.PO_EXCE_STATUS_ALL_DONE.val));
+                        }
                     }
                 }
-            } else {
-                if (!Objects.isNull(order.getPoId())) {
-                    if (!deliveryService.update(new LambdaUpdateWrapper<Delivery>()
-                            .eq(Delivery::getId, order.getPoId())
-                            .set(Delivery::getExceStatus, POExceStatus.PO_EXCE_STATUS_ALL_DONE.val))) {
-                        throw new CoolException("DO鍗曟洿鏂扮姸鎬佹洿鏂板け璐�");
-                    }
-                }
+            }
+
+            if (!asnOrderItemService.remove(new LambdaQueryWrapper<WkOrderItem>()
+                    .eq(WkOrderItem::getOrderId, order.getId()))) {
+                throw new CoolException("鍘熷崟鎹槑缁嗗垹闄ゅけ璐ワ紒锛�");
+            }
+            if (!this.asnOrderService.removeById(order.getId())) {
+                throw new CoolException("鍘熷崟鎹垹闄ゅけ璐ワ紒锛�");
             }
         }
-
-//        if (!asnOrderItemService.remove(new LambdaQueryWrapper<WkOrderItem>()
-//                .in(WkOrderItem::getOrderId, longSet))) {
-//            throw new CoolException("鍘熷崟鎹槑缁嗗垹闄ゅけ璐ワ紒锛�");
-//        }
-//        if (!this.asnOrderService.removeByIds(longSet)) {
-//            throw new CoolException("鍘熷崟鎹垹闄ゅけ璐ワ紒锛�");
-//        }
     }
 
 
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 ee9b819..c67e035 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
@@ -16,7 +16,6 @@
 
     R generateAGVTasks(WaitPakin waitPakins, String locCode, String orgSta, Long loginUserId);
 
-    //    R completeTask(String id);
     void completeTask(List<Task> task) throws Exception;
 
     R removeTask(Long[] ids, Long loginUserId);
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 9b829a1..51201c2 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
@@ -155,9 +155,7 @@
         if (!this.remove(new LambdaQueryWrapper<WkOrder>().eq(WkOrder::getId, id))) {
             throw new CoolException("涓诲崟鍒犻櫎澶辫触锛侊紒");
         }
-        if (!outStockItemService.remove(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderId, id))) {
-            throw new CoolException("鍗曟嵁鏄庣粏鍒犻櫎澶辫触锛侊紒");
-        }
+        outStockItemService.remove(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderId, id));
         return R.ok("鎿嶄綔鎴愬姛");
     }
 
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 0ade071..1ae6e7d 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
@@ -411,17 +411,18 @@
     public void complateInTask(List<Task> tasks) throws Exception {
         Long loginUserId = SystemAuthUtils.getLoginUserId();
         for (Task task : tasks) {
-            if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type)) {
-                //1.鍏ュ簱
-                complateInstock(task, loginUserId);
-            } else if (task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type) || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type)) {
-                //53.鎷f枡鍐嶅叆搴�
-                //57.鐩樼偣鍐嶅叆搴�
-                pickComplateInStock(task, loginUserId);
-            } else if (task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) {
-                //绉诲簱
-                moveInStock(task, loginUserId);
-            }
+//            if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type)) {
+//
+//            } else if (task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type) || task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type)) {
+//                //53.鎷f枡鍐嶅叆搴�
+//                //57.鐩樼偣鍐嶅叆搴�
+//                pickComplateInStock(task, loginUserId);
+//            } else if (task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) {
+//                //绉诲簱
+//                moveInStock(task, loginUserId);
+//            }
+            //1.鍏ュ簱
+            complateInstock(task, loginUserId);
         }
     }
 
@@ -636,19 +637,14 @@
     @Synchronized
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void completeTask(List<Task> tasks) throws Exception {
+    public void completeTask(List<Task> tasks) {
         Long loginUserId = SystemAuthUtils.getLoginUserId();
         for (Task task : tasks) {
             //鍑哄簱浠诲姟
-            if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type)) {
-                //鍏ㄦ墭鍑哄簱
+            try {
                 complateOutStock(task, loginUserId);
-            } else if (task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_OUT.type)) {
-                //鎷f枡鍑哄簱
-                complateOutStock(task, loginUserId);
-            } else if (task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type)) {
-                //鐩樼偣鍑哄簱
-                complateOutStock(task, loginUserId);
+            } catch (Exception e) {
+                throw new CoolException(e.getMessage());
             }
         }
     }
@@ -1152,13 +1148,7 @@
                     }
                 } else if (task.getResource().equals(TaskResouceType.TASK_RESOUCE_ORDER_TYPE.val)
                         || task.getResource().equals(TaskResouceType.TASK_RESOUCE_CHECK_TYPE.val)) {
-                    WkOrderItem orderItem = new WkOrderItem();
-                    if (task.getResource().equals(TaskResouceType.TASK_RESOUCE_CHECK_TYPE.val)) {
-                        CheckDiffItem diffItem = checkDiffItemService.getById(key);
-                    } else {
-                        orderItem = asnOrderItemService.getById(key);
-
-                    }
+                    WkOrderItem orderItem = asnOrderItemService.getById(key);
                     if (Objects.isNull(orderItem)) {
                         throw new CoolException("鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�");
                     }
@@ -1246,13 +1236,14 @@
                 .setUpdateBy(loginUserId)
                 .setUpdateTime(new Date())
                 .setAnfme(sum);
-        if (Objects.isNull(waveItem)) {
-            stock.setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_STOCK_OUT.type))
-                    .setMemo("搴撳瓨鍑哄簱锛屾棤鍗曟嵁淇℃伅锛侊紒")
-                    .setType(OrderType.ORDER_OUT.type);
+        if (!Objects.isNull(waveItem)) {
+            //TODO 鐢熸垚娉㈡鏃堕渶瑕佸皢娉㈡鍙峰啓鍏ュ崟鎹紝閫氳繃鐗╂枡锛屾壒娆★紝鍔ㄦ�佸瓧娈电瓑鍞竴鍊煎弽鏌ュ崟鎹俊鎭�
+            stock.setSourceId(waveItem.getId()).setType(OrderType.ORDER_OUT.type);
         } else if (!Objects.isNull(orderItem) && StringUtils.isNotBlank(orderItem.getId() + "")) {
             WkOrder wkOrder = asnOrderService.getById(orderItem.getOrderId());
-            wkOrder.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_DONE.val);
+            Double qty = Math.round((wkOrder.getQty() + sum) * 10000) / 10000.0;
+            wkOrder.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_WORKING.val)
+                    .setQty(qty);
             if (!asnOrderService.updateById(wkOrder)) {
                 throw new CoolException("鍑哄簱鍗曟洿鏂板け璐ワ紒锛�");
             }
@@ -1262,8 +1253,9 @@
             stock.setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_STOCK_CHECK.type))
                     .setType(OrderType.ORDER_CHECK.type);
         } else {
-            //TODO 鐢熸垚娉㈡鏃堕渶瑕佸皢娉㈡鍙峰啓鍏ュ崟鎹紝閫氳繃鐗╂枡锛屾壒娆★紝鍔ㄦ�佸瓧娈电瓑鍞竴鍊煎弽鏌ュ崟鎹俊鎭�
-            stock.setSourceId(waveItem.getId()).setType(OrderType.ORDER_OUT.type);
+            stock.setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_STOCK_OUT.type))
+                    .setMemo("搴撳瓨鍑哄簱锛屾棤鍗曟嵁淇℃伅锛侊紒")
+                    .setType(OrderType.ORDER_OUT.type);
         }
         if (!stockService.save(stock)) {
             throw new CoolException("搴撳瓨淇濆瓨澶辫触锛侊紒");
@@ -1451,8 +1443,7 @@
      * @return
      */
     @Transactional(rollbackFor = Exception.class)
-    public void saveStockItems(List<TaskItem> items, Task task, Long id, String code, Short wkType, String type, Long loginUserId) throws
-            Exception {
+    public void saveStockItems(List<TaskItem> items, Task task, Long id, String code, Short wkType, String type, Long loginUserId) {
         Stock stock = new Stock();
         String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_STOCK_CODE, null);
         if (StringUtils.isBlank(ruleCode)) {
@@ -1497,5 +1488,14 @@
         if (!stockItemService.saveBatch(stockItems)) {
             throw new CoolException("搴撳瓨淇敼鏋跺け璐ワ紒锛�");
         }
+
+        WkOrder order = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>().eq(WkOrder::getCode, code));
+        if (!Objects.isNull(order)) {
+            Double qty = Math.round((order.getQty() + sum) * 10000) / 10000.0;
+            order.setQty(qty).setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_TASK_EXCE.val);
+            if (!asnOrderService.updateById(order)) {
+                throw new CoolException("鍏ュ簱鍗曠姸鎬佷慨鏀瑰け璐ワ紒锛�");
+            }
+        }
     }
 }

--
Gitblit v1.9.1