From 669fe984048785873c20fbd0ce8abb3cd52c1fce Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期二, 29 四月 2025 15:22:24 +0800
Subject: [PATCH] 新增出库单优化
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java | 46 ++++++++++++--
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java | 4 -
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/OutStockService.java | 2
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/OutStockController.java | 4
rsf-admin/src/page/orders/outStock/SelectMatnrModal.jsx | 40 ++++++------
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java | 8 --
rsf-admin/src/page/components/DictSelect.jsx | 3
/dev/null | 12 ----
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java | 7 +
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java | 2
rsf-admin/src/i18n/zh.js | 1
rsf-admin/src/i18n/en.js | 34 +++++++++++
rsf-admin/src/page/orders/outStock/MatnrInfoModal.jsx | 8 +-
13 files changed, 107 insertions(+), 64 deletions(-)
diff --git a/rsf-admin/src/i18n/en.js b/rsf-admin/src/i18n/en.js
index 596f515..c5127a8 100644
--- a/rsf-admin/src/i18n/en.js
+++ b/rsf-admin/src/i18n/en.js
@@ -533,6 +533,40 @@
ntyStatus: "Notify",
exceStatus: 'bill status'
},
+ outStock: {
+ code: "Code",
+ poCode: "poCode",
+ poId: "doId",
+ type: "Type",
+ wkType: "wkType",
+ anfme: "anfme",
+ qty: "qty",
+ logisNo: "logisNo",
+ arrTime: "Arrived",
+ rleStatus: "Release",
+ ntyStatus: "Notify",
+ exceStatus: 'bill status'
+ },
+ outStockItem: {
+ asnId: "ID",
+ asnCode: "DO Code",
+ poDetlId: "poDetlId",
+ poDetlCode: "DO Detl Code",
+ matnrId: "matnrId",
+ maktx: "maktx",
+ anfme: "anfme",
+ stockUnit: "stockUnit",
+ purQty: "purQty",
+ purUnit: "purUnit",
+ qty: "qty",
+ splrCode: "splrCode",
+ splrName: "splrName",
+ qrcode: "qrcode",
+ barcode: "barcode",
+ packName: "packName",
+ ntyStatus: "ntyStatus",
+ platItemId: 'platItemId'
+ },
asnOrderItem: {
asnId: "asnId",
asnCode: "asnCode",
diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js
index 0c681ce..c82f11d 100644
--- a/rsf-admin/src/i18n/zh.js
+++ b/rsf-admin/src/i18n/zh.js
@@ -583,6 +583,7 @@
asnId: "涓诲崟鏍囪瘑",
asnCode: "鍗曞彿",
poDetlId: "骞冲彴鏄庣粏ID",
+ poDetlCode: "DO鍗�",
matnrId: "鐗╂枡鏍囪瘑",
maktx: "鐗╂枡鍚嶇О",
matnrCode: "鐗╂枡缂栫爜",
diff --git a/rsf-admin/src/page/components/DictSelect.jsx b/rsf-admin/src/page/components/DictSelect.jsx
index d42a8ee..1ca14c5 100644
--- a/rsf-admin/src/page/components/DictSelect.jsx
+++ b/rsf-admin/src/page/components/DictSelect.jsx
@@ -1,6 +1,6 @@
import { useState, useEffect } from 'react';
import {
- useTranslate, useNotify
+ useTranslate, useNotify, required
} from 'react-admin';
import request from '@/utils/request';
import { Select, MenuItem, FormControl, InputLabel } from '@mui/material';
@@ -47,6 +47,7 @@
variant="filled"
onChange={handleChange}
size='small'
+
>
{list.map((item) => (
<MenuItem key={item.value} value={item.value}>
diff --git a/rsf-admin/src/page/orders/outStock/AsnOrderModal.jsx b/rsf-admin/src/page/orders/outStock/AsnOrderModal.jsx
deleted file mode 100644
index 6c2dc38..0000000
--- a/rsf-admin/src/page/orders/outStock/AsnOrderModal.jsx
+++ /dev/null
@@ -1,643 +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,
- useListContext,
- useRefresh,
-} from 'react-admin';
-import {
- Dialog,
- DialogActions,
- DialogContent,
- DialogTitle,
- Stack,
- Grid,
- TextField,
- Box,
- Button,
- Paper,
- TableContainer,
- Table,
- TableHead,
- TableBody,
- TableRow,
- TableCell,
- Tooltip,
- IconButton,
- styled,
- Select,
- MenuItem
-
-
-} from '@mui/material';
-import DialogCloseButton from "../../components/DialogCloseButton";
-import StatusSelectInput from "../../components/StatusSelectInput";
-import ConfirmButton from "../../components/ConfirmButton";
-import AsnWareModal from "./AsnWareModal";
-import { useForm, Controller, useWatch, FormProvider, useFormContext } from "react-hook-form";
-import SaveIcon from '@mui/icons-material/Save';
-import request from '@/utils/request';
-import { Add, Edit, Delete } from '@mui/icons-material';
-import _, { set } from 'lodash';
-import { DataGrid, useGridApiRef } from '@mui/x-data-grid';
-import DictionarySelect from "../../components/DictionarySelect";
-import DictSelect from "../../components/DictSelect";
-import "./asnOrder.css";
-
-const AsnOrderModal = (props) => {
- const { open, setOpen, asnId, billReload } = props;
-
- const translate = useTranslate();
- const notify = useNotify();
- const refresh = useRefresh();
- const [disabled, setDisabled] = useState(false)
-
- const [createDialog, setCreateDialog] = useState(false);
-
- const tableRef = useRef();
-
- useEffect(() => {
- if (open && asnId !== 0) {
- requestGetHead()
- requestGetBody()
- }
- setDisabled(false)
- }, [open])
-
- const handleClose = (event, reason) => {
- if (reason !== "backdropClick") {
- setOpen(false);
- refresh();
- setFormData({ type: '', wkType: '' })
- setTableData([])
- }
- };
-
- const [formData, setFormData] = useState({
- type: '',
- wkType: '',
- poCode: '',
- logisNo: '',
- arrTime: ''
- });
-
- const [tabelData, setTableData] = useState([]);
-
-
- const handleChange = (value, name) => {
- setFormData((prevData) => ({
- ...prevData,
- [name]: value
- }));
- console.log(formData);
- };
-
- const resetData = () => {
- setFormData({
- type: '',
- wkType: '',
- poCode: '',
- logisNo: '',
- arrTime: ''
- })
- setTableData([])
- }
-
- const setFinally = () => {
- const rows = tableRef.current.state.editRows;
- for (const key in rows) {
- const find = tabelData.find(item => item.matnrId === +key);
- find.anfme = rows[key].anfme.value;
- }
- setTableData([...tabelData]);
- }
-
- const handleSubmit = async () => {
- setFinally()
- setDisabled(true)
-
- if (asnId === 0) {
- const parmas = {
- "orders": formData,
- "items": tabelData,
- }
-
- const res = await request.post(`/asnOrder/items/save`, parmas);
- if (res?.data?.code === 200) {
- setOpen(false);
- refresh();
- billReload?.current()
- resetData()
- } else {
- notify(res.data.msg);
- }
- } else {
- const parmas = {
- "orders": formData,
- "items": tabelData,
- }
- const res = await request.post(`/asnOrder/items/update`, parmas);
- if (res?.data?.code === 200) {
- setOpen(false);
- refresh();
- billReload?.current()
- resetData()
- } else {
- notify(res.data.msg);
- }
- }
- setDisabled(false)
-
- };
-
-
- const handleDelete = async () => {
- const res = await request.post(`/asnOrder/remove/${asnId}`);
- if (res?.data?.code === 200) {
- setOpen(false);
- refresh();
- } else {
- notify(res.data.msg);
- }
- };
-
- const requestGetHead = async () => {
- const res = await request.get(`/asnOrder/${asnId}`);
- if (res?.data?.code === 200) {
- setFormData(res.data.data)
- } else {
- notify(res.data.msg);
- }
- }
-
- const requestGetBody = async () => {
- const res = await request.post(`/asnOrderItem/page`, { asnId });
- if (res?.data?.code === 200) {
- setTableData(res.data.data.records)
- } else {
- notify(res.data.msg);
- }
- }
-
- const [selectedRows, setSelectedRows] = useState([]);
-
-
-
- const handleDeleteItem = () => {
- const newTableData = _.filter(tabelData, (item) => !selectedRows.includes(item.matnrId));
- setTableData(newTableData);
- }
-
- return (
- <>
- <Dialog
- open={open}
- onClose={handleClose}
- aria-labelledby="form-dialog-title"
- aria-hidden
- fullWidth
- disableRestoreFocus
- maxWidth="lg" // 'xs' | 'sm' | 'md' | 'lg' | 'xl'
- >
- <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 }}>
- <Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
- <Form defaultValues={formData}>
- <Grid container spacing={2}>
- <Grid item md={3}>
- <DictSelect
- label={translate("table.field.asnOrder.type")}
- value={formData.type}
- onChange={(e) => handleChange(e.target.value, 'type')}
- dictTypeCode="sys_order_type"
- required
- />
- </Grid>
- <Grid item md={3}>
- <DictSelect
- label={translate("table.field.asnOrder.wkType")}
- value={formData.wkType}
- onChange={(e) => handleChange(e.target.value, 'wkType')}
- dictTypeCode="sys_business_type"
- required
- />
- </Grid>
- <Grid item md={3}>
- <TextField
- label={translate("table.field.asnOrder.poCode")}
- value={formData.poCode}
- onChange={(e) => handleChange(e.target.value, 'poCode')}
- />
- </Grid>
- <Grid item md={3}>
- <TextField
- label={translate("table.field.asnOrder.logisNo")}
- value={formData.logisNo}
- onChange={(e) => handleChange(e.target.value, 'logisNo')}
- />
- </Grid>
-
- <Grid item md={3}>
- {/* <TextField
- label={translate("table.field.asnOrder.arrTime")}
- value={formData.arrTime}
- onChange={(e) => handleChange(e.target.value, 'arrTime')}
- /> */}
- <DateInput
- source="arrTime"
- label="table.field.asnOrder.arrTime"
- value={formData.arrTime}
- onChange={(e) => handleChange(e.target.value, 'arrTime')}
- />
-
- </Grid>
- </Grid>
- </Form>
- </Box>
-
- <Box sx={{ mt: 2 }}>
- <Stack direction="row" spacing={2}>
- <Button variant="contained" onClick={() => setCreateDialog(true)}>鏂板鐗╂枡</Button>
- {/* {asnId !== '' && <ConfirmButton label={'鍒犻櫎'} variant="outlined" color="error" onConfirm={handleDelete} />} */}
- <ConfirmButton label={'鍒犻櫎'} variant="outlined" color="error" onConfirm={handleDeleteItem} />
- </Stack>
- </Box>
- <Box sx={{ mt: 2 }}>
- <AsnOrderModalTable tabelData={tabelData} setTableData={setTableData} asnId={asnId} selectedRows={selectedRows} setSelectedRows={setSelectedRows} tableRef={tableRef}></AsnOrderModalTable>
- </Box>
- </DialogContent>
- <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}>
- <Toolbar sx={{ width: '100%', justifyContent: 'space-between' }} >
- <Button disabled={disabled} onClick={handleSubmit} variant="contained" startIcon={<SaveIcon />}>
- {translate('toolbar.confirm')}
- </Button>
- </Toolbar>
- </DialogActions>
-
- </Dialog>
-
- <AsnWareModal
- open={createDialog}
- setOpen={setCreateDialog}
- data={tabelData}
- setData={setTableData}
- />
- </>
- )
-}
-
-export default AsnOrderModal;
-
-const SelectInputSplrNameEditCell = (params) => {
- const [formData, setFormData] = useState([{}])
- useEffect(() => {
- getOptions();
- }, []);
- const getOptions = async () => {
- const parmas = {
- "type": "supplier"
- }
- const {
- data: { code, data, msg },
- } = await request.post("companys/page",parmas);
- if (code === 200) {
- setFormData(data.records)
- console.log(data.records)
- } else {
- notify(msg);
- }
- }
-
- return (
- <Select
- value={params.value}
- onChange={(e) =>{
- params.api.setEditCellValue({
- id: params.id,
- field: params.field,
- value: e.target.value,
- })
- // 鎵惧埌閫変腑鐨勪緵搴斿晢璁板綍
- const selectedSupplier = formData.find(supplier => supplier.name === e.target.value);
-
- // 濡傛灉鎵惧埌瀵瑰簲鐨勪緵搴斿晢璁板綍锛屽悓鏃舵洿鏂皊plrCode瀛楁
- if (selectedSupplier) {
- params.api.setEditCellValue({
- id: params.id,
- field: 'splrCode',
- value: selectedSupplier.id,
- });
- }
-
- }
-
- }
- fullWidth
-
- >
- {formData.map(e => {
- return(
- <MenuItem value={e.name} children={e.name} key={e.id} />
- );
-
- })}
-
- </Select>
- );
- };
-
- const SelectInputSplrCodeEditCell = (params) => {
- const [formData, setFormData] = useState([{}])
- useEffect(() => {
- getOptions();
- }, []);
- const getOptions = async () => {
- const parmas = {
- "type": "supplier"
- }
- const {
- data: { code, data, msg },
- } = await request.post("companys/page",parmas);
- if (code === 200) {
- setFormData(data.records)
- console.log(data.records)
- } else {
- notify(msg);
- }
- }
-
- return (
- <Select
- value={params.value}
- onChange={(e) =>{
- params.api.setEditCellValue({
- id: params.id,
- field: params.field,
- value: e.target.value,
- })
- const selectedSupplier = formData.find(supplier => supplier.id === e.target.value);
-
- // 濡傛灉鎵惧埌瀵瑰簲鐨勪緵搴斿晢璁板綍锛屽悓鏃舵洿鏂皊plrCode瀛楁
- if (selectedSupplier) {
- params.api.setEditCellValue({
- id: params.id,
- field: 'splrName',
- value: selectedSupplier.name,
- });
- }
- }
-
- }
- fullWidth
-
- >
- {formData.map(e => {
- return(
- <MenuItem value={e.id} children={e.name} key={e.id} />
- );
-
- })}
-
- </Select>
- );
- };
-
-
-
-
-const AsnOrderModalTable = ({ tabelData, setTableData, asnId, selectedRows, setSelectedRows, tableRef }) => {
- const translate = useTranslate();
- const notify = useNotify();
-
- const [columns, setColumns] = useState([
-
- {
- field: 'maktx',
- headerName: translate('table.field.asnOrderItem.maktx'),
- width: 250,
- editable: false,
- },
- {
- field: 'matnrCode',
- headerName: translate('table.field.asnOrderItem.matnrCode'),
- width: 130,
- editable: false,
- },
- {
- field: 'anfme',
- headerName: translate('table.field.asnOrderItem.anfme')+"*",
- type: 'number',
- minWidth: 100,
- flex: 1,
- editable: true,
- valueFormatter: (val) => val < 0 ? 0 : val,
- headerClassName: "custom",
- },
- {
- field: 'splrCode',
- headerName: translate('table.field.asnOrderItem.splrCode')+"*",
- minWidth: 100,
- flex: 1,
- editable: true,
- renderEditCell: (params) => (
- <SelectInputSplrCodeEditCell {...params} />
- ),
- headerClassName: "custom",
- },
- {
- field: 'splrName',
- headerName: translate('table.field.asnOrderItem.splrName')+"*",
- minWidth: 100,
- flex: 1,
- editable: true,
- renderEditCell: (params) => (
- <SelectInputSplrNameEditCell {...params} />
- ),
- headerClassName: "custom",
- },
- // {
- // field: 'packName',
- // headerName: translate('table.field.asnOrderItem.packName'),
- // minWidth: 100,
- // flex: 1,
- // editable: true,
- // },
- // {
- // field: 'poDetlId',
- // headerName: translate('table.field.asnOrderItem.poDetlId'),
- // minWidth: 100,
- // flex: 1,
- // },
- {
- field: 'poCode',
- headerName: translate('table.field.asnOrderItem.poDetlCode')+"*",
- minWidth: 100,
- flex: 1,
- editable: true,
- headerClassName: "custom",
- },
-
- {
- field: 'stockUnit',
- headerName: translate('table.field.asnOrderItem.stockUnit'),
- minWidth: 100,
- flex: 1,
- editable: false,
- },
- // {
- // field: 'purQty',
- // headerName: translate('table.field.asnOrderItem.purQty'),
- // minWidth: 100,
- // flex: 1,
- // editable: true,
- // },
- {
- field: 'purUnit',
- headerName: translate('table.field.asnOrderItem.purUnit'),
- minWidth: 100,
- flex: 1,
- editable: false,
- },
-
-
-
- ])
-
- const action = {
- field: 'action',
- headerName: '鎿嶄綔',
- width: 70,
- lockPosition: 'left',
- renderCell: (params) => (
- <Tooltip title="Delete">
- <IconButton onClick={() => handleDelete(params.row)}>
- <Delete />
- </IconButton>
- </Tooltip>
- ),
-
- }
-
- let cdata = useRef([]);
-
-
- useEffect(() => {
- getDynamicFields();
- }, []);
-
- useEffect(() => {
- cdata.current = tabelData
- }, [tabelData]);
-
-
- const getDynamicFields = async () => {
- const {
- data: { code, data, msg },
- } = await request.get("/fields/enable/list");
- if (code === 200) {
- const cols = data.map(el => ({
- field: el.fields,
- headerName: el.fieldsAlise,
- minWidth: 100,
- flex: 1,
- editable: false
- }))
- setColumns([...columns, ...cols, action])
- } else {
- notify(msg);
- }
- }
-
-
-
- const handleDelete = (row) => {
- const newData = _.filter(cdata.current, (item) => item.matnrId !== row.matnrId);
- setTableData(newData);
- };
-
-
- const processRowUpdate = (newRow, oldRow) => {
- const rows = tabelData.map((r) =>
- r.matnrId === newRow.matnrId ? { ...newRow } : r
- )
- setTableData(rows)
- // setTableData((prevData) =>
- // prevData.map((r) =>
- // r.matnrId === newRow.matnrId ? { ...newRow } : r
- // )
-
- // );
-
- return newRow;
- };
-
-
-
- const handleSelectionChange = (ids) => {
- setSelectedRows(ids)
-
- };
-
- tableRef.current = useGridApiRef();
-
-
- return (
- <div style={{ height: 400, width: '100%' }}>
- <DataGrid
- apiRef={tableRef}
- rows={tabelData}
- columns={columns}
- disableRowSelectionOnClick
- getRowId={(row) => row.matnrId}
- disableColumnFilter
- disableColumnSelector
- disableColumnSorting
- disableMultipleColumnsSorting
- processRowUpdate={processRowUpdate}
- initialState={{
- pagination: {
- paginationModel: {
- pageSize: 25,
- },
- },
- }}
- pageSizeOptions={[10, 25, 50, 100]}
- editMode="row"
- checkboxSelection
- onRowSelectionModelChange={handleSelectionChange}
- selectionModel={selectedRows}
- sx={{
- '& .MuiDataGrid-cell input': {
- border: '1px solid #ccc'
- },
- }}
- />
- </div>
- );
-};
-
diff --git a/rsf-admin/src/page/orders/outStock/AsnWareModal.jsx b/rsf-admin/src/page/orders/outStock/MatnrInfoModal.jsx
similarity index 98%
rename from rsf-admin/src/page/orders/outStock/AsnWareModal.jsx
rename to rsf-admin/src/page/orders/outStock/MatnrInfoModal.jsx
index 8f3788b..37a571f 100644
--- a/rsf-admin/src/page/orders/outStock/AsnWareModal.jsx
+++ b/rsf-admin/src/page/orders/outStock/MatnrInfoModal.jsx
@@ -18,7 +18,7 @@
import { DataGrid } from '@mui/x-data-grid';
import SaveIcon from '@mui/icons-material/Save';
import TreeSelectInput from "@/page/components/TreeSelectInput";
-const AsnWareModal = (props) => {
+const MatnrInfoModal = (props) => {
const { open, setOpen, data, setData } = props;
const translate = useTranslate();
@@ -110,7 +110,7 @@
backgroundColor: 'background.paper',
zIndex: 1000
}}>
- 閫夋嫨鐗╂枡
+ {translate("common.action.newAddMats")}
<Box sx={{ position: 'absolute', top: 8, right: 8, zIndex: 1001 }}>
<DialogCloseButton onClose={handleClose} />
</Box>
@@ -175,7 +175,7 @@
);
};
-export default AsnWareModal;
+export default MatnrInfoModal;
const AsnWareModalTable = ({ tableData, setTableData, selectedRows, setSelectedRows, dyFields, setDyFields }) => {
const translate = useTranslate();
@@ -189,7 +189,6 @@
{ field: 'spec', headerName: translate('table.field.matnr.spec'), width: 100 },
{ field: 'model', headerName: translate('table.field.matnr.model'), width: 100 },
{ field: 'weight', headerName: translate('table.field.matnr.weight'), width: 100 },
-
{ field: 'describle', headerName: translate('table.field.matnr.describle'), width: 100 },
{ field: 'nromNum', headerName: translate('table.field.matnr.nromNum'), width: 100 },
{ field: 'unit', headerName: translate('table.field.matnr.unit'), width: 100 },
@@ -197,7 +196,6 @@
{ field: 'stockUnit', headerName: translate('table.field.matnr.stockUnit'), width: 100 },
{ field: 'stockLeval$', headerName: translate('table.field.matnr.stockLevel'), width: 100, sortable: false },
])
-
const handleSelectionChange = (ids) => {
diff --git a/rsf-admin/src/page/orders/outStock/SelectMatnrModal.jsx b/rsf-admin/src/page/orders/outStock/SelectMatnrModal.jsx
index 7e0652b..9c9b9be 100644
--- a/rsf-admin/src/page/orders/outStock/SelectMatnrModal.jsx
+++ b/rsf-admin/src/page/orders/outStock/SelectMatnrModal.jsx
@@ -46,7 +46,7 @@
import DialogCloseButton from "../../components/DialogCloseButton";
import StatusSelectInput from "../../components/StatusSelectInput";
import ConfirmButton from "../../components/ConfirmButton";
-import AsnWareModal from "./AsnWareModal";
+import MatnrInfoModal from "./MatnrInfoModal";
import { useForm, Controller, useWatch, FormProvider, useFormContext } from "react-hook-form";
import SaveIcon from '@mui/icons-material/Save';
import request from '@/utils/request';
@@ -134,7 +134,7 @@
"items": tabelData,
}
- const res = await request.post(`/asnOrder/items/save`, parmas);
+ const res = await request.post(`/outStock/items/save`, parmas);
if (res?.data?.code === 200) {
setOpen(false);
refresh();
@@ -148,7 +148,7 @@
"orders": formData,
"items": tabelData,
}
- const res = await request.post(`/asnOrder/items/update`, parmas);
+ const res = await request.post(`/outStock/items/update`, parmas);
if (res?.data?.code === 200) {
setOpen(false);
refresh();
@@ -164,7 +164,7 @@
const handleDelete = async () => {
- const res = await request.post(`/asnOrder/remove/${asnId}`);
+ const res = await request.post(`/outStock/remove/${asnId}`);
if (res?.data?.code === 200) {
setOpen(false);
refresh();
@@ -174,7 +174,7 @@
};
const requestGetHead = async () => {
- const res = await request.get(`/asnOrder/${asnId}`);
+ const res = await request.get(`/outStock/${asnId}`);
if (res?.data?.code === 200) {
setFormData(res.data.data)
} else {
@@ -183,7 +183,7 @@
}
const requestGetBody = async () => {
- const res = await request.post(`/asnOrderItem/page`, { asnId });
+ const res = await request.post(`/outStockItem/page`, { asnId });
if (res?.data?.code === 200) {
setTableData(res.data.data.records)
} else {
@@ -235,7 +235,7 @@
</Grid> */}
<Grid item md={2}>
<DictSelect
- label={translate("table.field.asnOrder.wkType")}
+ label={translate("table.field.outStock.wkType")}
value={formData.wkType}
variant="filled"
onChange={(e) => handleChange(e.target.value, 'wkType')}
@@ -245,7 +245,7 @@
</Grid>
<Grid item md={2}>
<TextField
- label={translate("table.field.asnOrder.poCode")}
+ label={translate("table.field.outStock.poCode")}
value={formData.poCode}
variant="filled"
size='small'
@@ -254,7 +254,7 @@
</Grid>
<Grid item md={2}>
<TextField
- label={translate("table.field.asnOrder.logisNo")}
+ label={translate("table.field.outStock.logisNo")}
value={formData.logisNo}
variant="filled"
size='small'
@@ -264,7 +264,7 @@
<Grid item md={2}>
<DateInput
source="arrTime"
- label="table.field.asnOrder.arrTime"
+ label="table.field.outStock.arrTime"
size='small'
variant="filled"
value={formData.arrTime}
@@ -294,7 +294,7 @@
</Toolbar>
</DialogActions>
</Dialog>
- <AsnWareModal
+ <MatnrInfoModal
open={createDialog}
setOpen={setCreateDialog}
data={tabelData}
@@ -424,19 +424,19 @@
const [columns, setColumns] = useState([
{
field: 'maktx',
- headerName: translate('table.field.asnOrderItem.maktx'),
+ headerName: translate('table.field.outStockItem.maktx'),
width: 250,
editable: false,
},
{
field: 'matnrCode',
- headerName: translate('table.field.asnOrderItem.matnrCode'),
+ headerName: translate('table.field.outStockItem.matnrCode'),
width: 130,
editable: false,
},
{
field: 'anfme',
- headerName: translate('table.field.asnOrderItem.anfme') + "*",
+ headerName: translate('table.field.outStockItem.anfme') + "*",
type: 'number',
minWidth: 100,
flex: 1,
@@ -446,7 +446,7 @@
},
{
field: 'splrCode',
- headerName: translate('table.field.asnOrderItem.splrCode') + "*",
+ headerName: translate('table.field.outStockItem.splrCode') + "*",
minWidth: 100,
flex: 1,
editable: true,
@@ -457,7 +457,7 @@
},
{
field: 'splrName',
- headerName: translate('table.field.asnOrderItem.splrName') + "*",
+ headerName: translate('table.field.outStockItem.splrName') + "*",
minWidth: 100,
flex: 1,
editable: true,
@@ -481,7 +481,7 @@
// },
{
field: 'poCode',
- headerName: translate('table.field.asnOrderItem.poDetlCode') + "*",
+ headerName: translate('table.field.outStockItem.poDetlCode') + "*",
minWidth: 100,
flex: 1,
editable: true,
@@ -490,7 +490,7 @@
{
field: 'stockUnit',
- headerName: translate('table.field.asnOrderItem.stockUnit'),
+ headerName: translate('table.field.outStockItem.stockUnit'),
minWidth: 100,
flex: 1,
editable: false,
@@ -504,7 +504,7 @@
// },
{
field: 'purUnit',
- headerName: translate('table.field.asnOrderItem.purUnit'),
+ headerName: translate('table.field.outStockItem.purUnit'),
minWidth: 100,
flex: 1,
editable: false,
@@ -583,7 +583,7 @@
rows={tabelData}
columns={columns}
disableRowSelectionOnClick
- getRowId={(row) => row.matnrId}
+ getRowId={(row) => row.matnrId ? row.matnrId : row.id}
disableColumnFilter
disableColumnSelector
disableColumnSorting
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/OrderController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/OrderController.java
deleted file mode 100644
index e1f4da1..0000000
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/OrderController.java
+++ /dev/null
@@ -1,112 +0,0 @@
-package com.vincent.rsf.server.manager.controller;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.vincent.rsf.framework.common.Cools;
-import com.vincent.rsf.framework.common.R;
-import com.vincent.rsf.server.common.utils.ExcelUtil;
-import com.vincent.rsf.server.common.annotation.OperationLog;
-import com.vincent.rsf.server.common.domain.BaseParam;
-import com.vincent.rsf.server.common.domain.KeyValVo;
-import com.vincent.rsf.server.common.domain.PageParam;
-import com.vincent.rsf.server.manager.entity.Order;
-import com.vincent.rsf.server.manager.service.OrderService;
-import com.vincent.rsf.server.system.controller.BaseController;
-import io.swagger.annotations.Api;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
-
-import javax.servlet.http.HttpServletResponse;
-import java.util.*;
-
-@Api(tags = "缁煎悎璁㈠崟绠$悊")
-@RestController
-public class OrderController extends BaseController {
-
- @Autowired
- private OrderService orderService;
-
- @PreAuthorize("hasAuthority('manager:order:list')")
- @PostMapping("/order/page")
- public R page(@RequestBody Map<String, Object> map) {
- BaseParam baseParam = buildParam(map, BaseParam.class);
- PageParam<Order, BaseParam> pageParam = new PageParam<>(baseParam, Order.class);
- return R.ok().add(orderService.page(pageParam, pageParam.buildWrapper(true)));
- }
-
- @PreAuthorize("hasAuthority('manager:order:list')")
- @PostMapping("/order/list")
- public R list(@RequestBody Map<String, Object> map) {
- return R.ok().add(orderService.list());
- }
-
- @PreAuthorize("hasAuthority('manager:order:list')")
- @PostMapping({"/order/many/{ids}", "/orders/many/{ids}"})
- public R many(@PathVariable Long[] ids) {
- return R.ok().add(orderService.listByIds(Arrays.asList(ids)));
- }
-
- @PreAuthorize("hasAuthority('manager:order:list')")
- @GetMapping("/order/{id}")
- public R get(@PathVariable("id") Long id) {
- return R.ok().add(orderService.getById(id));
- }
-
- @PreAuthorize("hasAuthority('manager:order:save')")
- @OperationLog("Create 缁煎悎璁㈠崟绠$悊")
- @PostMapping("/order/save")
- public R save(@RequestBody Order order) {
- order.setCreateBy(getLoginUserId());
- order.setCreateTime(new Date());
- order.setUpdateBy(getLoginUserId());
- order.setUpdateTime(new Date());
- if (!orderService.save(order)) {
- return R.error("Save Fail");
- }
- return R.ok("Save Success").add(order);
- }
-
- @PreAuthorize("hasAuthority('manager:order:update')")
- @OperationLog("Update 缁煎悎璁㈠崟绠$悊")
- @PostMapping("/order/update")
- public R update(@RequestBody Order order) {
- order.setUpdateBy(getLoginUserId());
- order.setUpdateTime(new Date());
- if (!orderService.updateById(order)) {
- return R.error("Update Fail");
- }
- return R.ok("Update Success").add(order);
- }
-
- @PreAuthorize("hasAuthority('manager:order:remove')")
- @OperationLog("Delete 缁煎悎璁㈠崟绠$悊")
- @PostMapping("/order/remove/{ids}")
- public R remove(@PathVariable Long[] ids) {
- if (!orderService.removeByIds(Arrays.asList(ids))) {
- return R.error("Delete Fail");
- }
- return R.ok("Delete Success").add(ids);
- }
-
- @PreAuthorize("hasAuthority('manager:order:list')")
- @PostMapping("/order/query")
- public R query(@RequestParam(required = false) String condition) {
- List<KeyValVo> vos = new ArrayList<>();
- LambdaQueryWrapper<Order> wrapper = new LambdaQueryWrapper<>();
- if (!Cools.isEmpty(condition)) {
- wrapper.like(Order::getId, condition);
- }
- orderService.page(new Page<>(1, 30), wrapper).getRecords().forEach(
- item -> vos.add(new KeyValVo(item.getId(), item.getId()))
- );
- return R.ok().add(vos);
- }
-
- @PreAuthorize("hasAuthority('manager:order:list')")
- @PostMapping("/order/export")
- public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
- ExcelUtil.build(ExcelUtil.create(orderService.list(), Order.class), response);
- }
-
-}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/OrderItemController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/OrderItemController.java
deleted file mode 100644
index 01ad696..0000000
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/OrderItemController.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package com.vincent.rsf.server.manager.controller;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.vincent.rsf.framework.common.Cools;
-import com.vincent.rsf.framework.common.R;
-import com.vincent.rsf.server.common.utils.ExcelUtil;
-import com.vincent.rsf.server.common.annotation.OperationLog;
-import com.vincent.rsf.server.common.domain.BaseParam;
-import com.vincent.rsf.server.common.domain.KeyValVo;
-import com.vincent.rsf.server.common.domain.PageParam;
-import com.vincent.rsf.server.manager.entity.OrderItem;
-import com.vincent.rsf.server.manager.service.OrderItemService;
-import com.vincent.rsf.server.system.controller.BaseController;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
-
-import javax.servlet.http.HttpServletResponse;
-import java.util.*;
-
-@RestController
-public class OrderItemController extends BaseController {
-
- @Autowired
- private OrderItemService orderItemService;
-
- @PreAuthorize("hasAuthority('manager:orderItem:list')")
- @PostMapping("/orderItem/page")
- public R page(@RequestBody Map<String, Object> map) {
- BaseParam baseParam = buildParam(map, BaseParam.class);
- PageParam<OrderItem, BaseParam> pageParam = new PageParam<>(baseParam, OrderItem.class);
- return R.ok().add(orderItemService.page(pageParam, pageParam.buildWrapper(true)));
- }
-
- @PreAuthorize("hasAuthority('manager:orderItem:list')")
- @PostMapping("/orderItem/list")
- public R list(@RequestBody Map<String, Object> map) {
- return R.ok().add(orderItemService.list());
- }
-
- @PreAuthorize("hasAuthority('manager:orderItem:list')")
- @PostMapping({"/orderItem/many/{ids}", "/orderItems/many/{ids}"})
- public R many(@PathVariable Long[] ids) {
- return R.ok().add(orderItemService.listByIds(Arrays.asList(ids)));
- }
-
- @PreAuthorize("hasAuthority('manager:orderItem:list')")
- @GetMapping("/orderItem/{id}")
- public R get(@PathVariable("id") Long id) {
- return R.ok().add(orderItemService.getById(id));
- }
-
- @PreAuthorize("hasAuthority('manager:orderItem:save')")
- @OperationLog("Create 缁煎悎璁㈠崟鏄庣粏绠$悊")
- @PostMapping("/orderItem/save")
- public R save(@RequestBody OrderItem orderItem) {
- orderItem.setCreateBy(getLoginUserId());
- orderItem.setCreateTime(new Date());
- orderItem.setUpdateBy(getLoginUserId());
- orderItem.setUpdateTime(new Date());
- if (!orderItemService.save(orderItem)) {
- return R.error("Save Fail");
- }
- return R.ok("Save Success").add(orderItem);
- }
-
- @PreAuthorize("hasAuthority('manager:orderItem:update')")
- @OperationLog("Update 缁煎悎璁㈠崟鏄庣粏绠$悊")
- @PostMapping("/orderItem/update")
- public R update(@RequestBody OrderItem orderItem) {
- orderItem.setUpdateBy(getLoginUserId());
- orderItem.setUpdateTime(new Date());
- if (!orderItemService.updateById(orderItem)) {
- return R.error("Update Fail");
- }
- return R.ok("Update Success").add(orderItem);
- }
-
- @PreAuthorize("hasAuthority('manager:orderItem:remove')")
- @OperationLog("Delete 缁煎悎璁㈠崟鏄庣粏绠$悊")
- @PostMapping("/orderItem/remove/{ids}")
- public R remove(@PathVariable Long[] ids) {
- if (!orderItemService.removeByIds(Arrays.asList(ids))) {
- return R.error("Delete Fail");
- }
- return R.ok("Delete Success").add(ids);
- }
-
- @PreAuthorize("hasAuthority('manager:orderItem:list')")
- @PostMapping("/orderItem/query")
- public R query(@RequestParam(required = false) String condition) {
- List<KeyValVo> vos = new ArrayList<>();
- LambdaQueryWrapper<OrderItem> wrapper = new LambdaQueryWrapper<>();
- if (!Cools.isEmpty(condition)) {
- wrapper.like(OrderItem::getId, condition);
- }
- orderItemService.page(new Page<>(1, 30), wrapper).getRecords().forEach(
- item -> vos.add(new KeyValVo(item.getId(), item.getId()))
- );
- return R.ok().add(vos);
- }
-
- @PreAuthorize("hasAuthority('manager:orderItem:list')")
- @PostMapping("/orderItem/export")
- public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
- ExcelUtil.build(ExcelUtil.create(orderItemService.list(), OrderItem.class), response);
- }
-
-}
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 058422e..14d847d 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
@@ -219,11 +219,11 @@
@PostMapping("/outStock/items/save")
@ApiOperation("淇濆瓨涓诲崟鍙婃槑缁�")
@PreAuthorize("hasAuthority('manager:outStock:save')")
- public R orderAndItem(@RequestBody AsnOrderAndItemsParams params) throws Exception {
+ public R saveOutStock(@RequestBody AsnOrderAndItemsParams params) throws Exception {
if (Objects.isNull(params)) {
return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
}
- return outStockService.saveOrderAndItems(params, getLoginUserId());
+ return outStockService.saveOutStock(params, getLoginUserId());
}
@ApiOperation("鍗曟嵁淇℃伅淇敼")
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Order.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Order.java
deleted file mode 100644
index aedf5a6..0000000
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Order.java
+++ /dev/null
@@ -1,221 +0,0 @@
-package com.vincent.rsf.server.manager.entity;
-
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import lombok.experimental.Accessors;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.baomidou.mybatisplus.annotation.TableName;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import com.vincent.rsf.framework.common.Cools;
-import com.vincent.rsf.framework.common.SpringUtils;
-import com.vincent.rsf.server.system.service.UserService;
-import com.vincent.rsf.server.system.entity.User;
-import java.io.Serializable;
-import java.util.Date;
-
-@Data
-@Accessors(chain = true)
-@TableName("man_order")
-public class Order implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * ID
- */
- @ApiModelProperty(value= "ID")
- @TableId(value = "id", type = IdType.AUTO)
- private Long id;
-
- /**
- * 缂栧彿
- */
- @ApiModelProperty(value= "缂栧彿")
- private String code;
-
- /**
- * 婧愬崟鎹紪鐮�
- */
- @ApiModelProperty(value= "婧愬崟鎹紪鐮�")
- private String sourceCode;
-
- /**
- * 婧愬崟鎹甀D
- */
- @ApiModelProperty(value= "婧愬崟鎹甀D")
- private Long sourceId;
-
- /**
- * 鍗曟嵁绫诲瀷
- */
- @ApiModelProperty(value= "鍗曟嵁绫诲瀷")
- private String type;
-
- /**
- * 涓氬姟绫诲瀷
- */
- @ApiModelProperty(value= "涓氬姟绫诲瀷")
- private String wkType;
-
- /**
- * 搴撳瓨鏁伴噺
- */
- @ApiModelProperty(value= "搴撳瓨鏁伴噺")
- private Double anfme;
-
- /**
- * 鐘舵�� 1: 姝e父 0: 鍐荤粨
- */
- @ApiModelProperty(value= "鐘舵�� 1: 姝e父 0: 鍐荤粨 ")
- private Integer status;
-
- /**
- * 鏄惁鍒犻櫎 1: 鏄� 0: 鍚�
- */
- @ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄� 0: 鍚� ")
- @TableLogic
- private Integer deleted;
-
- /**
- * 绉熸埛
- */
- @ApiModelProperty(value= "绉熸埛")
- private Integer tenantId;
-
- /**
- * 娣诲姞浜哄憳
- */
- @ApiModelProperty(value= "娣诲姞浜哄憳")
- private Long createBy;
-
- /**
- * 娣诲姞鏃堕棿
- */
- @ApiModelProperty(value= "娣诲姞鏃堕棿")
- @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
- private Date createTime;
-
- /**
- * 淇敼浜哄憳
- */
- @ApiModelProperty(value= "淇敼浜哄憳")
- private Long updateBy;
-
- /**
- * 淇敼鏃堕棿
- */
- @ApiModelProperty(value= "淇敼鏃堕棿")
- @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
- private Date updateTime;
-
- /**
- * 澶囨敞
- */
- @ApiModelProperty(value= "澶囨敞")
- private String memo;
-
- public Order() {}
-
- public Order(String code,String sourceCode,Long sourceId,String type,String wkType,Double anfme,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
- this.code = code;
- this.sourceCode = sourceCode;
- this.sourceId = sourceId;
- this.type = type;
- this.wkType = wkType;
- this.anfme = anfme;
- this.status = status;
- this.deleted = deleted;
- this.tenantId = tenantId;
- this.createBy = createBy;
- this.createTime = createTime;
- this.updateBy = updateBy;
- this.updateTime = updateTime;
- this.memo = memo;
- }
-
-// Order order = new Order(
-// null, // 缂栧彿
-// null, // 婧愬崟鎹紪鐮�
-// null, // 婧愬崟鎹甀D
-// null, // 鍗曟嵁绫诲瀷[闈炵┖]
-// null, // 涓氬姟绫诲瀷[闈炵┖]
-// null, // 搴撳瓨鏁伴噺[闈炵┖]
-// null, // 鐘舵�乕闈炵┖]
-// null, // 鏄惁鍒犻櫎[闈炵┖]
-// null, // 绉熸埛
-// null, // 娣诲姞浜哄憳
-// null, // 娣诲姞鏃堕棿[闈炵┖]
-// null, // 淇敼浜哄憳
-// null, // 淇敼鏃堕棿[闈炵┖]
-// null // 澶囨敞
-// );
-
- public String getStatus$(){
- if (null == this.status){ return null; }
- switch (this.status){
- case 1:
- return "姝e父";
- case 0:
- return "鍐荤粨";
- default:
- return String.valueOf(this.status);
- }
- }
-
- public String getCreateBy$(){
- UserService service = SpringUtils.getBean(UserService.class);
- User user = service.getById(this.createBy);
- if (!Cools.isEmpty(user)){
- return String.valueOf(user.getNickname());
- }
- return null;
- }
-
- public String getCreateTime$(){
- if (Cools.isEmpty(this.createTime)){
- return "";
- }
- return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
- }
-
- public String getUpdateBy$(){
- UserService service = SpringUtils.getBean(UserService.class);
- User user = service.getById(this.updateBy);
- if (!Cools.isEmpty(user)){
- return String.valueOf(user.getNickname());
- }
- return null;
- }
-
- public String getUpdateTime$(){
- if (Cools.isEmpty(this.updateTime)){
- return "";
- }
- return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
- }
-
-
-
- public Boolean getStatusBool(){
- if (null == this.status){ return null; }
- switch (this.status){
- case 1:
- return true;
- case 0:
- return false;
- default:
- return null;
- }
- }
-
-}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/OrderItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/OrderItem.java
deleted file mode 100644
index 7ed3564..0000000
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/OrderItem.java
+++ /dev/null
@@ -1,333 +0,0 @@
-package com.vincent.rsf.server.manager.entity;
-
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import lombok.experimental.Accessors;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.baomidou.mybatisplus.annotation.TableName;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import com.vincent.rsf.framework.common.Cools;
-import com.vincent.rsf.framework.common.SpringUtils;
-import com.vincent.rsf.server.system.service.UserService;
-import com.vincent.rsf.server.system.entity.User;
-import java.io.Serializable;
-import java.util.Date;
-
-@Data
-@Accessors(chain = true)
-@TableName("man_order_item")
-public class OrderItem implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * ID
- */
- @ApiModelProperty(value= "ID")
- @TableId(value = "id", type = IdType.AUTO)
- private Long id;
-
- /**
- * 涓诲崟ID
- */
- @ApiModelProperty(value= "涓诲崟ID")
- private Long orderId;
-
- /**
- * 涓诲崟缂栧彿
- */
- @ApiModelProperty(value= "涓诲崟缂栧彿")
- private String orderCode;
-
- /**
- * 缂栧彿
- */
- @ApiModelProperty(value= "缂栧彿")
- private String sourceItemId;
-
- /**
- * 鐗╂枡ID
- */
- @ApiModelProperty(value= "鐗╂枡ID")
- private String matnrId;
-
- /**
- * 鐗╂枡缂栫爜
- */
- @ApiModelProperty(value= "鐗╂枡缂栫爜")
- private String matnrCode;
-
- /**
- * 鐗╂枡鍚嶇О
- */
- @ApiModelProperty(value= "鐗╂枡鍚嶇О")
- private String maktx;
-
- /**
- * 閫佽揣鏁伴噺
- */
- @ApiModelProperty(value= "閫佽揣鏁伴噺")
- private Double anfme;
-
- /**
- * 搴撳瓨鍗曚綅
- */
- @ApiModelProperty(value= "搴撳瓨鍗曚綅")
- private String stockUnit;
-
- /**
- * 鎵ц涓暟閲�
- */
- @ApiModelProperty(value= "鎵ц涓暟閲�")
- private Double workQty;
-
- /**
- * 閲囪喘鏁伴噺
- */
- @ApiModelProperty(value= "閲囪喘鏁伴噺")
- private Double purQty;
-
- /**
- * 閲囪喘鍗曚綅
- */
- @ApiModelProperty(value= "閲囪喘鍗曚綅")
- private String purUnit;
-
- /**
- * 宸叉敹鏁伴噺
- */
- @ApiModelProperty(value= "宸叉敹鏁伴噺")
- private Double qty;
-
- /**
- * 渚涘簲鍟嗙紪鐮�
- */
- @ApiModelProperty(value= "渚涘簲鍟嗙紪鐮�")
- private String splrCode;
-
- /**
- * 搴撳瓨鎵规
- */
- @ApiModelProperty(value= "搴撳瓨鎵规")
- private String batch;
-
- /**
- * 渚涘簲鍟嗘壒娆�
- */
- @ApiModelProperty(value= "渚涘簲鍟嗘壒娆�")
- private String splrBatch;
-
- /**
- * 渚涘簲鍟嗗悕绉�
- */
- @ApiModelProperty(value= "渚涘簲鍟嗗悕绉�")
- private String splrName;
-
- /**
- * 璺熻釜鐮�
- */
- @ApiModelProperty(value= "璺熻釜鐮�")
- private String trackCode;
-
- /**
- * 鏉″舰鐮�
- */
- @ApiModelProperty(value= "鏉″舰鐮�")
- private String barcode;
-
- /**
- * 鐢熶骇鏃ユ湡
- */
- @ApiModelProperty(value= "鐢熶骇鏃ユ湡")
- private String prodTime;
-
- /**
- * 鍖呰鍚嶇О
- */
- @ApiModelProperty(value= "鍖呰鍚嶇О")
- private String packName;
-
- /**
- * 鐘舵�� 1: 姝e父 0: 鍐荤粨
- */
- @ApiModelProperty(value= "鐘舵�� 1: 姝e父 0: 鍐荤粨 ")
- private Integer status;
-
- /**
- * 鏄惁鍒犻櫎 1: 鏄� 0: 鍚�
- */
- @ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄� 0: 鍚� ")
- @TableLogic
- private Integer deleted;
-
- /**
- * 绉熸埛
- */
- @ApiModelProperty(value= "绉熸埛")
- private Integer tenantId;
-
- /**
- * 娣诲姞浜哄憳
- */
- @ApiModelProperty(value= "娣诲姞浜哄憳")
- private Long createBy;
-
- /**
- * 娣诲姞鏃堕棿
- */
- @ApiModelProperty(value= "娣诲姞鏃堕棿")
- @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
- private Date createTime;
-
- /**
- * 淇敼浜哄憳
- */
- @ApiModelProperty(value= "淇敼浜哄憳")
- private Long updateBy;
-
- /**
- * 淇敼鏃堕棿
- */
- @ApiModelProperty(value= "淇敼鏃堕棿")
- @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
- private Date updateTime;
-
- /**
- * 澶囨敞
- */
- @ApiModelProperty(value= "澶囨敞")
- private String memo;
-
- public OrderItem() {}
-
- public OrderItem(Long orderId,String orderCode,String sourceItemId,String matnrId,String matnrCode,String maktx,Double anfme,String stockUnit,Double workQty,Double purQty,String purUnit,Double qty,String splrCode,String batch,String splrBatch,String splrName,String trackCode,String barcode,String prodTime,String packName,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
- this.orderId = orderId;
- this.orderCode = orderCode;
- this.sourceItemId = sourceItemId;
- this.matnrId = matnrId;
- this.matnrCode = matnrCode;
- this.maktx = maktx;
- this.anfme = anfme;
- this.stockUnit = stockUnit;
- this.workQty = workQty;
- this.purQty = purQty;
- this.purUnit = purUnit;
- this.qty = qty;
- this.splrCode = splrCode;
- this.batch = batch;
- this.splrBatch = splrBatch;
- this.splrName = splrName;
- this.trackCode = trackCode;
- this.barcode = barcode;
- this.prodTime = prodTime;
- this.packName = packName;
- this.status = status;
- this.deleted = deleted;
- this.tenantId = tenantId;
- this.createBy = createBy;
- this.createTime = createTime;
- this.updateBy = updateBy;
- this.updateTime = updateTime;
- this.memo = memo;
- }
-
-// OrderItem orderItem = new OrderItem(
-// null, // 涓诲崟ID
-// null, // 涓诲崟缂栧彿
-// null, // 缂栧彿
-// null, // 鐗╂枡ID
-// null, // 鐗╂枡缂栫爜
-// null, // 鐗╂枡鍚嶇О
-// null, // 閫佽揣鏁伴噺[闈炵┖]
-// null, // 搴撳瓨鍗曚綅
-// null, // 鎵ц涓暟閲廩闈炵┖]
-// null, // 閲囪喘鏁伴噺[闈炵┖]
-// null, // 閲囪喘鍗曚綅
-// null, // 宸叉敹鏁伴噺
-// null, // 渚涘簲鍟嗙紪鐮�
-// null, // 搴撳瓨鎵规
-// null, // 渚涘簲鍟嗘壒娆�
-// null, // 渚涘簲鍟嗗悕绉�
-// null, // 璺熻釜鐮�
-// null, // 鏉″舰鐮�
-// null, // 鐢熶骇鏃ユ湡
-// null, // 鍖呰鍚嶇О
-// null, // 鐘舵�乕闈炵┖]
-// null, // 鏄惁鍒犻櫎[闈炵┖]
-// null, // 绉熸埛
-// null, // 娣诲姞浜哄憳
-// null, // 娣诲姞鏃堕棿[闈炵┖]
-// null, // 淇敼浜哄憳
-// null, // 淇敼鏃堕棿[闈炵┖]
-// null // 澶囨敞
-// );
-
- public String getStatus$(){
- if (null == this.status){ return null; }
- switch (this.status){
- case 1:
- return "姝e父";
- case 0:
- return "鍐荤粨";
- default:
- return String.valueOf(this.status);
- }
- }
-
- public String getCreateBy$(){
- UserService service = SpringUtils.getBean(UserService.class);
- User user = service.getById(this.createBy);
- if (!Cools.isEmpty(user)){
- return String.valueOf(user.getNickname());
- }
- return null;
- }
-
- public String getCreateTime$(){
- if (Cools.isEmpty(this.createTime)){
- return "";
- }
- return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
- }
-
- public String getUpdateBy$(){
- UserService service = SpringUtils.getBean(UserService.class);
- User user = service.getById(this.updateBy);
- if (!Cools.isEmpty(user)){
- return String.valueOf(user.getNickname());
- }
- return null;
- }
-
- public String getUpdateTime$(){
- if (Cools.isEmpty(this.updateTime)){
- return "";
- }
- return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
- }
-
-
-
- public Boolean getStatusBool(){
- if (null == this.status){ return null; }
- switch (this.status){
- case 1:
- return true;
- case 0:
- return false;
- default:
- return null;
- }
- }
-
-}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/OrderItemMapper.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/OrderItemMapper.java
deleted file mode 100644
index 7833525..0000000
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/OrderItemMapper.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.vincent.rsf.server.manager.mapper;
-
-import com.vincent.rsf.server.manager.entity.OrderItem;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-import org.springframework.stereotype.Repository;
-
-@Mapper
-@Repository
-public interface OrderItemMapper extends BaseMapper<OrderItem> {
-
-}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/OrderMapper.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/OrderMapper.java
deleted file mode 100644
index 69fdd58..0000000
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/OrderMapper.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.vincent.rsf.server.manager.mapper;
-
-import com.vincent.rsf.server.manager.entity.Order;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-import org.springframework.stereotype.Repository;
-
-@Mapper
-@Repository
-public interface OrderMapper extends BaseMapper<Order> {
-
-}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
index 919b81a..4246785 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
@@ -50,10 +50,6 @@
private StockService stockService;
@Autowired
private LocService locService;
- @Autowired
- private OrderService orderService;
- @Autowired
- private OrderItemService orderItemService;
/**
* @author Ryan
* @description 瀹屾垚鍏ュ簱锛屾洿鏂板簱瀛�
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/OrderItemService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/OrderItemService.java
deleted file mode 100644
index 99b4dcd..0000000
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/OrderItemService.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.vincent.rsf.server.manager.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.vincent.rsf.server.manager.entity.OrderItem;
-
-public interface OrderItemService extends IService<OrderItem> {
-
-}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/OrderService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/OrderService.java
deleted file mode 100644
index 772088d..0000000
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/OrderService.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.vincent.rsf.server.manager.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.vincent.rsf.server.manager.entity.Order;
-
-public interface OrderService extends IService<Order> {
-
-}
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 71a70bd..e33856f 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
@@ -17,7 +17,7 @@
R generateWaves(List<Long> ids);
- R saveOrderAndItems(AsnOrderAndItemsParams params, Long loginUserId);
+ R saveOutStock(AsnOrderAndItemsParams params, Long loginUserId);
R updateOrderItem(AsnOrderAndItemsParams params, Long loginUserId);
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
index 768ef85..d8daa85 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
@@ -165,11 +165,14 @@
if (StringUtils.isBlank(asnOrderItem.getTrackCode())) {
String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_LABEL_CODE, asnOrderItem);
asnOrderItem.setTrackCode(ruleCode).setBarcode(ruleCode);
- ;
+
}
if (Objects.isNull(asnOrderItem.getAnfme()) || Double.compare(asnOrderItem.getAnfme(), 0.0) <= 0) {
- throw new CoolException("璁″垝鏀惰揣鏁颁笉鑳戒负绌猴紒锛�");
+ throw new CoolException("璁″垝鏁颁笉鑳戒负绌猴紒锛�");
}
+// if (StringUtils.isBlank(asnOrderItem.getSplrBatch())) {
+// throw new CoolException("渚涘簲鍟嗘壒娆′笉鑳戒负绌猴紒锛�");
+// }
//淇濆瓨鎵╁睍瀛楁
try {
String uuid16 = CommonUtil.randomUUID16();
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java
index 741bcda..5f6f3c7 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java
@@ -119,6 +119,7 @@
if (params.getItems().isEmpty()) {
throw new CoolException("鏀惰揣閫氱煡鍗曟槑缁嗕笉鑳戒负瀵掗鑺傦紒锛�");
}
+ params.setOrders(orders);
svaeOrUpdateOrderItem(params,loginUserId);
@@ -164,7 +165,6 @@
@Transactional(rollbackFor = Exception.class)
private void svaeOrUpdateOrderItem(AsnOrderAndItemsParams params, Long loginUserId) throws Exception{
AsnOrder orders = params.getOrders();
-
params.getItems().forEach(item -> {
item.put("asnId", orders.getId());
item.put("asnCode", orders.getCode());
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OrderItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OrderItemServiceImpl.java
deleted file mode 100644
index 897ef9d..0000000
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OrderItemServiceImpl.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.vincent.rsf.server.manager.service.impl;
-
-import com.vincent.rsf.server.manager.mapper.OrderItemMapper;
-import com.vincent.rsf.server.manager.entity.OrderItem;
-import com.vincent.rsf.server.manager.service.OrderItemService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-
-@Service("orderItemService")
-public class OrderItemServiceImpl extends ServiceImpl<OrderItemMapper, OrderItem> implements OrderItemService {
-
-}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OrderServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OrderServiceImpl.java
deleted file mode 100644
index f523ebe..0000000
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OrderServiceImpl.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.vincent.rsf.server.manager.service.impl;
-
-import com.vincent.rsf.server.manager.mapper.OrderMapper;
-import com.vincent.rsf.server.manager.entity.Order;
-import com.vincent.rsf.server.manager.service.OrderService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-
-@Service("orderService")
-public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {
-
-}
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 20dc185..464ab07 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
@@ -6,6 +6,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.api.entity.enums.OrderType;
import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams;
import com.vincent.rsf.server.manager.entity.*;
import com.vincent.rsf.server.manager.enums.AsnExceStatus;
@@ -62,7 +63,6 @@
@Transactional(rollbackFor = Exception.class)
private void svaeOrUpdateOrderItem(AsnOrderAndItemsParams params, Long loginUserId) throws Exception {
AsnOrder orders = params.getOrders();
-
params.getItems().forEach(item -> {
item.put("asnId", orders.getId());
item.put("asnCode", orders.getCode());
@@ -317,7 +317,8 @@
* @time 2025/4/29 13:47
*/
@Override
- public R saveOrderAndItems(AsnOrderAndItemsParams params, Long loginUserId) {
+ @Transactional(rollbackFor = Exception.class)
+ public R saveOutStock(AsnOrderAndItemsParams params, Long loginUserId) {
if (Objects.isNull(params.getOrders())) {
throw new CoolException("涓诲崟淇℃伅涓嶈兘涓虹┖");
}
@@ -325,26 +326,35 @@
if (Objects.isNull(orders)) {
throw new CoolException("鍗曟嵁涓嶈兘涓虹┖锛侊紒");
}
+ if (StringUtils.isBlank(orders.getWkType())) {
+ throw new CoolException("涓氬姟绫诲瀷涓嶈兘涓虹┖锛侊紒");
+ }
+
String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_OUT_STOCK_CODE, orders);
if (Objects.isNull(ruleCode) || StringUtils.isBlank(ruleCode)) {
throw new CoolException("缂栫爜瑙勫垯閿欒锛氳妫�鏌ャ�孲YS_OUT_STOCK_CODE銆嶆槸鍚﹁缃纭紒锛�");
}
+
orders.setCode(ruleCode)
+ .setType(OrderType.ORDER_OUT.type)
.setUpdateBy(loginUserId)
.setCreateBy(loginUserId);
if (!this.save(orders)) {
throw new CoolException("涓诲崟淇濆瓨澶辫触锛侊紒");
}
if (params.getItems().isEmpty()) {
- throw new CoolException("鏀惰揣閫氱煡鍗曟槑缁嗕笉鑳戒负瀵掗鑺傦紒锛�");
+ throw new CoolException("鏀惰揣閫氱煡鍗曟槑缁嗕笉鑳戒负绌猴紒锛�");
+ }
+ params.setOrders(orders);
+ try {
+ svaeOrUpdateOrderItem(params,loginUserId);
+ } catch (Exception e) {
+ throw new CoolException(e.getMessage());
}
-// svaeOrUpdateOrderItem(params,loginUserId);
-
-
-
- return null;
+ return R.ok();
}
+
/**
* @author Ryan
@@ -355,6 +365,26 @@
*/
@Override
public R updateOrderItem(AsnOrderAndItemsParams params, Long loginUserId) {
+ AsnOrder orders = params.getOrders();
+ if (Objects.isNull(orders)) {
+ throw new CoolException("涓诲崟淇℃伅涓嶈兘涓虹┖锛侊紒");
+ }
+ if (Objects.isNull(orders.getId())) {
+ throw new CoolException("鏁版嵁閿欒锛氬崟鎹甀D涓嶈兘涓虹┖锛侊紒");
+ }
+ if (!this.updateById(orders)) {
+ throw new CoolException("涓诲崟淇敼澶辫触锛侊紒");
+ }
+ if (Objects.isNull(params.getItems()) || params.getItems().isEmpty()) {
+ return R.ok("鏄庣粏鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+
+ try {
+ svaeOrUpdateOrderItem(params,loginUserId);
+ } catch (Exception e) {
+ throw new CoolException(e.getMessage());
+ }
+
return null;
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
index d4b4f22..fcc9fcb 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
@@ -54,16 +54,8 @@
private StockItemService stockItemService;
@Autowired
private DeviceSiteService deviceSiteService;
-
- @Autowired
- private OrderService orderService;
-
- @Autowired
- private OrderItemService orderItemService;
-
@Autowired
private LocItemService locItemService;
-
@Autowired
private DeviceBindService deviceBindService;
@Autowired
--
Gitblit v1.9.1