From 1e1e6c33558f00634d874232efab87a3734d132c Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期六, 07 六月 2025 08:45:31 +0800
Subject: [PATCH] 下发执行功能

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java |    4 
 rsf-admin/src/page/orders/outStock/OutOrderModal.jsx                                          |    2 
 rsf-admin/src/page/orders/outStock/OutStockPublic.jsx                                         |  108 +++++++++++++++++++++++++++++++++++
 rsf-admin/src/i18n/zh.js                                                                      |    4 
 rsf-admin/src/page/orders/outStock/OutOrderList.jsx                                           |    9 ++-
 5 files changed, 118 insertions(+), 9 deletions(-)

diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js
index 5efaec7..9543a7f 100644
--- a/rsf-admin/src/i18n/zh.js
+++ b/rsf-admin/src/i18n/zh.js
@@ -613,8 +613,8 @@
             },
             outStock: {
                 code: "鍑哄簱鍗曞彿",
-                poCode: "骞冲彴鍗曞彿",
-                poId: "PO鏍囪瘑",
+                poCode: "DO鍗曞彿",
+                poId: "DO鏍囪瘑",
                 type: "绫诲瀷",
                 wkType: "涓氬姟绫诲瀷",
                 anfme: "鏁伴噺",
diff --git a/rsf-admin/src/page/orders/outStock/OutOrderList.jsx b/rsf-admin/src/page/orders/outStock/OutOrderList.jsx
index 2f63b73..e9906a6 100644
--- a/rsf-admin/src/page/orders/outStock/OutOrderList.jsx
+++ b/rsf-admin/src/page/orders/outStock/OutOrderList.jsx
@@ -55,6 +55,7 @@
 import SelectMatnrModal from "./SelectMatnrModal";
 import AddTaskIcon from '@mui/icons-material/AddTask';
 import PageEditDrawer from "../../components/PageEditDrawer";
+import OutStockPublic from "./OutStockPublic";
 
 const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
   '& .css-1vooibu-MuiSvgIcon-root': {
@@ -155,6 +156,7 @@
         >
           <NumberField source="id" />
           <TextField source="code" label="table.field.outStock.code" />
+          <TextField source="poCode" label="table.field.outStock.poCode" />
           <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" />
@@ -172,7 +174,7 @@
             <MyButton setCreateDialog={setManualDialog} setmodalType={setmodalType} />
             <EditButton label="toolbar.detail" icon={(<DetailsIcon />)}></EditButton>
             <CancelButton />
-            <PublicButton setDrawerVal={setDrawerVal} drawerVal={drawerVal} />
+            <PublicButton setDrawerVal={setDrawerVal} drawerVal={drawerVal} setSelect={setSelect} />
           </WrapperField>
         </StyledDatagrid>
       </List>
@@ -195,7 +197,7 @@
         drawerVal={drawerVal}
         setDrawerVal={setDrawerVal}
       >
-        
+        <OutStockPublic record={select} />
       </PageEditDrawer>
     </Box >
   )
@@ -286,11 +288,12 @@
 }
 
 //涓嬪彂鎵ц
-const PublicButton = ({ setDrawerVal }) => {
+const PublicButton = ({ setDrawerVal, setSelect }) => {
   const record = useRecordContext();
   const refresh = useRefresh();
   const taskEvent = () => {
     setDrawerVal(true)
+    setSelect(record)
     refresh();
   }
 
diff --git a/rsf-admin/src/page/orders/outStock/OutOrderModal.jsx b/rsf-admin/src/page/orders/outStock/OutOrderModal.jsx
index 6294ca5..ba39f27 100644
--- a/rsf-admin/src/page/orders/outStock/OutOrderModal.jsx
+++ b/rsf-admin/src/page/orders/outStock/OutOrderModal.jsx
@@ -104,7 +104,7 @@
         }
     };
     const CustomFilter = () => {
-        const { filterValues, setFilters, refetch } = useListContext('deliveryItem');
+        const { filterValues, setFilters, refetch } = useListContext();
         const [formValues, setFormValues] = useState(filterValues);
         const handleChange = (event) => {
             if (event.target == undefined || event.target == null) { return }
diff --git a/rsf-admin/src/page/orders/outStock/OutStockPublic.jsx b/rsf-admin/src/page/orders/outStock/OutStockPublic.jsx
index 6a4a626..c2c399a 100644
--- a/rsf-admin/src/page/orders/outStock/OutStockPublic.jsx
+++ b/rsf-admin/src/page/orders/outStock/OutStockPublic.jsx
@@ -1,3 +1,4 @@
+import { Box, Card, Grid, LinearProgress } from "@mui/material";
 import React, { useState, useRef, useEffect, useMemo } from "react";
 import {
     List,
@@ -37,15 +38,120 @@
     SaveButton,
     useRefresh,
     useGetList,
+    useGetOne,
 } from 'react-admin';
+import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE, DEFAULT_ITEM_PAGE_SIZE } from '@/config/setting';
+import { styled } from '@mui/material/styles';
+import { DataGrid } from '@mui/x-data-grid';
+
+const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
+    '& .css-1vooibu-MuiSvgIcon-root': {
+        height: '.9em'
+    },
+    '& .RaDatagrid-row': {
+        cursor: 'auto'
+    },
+}));
+
 
 const OutStockPublic = (props) => {
+    const { record } = props;
 
     return (
         <>
-        
+            <Box>
+                <Grid sx={{ display: "flex" }} container rowSpacing={2} columnSpacing={2}>
+                    <Grid item xl={6} gap={2} >
+                        <Card>
+                            <List
+                                resource="outStockItem"
+                                storeKey='outStockItem'
+                                sx={{
+                                    flexGrow: 1,
+                                    transition: (theme) =>
+                                        theme.transitions.create(['all'], {
+                                            duration: theme.transitions.duration.enteringScreen,
+                                        }),
+                                }}
+                                title={"menu.outStockItem"}
+                                empty={false}
+                                filter={{ asnId: record?.id, deleted: 0 }}
+                                sort={{ field: "create_time", order: "desc" }}
+                                actions={false}
+                                perPage={DEFAULT_ITEM_PAGE_SIZE}
+                            >
+                                <LinearProgress
+                                    sx={{ height: "2px", position: 'absolute', top: 0, left: 0, right: 0, }}
+                                />
+                                <StyledDatagrid
+                                    preferenceKey='outStockItem'
+                                    bulkActionButtons={false}
+                                    rowClick={false}
+                                    omit={['id', 'splrName', 'qty']}
+                                >
+                                    <NumberField source="id" />
+                                    <TextField source="asnCode" label="table.field.outStockItem.asnCode" />
+                                    <TextField source="poCode" label="table.field.outStockItem.poCode" />
+                                    <TextField source="matnrCode" label="table.field.outStockItem.matnrCode" />
+                                    <TextField source="maktx" label="table.field.outStockItem.maktx" />
+                                    <NumberField source="anfme" label="table.field.outStockItem.anfme" />
+                                    <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="splrName" label="table.field.outStockItem.splrName" />
+                                </StyledDatagrid>
+                            </List>
+                        </Card>
+                    </Grid>
+                    <Grid item xl={6} gap={2}>
+                        <Card>
+                            <Box>
+                                <DataGrid
+                                    rows={rows}
+                                    columns={columns}
+                                    initialState={{
+                                        pagination: {
+                                            paginationModel: {
+                                                pageSize: 15,
+                                            },
+                                        },
+                                    }}
+                                    pageSizeOptions={[15, 25, 35, 45]}
+                                    disableRowSelectionOnClick
+                                />
+                            </Box>
+                        </Card>
+                    </Grid>
+                </Grid>
+            </Box>
         </>
     );
 }
 
+
+const rows = [
+    { id: 1, locCode: '03-02-1-2-1', container: 'Snow', batch: 'Jon', curQty: 14 },
+    { id: 2, locCode: '03-02-1-2-1', container: 'Lannister', batch: 'Cersei', curQty: 31 },
+    { id: 3, locCode: '03-02-1-2-1', container: 'Lannister', batch: 'Jaime', curQty: 31 },
+    { id: 4, locCode: '03-02-1-2-1', container: 'Stark', batch: 'Arya', curQty: 11 },
+    { id: 5, locCode: '03-02-1-2-1', container: 'Targaryen', batch: 'Daenerys', curQty: null },
+    { id: 6, locCode: '03-02-1-2-1', container: 'Melisandre', batch: null, curQty: 150 },
+    { id: 7, locCode: '03-02-1-2-1', container: 'Clifford', batch: 'Ferrara', curQty: 44 },
+    { id: 8, locCode: '03-02-1-2-1', container: 'Frances', batch: 'Rossini', curQty: 36 },
+    { id: 9, locCode: '03-02-1-2-1', container: 'Roxie', batch: 'Harvey', curQty: 65 },
+]
+
+const columns = [
+    { field: 'id', headerName: 'ID', width: 40 },
+    { field: 'locCode', headerName: '搴撲綅', width: 110 },
+    { field: 'container', headerName: '瀹瑰櫒', width: 120 },
+    { field: 'batch', headerName: '鎵规', width: 90 },
+    { field: 'unit', headerName: '鍗曚綅', width: 90 },
+    { field: 'curQty', headerName: '鏈鍑哄簱鏁伴噺', width: 110 },
+    { field: 'siteNo', headerName: '鍑哄簱鍙�', width: 90 }, ``
+]
+
+
 export default OutStockPublic;
+
+
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 d0e8a20..1b104a7 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
@@ -162,7 +162,6 @@
         }
         Map<Long, List<DeliveryItem>> listMap = items.stream().collect(Collectors.groupingBy(DeliveryItem::getDeliveryId));
         listMap.keySet().forEach(key -> {
-            //TODO 鍒ゆ柇鍗曟嵁鏄惁宸茬粡瀛樺湪锛屽瀛樺湪鍒欑疮鍔犱慨鏀瑰瓙琛紝涓嶅瓨鍦ㄦ墠鏂板缓
             Delivery delivery = deliveryService.getById(key);
             if (Objects.isNull(delivery)) {
                 throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
@@ -232,9 +231,10 @@
                 exceStatus = AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val;
             }
 
+            Double wkQty = Math.round((delivery.getWorkQty() + sum) * 10000) / 10000.0;
             if (!deliveryService.update(new LambdaUpdateWrapper<Delivery>()
                     .set(Delivery::getExceStatus, exceStatus)
-                    .set(Delivery::getWorkQty, sum)
+                    .set(Delivery::getWorkQty, wkQty)
                     .eq(Delivery::getId, key))) {
                 throw new CoolException("涓诲崟淇敼澶辫触锛侊紒");
             }

--
Gitblit v1.9.1