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