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