From e4e3f752792527c5c22df131c8dffa4733c98057 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期四, 05 六月 2025 15:05:11 +0800
Subject: [PATCH] 任务列表优化 DO单功能优化 出库单功能优化

---
 rsf-admin/src/page/components/BillStatusField.jsx                                             |    5 
 rsf-admin/src/page/orders/outStock/OutOrderItemList.jsx                                       |   14 +-
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java    |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java |   33 +++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/DeliveryService.java          |    3 
 rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx                                           |    6 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/OutStockService.java          |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/OutStockController.java    |   12 +-
 rsf-admin/src/page/orders/delivery/DeliveryList.jsx                                           |   18 ++-
 rsf-server/src/main/resources/mapper/manager/AsnOrderItemMapper.xml                           |    4 
 rsf-admin/src/page/orders/outStock/OutOrderEdit.jsx                                           |   13 --
 rsf-admin/src/page/orders/outStock/OutOrderModal.jsx                                          |   87 +++++++++-----
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeliveryServiceImpl.java |   33 +++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/AsnExceStatus.java              |    8 
 rsf-admin/src/page/orders/delivery/DeliveryItemList.jsx                                       |    8 
 rsf-admin/src/i18n/zh.js                                                                      |   10 +
 rsf-admin/src/page/orders/outStock/OutOrderList.jsx                                           |    5 
 rsf-admin/src/i18n/en.js                                                                      |    5 
 rsf-admin/src/page/orders/delivery/DeliveryEdit.jsx                                           |   16 +-
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeliveryController.java    |    9 +
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeliveryItem.java              |   16 ++
 21 files changed, 216 insertions(+), 97 deletions(-)

diff --git a/rsf-admin/src/i18n/en.js b/rsf-admin/src/i18n/en.js
index f163c6a..8eb19e8 100644
--- a/rsf-admin/src/i18n/en.js
+++ b/rsf-admin/src/i18n/en.js
@@ -607,7 +607,9 @@
                 poDetlCode: "DO Detl Code",
                 matnrId: "matnrId",
                 maktx: "maktx",
+                workQty: 'Work Qty',
                 anfme: "anfme",
+                platOrderCode: 'Customer Code',
                 stockUnit: "stockUnit",
                 purQty: "purQty",
                 purUnit: "purUnit",
@@ -726,7 +728,8 @@
                 fieldsIndex: "fieldsIndex",
                 unit: "unit",
                 anfme: "anfme",
-                qty: "qty",
+                workQty: 'Work Qty',
+                qty: "Qty",
                 nromQty: "nromQty",
                 printQty: "printQty",
                 splrName: "splrName",
diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js
index 94a27e4..d8f8b1d 100644
--- a/rsf-admin/src/i18n/zh.js
+++ b/rsf-admin/src/i18n/zh.js
@@ -618,7 +618,8 @@
                 type: "绫诲瀷",
                 wkType: "涓氬姟绫诲瀷",
                 anfme: "鏁伴噺",
-                qty: "宸插嚭搴撴暟閲�",
+                workQty: '鎵ц鏁�',
+                qty: "瀹屾垚鏁�",
                 logisNo: "鐗╂祦鍗曞彿",
                 arrTime: "棰勮鍒拌揪鏃堕棿",
                 rleStatus: "閲婃斁鐘舵��",
@@ -666,8 +667,10 @@
                 matnrId: "鐗╂枡鏍囪瘑",
                 maktx: "鐗╂枡鍚嶇О",
                 matnrCode: "鐗╂枡缂栫爜",
+                platOrderCode: '瀹㈠崟鍙�',
                 anfme: "璁″垝鍑哄簱鏁�",
                 stockUnit: "搴撳瓨鍗曚綅",
+                workQty: '鎵ц鏁�',
                 purQty: "涓嬪崟鏁伴噺",
                 purUnit: "鍗曚綅",
                 qty: "瀹屾垚鏁伴噺",
@@ -755,8 +758,9 @@
                 fieldsIndex: "瀛楁绱㈠紩",
                 unit: "鍗曚綅",
                 anfme: "鏁伴噺",
-                qty: "瀹屾垚鏁伴噺",
-                nromQty: "nromQty",
+                workQty: '鎵ц鏁�',
+                qty: "瀹屾垚鏁�",
+                nromQty: "鏍囧寘鏁�",
                 printQty: "鎵撳嵃鏁伴噺",
                 splrName: "渚涘簲鍟嗗悕绉�",
                 splrCode: "渚涘簲鍟嗙紪鐮�",
diff --git a/rsf-admin/src/page/components/BillStatusField.jsx b/rsf-admin/src/page/components/BillStatusField.jsx
index b60ff1c..1bfafa0 100644
--- a/rsf-admin/src/page/components/BillStatusField.jsx
+++ b/rsf-admin/src/page/components/BillStatusField.jsx
@@ -15,6 +15,11 @@
         2: '#52C41A',
         3: '#595959',
         4: '#FF4D4F',
+        10: '#BFBFBF',
+        11: '#FFC53D',
+        12: '#52C41A',
+        13: '#595959',
+        14: '#FF4D4F',
     }
     return (
         <Typography
diff --git a/rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx b/rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx
index d7b9790..ea3aae5 100644
--- a/rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx
+++ b/rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx
@@ -138,12 +138,13 @@
         title={"menu.asnOrder"}
         empty={false}
         filters={filters}
+        filter={{ deleted: 0, type: 'in' }}
         sort={{ field: "create_time", order: "desc" }}
         actions={(
           <TopToolbar>
             <FilterButton />
             <MyCreateButton onClick={() => { setCreateDialog(true); setmodalType(0) }} />
-            <CreateByPoButton setPoCreate={setPoCreate}/>
+            <CreateByPoButton setPoCreate={setPoCreate} />
             <SelectColumnsButton preferenceKey='asnOrder' />
             <ImportButton value={'asnOrderItem'} />
             <MyExportButton />
@@ -175,7 +176,6 @@
           <DateField source="arrTime" label="table.field.asnOrder.arrTime" showTime />
           <TextField source="rleStatus$" label="table.field.asnOrder.rleStatus" sortable={false} />
           <TextField source="logisNo" label="table.field.asnOrder.logisNo" />
-          {/* <TextField source="ntyStatus$" label="table.field.asnOrder.ntyStatus" /> */}
           <TextField source="updateBy$" label="common.field.updateBy" />
           <DateField source="updateTime" label="common.field.updateTime" showTime />
           <TextField source="createBy$" label="common.field.createBy" />
@@ -220,7 +220,7 @@
 export default AsnOrderList;
 
 //鎸塒O鍗曟柊寤�
-const CreateByPoButton = ({setPoCreate}) => {
+const CreateByPoButton = ({ setPoCreate }) => {
   const record = useRecordContext();
 
   const createEvent = (event) => {
diff --git a/rsf-admin/src/page/orders/delivery/DeliveryEdit.jsx b/rsf-admin/src/page/orders/delivery/DeliveryEdit.jsx
index 49867b9..d619b4d 100644
--- a/rsf-admin/src/page/orders/delivery/DeliveryEdit.jsx
+++ b/rsf-admin/src/page/orders/delivery/DeliveryEdit.jsx
@@ -44,7 +44,7 @@
 const DeliveryEdit = () => {
     const translate = useTranslate();
     const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_order_type')) || [];
-    const business = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_business_type')) || [];
+    const business = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_business_type' && dict.group == 2)) || [];
 
     return (
         <>
@@ -73,11 +73,6 @@
                                     parse={v => v}
                                     autoFocus
                                 />
-                                <TextInput
-                                    label="table.field.delivery.platId"
-                                    source="platId"
-                                    parse={v => v}
-                                />
                                 <AutocompleteInput
                                     choices={dicts}
                                     optionText="label"
@@ -95,14 +90,14 @@
                                     optionValue="value"
                                     parse={v => v}
                                 />
-                            </Stack>
-                            <Stack direction='row' gap={2}>
                                 <TextInput
                                     label="table.field.delivery.source"
                                     source="source"
                                     parse={v => v}
                                     validate={required()}
                                 />
+                            </Stack>
+                            <Stack direction='row' gap={2}>
                                 <NumberInput
                                     label="table.field.delivery.anfme"
                                     source="anfme"
@@ -117,6 +112,11 @@
                                     source="workQty"
                                 />
                                 <TextInput
+                                    label="table.field.delivery.platId"
+                                    source="platId"
+                                    parse={v => v}
+                                />
+                                <TextInput
                                     label="table.field.delivery.platCode"
                                     source="platCode"
                                     parse={v => v}
diff --git a/rsf-admin/src/page/orders/delivery/DeliveryItemList.jsx b/rsf-admin/src/page/orders/delivery/DeliveryItemList.jsx
index ffdd284..ab2f160 100644
--- a/rsf-admin/src/page/orders/delivery/DeliveryItemList.jsx
+++ b/rsf-admin/src/page/orders/delivery/DeliveryItemList.jsx
@@ -121,19 +121,19 @@
                     }}
                     expand={false}
                     expandSingle={true}
-                    omit={['id', 'createTime', 'deliveryId', 'fieldsIndex', 'qty', 'printQty', 'nromQty', 'createBy', 'memo']}
+                    omit={['id', 'createTime', 'deliveryId', 'fieldsIndex', 'printQty', 'nromQty', 'createBy', 'memo']}
                 >
                     <NumberField source="id" />
                     <NumberField source="deliveryId" label="table.field.deliveryItem.deliveryId" />
                     <TextField source="platItemId" label="table.field.deliveryItem.platItemId" />
                     <TextField source="matnrCode" label="table.field.deliveryItem.matnrCode" />
-                    <TextField source="matnrName" label="table.field.deliveryItem.matnrName" />
+                    <TextField source="maktx" label="table.field.deliveryItem.matnrName" />
                     <TextField source="fieldsIndex" label="table.field.deliveryItem.fieldsIndex" />
-                    <TextField source="unit" label="table.field.deliveryItem.unit" />
                     <NumberField source="anfme" label="table.field.deliveryItem.anfme" />
+                    <NumberField source="workQty" label="table.field.deliveryItem.workQty" />
                     <NumberField source="qty" label="table.field.deliveryItem.qty" />
                     <NumberField source="nromQty" label="table.field.deliveryItem.nromQty" />
-                    <NumberField source="printQty" label="table.field.deliveryItem.printQty" />
+                    <TextField source="unit" label="table.field.deliveryItem.unit" />
                     <TextField source="splrName" label="table.field.deliveryItem.splrName" />
                     <TextField source="splrCode" label="table.field.deliveryItem.splrCode" />
                     <TextField source="splrBatch" label="table.field.deliveryItem.splrBatch" />
diff --git a/rsf-admin/src/page/orders/delivery/DeliveryList.jsx b/rsf-admin/src/page/orders/delivery/DeliveryList.jsx
index 4a5b27f..01ce8db 100644
--- a/rsf-admin/src/page/orders/delivery/DeliveryList.jsx
+++ b/rsf-admin/src/page/orders/delivery/DeliveryList.jsx
@@ -110,10 +110,8 @@
                 actions={(
                     <TopToolbar>
                         <FilterButton />
-                        {/* <MyCreateButton onClick={() => { setCreateDialog(true) }} /> */}
                         <SelectColumnsButton preferenceKey='delivery' />
                         <ImportButton value={'delivery'} />
-                        {/* <MyExportButton /> */}
                     </TopToolbar>
                 )}
                 perPage={DEFAULT_PAGE_SIZE}
@@ -124,7 +122,7 @@
                     rowClick={(id, resource, record) => false}
                     expand={false}
                     expandSingle={true}
-                    omit={['id', 'createTime', 'createBy', 'platId', 'memo', 'workQty', 'startTime', 'endTime', 'updateBy', 'createTime']}
+                    omit={['id', 'createTime', 'createBy', 'platId', 'platCode', 'memo', 'startTime', 'endTime', 'updateBy', 'createTime']}
                 >
                     <NumberField source="id" />
                     <TextField source="code" label="table.field.delivery.code" />
@@ -133,8 +131,8 @@
                     <TextField source="wkType$" label="table.field.delivery.wkType" />
                     <TextField source="source" label="table.field.delivery.source" />
                     <NumberField source="anfme" label="table.field.delivery.anfme" />
-                    <NumberField source="qty" label="table.field.delivery.qty" />
                     <NumberField source="workQty" label="table.field.delivery.workQty" />
+                    <NumberField source="qty" label="table.field.delivery.qty" />
                     <TextField source="platCode" label="table.field.delivery.platCode" />
                     <DateField source="startTime" label="table.field.delivery.startTime" showTime />
                     <DateField source="endTime" label="table.field.delivery.endTime" showTime />
@@ -143,11 +141,10 @@
                     <TextField source="createBy$" label="common.field.createBy" />
                     <DateField source="createTime" label="common.field.createTime" showTime />
                     <BillStatusField cellClassName="status" source="exceStatus" label="table.field.asnOrder.exceStatus" />
-                    {/* <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' }} />
-                        <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
+                        <CustomDelteButton />
                     </WrapperField>
                 </StyledDatagrid>
             </List>
@@ -165,4 +162,13 @@
     )
 }
 
+
+const CustomDelteButton = () => {
+    const record = useRecordContext();
+    return (
+        record?.exceStatus == 0 ? <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> : <></>
+    )
+}
+
+
 export default DeliveryList;
diff --git a/rsf-admin/src/page/orders/outStock/OutOrderEdit.jsx b/rsf-admin/src/page/orders/outStock/OutOrderEdit.jsx
index 3c223c2..8cb32d5 100644
--- a/rsf-admin/src/page/orders/outStock/OutOrderEdit.jsx
+++ b/rsf-admin/src/page/orders/outStock/OutOrderEdit.jsx
@@ -19,17 +19,6 @@
 import CustomerTopToolBar from "../../components/EditTopToolBar";
 import OutOrderItemList from "./OutOrderItemList";
 
-const FormToolbar = () => {
-    const { getValues } = useFormContext();
-
-    return (
-        <Toolbar sx={{ justifyContent: 'end' }}>
-            <></>
-            {/* <SaveButton />
-            <DeleteButton mutationMode="optimistic" /> */}
-        </Toolbar>
-    )
-}
 
 const OutOrderEdit = () => {
     const translate = useTranslate();
@@ -47,7 +36,7 @@
                 <SimpleForm
                     shouldUnregister
                     warnWhenUnsavedChanges
-                    toolbar={<FormToolbar />}
+                    toolbar={false}
                     mode="onTouched"
                     defaultValues={{}}
                 >
diff --git a/rsf-admin/src/page/orders/outStock/OutOrderItemList.jsx b/rsf-admin/src/page/orders/outStock/OutOrderItemList.jsx
index 0461c77..f4ff897 100644
--- a/rsf-admin/src/page/orders/outStock/OutOrderItemList.jsx
+++ b/rsf-admin/src/page/orders/outStock/OutOrderItemList.jsx
@@ -64,11 +64,11 @@
 const filters = [
   <SearchInput source="condition" alwaysOn />,
   <NumberInput source="asnId" label="table.field.outStockItem.asnId" />,
-  <TextInput source="asnCode" label="table.field.outStockItem.asnCode" alwaysOn/>,
+  <TextInput source="asnCode" label="table.field.outStockItem.asnCode" alwaysOn />,
   <TextInput source="poDetlId" label="table.field.outStockItem.poDetlId" />,
   <TextInput source="matnrId" label="table.field.outStockItem.matnrId" />,
-  <TextInput source="maktx" label="table.field.outStockItem.maktx" alwaysOn/>,
-  <TextInput source="matnrCode" label="table.field.outStockItem.matnrCode" alwaysOn/>,
+  <TextInput source="maktx" label="table.field.outStockItem.maktx" alwaysOn />,
+  <TextInput source="matnrCode" label="table.field.outStockItem.matnrCode" alwaysOn />,
   <NumberInput source="anfme" label="table.field.outStockItem.anfme" />,
   <TextInput source="stockUnit" label="table.field.outStockItem.stockUnit" />,
   <NumberInput source="purQty" label="table.field.outStockItem.purQty" />,
@@ -136,7 +136,7 @@
               setSelect(record)
               setEditDialog(true)
             }}
-             omit={['id', 'createTime', 'createBy', 'memo', 'poDetlId', 'purQty','purUnit','trackCode','packName','splrName','matnrId', 'asnId']}
+            omit={['id', 'createTime', 'createBy', 'memo', 'poDetlId', 'purQty', 'purUnit', 'trackCode', 'packName','qrcode', 'splrName', 'matnrId', 'asnId']}
           >
             <NumberField source="id" />
             <NumberField source="asnId" label="table.field.outStockItem.asnId" />
@@ -145,11 +145,13 @@
             <TextField source="matnrId" label="table.field.outStockItem.matnrId" />
             <TextField source="matnrCode" label="table.field.outStockItem.matnrCode" />
             <TextField source="maktx" label="table.field.outStockItem.maktx" />
+            <TextField source="platOrderCode" label="table.field.outStockItem.platOrderCode" />
             <NumberField source="anfme" label="table.field.outStockItem.anfme" />
-            <TextField source="stockUnit" label="table.field.outStockItem.stockUnit" />
             <NumberField source="purQty" label="table.field.outStockItem.purQty" />
-            <TextField source="purUnit" label="table.field.outStockItem.purUnit" />
+            <NumberField source="workQty" label="table.field.outStockItem.workQty" />
             <NumberField source="qty" label="table.field.outStockItem.qty" />
+            <TextField source="stockUnit" label="table.field.outStockItem.stockUnit" />
+            <TextField source="purUnit" label="table.field.outStockItem.purUnit" />
             <TextField source="splrCode" label="table.field.outStockItem.splrCode" />
             <TextField source="splrName" label="table.field.outStockItem.splrName" />
             <TextField source="qrcode" label="table.field.outStockItem.qrcode" />
diff --git a/rsf-admin/src/page/orders/outStock/OutOrderList.jsx b/rsf-admin/src/page/orders/outStock/OutOrderList.jsx
index fc4bb37..62a57b1 100644
--- a/rsf-admin/src/page/orders/outStock/OutOrderList.jsx
+++ b/rsf-admin/src/page/orders/outStock/OutOrderList.jsx
@@ -86,7 +86,7 @@
   <ReferenceInput source="type" reference="dictData" filter={{ dictTypeCode: 'sys_order_type', group: '2' }} label="table.field.outStock.type" alwaysOn>
     <AutocompleteInput label="table.field.outStock.type" optionValue="value" />
   </ReferenceInput>,
-  <ReferenceInput source="wkType" reference="dictData" filter={{ dictTypeCode: 'sys_business_type', group: '2'}} label="table.field.outStock.wkType" alwaysOn>
+  <ReferenceInput source="wkType" reference="dictData" filter={{ dictTypeCode: 'sys_business_type', group: '2' }} label="table.field.outStock.wkType" alwaysOn>
     <AutocompleteInput label="table.field.outStock.wkType" optionValue="value" />
   </ReferenceInput>,
   <NumberInput source="anfme" label="table.field.outStock.anfme" />,
@@ -164,6 +164,7 @@
           <TextField source="type$" label="table.field.outStock.type" />
           <TextField cellClassName="wkType" source="wkType$" label="table.field.outStock.wkType" />
           <NumberField source="anfme" label="table.field.outStock.anfme" />
+          <NumberField source="workQty" label="table.field.outStock.workQty" />
           <NumberField source="qty" label="table.field.outStock.qty" />
           <TextField source="logisNo" label="table.field.outStock.logisNo" />
           <TextField source="rleStatus$" label="table.field.outStock.rleStatus" sortable={false} />
@@ -283,6 +284,6 @@
   }
 
   return (
-     record?.exceStatus == 0 ? <ConfirmButton label={"toolbar.cancel"} startIcon={<CancelOutlinedIcon />  } onConfirm={cancelOrder} /> : <></>
+    record?.exceStatus == 0 ? <ConfirmButton label={"toolbar.cancel"} startIcon={<CancelOutlinedIcon />} onConfirm={cancelOrder} /> : <></>
   )
 }
diff --git a/rsf-admin/src/page/orders/outStock/OutOrderModal.jsx b/rsf-admin/src/page/orders/outStock/OutOrderModal.jsx
index 5bc8cc3..c3b530c 100644
--- a/rsf-admin/src/page/orders/outStock/OutOrderModal.jsx
+++ b/rsf-admin/src/page/orders/outStock/OutOrderModal.jsx
@@ -1,4 +1,4 @@
-import { Dialog, DialogActions, DialogContent, DialogTitle, Box } from "@mui/material";
+import { Dialog, DialogActions, DialogContent, DialogTitle, Box, LinearProgress } from "@mui/material";
 import React, { useState, useRef, useEffect, useMemo } from "react";
 import {
     List,
@@ -33,6 +33,7 @@
     ReferenceArrayInput,
     AutocompleteInput,
     DeleteButton,
+    SimpleForm,
     Form,
     SaveButton,
     useRefresh,
@@ -41,7 +42,7 @@
 import DialogCloseButton from "../../components/DialogCloseButton";
 import { styled } from '@mui/material/styles';
 import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
-import { Grid, Stack, width } from "@mui/system";
+import { Grid, margin, Stack, width } from "@mui/system";
 import request from '@/utils/request';
 import SaveIcon from '@mui/icons-material/Save';
 import debounce from "lodash/debounce";
@@ -58,6 +59,17 @@
         width: 90
     },
 }));
+
+const StyledForm = styled(Form)(({ theme }) => ({
+    width: '100%',
+    marginBottom: '45px',
+
+    '& .MuiGrid-root': {
+        margin: '0 10px'
+    }
+}));
+
+
 const filters = [
     <SearchInput source="condition" alwaysOn />,
     <DateInput label='common.time.after' source="timeStart" />,
@@ -85,6 +97,7 @@
     const [drawerVal, setDrawerVal] = useState(false);
     const refresh = useRefresh();
 
+
     const handleClose = (event, reason) => {
         if (reason !== "backdropClick") {
             setOpen(false);
@@ -94,20 +107,22 @@
         const { filterValues, setFilters, refetch } = useListContext('deliveryItem');
         const [formValues, setFormValues] = useState(filterValues);
         const handleChange = (event) => {
-            if (event.target == undefined || event.target == null) {return}
+            if (event.target == undefined || event.target == null) { return }
             setFormValues(formValues => ({
                 ...formValues,
-              [event.target.name]: event.target.value
+                [event.target.name]: event.target.value
             }));
         };
+
+        
 
         const handleSubmit = (event) => {
             setParams(formValues)
         };
 
         return (
-            <Form>
-                <Grid container rowSpacing={2} columnSpacing={2} >
+            <StyledForm>
+                <Grid container rowSpacing={3} columnSpacing={3} >
                     <Stack>
                         <TextInput
                             source="condition"
@@ -158,7 +173,7 @@
                         <SaveButton onClick={handleSubmit} label={"toolbar.query"} />
                     </Toolbar>
                 </DialogActions>
-            </Form>
+            </StyledForm>
         );
     };
     return (
@@ -206,30 +221,40 @@
                             )}
                             perPage={DEFAULT_PAGE_SIZE}
                         >
-                            <StyledDatagrid
-                                sx={{ height: '400' }}
-                                preferenceKey='deliveryItem'
-                                bulkActionButtons={<AddOutStockButton setOpen={setOpen} />}
-                                rowClick={(id, resource, record) => false}
-                                expand={false}
-                                expandSingle={true}
-                                omit={['id', 'createTime', 'createBy', 'memo', 'workQty', 'startTime', 'endTime', 'updateBy', 'createTime']}
-                            >
-                                <NumberField source="id" />
-                                <TextField source="deliveryCode" label="table.field.deliveryItem.deliveryCode" />
-                                <TextField source="matnrCode" label="table.field.deliveryItem.matnrCode" />
-                                <TextField source="matnrName" label="table.field.deliveryItem.matnrName" />
-                                <TextField source="unit" label="table.field.deliveryItem.unit" />
-                                <NumberField source="anfme" label="table.field.deliveryItem.anfme" />
-                                <TextField source="splrName" label="table.field.deliveryItem.splrName" />
-                                <TextField source="splrBatch" label="table.field.deliveryItem.splrBatch" />
-                                <TextField source="updateBy$" label="common.field.updateBy" />
-                                <DateField source="updateTime" label="common.field.updateTime" showTime />
-                                <TextField source="createBy$" label="common.field.createBy" />
-                                <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} />
-                            </StyledDatagrid>
+                            <Box sx={{ position: 'relative', minHeight: "60vh", }}>
+                                <LinearProgress
+                                    sx={{
+                                        height: "2px",
+                                        position: 'absolute',
+                                        top: 0,
+                                        left: 0,
+                                        right: 0,
+                                    }}
+                                />
+                                <StyledDatagrid
+                                    preferenceKey='deliveryItem'
+                                    bulkActionButtons={<AddOutStockButton setOpen={setOpen} />}
+                                    rowClick={(id, resource, record) => false}
+                                    expand={false}
+                                    expandSingle={true}
+                                    omit={['id', 'createTime', 'createBy', 'memo', 'workQty', 'startTime', 'endTime', 'updateBy', 'createTime']}
+                                >
+                                    <NumberField source="id" />
+                                    <TextField source="deliveryCode" label="table.field.deliveryItem.deliveryCode" />
+                                    <TextField source="matnrCode" label="table.field.deliveryItem.matnrCode" />
+                                    <TextField source="matnrName" label="table.field.deliveryItem.matnrName" />
+                                    <TextField source="unit" label="table.field.deliveryItem.unit" />
+                                    <NumberField source="anfme" label="table.field.deliveryItem.anfme" />
+                                    <TextField source="splrName" label="table.field.deliveryItem.splrName" />
+                                    <TextField source="splrBatch" label="table.field.deliveryItem.splrBatch" />
+                                    <TextField source="updateBy$" label="common.field.updateBy" />
+                                    <DateField source="updateTime" label="common.field.updateTime" showTime />
+                                    <TextField source="createBy$" label="common.field.createBy" />
+                                    <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} />
+                                </StyledDatagrid>
+                            </Box>
                         </List>
                     </Grid>
                 </DialogContent>
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java
index 64afeec..1168c07 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java
@@ -61,8 +61,8 @@
         BaseParam baseParam = buildParam(map, BaseParam.class);
         PageParam<AsnOrder, BaseParam> pageParam = new PageParam<>(baseParam, AsnOrder.class);
         QueryWrapper<AsnOrder> queryWrapper = pageParam.buildWrapper(true);
-        List<String> asList = Arrays.asList(OrderType.ORDER_OUT.type);
-        queryWrapper.notIn("type", asList);
+//        List<String> asList = Arrays.asList(OrderType.ORDER_OUT.type);
+//        queryWrapper.notIn("type", asList);
         return R.ok().add(asnOrderService.page(pageParam, queryWrapper));
     }
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeliveryController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeliveryController.java
index 6d2c9a9..111d74b 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeliveryController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeliveryController.java
@@ -7,6 +7,7 @@
 import com.vincent.rsf.framework.common.Cools;
 import com.vincent.rsf.framework.common.R;
 import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.server.common.exception.BusinessException;
 import com.vincent.rsf.server.common.utils.ExcelUtil;
 import com.vincent.rsf.server.common.annotation.OperationLog;
 import com.vincent.rsf.server.common.domain.BaseParam;
@@ -15,6 +16,7 @@
 import com.vincent.rsf.server.manager.entity.Delivery;
 import com.vincent.rsf.server.manager.entity.DeliveryItem;
 import com.vincent.rsf.server.manager.entity.excel.DeliveryTemplate;
+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.service.CompanysService;
@@ -110,10 +112,11 @@
     @OperationLog("Delete 缁煎悎鍗曟嵁鏄庣粏")
     @PostMapping("/delivery/remove/{ids}")
     public R remove(@PathVariable Long[] ids) {
-        if (!deliveryService.removeByIds(Arrays.asList(ids))) {
-            return R.error("Delete Fail");
+        List<Long> list = Arrays.asList(ids);
+        if (list.isEmpty()) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
-        return R.ok("Delete Success").add(ids);
+        return R.ok("鎿嶄綔鎴愬姛").add(deliveryService.removeDo(list));
     }
 
     @PreAuthorize("hasAuthority('manager:delivery:list')")
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 8a4f749..7427f7c 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
@@ -3,6 +3,7 @@
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.vincent.rsf.framework.common.Cools;
 import com.vincent.rsf.framework.common.R;
@@ -47,7 +48,10 @@
     public R page(@RequestBody Map<String, Object> map) {
         BaseParam baseParam = buildParam(map, BaseParam.class);
         PageParam<AsnOrder, BaseParam> pageParam = new PageParam<>(baseParam, AsnOrder.class);
-        return R.ok().add(outStockService.page(pageParam, pageParam.buildWrapper(true)));
+        QueryWrapper<AsnOrder> queryWrapper = pageParam.buildWrapper(true);
+        List<String> list = Arrays.asList(OrderType.ORDER_IN.type);
+        queryWrapper.in("type", list);
+        return R.ok().add(outStockService.page(pageParam, queryWrapper));
     }
 
     @PreAuthorize("hasAuthority('manager:outStock:list')")
@@ -194,7 +198,7 @@
             return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
         List<Long> ids = (List<Long>) params.get("ids");
-        return outStockService.genOutStock(ids);
+        return outStockService.genOutStock(ids, getLoginUserId());
     }
 
     @PreAuthorize("hasAuthority('manager:outStock:update')")
@@ -227,8 +231,4 @@
         }
         return outStockService.updateOrderItem(params, getLoginUserId());
     }
-
-
-
-
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeliveryItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeliveryItem.java
index 6c518f5..428a36c 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeliveryItem.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeliveryItem.java
@@ -44,8 +44,18 @@
     @ApiModelProperty(value= "涓诲崟鏍囪瘑")
     private Long deliveryId;
 
+
     @ApiModelProperty("涓诲崟缂栫爜")
     private String deliveryCode;
+
+    @ApiModelProperty("瀹㈡埛璁㈠崟鍙�")
+    private String platOrderCode;
+
+    @ApiModelProperty("宸ュ崟鍙�")
+    private String platWorkCode;
+
+    @ApiModelProperty("椤圭洰鍙�")
+    private String projectCode;
 
     /**
      * erp鏄庣粏鏍囪瘑
@@ -90,6 +100,12 @@
     private Double anfme;
 
     /**
+     * 鎵ц鏁伴噺
+     */
+    @ApiModelProperty(value= "鎵ц鏁伴噺")
+    private Double workQty;
+
+    /**
      * 宸插嚭鏁伴噺
      */
     @ApiModelProperty(value= "宸插嚭鏁伴噺")
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 e65d7ce..37cac19 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
@@ -24,10 +24,10 @@
 //    PO_EXCE_STATUS_ALL_DONE("3", "宸插畬鎴�"),
 
 
-    OUT_STOCK_STATUS_TASK_INIT("11", "鍒濆鍖�"),
-    OUT_STOCK_STATUS_TASK_EXCE("12", "寰呭鐞�"),
-    OUT_STOCK_STATUS_TASK_WAVE("13", "鐢熸垚娉㈡"),
-    OUT_STOCK_STATUS_TASK_WORKING("14", "浣滀笟涓�")
+    OUT_STOCK_STATUS_TASK_INIT("10", "鍒濆鍖�"),
+    OUT_STOCK_STATUS_TASK_EXCE("11", "寰呭鐞�"),
+    OUT_STOCK_STATUS_TASK_WAVE("12", "鐢熸垚娉㈡"),
+    OUT_STOCK_STATUS_TASK_WORKING("13", "浣滀笟涓�")
     ;
     AsnExceStatus(String val, String desc) {
         this.val = Short.parseShort(val);
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/DeliveryService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/DeliveryService.java
index e52b4e0..2fced99 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/DeliveryService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/DeliveryService.java
@@ -3,6 +3,9 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.vincent.rsf.server.manager.entity.Delivery;
 
+import java.util.List;
+
 public interface DeliveryService extends IService<Delivery> {
 
+    Delivery removeDo(List<Long> list);
 }
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 e33856f..b1225fb 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
@@ -3,17 +3,15 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.vincent.rsf.framework.common.R;
 import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams;
-import com.vincent.rsf.server.manager.controller.params.BatchUpdateParam;
 import com.vincent.rsf.server.manager.entity.AsnOrder;
 
 import java.util.List;
-import java.util.Map;
 
 public interface OutStockService extends IService<AsnOrder> {
 
     R cancelOutOrder(String id);
 
-    R genOutStock(List<Long> ids);
+    R genOutStock(List<Long> ids, Long loginUserId);
 
     R generateWaves(List<Long> ids);
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeliveryServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeliveryServiceImpl.java
index 2147d90..b34fdcb 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeliveryServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeliveryServiceImpl.java
@@ -1,12 +1,45 @@
 package com.vincent.rsf.server.manager.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.server.common.exception.BusinessException;
+import com.vincent.rsf.server.manager.enums.AsnExceStatus;
 import com.vincent.rsf.server.manager.mapper.DeliveryMapper;
 import com.vincent.rsf.server.manager.entity.Delivery;
+import com.vincent.rsf.server.manager.service.DeliveryItemService;
 import com.vincent.rsf.server.manager.service.DeliveryService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 @Service("deliveryService")
 public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> implements DeliveryService {
 
+    @Autowired
+    private DeliveryItemService deliveryItemService;
+
+
+    @Override
+    public Delivery removeDo(List<Long> list) {
+        List<Delivery> deliveries = this.list(new LambdaQueryWrapper<Delivery>().eq(Delivery::getId, list));
+        if (deliveries.isEmpty()) {
+            throw new BusinessException("鏁版嵁閿欒锛氬崟鎹俊鎭笉瀛樺湪锛侊紒");
+        }
+        deliveries.forEach(delivery -> {
+            if (delivery.getExceStatus().equals(AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val)){
+                if (!this.removeById(delivery.getId())) {
+                    throw new CoolException("涓诲崟鍒犻櫎澶辫触锛侊紒");
+                }
+                if (!deliveryItemService.removeById(delivery.getId())) {
+                    throw new CoolException("鍗曟嵁鏄庣粏鍒犻櫎澶辫触锛�1");
+                }
+            } else {
+                throw new CoolException("鍗曟嵁宸叉墽琛岋紝涓嶅彲鎵ц鍒犻櫎鎿嶄綔锛侊紒");
+            }
+        });
+
+        return null;
+    }
 }
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 0b6967a..0137b40 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
@@ -10,6 +10,7 @@
 import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams;
 import com.vincent.rsf.server.manager.entity.*;
 import com.vincent.rsf.server.manager.enums.AsnExceStatus;
+import com.vincent.rsf.server.manager.enums.POExceStatus;
 import com.vincent.rsf.server.manager.enums.WaveExceStatus;
 import com.vincent.rsf.server.manager.mapper.AsnOrderMapper;
 import com.vincent.rsf.server.manager.service.*;
@@ -61,7 +62,7 @@
      * @time 2025/4/7 13:28
      */
     @Transactional(rollbackFor = Exception.class)
-    private void svaeOrUpdateOrderItem(AsnOrderAndItemsParams params, Long loginUserId) throws Exception {
+    public void svaeOrUpdateOrderItem(AsnOrderAndItemsParams params, Long loginUserId) throws Exception {
         AsnOrder orders = params.getOrders();
         params.getItems().forEach(item -> {
             item.put("asnId", orders.getId());
@@ -114,6 +115,7 @@
 
     /**
      * @param
+     * @param loginUserId
      * @return
      * @author Ryan
      * @description 閫氳繃DO鍗曠敓鎴愬嚭搴撳崟
@@ -121,7 +123,7 @@
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public R genOutStock(List<Long> ids) {
+    public R genOutStock(List<Long> ids, Long loginUserId) {
         if (Objects.isNull(ids) || ids.isEmpty()) {
             throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
@@ -143,9 +145,13 @@
                 throw new CoolException("缂栫爜瑙勫垯閿欒锛氳妫�鏌� 銆孲YS_OUT_STOCK_CODE銆嶇紪鐮佹槸鍚﹁缃垚鍔�");
             }
             order.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val)
+                    .setType(delivery.getType())
+                    .setWkType(delivery.getWkType())
                     .setCode(ruleCode)
                     .setPoId(delivery.getId())
                     .setId(null)
+                    .setUpdateBy(loginUserId)
+                    .setCreateBy(loginUserId)
                     .setPoCode(delivery.getCode());
             if (!this.save(order)) {
                 throw new CoolException("涓诲崟淇濆瓨澶辫触锛侊紒");
@@ -161,12 +167,25 @@
                         .setFieldsIndex(item.getFieldsIndex())
                         .setAsnId(order.getId())
                         .setAsnCode(order.getCode())
+                        .setStockUnit(item.getUnit())
+                        .setPurUnit(item.getUnit())
+                        .setPlatWorkCode(item.getPlatWorkCode())
+                        .setPlatOrderCode(item.getPlatOrderCode())
+                        .setProjectCode(item.getProjectCode())
                         .setPlatItemId(item.getPlatItemId())
+                        .setUpdateBy(loginUserId)
+                        .setCreateBy(loginUserId)
                         .setPoDetlId(item.getId());
                 orderItems.add(orderItem);
+
+                if (!deliveryItemService.update(new LambdaUpdateWrapper<DeliveryItem>()
+                        .set(DeliveryItem::getWorkQty, item.getAnfme())
+                        .eq(DeliveryItem::getId, item.getId()))) {
+                    throw new CoolException("DO鍗曟槑缁嗕慨鏀瑰け璐ワ紒锛�");
+                }
             });
 
-            double sum = orderItems.stream().mapToDouble(AsnOrderItem::getAnfme).sum();
+            Double sum = orderItems.stream().mapToDouble(AsnOrderItem::getAnfme).sum();
             //淇敼璁″垝鏁伴噺
             order.setAnfme(sum);
             if (!this.saveOrUpdate(order)) {
@@ -175,6 +194,14 @@
             if (!asnOrderItemService.saveBatch(orderItems)) {
                 throw new CoolException("鏄庣粏淇濆瓨澶辫触锛侊紒");
             }
+
+            if (!deliveryService.update(new LambdaUpdateWrapper<Delivery>()
+                    .set(Delivery::getExceStatus, POExceStatus.PO_EXCE_STATUS_EXCE_ING.val)
+                    .set(Delivery::getWorkQty, sum)
+                    .eq(Delivery::getId, key))) {
+                throw new CoolException("涓诲崟淇敼澶辫触锛侊紒");
+            }
+
         });
         return R.ok();
     }
diff --git a/rsf-server/src/main/resources/mapper/manager/AsnOrderItemMapper.xml b/rsf-server/src/main/resources/mapper/manager/AsnOrderItemMapper.xml
index aff2017..1d4294c 100644
--- a/rsf-server/src/main/resources/mapper/manager/AsnOrderItemMapper.xml
+++ b/rsf-server/src/main/resources/mapper/manager/AsnOrderItemMapper.xml
@@ -13,6 +13,7 @@
                     aoi.asn_code,
                     aoi.plat_item_id,
                     aoi.po_detl_id,
+                    aoi.plat_work_code,
                     aoi.po_code,
                     aoi.fields_index,
                     aoi.matnr_id,
@@ -21,6 +22,7 @@
                     aoi.anfme,
                     aoi.stock_unit,
                     aoi.pur_qty,
+                    aoi.work_qty,
                     aoi.pur_unit,
                     aoi.prod_time,
                     aoi.qty,
@@ -72,6 +74,7 @@
                     aoi.asn_id,
                     aoi.asn_code,
                     aoi.plat_item_id,
+                    aoi.plat_work_code,
                     aoi.po_detl_id,
                     aoi.po_code,
                     aoi.fields_index,
@@ -80,6 +83,7 @@
                     aoi.maktx,
                     aoi.anfme,
                     aoi.stock_unit,
+                    aoi.work_qty,
                     aoi.pur_qty,
                     aoi.pur_unit,
                     aoi.prod_time,

--
Gitblit v1.9.1