From c1b649d515870d3fb1fb9c8291806d4b97faf914 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期三, 16 四月 2025 18:00:19 +0800
Subject: [PATCH] 1.添加接口拦截器 2.
---
/dev/null | 18 ------
rsf-admin/src/page/orders/stock/OrderList.jsx | 2
rsf-server/src/main/java/com/vincent/rsf/server/common/config/WebMvcConfig.java | 16 +++++
rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx | 16 +++--
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java | 15 +++++
rsf-admin/src/page/orders/asnOrder/AsnOrderItemEdit.jsx | 14 +---
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java | 3 +
rsf-admin/src/i18n/zh.js | 14 ++--
rsf-admin/src/page/basicInfo/matnr/MatnrList.jsx | 1
rsf-server/src/main/java/com/vincent/rsf/server/common/interceptor/DynamicFieldsInterceptor.java | 35 +++++++++++
rsf-admin/src/page/orders/stock/OrderEdit.jsx | 18 ++++--
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/CompanysType.java | 25 ++++++++
12 files changed, 127 insertions(+), 50 deletions(-)
diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js
index ee7f63e..32fb483 100644
--- a/rsf-admin/src/i18n/zh.js
+++ b/rsf-admin/src/i18n/zh.js
@@ -533,25 +533,25 @@
asnOrderItem: {
asnId: "涓诲崟鏍囪瘑",
asnCode: "涓诲崟缂栫爜",
- poDetlId: "PO鍗曟爣璇�",
- poDetlCode: "PO鍗曠紪鐮�",
+ poDetlId: "PO鍗旾D",
+ poDetlCode: "PO鍗�",
matnrId: "鐗╂枡鏍囪瘑",
maktx: "鐗╂枡鍚嶇О",
matnrCode: "鐗╂枡缂栫爜",
- anfme: "璁″垝鏀惰揣鏁伴噺",
+ anfme: "璁″垝鏀惰揣鏁�",
stockUnit: "搴撳瓨鍗曚綅",
- purQty: "閲囪喘鏁伴噺",
+ purQty: "閲囪喘閲�",
purUnit: "閲囪喘鍗曚綅",
- qty: "宸插畬鎴愭暟閲�",
+ qty: "瀹屾垚鏁伴噺",
splrBatch: "渚涘簲鍟嗘壒娆�",
splrCode: "渚涘簲鍟嗙紪鐮�",
splrName: "渚涘簲鍟嗗悕绉�",
qrcode: "浜岀淮鐮�",
barcode: "鏉″舰鐮�",
- packName: "鍖呰鍚嶇О",
+ packName: "鍖呰",
ntyStatus: "鎶ユ鐘舵��",
prodTime: "鐢熶骇鏃ユ湡",
- platItemId: 'PO鍗曞彿'
+ platItemId: '琛屽彿'
},
asnOrderLog: {
code: "缂栫爜",
diff --git a/rsf-admin/src/page/basicInfo/matnr/MatnrList.jsx b/rsf-admin/src/page/basicInfo/matnr/MatnrList.jsx
index 7fec209..8aad86d 100644
--- a/rsf-admin/src/page/basicInfo/matnr/MatnrList.jsx
+++ b/rsf-admin/src/page/basicInfo/matnr/MatnrList.jsx
@@ -264,7 +264,6 @@
const MatnrList = () => {
const translate = useTranslate();
-
const [createDialog, setCreateDialog] = useState(false);
const [drawerVal, setDrawerVal] = useState(false);
const notify = useNotify();
diff --git a/rsf-admin/src/page/orderItem/OrderItemCreate.jsx b/rsf-admin/src/page/orderItem/OrderItemCreate.jsx
deleted file mode 100644
index 71904b9..0000000
--- a/rsf-admin/src/page/orderItem/OrderItemCreate.jsx
+++ /dev/null
@@ -1,249 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import {
- CreateBase,
- useTranslate,
- TextInput,
- NumberInput,
- BooleanInput,
- DateInput,
- SaveButton,
- SelectInput,
- ReferenceInput,
- ReferenceArrayInput,
- AutocompleteInput,
- Toolbar,
- required,
- useDataProvider,
- useNotify,
- Form,
- useCreateController,
-} from 'react-admin';
-import {
- Dialog,
- DialogActions,
- DialogContent,
- DialogTitle,
- Stack,
- Grid,
- Box,
-} from '@mui/material';
-import DialogCloseButton from "../components/DialogCloseButton";
-import StatusSelectInput from "../components/StatusSelectInput";
-import MemoInput from "../components/MemoInput";
-
-const OrderItemCreate = (props) => {
- const { open, setOpen } = props;
-
- const translate = useTranslate();
- const notify = useNotify();
-
- const handleClose = (event, reason) => {
- if (reason !== "backdropClick") {
- setOpen(false);
- }
- };
-
- const handleSuccess = async (data) => {
- setOpen(false);
- notify('common.response.success');
- };
-
- const handleError = async (error) => {
- notify(error.message || 'common.response.fail', { type: 'error', messageArgs: { _: error.message } });
- };
-
- return (
- <>
- <CreateBase
- record={{}}
- transform={(data) => {
- return data;
- }}
- mutationOptions={{ onSuccess: handleSuccess, onError: handleError }}
- >
- <Dialog
- open={open}
- onClose={handleClose}
- aria-labelledby="form-dialog-title"
- fullWidth
- disableRestoreFocus
- maxWidth="md" // 'xs' | 'sm' | 'md' | 'lg' | 'xl'
- >
- <Form>
- <DialogTitle id="form-dialog-title" sx={{
- position: 'sticky',
- top: 0,
- backgroundColor: 'background.paper',
- zIndex: 1000
- }}
- >
- {translate('create.title')}
- <Box sx={{ position: 'absolute', top: 8, right: 8, zIndex: 1001 }}>
- <DialogCloseButton onClose={handleClose} />
- </Box>
- </DialogTitle>
- <DialogContent sx={{ mt: 2 }}>
- <Grid container rowSpacing={2} columnSpacing={2}>
- <Grid item xs={6} display="flex" gap={1}>
- <NumberInput
- label="table.field.orderItem.orderId"
- source="orderId"
- autoFocus
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.orderItem.orderCode"
- source="orderCode"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.orderItem.sourceItemId"
- source="sourceItemId"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.orderItem.matnrId"
- source="matnrId"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.orderItem.matnrCode"
- source="matnrCode"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.orderItem.maktx"
- source="maktx"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <NumberInput
- label="table.field.orderItem.anfme"
- source="anfme"
- validate={required()}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.orderItem.stockUnit"
- source="stockUnit"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <NumberInput
- label="table.field.orderItem.workQty"
- source="workQty"
- validate={required()}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <NumberInput
- label="table.field.orderItem.purQty"
- source="purQty"
- validate={required()}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.orderItem.purUnit"
- source="purUnit"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <NumberInput
- label="table.field.orderItem.qty"
- source="qty"
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.orderItem.splrCode"
- source="splrCode"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.orderItem.batch"
- source="batch"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.orderItem.splrBatch"
- source="splrBatch"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.orderItem.splrName"
- source="splrName"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.orderItem.trackCode"
- source="trackCode"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.orderItem.barcode"
- source="barcode"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.orderItem.prodTime"
- source="prodTime"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.orderItem.packName"
- source="packName"
- parse={v => v}
- />
- </Grid>
-
- <Grid item xs={6} display="flex" gap={1}>
- <StatusSelectInput />
- </Grid>
- <Grid item xs={12} display="flex" gap={1}>
- <Stack direction="column" spacing={1} width={'100%'}>
- <MemoInput />
- </Stack>
- </Grid>
- </Grid>
- </DialogContent>
- <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}>
- <Toolbar sx={{ width: '100%', justifyContent: 'space-between' }} >
- <SaveButton />
- </Toolbar>
- </DialogActions>
- </Form>
- </Dialog>
- </CreateBase>
- </>
- )
-}
-
-export default OrderItemCreate;
diff --git a/rsf-admin/src/page/orderItem/OrderItemEdit.jsx b/rsf-admin/src/page/orderItem/OrderItemEdit.jsx
deleted file mode 100644
index 2133716..0000000
--- a/rsf-admin/src/page/orderItem/OrderItemEdit.jsx
+++ /dev/null
@@ -1,221 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import {
- Edit,
- SimpleForm,
- FormDataConsumer,
- useTranslate,
- TextInput,
- NumberInput,
- BooleanInput,
- DateInput,
- SelectInput,
- ReferenceInput,
- ReferenceArrayInput,
- AutocompleteInput,
- SaveButton,
- Toolbar,
- Labeled,
- NumberField,
- required,
- useRecordContext,
- DeleteButton,
-} from 'react-admin';
-import { useWatch, useFormContext } from "react-hook-form";
-import { Stack, Grid, Box, Typography } from '@mui/material';
-import * as Common from '@/utils/common';
-import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting';
-import EditBaseAside from "../components/EditBaseAside";
-import CustomerTopToolBar from "../components/EditTopToolBar";
-import MemoInput from "../components/MemoInput";
-import StatusSelectInput from "../components/StatusSelectInput";
-
-const FormToolbar = () => {
- const { getValues } = useFormContext();
-
- return (
- <Toolbar sx={{ justifyContent: 'space-between' }}>
- <SaveButton />
- <DeleteButton mutationMode="optimistic" />
- </Toolbar>
- )
-}
-
-const OrderItemEdit = () => {
- const translate = useTranslate();
-
- return (
- <Edit
- redirect="list"
- mutationMode={EDIT_MODE}
- actions={<CustomerTopToolBar />}
- aside={<EditBaseAside />}
- >
- <SimpleForm
- shouldUnregister
- warnWhenUnsavedChanges
- toolbar={<FormToolbar />}
- mode="onTouched"
- defaultValues={{}}
- // validate={(values) => { }}
- >
- <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={3} columnSpacing={3}>
- <Grid item xs={12} md={8}>
- <Typography variant="h6" gutterBottom>
- {translate('common.edit.title.main')}
- </Typography>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.orderItem.orderId"
- source="orderId"
- autoFocus
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.orderItem.orderCode"
- source="orderCode"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.orderItem.sourceItemId"
- source="sourceItemId"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.orderItem.matnrId"
- source="matnrId"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.orderItem.matnrCode"
- source="matnrCode"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.orderItem.maktx"
- source="maktx"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.orderItem.anfme"
- source="anfme"
- validate={required()}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.orderItem.stockUnit"
- source="stockUnit"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.orderItem.workQty"
- source="workQty"
- validate={required()}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.orderItem.purQty"
- source="purQty"
- validate={required()}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.orderItem.purUnit"
- source="purUnit"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.orderItem.qty"
- source="qty"
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.orderItem.splrCode"
- source="splrCode"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.orderItem.batch"
- source="batch"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.orderItem.splrBatch"
- source="splrBatch"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.orderItem.splrName"
- source="splrName"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.orderItem.trackCode"
- source="trackCode"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.orderItem.barcode"
- source="barcode"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.orderItem.prodTime"
- source="prodTime"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.orderItem.packName"
- source="packName"
- parse={v => v}
- />
- </Stack>
-
- </Grid>
- <Grid item xs={12} md={4}>
- <Typography variant="h6" gutterBottom>
- {translate('common.edit.title.common')}
- </Typography>
- <StatusSelectInput />
- <Box mt="2em" />
- <MemoInput />
- </Grid>
- </Grid>
- </SimpleForm>
- </Edit >
- )
-}
-
-export default OrderItemEdit;
diff --git a/rsf-admin/src/page/orderItem/OrderItemList.jsx b/rsf-admin/src/page/orderItem/OrderItemList.jsx
deleted file mode 100644
index f90bde9..0000000
--- a/rsf-admin/src/page/orderItem/OrderItemList.jsx
+++ /dev/null
@@ -1,190 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo, useCallback } from "react";
-import { useNavigate } from 'react-router-dom';
-import {
- List,
- DatagridConfigurable,
- SearchInput,
- TopToolbar,
- SelectColumnsButton,
- EditButton,
- FilterButton,
- CreateButton,
- ExportButton,
- BulkDeleteButton,
- WrapperField,
- useRecordContext,
- useTranslate,
- useNotify,
- useListContext,
- FunctionField,
- TextField,
- NumberField,
- DateField,
- BooleanField,
- ReferenceField,
- TextInput,
- DateTimeInput,
- DateInput,
- SelectInput,
- NumberInput,
- ReferenceInput,
- ReferenceArrayInput,
- AutocompleteInput,
- DeleteButton,
-} from 'react-admin';
-import { Box, Typography, Card, Stack } from '@mui/material';
-import { styled } from '@mui/material/styles';
-import OrderItemCreate from "./OrderItemCreate";
-import OrderItemPanel from "./OrderItemPanel";
-import EmptyData from "../components/EmptyData";
-import MyCreateButton from "../components/MyCreateButton";
-import MyExportButton from '../components/MyExportButton';
-import PageDrawer from "../components/PageDrawer";
-import MyField from "../components/MyField";
-import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
-import * as Common from '@/utils/common';
-
-const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
- '& .css-1vooibu-MuiSvgIcon-root': {
- height: '.9em'
- },
- '& .RaDatagrid-row': {
- cursor: 'auto'
- },
- '& .column-name': {
- },
- '& .opt': {
- width: 200
- },
-}));
-
-const filters = [
- <SearchInput source="condition" alwaysOn />,
- <DateInput label='common.time.after' source="timeStart" alwaysOn />,
- <DateInput label='common.time.before' source="timeEnd" alwaysOn />,
-
- <NumberInput source="orderId" label="table.field.orderItem.orderId" />,
- <TextInput source="orderCode" label="table.field.orderItem.orderCode" />,
- <TextInput source="sourceItemId" label="table.field.orderItem.sourceItemId" />,
- <TextInput source="matnrId" label="table.field.orderItem.matnrId" />,
- <TextInput source="matnrCode" label="table.field.orderItem.matnrCode" />,
- <TextInput source="maktx" label="table.field.orderItem.maktx" />,
- <NumberInput source="anfme" label="table.field.orderItem.anfme" />,
- <TextInput source="stockUnit" label="table.field.orderItem.stockUnit" />,
- <NumberInput source="workQty" label="table.field.orderItem.workQty" />,
- <NumberInput source="purQty" label="table.field.orderItem.purQty" />,
- <TextInput source="purUnit" label="table.field.orderItem.purUnit" />,
- <NumberInput source="qty" label="table.field.orderItem.qty" />,
- <TextInput source="splrCode" label="table.field.orderItem.splrCode" />,
- <TextInput source="batch" label="table.field.orderItem.batch" />,
- <TextInput source="splrBatch" label="table.field.orderItem.splrBatch" />,
- <TextInput source="splrName" label="table.field.orderItem.splrName" />,
- <TextInput source="trackCode" label="table.field.orderItem.trackCode" />,
- <TextInput source="barcode" label="table.field.orderItem.barcode" />,
- <TextInput source="prodTime" label="table.field.orderItem.prodTime" />,
- <TextInput source="packName" label="table.field.orderItem.packName" />,
-
- <TextInput label="common.field.memo" source="memo" />,
- <SelectInput
- label="common.field.status"
- source="status"
- choices={[
- { id: '1', name: 'common.enums.statusTrue' },
- { id: '0', name: 'common.enums.statusFalse' },
- ]}
- resettable
- />,
-]
-
-const OrderItemList = () => {
- const translate = useTranslate();
-
- const [createDialog, setCreateDialog] = useState(false);
- const [drawerVal, setDrawerVal] = useState(false);
-
- return (
- <Box display="flex">
- <List
- sx={{
- flexGrow: 1,
- transition: (theme) =>
- theme.transitions.create(['all'], {
- duration: theme.transitions.duration.enteringScreen,
- }),
- marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
- }}
- title={"menu.orderItem"}
- empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
- filters={filters}
- sort={{ field: "create_time", order: "desc" }}
- actions={(
- <TopToolbar>
- <FilterButton />
- <MyCreateButton onClick={() => { setCreateDialog(true) }} />
- <SelectColumnsButton preferenceKey='orderItem' />
- <MyExportButton />
- </TopToolbar>
- )}
- perPage={DEFAULT_PAGE_SIZE}
- >
- <StyledDatagrid
- preferenceKey='orderItem'
- bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
- rowClick={(id, resource, record) => false}
- expand={() => <OrderItemPanel />}
- expandSingle={true}
- omit={['id', 'createTime', 'createBy', 'memo']}
- >
- <NumberField source="id" />
- <NumberField source="orderId" label="table.field.orderItem.orderId" />
- <TextField source="orderCode" label="table.field.orderItem.orderCode" />
- <TextField source="sourceItemId" label="table.field.orderItem.sourceItemId" />
- <TextField source="matnrId" label="table.field.orderItem.matnrId" />
- <TextField source="matnrCode" label="table.field.orderItem.matnrCode" />
- <TextField source="maktx" label="table.field.orderItem.maktx" />
- <NumberField source="anfme" label="table.field.orderItem.anfme" />
- <TextField source="stockUnit" label="table.field.orderItem.stockUnit" />
- <NumberField source="workQty" label="table.field.orderItem.workQty" />
- <NumberField source="purQty" label="table.field.orderItem.purQty" />
- <TextField source="purUnit" label="table.field.orderItem.purUnit" />
- <NumberField source="qty" label="table.field.orderItem.qty" />
- <TextField source="splrCode" label="table.field.orderItem.splrCode" />
- <TextField source="batch" label="table.field.orderItem.batch" />
- <TextField source="splrBatch" label="table.field.orderItem.splrBatch" />
- <TextField source="splrName" label="table.field.orderItem.splrName" />
- <TextField source="trackCode" label="table.field.orderItem.trackCode" />
- <TextField source="barcode" label="table.field.orderItem.barcode" />
- <TextField source="prodTime" label="table.field.orderItem.prodTime" />
- <TextField source="packName" label="table.field.orderItem.packName" />
-
- <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
- <TextField source="nickname" />
- </ReferenceField>
- <DateField source="updateTime" label="common.field.updateTime" showTime />
- <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}>
- <TextField source="nickname" />
- </ReferenceField>
- <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} />
- <WrapperField cellClassName="opt" label="common.field.opt">
- <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
- <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
- </WrapperField>
- </StyledDatagrid>
- </List>
- <OrderItemCreate
- open={createDialog}
- setOpen={setCreateDialog}
- />
- <PageDrawer
- title='OrderItem Detail'
- drawerVal={drawerVal}
- setDrawerVal={setDrawerVal}
- >
- </PageDrawer>
- </Box>
- )
-}
-
-export default OrderItemList;
diff --git a/rsf-admin/src/page/orderItem/OrderItemPanel.jsx b/rsf-admin/src/page/orderItem/OrderItemPanel.jsx
deleted file mode 100644
index 43a4681..0000000
--- a/rsf-admin/src/page/orderItem/OrderItemPanel.jsx
+++ /dev/null
@@ -1,171 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import { Box, Card, CardContent, Grid, Typography, Tooltip } from '@mui/material';
-import {
- useTranslate,
- useRecordContext,
-} from 'react-admin';
-import PanelTypography from "../components/PanelTypography";
-import * as Common from '@/utils/common'
-
-const OrderItemPanel = () => {
- const record = useRecordContext();
- if (!record) return null;
- const translate = useTranslate();
- return (
- <>
- <Card sx={{ width: { xs: 300, sm: 500, md: 600, lg: 800 }, margin: 'auto' }}>
- <CardContent>
- <Grid container spacing={2}>
- <Grid item xs={12} sx={{ display: 'flex', justifyContent: 'space-between' }}>
- <Typography variant="h6" gutterBottom align="left" sx={{
- maxWidth: { xs: '100px', sm: '180px', md: '260px', lg: '360px' },
- whiteSpace: 'nowrap',
- overflow: 'hidden',
- textOverflow: 'ellipsis',
- }}>
- {Common.camelToPascalWithSpaces(translate('table.field.orderItem.id'))}: {record.id}
- </Typography>
- {/* inherit, primary, secondary, textPrimary, textSecondary, error */}
- <Typography variant="h6" gutterBottom align="right" >
- ID: {record.id}
- </Typography>
- </Grid>
- </Grid>
- <Grid container spacing={2}>
- <Grid item xs={12} container alignContent="flex-end">
- <Typography variant="caption" color="textSecondary" sx={{ wordWrap: 'break-word', wordBreak: 'break-all' }}>
- {Common.camelToPascalWithSpaces(translate('common.field.memo'))}:{record.memo}
- </Typography>
- </Grid>
- </Grid>
- <Box height={20}> </Box>
- <Grid container spacing={2}>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.orderItem.orderId"
- property={record.orderId}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.orderItem.orderCode"
- property={record.orderCode}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.orderItem.sourceItemId"
- property={record.sourceItemId}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.orderItem.matnrId"
- property={record.matnrId}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.orderItem.matnrCode"
- property={record.matnrCode}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.orderItem.maktx"
- property={record.maktx}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.orderItem.anfme"
- property={record.anfme}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.orderItem.stockUnit"
- property={record.stockUnit}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.orderItem.workQty"
- property={record.workQty}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.orderItem.purQty"
- property={record.purQty}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.orderItem.purUnit"
- property={record.purUnit}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.orderItem.qty"
- property={record.qty}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.orderItem.splrCode"
- property={record.splrCode}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.orderItem.batch"
- property={record.batch}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.orderItem.splrBatch"
- property={record.splrBatch}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.orderItem.splrName"
- property={record.splrName}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.orderItem.trackCode"
- property={record.trackCode}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.orderItem.barcode"
- property={record.barcode}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.orderItem.prodTime"
- property={record.prodTime}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.orderItem.packName"
- property={record.packName}
- />
- </Grid>
-
- </Grid>
- </CardContent>
- </Card >
- </>
- );
-};
-
-export default OrderItemPanel;
diff --git a/rsf-admin/src/page/orderItem/index.jsx b/rsf-admin/src/page/orderItem/index.jsx
deleted file mode 100644
index 0382eef..0000000
--- a/rsf-admin/src/page/orderItem/index.jsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import {
- ListGuesser,
- EditGuesser,
- ShowGuesser,
-} from "react-admin";
-
-import OrderItemList from "./OrderItemList";
-import OrderItemEdit from "./OrderItemEdit";
-
-export default {
- list: OrderItemList,
- edit: OrderItemEdit,
- show: ShowGuesser,
- recordRepresentation: (record) => {
- return `${record.id}`
- }
-};
diff --git a/rsf-admin/src/page/orders/asnOrder/AsnOrderItemEdit.jsx b/rsf-admin/src/page/orders/asnOrder/AsnOrderItemEdit.jsx
index 1dfd40c..42a5404 100644
--- a/rsf-admin/src/page/orders/asnOrder/AsnOrderItemEdit.jsx
+++ b/rsf-admin/src/page/orders/asnOrder/AsnOrderItemEdit.jsx
@@ -22,6 +22,7 @@
useGetOne,
DeleteButton,
EditBase,
+ ReferenceField,
} from 'react-admin';
import { useWatch, useFormContext } from "react-hook-form";
import { Stack, Grid, Box, Typography, Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material';
@@ -151,18 +152,11 @@
source="qty"
readOnly
/>
- <TextInput
- label="table.field.asnOrderItem.splrCode"
- source="splrCode"
- parse={v => v}
- />
+ <ReferenceInput source="splrName" label="table.field.asnOrderItem.splrName" reference="companys" filter={{type: 'supplier'}}>
+ <AutocompleteInput optionText="name" label="table.field.asnOrderItem.splrName" />
+ </ReferenceInput>
</Stack>
<Stack direction='row' gap={2}>
- <TextInput
- label="table.field.asnOrderItem.splrName"
- source="splrName"
- parse={v => v}
- />
<TextInput
label="table.field.asnOrderItem.qrcode"
source="qrcode"
diff --git a/rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx b/rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx
index ba28903..1a1356a 100644
--- a/rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx
+++ b/rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx
@@ -66,7 +66,10 @@
'& .column-name': {
},
'& .opt': {
- width: 180
+ width: 220
+ },
+ '& .wkType': {
+ width: 110
},
'& .status': {
width: 90
@@ -79,7 +82,7 @@
<TextInput source="poCode" label="table.field.asnOrder.poCode" />,
<NumberInput source="poId" label="table.field.asnOrder.poId" />,
<TextInput source="type" label="table.field.asnOrder.type" />,
- <ReferenceInput source="wkType" reference="dictData" filter={{dictTypeCode: 'sys_business_type'}} label="table.field.asnOrder.wkType">
+ <ReferenceInput source="wkType" reference="dictData" filter={{ dictTypeCode: 'sys_business_type' }} label="table.field.asnOrder.wkType">
<AutocompleteInput label="table.field.asnOrder.wkType" optionValue="value" />
</ReferenceInput>,
<NumberInput source="anfme" label="table.field.asnOrder.anfme" />,
@@ -109,10 +112,8 @@
const [drawerVal, setDrawerVal] = useState(false);
const [modalType, setmodalType] = useState(0);
const [select, setSelect] = useState(0);
-
const billReload = useRef();
const location = useLocation();
- const redirect = useRedirect();
const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_business_type')) || [];
return (
<Box display="flex">
@@ -143,7 +144,7 @@
sx={{ width: '100%' }}
preferenceKey='asnOrder'
bulkActionButtons={<> <InspectionsButton /><BulkDeleteButton mutationMode={OPERATE_MODE} /></>}
- rowClick='edit'
+ rowClick={false}
expandSingle={true}
omit={['id', 'createTime', 'createBy', 'memo', 'poId', 'rleStatus$']}
>
@@ -152,7 +153,7 @@
<TextField source="poCode" label="table.field.asnOrder.poCode" />
<NumberField source="poId" label="table.field.asnOrder.poId" />
<TextField source="type$" label="table.field.asnOrder.type" />
- <TextField source="wkType$" label="table.field.asnOrder.wkType" />
+ <TextField cellClassName="wkType" source="wkType$" label="table.field.asnOrder.wkType" />
<NumberField source="anfme" label="table.field.asnOrder.anfme" />
<NumberField source="qty" label="table.field.asnOrder.qty" />
<TextField source="logisNo" label="table.field.asnOrder.logisNo" />
@@ -164,7 +165,8 @@
<DateField source="createTime" label="common.field.createTime" showTime />
<BillStatusField cellClassName="status" source="exceStatus" label="table.field.asnOrder.exceStatus" />
<TextField source="memo" label="common.field.memo" sortable={false} />
- <WrapperField cellClassName="opt" label="common.field.opt" width={300} >
+ <WrapperField cellClassName="opt" label="common.field.opt" >
+ <EditButton label="toolbar.detail"></EditButton>
<MyButton setCreateDialog={setCreateDialog} setmodalType={setmodalType} />
<InspectionButton />
<CompleteButton />
diff --git a/rsf-admin/src/page/orders/stock/OrderEdit.jsx b/rsf-admin/src/page/orders/stock/OrderEdit.jsx
index e857082..acc0034 100644
--- a/rsf-admin/src/page/orders/stock/OrderEdit.jsx
+++ b/rsf-admin/src/page/orders/stock/OrderEdit.jsx
@@ -39,6 +39,8 @@
const OrderEdit = () => {
const translate = useTranslate();
+ const business = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_business_type')) || [];
+ const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_order_type')) || [];
return (
<Box>
@@ -79,17 +81,21 @@
/>
</Stack>
<Stack direction='row' gap={2}>
- <TextInput
- label="table.field.stock.type"
+ <AutocompleteInput
+ choices={dicts}
+ optionText="label"
+ label="table.field.asnOrder.type"
source="type"
+ optionValue="value"
parse={v => v}
- validate={required()}
/>
- <TextInput
- label="table.field.stock.wkType"
+ <AutocompleteInput
+ choices={business}
+ optionText="label"
+ label="table.field.asnOrder.wkType"
source="wkType"
+ optionValue="value"
parse={v => v}
- validate={required()}
/>
<NumberInput
label="table.field.stock.anfme"
diff --git a/rsf-admin/src/page/orders/stock/OrderList.jsx b/rsf-admin/src/page/orders/stock/OrderList.jsx
index bcf4178..192b56a 100644
--- a/rsf-admin/src/page/orders/stock/OrderList.jsx
+++ b/rsf-admin/src/page/orders/stock/OrderList.jsx
@@ -114,7 +114,7 @@
<StyledDatagrid
preferenceKey='stock'
bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
- rowClick={(id, resource, record) => false}
+ rowClick='edit'
expandSingle={true}
omit={['id', 'createTime', 'createBy', 'memo']}
>
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/config/WebMvcConfig.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/config/WebMvcConfig.java
index ddb8d66..2c74c43 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/common/config/WebMvcConfig.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/config/WebMvcConfig.java
@@ -1,6 +1,7 @@
package com.vincent.rsf.server.common.config;
import com.vincent.rsf.server.common.constant.Constants;
+import com.vincent.rsf.server.common.interceptor.DynamicFieldsInterceptor;
import com.vincent.rsf.server.common.utils.Http;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -27,6 +28,21 @@
registry.addInterceptor(getAsyncHandlerInterceptor())
.addPathPatterns("/**")
.excludePathPatterns("/swagger-resources/**", "/webjars/**","/erp/**", "/v2/**","/v3/**","/doc.html/**", "/swagger-ui.html/**");
+
+ registry.addInterceptor(dynamicFieldsInterceptor())
+ .addPathPatterns("/**")
+ .excludePathPatterns("/swagger-resources/**",
+ "/webjars/**",
+ "/erp/**",
+ "/v2/**",
+ "/v3/**",
+ "/doc.html/**",
+ "/swagger-ui.html/**");
+ }
+
+ @Bean
+ public DynamicFieldsInterceptor dynamicFieldsInterceptor() {
+ return new DynamicFieldsInterceptor();
}
@Bean
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/interceptor/DynamicFieldsInterceptor.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/interceptor/DynamicFieldsInterceptor.java
new file mode 100644
index 0000000..4f29efb
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/interceptor/DynamicFieldsInterceptor.java
@@ -0,0 +1,35 @@
+package com.vincent.rsf.server.common.interceptor;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.servlet.HandlerInterceptor;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * @author Ryan
+ * @version 1.0
+ * @title DynamicFieldsInterceptor
+ * @description
+ * @create 2025/4/16 16:10
+ */
+@Slf4j
+public class DynamicFieldsInterceptor implements HandlerInterceptor {
+
+ @Override
+ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+ return HandlerInterceptor.super.preHandle(request, response, handler);
+ }
+
+ @Override
+ public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
+ HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
+ }
+
+ @Override
+ public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
+ System.out.println(response.getOutputStream().toString());
+ HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
+ }
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java
index 3ca24bd..e8b7059 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java
@@ -14,11 +14,15 @@
import com.vincent.rsf.server.manager.controller.params.BatchUpdateParam;
import com.vincent.rsf.server.manager.entity.AsnOrder;
import com.vincent.rsf.server.manager.entity.AsnOrderItem;
+import com.vincent.rsf.server.manager.entity.Companys;
import com.vincent.rsf.server.manager.entity.excel.AsnOrderTemplate;
+import com.vincent.rsf.server.manager.enums.CompanysType;
import com.vincent.rsf.server.manager.service.AsnOrderItemService;
+import com.vincent.rsf.server.manager.service.CompanysService;
import com.vincent.rsf.server.system.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
@@ -33,6 +37,9 @@
@Autowired
private AsnOrderItemService asnOrderItemService;
+
+ @Autowired
+ private CompanysService companysService;
@PreAuthorize("hasAuthority('manager:asnOrderItem:list')")
@ApiOperation("鍒嗛〉鑾峰彇鍒楄〃")
@@ -84,6 +91,14 @@
public R update(@RequestBody AsnOrderItem asnOrderItem) {
asnOrderItem.setUpdateBy(getLoginUserId());
asnOrderItem.setUpdateTime(new Date());
+ if (!Objects.isNull(asnOrderItem.getSplrName()) && StringUtils.isNotBlank(asnOrderItem.getSplrName())) {
+ Companys companys = companysService.getOne(new LambdaQueryWrapper<Companys>()
+ .eq(Companys::getType, CompanysType.COMPANYS_TYPE_SUPPLIER.val)
+ .eq(Companys::getId, asnOrderItem.getSplrName()));
+ if (!Objects.isNull(companys)) {
+ asnOrderItem.setSplrCode(companys.getCode()).setSplrName(companys.getName());
+ }
+ }
if (!asnOrderItemService.updateById(asnOrderItem)) {
return R.error("Update Fail");
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/CompanysType.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/CompanysType.java
new file mode 100644
index 0000000..e84eafa
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/CompanysType.java
@@ -0,0 +1,25 @@
+package com.vincent.rsf.server.manager.enums;
+
+/**
+ * @author Ryan
+ * @version 1.0
+ * @title CompanysType
+ * @description
+ * @create 2025/4/16 14:53
+ */
+public enum CompanysType {
+ //璐ㄦ鐘舵��
+ COMPANYS_TYPE_SHIPPER("shipper", "璐т富"),
+ COMPANYS_TYPE_CUSTOMER("customer", "瀹㈡埛"),
+ COMPANYS_TYPE_SUPPLIER("supplier", "渚涘簲鍟�"),
+
+ ;
+ CompanysType(String val, String desc) {
+ this.val = val;
+ this.desc = desc;
+ }
+
+ public String val;
+
+ public String desc;
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
index 7687195..41f21f6 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
@@ -184,6 +184,9 @@
if (!this.updateById(waitPakin1)) {
throw new CoolException("缁勬嫋鏁伴噺淇敼澶辫触锛侊紒");
}
+
+ //TODO 缁勬嫋瀹屾垚鍚庯紝鎵e噺鏀惰揣鍖哄簱瀛�
+
return pakin;
}
--
Gitblit v1.9.1