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