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