From 4babe4a1a4e9bfd33f1c6d64eff2e6f12fbe8613 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期五, 18 七月 2025 10:05:43 +0800 Subject: [PATCH] 新增盘点差异表 --- rsf-admin/src/page/checkDiff/CheckDiffEdit.jsx | 131 +++ rsf-server/src/main/java/checkDiffItem.sql | 33 rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java | 6 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java | 6 rsf-admin/src/page/checkDiff/CheckDiffPanel.jsx | 93 ++ rsf-server/src/main/resources/mapper/manager/CheckDiffMapper.xml | 5 rsf-admin/src/page/checkDiffItem/CheckDiffItemList.jsx | 174 ++++ rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckDiffItemServiceImpl.java | 12 rsf-admin/src/page/checkDiffItem/index.jsx | 18 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java | 3 rsf-admin/src/i18n/zh.js | 1 rsf-admin/src/page/checkDiff/CheckDiffList.jsx | 169 ++++ rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckDiffController.java | 110 ++ rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/CheckDiffItem.java | 266 ++++++ rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckDiffServiceImpl.java | 12 rsf-admin/src/i18n/en.js | 3 rsf-admin/src/page/checkDiffItem/CheckDiffItemCreate.jsx | 191 ++++ rsf-server/src/main/resources/mapper/manager/CheckDiffItemMapper.xml | 5 rsf-server/src/main/java/checkDiff.sql | 28 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CheckDiffItemService.java | 8 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckDiffItemController.java | 110 ++ rsf-admin/src/page/checkDiff/index.jsx | 18 rsf-admin/src/page/checkDiffItem/CheckDiffItemEdit.jsx | 163 ++++ /dev/null | 141 --- rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/CheckDiffItemMapper.java | 12 rsf-admin/src/page/checkDiff/CheckDiffCreate.jsx | 159 ++++ rsf-admin/src/page/orders/check/CheckOrderPub.jsx | 27 rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/CheckDiffMapper.java | 12 rsf-admin/src/page/checkDiffItem/CheckDiffItemPanel.jsx | 123 +++ rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CheckDiffService.java | 8 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/CheckDiff.java | 238 ++++++ 31 files changed, 2,129 insertions(+), 156 deletions(-) diff --git a/rsf-admin/src/i18n/en.js b/rsf-admin/src/i18n/en.js index 3e2edf7..789e68e 100644 --- a/rsf-admin/src/i18n/en.js +++ b/rsf-admin/src/i18n/en.js @@ -97,6 +97,7 @@ desc: 'Are you sure you want to proceed?', }, placeholder: 'Please enter your search content', + locEmpty: 'Check Locs can not NULL', }, aside: { category: 'Category', @@ -877,7 +878,7 @@ groupQty: 'Group Qty', qty: "qty", orderNum: "orderNum", - progress:"progress" + progress: "progress" }, waveItem: { waveId: "waveId", diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js index b98d8cf..851096d 100644 --- a/rsf-admin/src/i18n/zh.js +++ b/rsf-admin/src/i18n/zh.js @@ -97,6 +97,7 @@ tip: '鎻愮ず', desc: '鎮ㄧ‘瀹氳鎵ц姝ゆ搷浣滃悧锛�', }, + locEmpty: '璇烽�夋嫨鐩樼偣搴撲綅', placeholder: '璇疯緭鍏ユ悳绱㈠唴瀹�', }, aside: { diff --git a/rsf-admin/src/page/checkDiff/CheckDiffCreate.jsx b/rsf-admin/src/page/checkDiff/CheckDiffCreate.jsx new file mode 100644 index 0000000..a089a43 --- /dev/null +++ b/rsf-admin/src/page/checkDiff/CheckDiffCreate.jsx @@ -0,0 +1,159 @@ +import React, { useState, useRef, useEffect, useMemo } from "react"; +import { + CreateBase, + useTranslate, + TextInput, + NumberInput, + BooleanInput, + DateInput, + SaveButton, + SelectInput, + ReferenceInput, + ReferenceArrayInput, + AutocompleteInput, + Toolbar, + required, + useDataProvider, + useNotify, + Form, + useCreateController, +} from 'react-admin'; +import { + Dialog, + DialogActions, + DialogContent, + DialogTitle, + Stack, + Grid, + Box, +} from '@mui/material'; +import DialogCloseButton from "../components/DialogCloseButton"; +import StatusSelectInput from "../components/StatusSelectInput"; +import MemoInput from "../components/MemoInput"; + +const CheckDiffCreate = (props) => { + const { open, setOpen } = props; + + const translate = useTranslate(); + const notify = useNotify(); + + const handleClose = (event, reason) => { + if (reason !== "backdropClick") { + setOpen(false); + } + }; + + const handleSuccess = async (data) => { + setOpen(false); + notify('common.response.success'); + }; + + const handleError = async (error) => { + notify(error.message || 'common.response.fail', { type: 'error', messageArgs: { _: error.message } }); + }; + + return ( + <> + <CreateBase + record={{}} + transform={(data) => { + return data; + }} + mutationOptions={{ onSuccess: handleSuccess, onError: handleError }} + > + <Dialog + open={open} + onClose={handleClose} + aria-labelledby="form-dialog-title" + fullWidth + disableRestoreFocus + maxWidth="md" // 'xs' | 'sm' | 'md' | 'lg' | 'xl' + > + <Form> + <DialogTitle id="form-dialog-title" sx={{ + position: 'sticky', + top: 0, + backgroundColor: 'background.paper', + zIndex: 1000 + }} + > + {translate('create.title')} + <Box sx={{ position: 'absolute', top: 8, right: 8, zIndex: 1001 }}> + <DialogCloseButton onClose={handleClose} /> + </Box> + </DialogTitle> + <DialogContent sx={{ mt: 2 }}> + <Grid container rowSpacing={2} columnSpacing={2}> + <Grid item xs={6} display="flex" gap={1}> + <TextInput + label="table.field.checkDiff.orderCode" + source="orderCode" + parse={v => v} + autoFocus + /> + </Grid> + <Grid item xs={6} display="flex" gap={1}> + <SelectInput + label="table.field.checkDiff.checkType" + source="checkType" + choices={[ + { id: 0, name: '鏄庣洏' }, + { id: 1, name: '鏆楃洏' }, + ]} + /> + </Grid> + <Grid item xs={6} display="flex" gap={1}> + <NumberInput + label="table.field.checkDiff.areaId" + source="areaId" + /> + </Grid> + <Grid item xs={6} display="flex" gap={1}> + <TextInput + label="table.field.checkDiff.areaName" + source="areaName" + parse={v => v} + /> + </Grid> + <Grid item xs={6} display="flex" gap={1}> + <NumberInput + label="table.field.checkDiff.anfme" + source="anfme" + /> + </Grid> + <Grid item xs={6} display="flex" gap={1}> + <NumberInput + label="table.field.checkDiff.checkQty" + source="checkQty" + /> + </Grid> + <Grid item xs={6} display="flex" gap={1}> + <NumberInput + label="table.field.checkDiff.exceStatus" + source="exceStatus" + /> + </Grid> + + <Grid item xs={6} display="flex" gap={1}> + <StatusSelectInput /> + </Grid> + <Grid item xs={12} display="flex" gap={1}> + <Stack direction="column" spacing={1} width={'100%'}> + <MemoInput /> + </Stack> + </Grid> + </Grid> + </DialogContent> + <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}> + <Toolbar sx={{ width: '100%', justifyContent: 'space-between' }} > + <SaveButton /> + </Toolbar> + </DialogActions> + </Form> + </Dialog> + </CreateBase> + </> + ) +} + +export default CheckDiffCreate; diff --git a/rsf-admin/src/page/checkDiff/CheckDiffEdit.jsx b/rsf-admin/src/page/checkDiff/CheckDiffEdit.jsx new file mode 100644 index 0000000..e29859d --- /dev/null +++ b/rsf-admin/src/page/checkDiff/CheckDiffEdit.jsx @@ -0,0 +1,131 @@ +import React, { useState, useRef, useEffect, useMemo } from "react"; +import { + Edit, + SimpleForm, + FormDataConsumer, + useTranslate, + TextInput, + NumberInput, + BooleanInput, + DateInput, + SelectInput, + ReferenceInput, + ReferenceArrayInput, + AutocompleteInput, + SaveButton, + Toolbar, + Labeled, + NumberField, + required, + useRecordContext, + DeleteButton, +} from 'react-admin'; +import { useWatch, useFormContext } from "react-hook-form"; +import { Stack, Grid, Box, Typography } from '@mui/material'; +import * as Common from '@/utils/common'; +import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting'; +import EditBaseAside from "../components/EditBaseAside"; +import CustomerTopToolBar from "../components/EditTopToolBar"; +import MemoInput from "../components/MemoInput"; +import StatusSelectInput from "../components/StatusSelectInput"; + +const FormToolbar = () => { + const { getValues } = useFormContext(); + + return ( + <Toolbar sx={{ justifyContent: 'space-between' }}> + <SaveButton /> + <DeleteButton mutationMode="optimistic" /> + </Toolbar> + ) +} + +const CheckDiffEdit = () => { + const translate = useTranslate(); + + return ( + <Edit + redirect="list" + mutationMode={EDIT_MODE} + actions={<CustomerTopToolBar />} + aside={<EditBaseAside />} + > + <SimpleForm + shouldUnregister + warnWhenUnsavedChanges + toolbar={<FormToolbar />} + mode="onTouched" + defaultValues={{}} + // validate={(values) => { }} + > + <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={3} columnSpacing={3}> + <Grid item xs={12} md={8}> + <Typography variant="h6" gutterBottom> + {translate('common.edit.title.main')} + </Typography> + <Stack direction='row' gap={2}> + <TextInput + label="table.field.checkDiff.orderCode" + source="orderCode" + parse={v => v} + autoFocus + /> + </Stack> + <Stack direction='row' gap={2}> + <SelectInput + label="table.field.checkDiff.checkType" + source="checkType" + choices={[ + { id: 0, name: '鏄庣洏' }, + { id: 1, name: '鏆楃洏' }, + ]} + /> + </Stack> + <Stack direction='row' gap={2}> + <NumberInput + label="table.field.checkDiff.areaId" + source="areaId" + /> + </Stack> + <Stack direction='row' gap={2}> + <TextInput + label="table.field.checkDiff.areaName" + source="areaName" + parse={v => v} + /> + </Stack> + <Stack direction='row' gap={2}> + <NumberInput + label="table.field.checkDiff.anfme" + source="anfme" + /> + </Stack> + <Stack direction='row' gap={2}> + <NumberInput + label="table.field.checkDiff.checkQty" + source="checkQty" + /> + </Stack> + <Stack direction='row' gap={2}> + <NumberInput + label="table.field.checkDiff.exceStatus" + source="exceStatus" + /> + </Stack> + + </Grid> + <Grid item xs={12} md={4}> + <Typography variant="h6" gutterBottom> + {translate('common.edit.title.common')} + </Typography> + <StatusSelectInput /> + <Box mt="2em" /> + <MemoInput /> + </Grid> + </Grid> + </SimpleForm> + </Edit > + ) +} + +export default CheckDiffEdit; diff --git a/rsf-admin/src/page/checkDiff/CheckDiffList.jsx b/rsf-admin/src/page/checkDiff/CheckDiffList.jsx new file mode 100644 index 0000000..8aa3fc7 --- /dev/null +++ b/rsf-admin/src/page/checkDiff/CheckDiffList.jsx @@ -0,0 +1,169 @@ +import React, { useState, useRef, useEffect, useMemo, useCallback } from "react"; +import { useNavigate } from 'react-router-dom'; +import { + List, + DatagridConfigurable, + SearchInput, + TopToolbar, + SelectColumnsButton, + EditButton, + FilterButton, + CreateButton, + ExportButton, + BulkDeleteButton, + WrapperField, + useRecordContext, + useTranslate, + useNotify, + useListContext, + FunctionField, + TextField, + NumberField, + DateField, + BooleanField, + ReferenceField, + TextInput, + DateTimeInput, + DateInput, + SelectInput, + NumberInput, + ReferenceInput, + ReferenceArrayInput, + AutocompleteInput, + DeleteButton, +} from 'react-admin'; +import { Box, Typography, Card, Stack } from '@mui/material'; +import { styled } from '@mui/material/styles'; +import CheckDiffCreate from "./CheckDiffCreate"; +import CheckDiffPanel from "./CheckDiffPanel"; +import EmptyData from "../components/EmptyData"; +import MyCreateButton from "../components/MyCreateButton"; +import MyExportButton from '../components/MyExportButton'; +import PageDrawer from "../components/PageDrawer"; +import MyField from "../components/MyField"; +import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; +import * as Common from '@/utils/common'; + +const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ + '& .css-1vooibu-MuiSvgIcon-root': { + height: '.9em' + }, + '& .RaDatagrid-row': { + cursor: 'auto' + }, + '& .column-name': { + }, + '& .opt': { + width: 200 + }, +})); + +const filters = [ + <SearchInput source="condition" alwaysOn />, + <DateInput label='common.time.after' source="timeStart" alwaysOn />, + <DateInput label='common.time.before' source="timeEnd" alwaysOn />, + + <TextInput source="orderCode" label="table.field.checkDiff.orderCode" />, + <SelectInput source="checkType" label="table.field.checkDiff.checkType" + choices={[ + { id: 0, name: '鏄庣洏' }, + { id: 1, name: '鏆楃洏' }, + ]} + />, + <NumberInput source="areaId" label="table.field.checkDiff.areaId" />, + <TextInput source="areaName" label="table.field.checkDiff.areaName" />, + <NumberInput source="anfme" label="table.field.checkDiff.anfme" />, + <NumberInput source="checkQty" label="table.field.checkDiff.checkQty" />, + <NumberInput source="exceStatus" label="table.field.checkDiff.exceStatus" />, + + <TextInput label="common.field.memo" source="memo" />, + <SelectInput + label="common.field.status" + source="status" + choices={[ + { id: '1', name: 'common.enums.statusTrue' }, + { id: '0', name: 'common.enums.statusFalse' }, + ]} + resettable + />, +] + +const CheckDiffList = () => { + const translate = useTranslate(); + + const [createDialog, setCreateDialog] = useState(false); + const [drawerVal, setDrawerVal] = useState(false); + + return ( + <Box display="flex"> + <List + sx={{ + flexGrow: 1, + transition: (theme) => + theme.transitions.create(['all'], { + duration: theme.transitions.duration.enteringScreen, + }), + marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0, + }} + title={"menu.checkDiff"} + empty={<EmptyData onClick={() => { setCreateDialog(true) }} />} + filters={filters} + sort={{ field: "create_time", order: "desc" }} + actions={( + <TopToolbar> + <FilterButton /> + <MyCreateButton onClick={() => { setCreateDialog(true) }} /> + <SelectColumnsButton preferenceKey='checkDiff' /> + <MyExportButton /> + </TopToolbar> + )} + perPage={DEFAULT_PAGE_SIZE} + > + <StyledDatagrid + preferenceKey='checkDiff' + bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />} + rowClick={(id, resource, record) => false} + expand={() => <CheckDiffPanel />} + expandSingle={true} + omit={['id', 'createTime', 'createBy', 'memo']} + > + <NumberField source="id" /> + <TextField source="orderCode" label="table.field.checkDiff.orderCode" /> + <TextField source="checkType$" label="table.field.checkDiff.checkType" sortable={false} /> + <NumberField source="areaId" label="table.field.checkDiff.areaId" /> + <TextField source="areaName" label="table.field.checkDiff.areaName" /> + <NumberField source="anfme" label="table.field.checkDiff.anfme" /> + <NumberField source="checkQty" label="table.field.checkDiff.checkQty" /> + <NumberField source="exceStatus" label="table.field.checkDiff.exceStatus" /> + + <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}> + <TextField source="nickname" /> + </ReferenceField> + <DateField source="updateTime" label="common.field.updateTime" showTime /> + <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}> + <TextField source="nickname" /> + </ReferenceField> + <DateField source="createTime" label="common.field.createTime" showTime /> + <BooleanField source="statusBool" label="common.field.status" sortable={false} /> + <TextField source="memo" label="common.field.memo" sortable={false} /> + <WrapperField cellClassName="opt" label="common.field.opt"> + <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} /> + <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> + </WrapperField> + </StyledDatagrid> + </List> + <CheckDiffCreate + open={createDialog} + setOpen={setCreateDialog} + /> + <PageDrawer + title='CheckDiff Detail' + drawerVal={drawerVal} + setDrawerVal={setDrawerVal} + > + </PageDrawer> + </Box> + ) +} + +export default CheckDiffList; diff --git a/rsf-admin/src/page/checkDiff/CheckDiffPanel.jsx b/rsf-admin/src/page/checkDiff/CheckDiffPanel.jsx new file mode 100644 index 0000000..4ad45b5 --- /dev/null +++ b/rsf-admin/src/page/checkDiff/CheckDiffPanel.jsx @@ -0,0 +1,93 @@ +import React, { useState, useRef, useEffect, useMemo } from "react"; +import { Box, Card, CardContent, Grid, Typography, Tooltip } from '@mui/material'; +import { + useTranslate, + useRecordContext, +} from 'react-admin'; +import PanelTypography from "../components/PanelTypography"; +import * as Common from '@/utils/common' + +const CheckDiffPanel = () => { + const record = useRecordContext(); + if (!record) return null; + const translate = useTranslate(); + return ( + <> + <Card sx={{ width: { xs: 300, sm: 500, md: 600, lg: 800 }, margin: 'auto' }}> + <CardContent> + <Grid container spacing={2}> + <Grid item xs={12} sx={{ display: 'flex', justifyContent: 'space-between' }}> + <Typography variant="h6" gutterBottom align="left" sx={{ + maxWidth: { xs: '100px', sm: '180px', md: '260px', lg: '360px' }, + whiteSpace: 'nowrap', + overflow: 'hidden', + textOverflow: 'ellipsis', + }}> + {Common.camelToPascalWithSpaces(translate('table.field.checkDiff.id'))}: {record.id} + </Typography> + {/* inherit, primary, secondary, textPrimary, textSecondary, error */} + <Typography variant="h6" gutterBottom align="right" > + ID: {record.id} + </Typography> + </Grid> + </Grid> + <Grid container spacing={2}> + <Grid item xs={12} container alignContent="flex-end"> + <Typography variant="caption" color="textSecondary" sx={{ wordWrap: 'break-word', wordBreak: 'break-all' }}> + {Common.camelToPascalWithSpaces(translate('common.field.memo'))}:{record.memo} + </Typography> + </Grid> + </Grid> + <Box height={20}> </Box> + <Grid container spacing={2}> + <Grid item xs={6}> + <PanelTypography + title="table.field.checkDiff.orderCode" + property={record.orderCode} + /> + </Grid> + <Grid item xs={6}> + <PanelTypography + title="table.field.checkDiff.checkType" + property={record.checkType$} + /> + </Grid> + <Grid item xs={6}> + <PanelTypography + title="table.field.checkDiff.areaId" + property={record.areaId} + /> + </Grid> + <Grid item xs={6}> + <PanelTypography + title="table.field.checkDiff.areaName" + property={record.areaName} + /> + </Grid> + <Grid item xs={6}> + <PanelTypography + title="table.field.checkDiff.anfme" + property={record.anfme} + /> + </Grid> + <Grid item xs={6}> + <PanelTypography + title="table.field.checkDiff.checkQty" + property={record.checkQty} + /> + </Grid> + <Grid item xs={6}> + <PanelTypography + title="table.field.checkDiff.exceStatus" + property={record.exceStatus} + /> + </Grid> + + </Grid> + </CardContent> + </Card > + </> + ); +}; + +export default CheckDiffPanel; diff --git a/rsf-admin/src/page/checkDiff/index.jsx b/rsf-admin/src/page/checkDiff/index.jsx new file mode 100644 index 0000000..c488e1e --- /dev/null +++ b/rsf-admin/src/page/checkDiff/index.jsx @@ -0,0 +1,18 @@ +import React, { useState, useRef, useEffect, useMemo } from "react"; +import { + ListGuesser, + EditGuesser, + ShowGuesser, +} from "react-admin"; + +import CheckDiffList from "./CheckDiffList"; +import CheckDiffEdit from "./CheckDiffEdit"; + +export default { + list: CheckDiffList, + edit: CheckDiffEdit, + show: ShowGuesser, + recordRepresentation: (record) => { + return `${record.id}` + } +}; diff --git a/rsf-admin/src/page/checkDiffItem/CheckDiffItemCreate.jsx b/rsf-admin/src/page/checkDiffItem/CheckDiffItemCreate.jsx new file mode 100644 index 0000000..6a1ddad --- /dev/null +++ b/rsf-admin/src/page/checkDiffItem/CheckDiffItemCreate.jsx @@ -0,0 +1,191 @@ +import React, { useState, useRef, useEffect, useMemo } from "react"; +import { + CreateBase, + useTranslate, + TextInput, + NumberInput, + BooleanInput, + DateInput, + SaveButton, + SelectInput, + ReferenceInput, + ReferenceArrayInput, + AutocompleteInput, + Toolbar, + required, + useDataProvider, + useNotify, + Form, + useCreateController, +} from 'react-admin'; +import { + Dialog, + DialogActions, + DialogContent, + DialogTitle, + Stack, + Grid, + Box, +} from '@mui/material'; +import DialogCloseButton from "../components/DialogCloseButton"; +import StatusSelectInput from "../components/StatusSelectInput"; +import MemoInput from "../components/MemoInput"; + +const CheckDiffItemCreate = (props) => { + const { open, setOpen } = props; + + const translate = useTranslate(); + const notify = useNotify(); + + const handleClose = (event, reason) => { + if (reason !== "backdropClick") { + setOpen(false); + } + }; + + const handleSuccess = async (data) => { + setOpen(false); + notify('common.response.success'); + }; + + const handleError = async (error) => { + notify(error.message || 'common.response.fail', { type: 'error', messageArgs: { _: error.message } }); + }; + + return ( + <> + <CreateBase + record={{}} + transform={(data) => { + return data; + }} + mutationOptions={{ onSuccess: handleSuccess, onError: handleError }} + > + <Dialog + open={open} + onClose={handleClose} + aria-labelledby="form-dialog-title" + fullWidth + disableRestoreFocus + maxWidth="md" // 'xs' | 'sm' | 'md' | 'lg' | 'xl' + > + <Form> + <DialogTitle id="form-dialog-title" sx={{ + position: 'sticky', + top: 0, + backgroundColor: 'background.paper', + zIndex: 1000 + }} + > + {translate('create.title')} + <Box sx={{ position: 'absolute', top: 8, right: 8, zIndex: 1001 }}> + <DialogCloseButton onClose={handleClose} /> + </Box> + </DialogTitle> + <DialogContent sx={{ mt: 2 }}> + <Grid container rowSpacing={2} columnSpacing={2}> + <Grid item xs={6} display="flex" gap={1}> + <NumberInput + label="table.field.checkDiffItem.checkId" + source="checkId" + autoFocus + /> + </Grid> + <Grid item xs={6} display="flex" gap={1}> + <TextInput + label="table.field.checkDiffItem.orderCode" + source="orderCode" + parse={v => v} + /> + </Grid> + <Grid item xs={6} display="flex" gap={1}> + <TextInput + label="table.field.checkDiffItem.maktx" + source="maktx" + parse={v => v} + /> + </Grid> + <Grid item xs={6} display="flex" gap={1}> + <TextInput + label="table.field.checkDiffItem.matnrCode" + source="matnrCode" + parse={v => v} + /> + </Grid> + <Grid item xs={6} display="flex" gap={1}> + <TextInput + label="table.field.checkDiffItem.spec" + source="spec" + parse={v => v} + /> + </Grid> + <Grid item xs={6} display="flex" gap={1}> + <TextInput + label="table.field.checkDiffItem.model" + source="model" + parse={v => v} + /> + </Grid> + <Grid item xs={6} display="flex" gap={1}> + <TextInput + label="table.field.checkDiffItem.barcode" + source="barcode" + parse={v => v} + /> + </Grid> + <Grid item xs={6} display="flex" gap={1}> + <TextInput + label="table.field.checkDiffItem.batch" + source="batch" + parse={v => v} + /> + </Grid> + <Grid item xs={6} display="flex" gap={1}> + <NumberInput + label="table.field.checkDiffItem.anfme" + source="anfme" + /> + </Grid> + <Grid item xs={6} display="flex" gap={1}> + <NumberInput + label="table.field.checkDiffItem.checkQty" + source="checkQty" + /> + </Grid> + <Grid item xs={6} display="flex" gap={1}> + <NumberInput + label="table.field.checkDiffItem.exceStatus" + source="exceStatus" + /> + </Grid> + <Grid item xs={6} display="flex" gap={1}> + <TextInput + label="table.field.checkDiffItem.reason" + source="reason" + parse={v => v} + /> + </Grid> + + <Grid item xs={6} display="flex" gap={1}> + <StatusSelectInput /> + </Grid> + <Grid item xs={12} display="flex" gap={1}> + <Stack direction="column" spacing={1} width={'100%'}> + <MemoInput /> + </Stack> + </Grid> + </Grid> + </DialogContent> + <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}> + <Toolbar sx={{ width: '100%', justifyContent: 'space-between' }} > + <SaveButton /> + </Toolbar> + </DialogActions> + </Form> + </Dialog> + </CreateBase> + </> + ) +} + +export default CheckDiffItemCreate; diff --git a/rsf-admin/src/page/checkDiffItem/CheckDiffItemEdit.jsx b/rsf-admin/src/page/checkDiffItem/CheckDiffItemEdit.jsx new file mode 100644 index 0000000..ea5a6b6 --- /dev/null +++ b/rsf-admin/src/page/checkDiffItem/CheckDiffItemEdit.jsx @@ -0,0 +1,163 @@ +import React, { useState, useRef, useEffect, useMemo } from "react"; +import { + Edit, + SimpleForm, + FormDataConsumer, + useTranslate, + TextInput, + NumberInput, + BooleanInput, + DateInput, + SelectInput, + ReferenceInput, + ReferenceArrayInput, + AutocompleteInput, + SaveButton, + Toolbar, + Labeled, + NumberField, + required, + useRecordContext, + DeleteButton, +} from 'react-admin'; +import { useWatch, useFormContext } from "react-hook-form"; +import { Stack, Grid, Box, Typography } from '@mui/material'; +import * as Common from '@/utils/common'; +import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting'; +import EditBaseAside from "../components/EditBaseAside"; +import CustomerTopToolBar from "../components/EditTopToolBar"; +import MemoInput from "../components/MemoInput"; +import StatusSelectInput from "../components/StatusSelectInput"; + +const FormToolbar = () => { + const { getValues } = useFormContext(); + + return ( + <Toolbar sx={{ justifyContent: 'space-between' }}> + <SaveButton /> + <DeleteButton mutationMode="optimistic" /> + </Toolbar> + ) +} + +const CheckDiffItemEdit = () => { + const translate = useTranslate(); + + return ( + <Edit + redirect="list" + mutationMode={EDIT_MODE} + actions={<CustomerTopToolBar />} + aside={<EditBaseAside />} + > + <SimpleForm + shouldUnregister + warnWhenUnsavedChanges + toolbar={<FormToolbar />} + mode="onTouched" + defaultValues={{}} + // validate={(values) => { }} + > + <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={3} columnSpacing={3}> + <Grid item xs={12} md={8}> + <Typography variant="h6" gutterBottom> + {translate('common.edit.title.main')} + </Typography> + <Stack direction='row' gap={2}> + <NumberInput + label="table.field.checkDiffItem.checkId" + source="checkId" + autoFocus + /> + </Stack> + <Stack direction='row' gap={2}> + <TextInput + label="table.field.checkDiffItem.orderCode" + source="orderCode" + parse={v => v} + /> + </Stack> + <Stack direction='row' gap={2}> + <TextInput + label="table.field.checkDiffItem.maktx" + source="maktx" + parse={v => v} + /> + </Stack> + <Stack direction='row' gap={2}> + <TextInput + label="table.field.checkDiffItem.matnrCode" + source="matnrCode" + parse={v => v} + /> + </Stack> + <Stack direction='row' gap={2}> + <TextInput + label="table.field.checkDiffItem.spec" + source="spec" + parse={v => v} + /> + </Stack> + <Stack direction='row' gap={2}> + <TextInput + label="table.field.checkDiffItem.model" + source="model" + parse={v => v} + /> + </Stack> + <Stack direction='row' gap={2}> + <TextInput + label="table.field.checkDiffItem.barcode" + source="barcode" + parse={v => v} + /> + </Stack> + <Stack direction='row' gap={2}> + <TextInput + label="table.field.checkDiffItem.batch" + source="batch" + parse={v => v} + /> + </Stack> + <Stack direction='row' gap={2}> + <NumberInput + label="table.field.checkDiffItem.anfme" + source="anfme" + /> + </Stack> + <Stack direction='row' gap={2}> + <NumberInput + label="table.field.checkDiffItem.checkQty" + source="checkQty" + /> + </Stack> + <Stack direction='row' gap={2}> + <NumberInput + label="table.field.checkDiffItem.exceStatus" + source="exceStatus" + /> + </Stack> + <Stack direction='row' gap={2}> + <TextInput + label="table.field.checkDiffItem.reason" + source="reason" + parse={v => v} + /> + </Stack> + + </Grid> + <Grid item xs={12} md={4}> + <Typography variant="h6" gutterBottom> + {translate('common.edit.title.common')} + </Typography> + <StatusSelectInput /> + <Box mt="2em" /> + <MemoInput /> + </Grid> + </Grid> + </SimpleForm> + </Edit > + ) +} + +export default CheckDiffItemEdit; diff --git a/rsf-admin/src/page/checkDiffItem/CheckDiffItemList.jsx b/rsf-admin/src/page/checkDiffItem/CheckDiffItemList.jsx new file mode 100644 index 0000000..fc65063 --- /dev/null +++ b/rsf-admin/src/page/checkDiffItem/CheckDiffItemList.jsx @@ -0,0 +1,174 @@ +import React, { useState, useRef, useEffect, useMemo, useCallback } from "react"; +import { useNavigate } from 'react-router-dom'; +import { + List, + DatagridConfigurable, + SearchInput, + TopToolbar, + SelectColumnsButton, + EditButton, + FilterButton, + CreateButton, + ExportButton, + BulkDeleteButton, + WrapperField, + useRecordContext, + useTranslate, + useNotify, + useListContext, + FunctionField, + TextField, + NumberField, + DateField, + BooleanField, + ReferenceField, + TextInput, + DateTimeInput, + DateInput, + SelectInput, + NumberInput, + ReferenceInput, + ReferenceArrayInput, + AutocompleteInput, + DeleteButton, +} from 'react-admin'; +import { Box, Typography, Card, Stack } from '@mui/material'; +import { styled } from '@mui/material/styles'; +import CheckDiffItemCreate from "./CheckDiffItemCreate"; +import CheckDiffItemPanel from "./CheckDiffItemPanel"; +import EmptyData from "../components/EmptyData"; +import MyCreateButton from "../components/MyCreateButton"; +import MyExportButton from '../components/MyExportButton'; +import PageDrawer from "../components/PageDrawer"; +import MyField from "../components/MyField"; +import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; +import * as Common from '@/utils/common'; + +const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ + '& .css-1vooibu-MuiSvgIcon-root': { + height: '.9em' + }, + '& .RaDatagrid-row': { + cursor: 'auto' + }, + '& .column-name': { + }, + '& .opt': { + width: 200 + }, +})); + +const filters = [ + <SearchInput source="condition" alwaysOn />, + <DateInput label='common.time.after' source="timeStart" alwaysOn />, + <DateInput label='common.time.before' source="timeEnd" alwaysOn />, + + <NumberInput source="checkId" label="table.field.checkDiffItem.checkId" />, + <TextInput source="orderCode" label="table.field.checkDiffItem.orderCode" />, + <TextInput source="maktx" label="table.field.checkDiffItem.maktx" />, + <TextInput source="matnrCode" label="table.field.checkDiffItem.matnrCode" />, + <TextInput source="spec" label="table.field.checkDiffItem.spec" />, + <TextInput source="model" label="table.field.checkDiffItem.model" />, + <TextInput source="barcode" label="table.field.checkDiffItem.barcode" />, + <TextInput source="batch" label="table.field.checkDiffItem.batch" />, + <NumberInput source="anfme" label="table.field.checkDiffItem.anfme" />, + <NumberInput source="checkQty" label="table.field.checkDiffItem.checkQty" />, + <NumberInput source="exceStatus" label="table.field.checkDiffItem.exceStatus" />, + <TextInput source="reason" label="table.field.checkDiffItem.reason" />, + + <TextInput label="common.field.memo" source="memo" />, + <SelectInput + label="common.field.status" + source="status" + choices={[ + { id: '1', name: 'common.enums.statusTrue' }, + { id: '0', name: 'common.enums.statusFalse' }, + ]} + resettable + />, +] + +const CheckDiffItemList = () => { + const translate = useTranslate(); + + const [createDialog, setCreateDialog] = useState(false); + const [drawerVal, setDrawerVal] = useState(false); + + return ( + <Box display="flex"> + <List + sx={{ + flexGrow: 1, + transition: (theme) => + theme.transitions.create(['all'], { + duration: theme.transitions.duration.enteringScreen, + }), + marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0, + }} + title={"menu.checkDiffItem"} + empty={<EmptyData onClick={() => { setCreateDialog(true) }} />} + filters={filters} + sort={{ field: "create_time", order: "desc" }} + actions={( + <TopToolbar> + <FilterButton /> + <MyCreateButton onClick={() => { setCreateDialog(true) }} /> + <SelectColumnsButton preferenceKey='checkDiffItem' /> + <MyExportButton /> + </TopToolbar> + )} + perPage={DEFAULT_PAGE_SIZE} + > + <StyledDatagrid + preferenceKey='checkDiffItem' + bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />} + rowClick={(id, resource, record) => false} + expand={() => <CheckDiffItemPanel />} + expandSingle={true} + omit={['id', 'createTime', 'createBy', 'memo']} + > + <NumberField source="id" /> + <NumberField source="checkId" label="table.field.checkDiffItem.checkId" /> + <TextField source="orderCode" label="table.field.checkDiffItem.orderCode" /> + <TextField source="maktx" label="table.field.checkDiffItem.maktx" /> + <TextField source="matnrCode" label="table.field.checkDiffItem.matnrCode" /> + <TextField source="spec" label="table.field.checkDiffItem.spec" /> + <TextField source="model" label="table.field.checkDiffItem.model" /> + <TextField source="barcode" label="table.field.checkDiffItem.barcode" /> + <TextField source="batch" label="table.field.checkDiffItem.batch" /> + <NumberField source="anfme" label="table.field.checkDiffItem.anfme" /> + <NumberField source="checkQty" label="table.field.checkDiffItem.checkQty" /> + <NumberField source="exceStatus" label="table.field.checkDiffItem.exceStatus" /> + <TextField source="reason" label="table.field.checkDiffItem.reason" /> + + <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}> + <TextField source="nickname" /> + </ReferenceField> + <DateField source="updateTime" label="common.field.updateTime" showTime /> + <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}> + <TextField source="nickname" /> + </ReferenceField> + <DateField source="createTime" label="common.field.createTime" showTime /> + <BooleanField source="statusBool" label="common.field.status" sortable={false} /> + <TextField source="memo" label="common.field.memo" sortable={false} /> + <WrapperField cellClassName="opt" label="common.field.opt"> + <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} /> + <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> + </WrapperField> + </StyledDatagrid> + </List> + <CheckDiffItemCreate + open={createDialog} + setOpen={setCreateDialog} + /> + <PageDrawer + title='CheckDiffItem Detail' + drawerVal={drawerVal} + setDrawerVal={setDrawerVal} + > + </PageDrawer> + </Box> + ) +} + +export default CheckDiffItemList; diff --git a/rsf-admin/src/page/checkDiffItem/CheckDiffItemPanel.jsx b/rsf-admin/src/page/checkDiffItem/CheckDiffItemPanel.jsx new file mode 100644 index 0000000..0e47dc6 --- /dev/null +++ b/rsf-admin/src/page/checkDiffItem/CheckDiffItemPanel.jsx @@ -0,0 +1,123 @@ +import React, { useState, useRef, useEffect, useMemo } from "react"; +import { Box, Card, CardContent, Grid, Typography, Tooltip } from '@mui/material'; +import { + useTranslate, + useRecordContext, +} from 'react-admin'; +import PanelTypography from "../components/PanelTypography"; +import * as Common from '@/utils/common' + +const CheckDiffItemPanel = () => { + const record = useRecordContext(); + if (!record) return null; + const translate = useTranslate(); + return ( + <> + <Card sx={{ width: { xs: 300, sm: 500, md: 600, lg: 800 }, margin: 'auto' }}> + <CardContent> + <Grid container spacing={2}> + <Grid item xs={12} sx={{ display: 'flex', justifyContent: 'space-between' }}> + <Typography variant="h6" gutterBottom align="left" sx={{ + maxWidth: { xs: '100px', sm: '180px', md: '260px', lg: '360px' }, + whiteSpace: 'nowrap', + overflow: 'hidden', + textOverflow: 'ellipsis', + }}> + {Common.camelToPascalWithSpaces(translate('table.field.checkDiffItem.id'))}: {record.id} + </Typography> + {/* inherit, primary, secondary, textPrimary, textSecondary, error */} + <Typography variant="h6" gutterBottom align="right" > + ID: {record.id} + </Typography> + </Grid> + </Grid> + <Grid container spacing={2}> + <Grid item xs={12} container alignContent="flex-end"> + <Typography variant="caption" color="textSecondary" sx={{ wordWrap: 'break-word', wordBreak: 'break-all' }}> + {Common.camelToPascalWithSpaces(translate('common.field.memo'))}:{record.memo} + </Typography> + </Grid> + </Grid> + <Box height={20}> </Box> + <Grid container spacing={2}> + <Grid item xs={6}> + <PanelTypography + title="table.field.checkDiffItem.checkId" + property={record.checkId} + /> + </Grid> + <Grid item xs={6}> + <PanelTypography + title="table.field.checkDiffItem.orderCode" + property={record.orderCode} + /> + </Grid> + <Grid item xs={6}> + <PanelTypography + title="table.field.checkDiffItem.maktx" + property={record.maktx} + /> + </Grid> + <Grid item xs={6}> + <PanelTypography + title="table.field.checkDiffItem.matnrCode" + property={record.matnrCode} + /> + </Grid> + <Grid item xs={6}> + <PanelTypography + title="table.field.checkDiffItem.spec" + property={record.spec} + /> + </Grid> + <Grid item xs={6}> + <PanelTypography + title="table.field.checkDiffItem.model" + property={record.model} + /> + </Grid> + <Grid item xs={6}> + <PanelTypography + title="table.field.checkDiffItem.barcode" + property={record.barcode} + /> + </Grid> + <Grid item xs={6}> + <PanelTypography + title="table.field.checkDiffItem.batch" + property={record.batch} + /> + </Grid> + <Grid item xs={6}> + <PanelTypography + title="table.field.checkDiffItem.anfme" + property={record.anfme} + /> + </Grid> + <Grid item xs={6}> + <PanelTypography + title="table.field.checkDiffItem.checkQty" + property={record.checkQty} + /> + </Grid> + <Grid item xs={6}> + <PanelTypography + title="table.field.checkDiffItem.exceStatus" + property={record.exceStatus} + /> + </Grid> + <Grid item xs={6}> + <PanelTypography + title="table.field.checkDiffItem.reason" + property={record.reason} + /> + </Grid> + + </Grid> + </CardContent> + </Card > + </> + ); +}; + +export default CheckDiffItemPanel; diff --git a/rsf-admin/src/page/checkDiffItem/index.jsx b/rsf-admin/src/page/checkDiffItem/index.jsx new file mode 100644 index 0000000..2482fc4 --- /dev/null +++ b/rsf-admin/src/page/checkDiffItem/index.jsx @@ -0,0 +1,18 @@ +import React, { useState, useRef, useEffect, useMemo } from "react"; +import { + ListGuesser, + EditGuesser, + ShowGuesser, +} from "react-admin"; + +import CheckDiffItemList from "./CheckDiffItemList"; +import CheckDiffItemEdit from "./CheckDiffItemEdit"; + +export default { + list: CheckDiffItemList, + edit: CheckDiffItemEdit, + show: ShowGuesser, + recordRepresentation: (record) => { + return `${record.id}` + } +}; diff --git a/rsf-admin/src/page/orders/check/CheckOrderPub.jsx b/rsf-admin/src/page/orders/check/CheckOrderPub.jsx index 54babf4..dd0816b 100644 --- a/rsf-admin/src/page/orders/check/CheckOrderPub.jsx +++ b/rsf-admin/src/page/orders/check/CheckOrderPub.jsx @@ -423,25 +423,34 @@ const SubmitButton = ({ selectedIds, setSelectedIds, rowSelectedIds, gridRef, record }) => { const notify = useNotify(); const refresh = useRefresh(); + const translate = useTranslate(); const redirect = useRedirect(); const submit = async () => { const items = gridRef.current?.getSortedRows(); let selctRecord = items.filter(item => selectedIds.includes(item?.id)); + if (selctRecord == undefined || selctRecord.length < 1) { + notify(translate('common.msg.locEmpty'), { type: 'error' }); + return + } + //杩囨护锛屽皢搴撲綅娣诲姞鑷崇洏鐐瑰崟鏄庣粏涓� - const records = rowSelectedIds.map(map =>{ + const records = rowSelectedIds.map(map => { return { ...map, items: selctRecord.filter(item => item.matnrCode == map.matnrCode) } }) - - const { data: { code, data, msg } } = await request.post('/check/generate/tasks', records); - if (code == 200) { - refresh(); - redirect("/task") - } else { - notify(msg); - } + + console.log(records); + + + // const { data: { code, data, msg } } = await request.post('/check/generate/tasks', records); + // if (code == 200) { + // refresh(); + // redirect("/task") + // } else { + // notify(msg); + // } } return ( <ConfirmButton diff --git a/rsf-admin/src/page/orders/check/OutOrderPreview.jsx b/rsf-admin/src/page/orders/check/OutOrderPreview.jsx deleted file mode 100644 index ea4cb20..0000000 --- a/rsf-admin/src/page/orders/check/OutOrderPreview.jsx +++ /dev/null @@ -1,141 +0,0 @@ -import { Dialog, DialogActions, DialogContent, DialogTitle, Box, LinearProgress, Grid, } from "@mui/material"; -import React, { useState, useRef, useEffect, useMemo, memo } from "react"; -import { - Toolbar, - Button, - useTranslate, - useNotify, - useRefresh, - useGetList, -} from 'react-admin'; -import request from '@/utils/request'; -import { styled } from '@mui/material/styles'; -import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; -import { DataGrid, useGridApiContext, GridActionsCellItem, useGridApiRef } from '@mui/x-data-grid'; -import DialogCloseButton from "../../components/DialogCloseButton"; - - -const OutOrderPreview = (props) => { - const { open, setOpen, record, selectedIds, setCloseParent } = props; - const translate = useTranslate(); - const gridRef = useGridApiRef(); - const [rows, setRows] = useState([]); - const notify = useNotify(); - const refresh = useRefresh(); - const handleClose = async (event, reason) => { - if (reason !== "backdropClick") { - // const res = await request.get(`/outStock/items/cancel/` + selectedIds); - setOpen(false); - setCloseParent(false) - } - }; - - if (!selectedIds) { return } - - const { data, isLoading, error } = useGetList('/deliveryItem/edit', { - pagination: { page: 1, perPage: 1000 }, - filter: { deleted: 0, ids: selectedIds } - }); - - return ( - <Dialog - open={open} - onClose={handleClose} - aria-labelledby="form-dialog-title" - aria-hidden - fullWidth - maxWidth="lg" - > - <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> - <Grid container xl={12}> - <Grid item xl={12}> - <Box display="flex" sx={{ height: 400, width: '100%', '& .RaConfigurable-root': { width: '100%' } }}> - <LinearProgress sx={{ height: "2px", position: 'absolute', top: 0, left: 0, right: 0, }} /> - <OrderPreview rows={data} gridRef={gridRef} /> - </Box > - </Grid> - </Grid> - <Toolbar sx={{ justifyContent: 'end' }}> - <ConfirmButton label="toolbar.confirm" variant="contained" size="large" gridRef={gridRef} setOpen={setOpen} setCloseParent={setCloseParent}/> - </Toolbar> - </DialogContent> - </Dialog> - ) -} - -export default OutOrderPreview; - -const ConfirmButton = ({ gridRef, setOpen, setCloseParent }) => { - const refresh = useRefresh(); - const notify = useNotify(); - const confirm = async () => { - const items = gridRef.current?.getSortedRows(); - const { data: { code, msg } } = await request.post(`/outStock/generate/orders`, { ids: items }); - if (code === 200) { - notify(msg); - refresh() - setOpen(false) - setCloseParent(false) - } else { - notify(msg); - } - } - - return ( - <Button label="toolbar.confirm" variant="contained" size="large" onClick={confirm} /> - ) -} - -const OrderPreview = ({ rows, gridRef }) => { - gridRef.current = useGridApiRef(); - - const columns = [ - { field: 'matnrCode', headerName: '鐗╂枡缂栫爜', width: 110 }, - { field: 'maktx', headerName: '鐗╂枡鍚嶇О', width: 190 }, - { - field: 'anfme', headerName: '鍑哄簱鏁伴噺', width: 110, type: 'number', editable: true, - valueGetter: (value, row) => { - return row.anfme - row.workQty - row.qty; - }, - }, - { - field: 'workQty', headerName: '鍓╀綑鏁伴噺', width: 110, type: 'number', - valueGetter: (value, row) => { - return row.anfme - row.workQty - row.qty; - }, - }, - { field: 'unit', headerName: '鍗曚綅', width: 110 }, - { field: 'splrBatch', headerName: '鎵规', width: 110 }, - { field: 'splrName', headerName: '渚涘簲鍟�', width: 110 }, - { field: 'updateTime', headerName: '鏇存柊鏃堕棿', width: 110 }, - { field: 'updateBy$', headerName: '鏇存柊浜哄憳', width: 110 }, - ] - - return ( - <DataGrid - storeKey={"outOrderItemPreview"} - rows={rows} - columns={columns} - apiRef={gridRef} - disableRowSelectionOnClick - hideFooterPagination={true} // 闅愯棌鍒嗛〉鎺т欢 - hideFooter={true} - onRowSelectionModelChange={(ids) => { - setSelectedIds(ids) - }} - /> - ) -} - - diff --git a/rsf-server/src/main/java/checkDiff.sql b/rsf-server/src/main/java/checkDiff.sql new file mode 100644 index 0000000..a5acc0c --- /dev/null +++ b/rsf-server/src/main/java/checkDiff.sql @@ -0,0 +1,28 @@ +-- save checkDiff record +-- mysql +insert into `sys_menu` ( `name`, `parent_id`, `route`, `component`, `type`, `sort`, `tenant_id`, `status`) values ( 'menu.checkDiff', '0', '/manager/checkDiff', 'checkDiff', '0' , '0', '1' , '1'); + +insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Query 鐩樼偣宸紓琛�', '', '1', 'manager:checkDiff:list', '0', '1', '1'); +insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Create 鐩樼偣宸紓琛�', '', '1', 'manager:checkDiff:save', '1', '1', '1'); +insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Update 鐩樼偣宸紓琛�', '', '1', 'manager:checkDiff:update', '2', '1', '1'); +insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Delete 鐩樼偣宸紓琛�', '', '1', 'manager:checkDiff:remove', '3', '1', '1'); + +-- locale menu name +checkDiff: 'CheckDiff', + +-- locale field +checkDiff: { + orderCode: "orderCode", + checkType: "checkType", + areaId: "areaId", + areaName: "areaName", + anfme: "anfme", + checkQty: "checkQty", + exceStatus: "exceStatus", +}, + +-- ResourceContent +import checkDiff from './checkDiff'; + +case 'checkDiff': + return checkDiff; diff --git a/rsf-server/src/main/java/checkDiffItem.sql b/rsf-server/src/main/java/checkDiffItem.sql new file mode 100644 index 0000000..a0921ac --- /dev/null +++ b/rsf-server/src/main/java/checkDiffItem.sql @@ -0,0 +1,33 @@ +-- save checkDiffItem record +-- mysql +insert into `sys_menu` ( `name`, `parent_id`, `route`, `component`, `type`, `sort`, `tenant_id`, `status`) values ( 'menu.checkDiffItem', '0', '/manager/checkDiffItem', 'checkDiffItem', '0' , '0', '1' , '1'); + +insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Query 鐩樼偣鏄庣粏宸紓琛�', '', '1', 'manager:checkDiffItem:list', '0', '1', '1'); +insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Create 鐩樼偣鏄庣粏宸紓琛�', '', '1', 'manager:checkDiffItem:save', '1', '1', '1'); +insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Update 鐩樼偣鏄庣粏宸紓琛�', '', '1', 'manager:checkDiffItem:update', '2', '1', '1'); +insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Delete 鐩樼偣鏄庣粏宸紓琛�', '', '1', 'manager:checkDiffItem:remove', '3', '1', '1'); + +-- locale menu name +checkDiffItem: 'CheckDiffItem', + +-- locale field +checkDiffItem: { + checkId: "checkId", + orderCode: "orderCode", + maktx: "maktx", + matnrCode: "matnrCode", + spec: "spec", + model: "model", + barcode: "barcode", + batch: "batch", + anfme: "anfme", + checkQty: "checkQty", + exceStatus: "exceStatus", + reason: "reason", +}, + +-- ResourceContent +import checkDiffItem from './checkDiffItem'; + +case 'checkDiffItem': + return checkDiffItem; diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java index 71d2294..7cd976f 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java @@ -15,15 +15,15 @@ generator.frontendPrefixPath = "rsf-admin/"; generator.sqlOsType = SqlOsType.MYSQL; - generator.url = "127.0.0.1:3306/rsf"; + generator.url = "192.168.4.151:3306/rsf"; generator.username = "root"; generator.password = "34821015"; // generator.url="47.97.1.152:51433;databasename=jkasrs"; // generator.username="sa"; // generator.password="Zoneyung@zy56$"; - generator.table = "man_wave_sow_item"; - generator.tableDesc = "娉㈡绛栫暐"; + generator.table = "man_check_diff_item"; + generator.tableDesc = "鐩樼偣鏄庣粏宸紓琛�"; generator.packagePath = "com.vincent.rsf.server.manager"; generator.build(); diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckDiffController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckDiffController.java new file mode 100644 index 0000000..2ddfcb1 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckDiffController.java @@ -0,0 +1,110 @@ +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.CheckDiff; +import com.vincent.rsf.server.manager.service.CheckDiffService; +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 CheckDiffController extends BaseController { + + @Autowired + private CheckDiffService checkDiffService; + + @PreAuthorize("hasAuthority('manager:checkDiff:list')") + @PostMapping("/checkDiff/page") + public R page(@RequestBody Map<String, Object> map) { + BaseParam baseParam = buildParam(map, BaseParam.class); + PageParam<CheckDiff, BaseParam> pageParam = new PageParam<>(baseParam, CheckDiff.class); + return R.ok().add(checkDiffService.page(pageParam, pageParam.buildWrapper(true))); + } + + @PreAuthorize("hasAuthority('manager:checkDiff:list')") + @PostMapping("/checkDiff/list") + public R list(@RequestBody Map<String, Object> map) { + return R.ok().add(checkDiffService.list()); + } + + @PreAuthorize("hasAuthority('manager:checkDiff:list')") + @PostMapping({"/checkDiff/many/{ids}", "/checkDiffs/many/{ids}"}) + public R many(@PathVariable Long[] ids) { + return R.ok().add(checkDiffService.listByIds(Arrays.asList(ids))); + } + + @PreAuthorize("hasAuthority('manager:checkDiff:list')") + @GetMapping("/checkDiff/{id}") + public R get(@PathVariable("id") Long id) { + return R.ok().add(checkDiffService.getById(id)); + } + + @PreAuthorize("hasAuthority('manager:checkDiff:save')") + @OperationLog("Create 鐩樼偣宸紓琛�") + @PostMapping("/checkDiff/save") + public R save(@RequestBody CheckDiff checkDiff) { + checkDiff.setCreateBy(getLoginUserId()); + checkDiff.setCreateTime(new Date()); + checkDiff.setUpdateBy(getLoginUserId()); + checkDiff.setUpdateTime(new Date()); + if (!checkDiffService.save(checkDiff)) { + return R.error("Save Fail"); + } + return R.ok("Save Success").add(checkDiff); + } + + @PreAuthorize("hasAuthority('manager:checkDiff:update')") + @OperationLog("Update 鐩樼偣宸紓琛�") + @PostMapping("/checkDiff/update") + public R update(@RequestBody CheckDiff checkDiff) { + checkDiff.setUpdateBy(getLoginUserId()); + checkDiff.setUpdateTime(new Date()); + if (!checkDiffService.updateById(checkDiff)) { + return R.error("Update Fail"); + } + return R.ok("Update Success").add(checkDiff); + } + + @PreAuthorize("hasAuthority('manager:checkDiff:remove')") + @OperationLog("Delete 鐩樼偣宸紓琛�") + @PostMapping("/checkDiff/remove/{ids}") + public R remove(@PathVariable Long[] ids) { + if (!checkDiffService.removeByIds(Arrays.asList(ids))) { + return R.error("Delete Fail"); + } + return R.ok("Delete Success").add(ids); + } + + @PreAuthorize("hasAuthority('manager:checkDiff:list')") + @PostMapping("/checkDiff/query") + public R query(@RequestParam(required = false) String condition) { + List<KeyValVo> vos = new ArrayList<>(); + LambdaQueryWrapper<CheckDiff> wrapper = new LambdaQueryWrapper<>(); + if (!Cools.isEmpty(condition)) { + wrapper.like(CheckDiff::getId, condition); + } + checkDiffService.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:checkDiff:list')") + @PostMapping("/checkDiff/export") + public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception { + ExcelUtil.build(ExcelUtil.create(checkDiffService.list(), CheckDiff.class), response); + } + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckDiffItemController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckDiffItemController.java new file mode 100644 index 0000000..1ccf55c --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckDiffItemController.java @@ -0,0 +1,110 @@ +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.CheckDiffItem; +import com.vincent.rsf.server.manager.service.CheckDiffItemService; +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 CheckDiffItemController extends BaseController { + + @Autowired + private CheckDiffItemService checkDiffItemService; + + @PreAuthorize("hasAuthority('manager:checkDiffItem:list')") + @PostMapping("/checkDiffItem/page") + public R page(@RequestBody Map<String, Object> map) { + BaseParam baseParam = buildParam(map, BaseParam.class); + PageParam<CheckDiffItem, BaseParam> pageParam = new PageParam<>(baseParam, CheckDiffItem.class); + return R.ok().add(checkDiffItemService.page(pageParam, pageParam.buildWrapper(true))); + } + + @PreAuthorize("hasAuthority('manager:checkDiffItem:list')") + @PostMapping("/checkDiffItem/list") + public R list(@RequestBody Map<String, Object> map) { + return R.ok().add(checkDiffItemService.list()); + } + + @PreAuthorize("hasAuthority('manager:checkDiffItem:list')") + @PostMapping({"/checkDiffItem/many/{ids}", "/checkDiffItems/many/{ids}"}) + public R many(@PathVariable Long[] ids) { + return R.ok().add(checkDiffItemService.listByIds(Arrays.asList(ids))); + } + + @PreAuthorize("hasAuthority('manager:checkDiffItem:list')") + @GetMapping("/checkDiffItem/{id}") + public R get(@PathVariable("id") Long id) { + return R.ok().add(checkDiffItemService.getById(id)); + } + + @PreAuthorize("hasAuthority('manager:checkDiffItem:save')") + @OperationLog("Create 鐩樼偣鏄庣粏宸紓琛�") + @PostMapping("/checkDiffItem/save") + public R save(@RequestBody CheckDiffItem checkDiffItem) { + checkDiffItem.setCreateBy(getLoginUserId()); + checkDiffItem.setCreateTime(new Date()); + checkDiffItem.setUpdateBy(getLoginUserId()); + checkDiffItem.setUpdateTime(new Date()); + if (!checkDiffItemService.save(checkDiffItem)) { + return R.error("Save Fail"); + } + return R.ok("Save Success").add(checkDiffItem); + } + + @PreAuthorize("hasAuthority('manager:checkDiffItem:update')") + @OperationLog("Update 鐩樼偣鏄庣粏宸紓琛�") + @PostMapping("/checkDiffItem/update") + public R update(@RequestBody CheckDiffItem checkDiffItem) { + checkDiffItem.setUpdateBy(getLoginUserId()); + checkDiffItem.setUpdateTime(new Date()); + if (!checkDiffItemService.updateById(checkDiffItem)) { + return R.error("Update Fail"); + } + return R.ok("Update Success").add(checkDiffItem); + } + + @PreAuthorize("hasAuthority('manager:checkDiffItem:remove')") + @OperationLog("Delete 鐩樼偣鏄庣粏宸紓琛�") + @PostMapping("/checkDiffItem/remove/{ids}") + public R remove(@PathVariable Long[] ids) { + if (!checkDiffItemService.removeByIds(Arrays.asList(ids))) { + return R.error("Delete Fail"); + } + return R.ok("Delete Success").add(ids); + } + + @PreAuthorize("hasAuthority('manager:checkDiffItem:list')") + @PostMapping("/checkDiffItem/query") + public R query(@RequestParam(required = false) String condition) { + List<KeyValVo> vos = new ArrayList<>(); + LambdaQueryWrapper<CheckDiffItem> wrapper = new LambdaQueryWrapper<>(); + if (!Cools.isEmpty(condition)) { + wrapper.like(CheckDiffItem::getId, condition); + } + checkDiffItemService.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:checkDiffItem:list')") + @PostMapping("/checkDiffItem/export") + public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception { + ExcelUtil.build(ExcelUtil.create(checkDiffItemService.list(), CheckDiffItem.class), response); + } + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/CheckDiff.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/CheckDiff.java new file mode 100644 index 0000000..eba3df0 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/CheckDiff.java @@ -0,0 +1,238 @@ +package com.vincent.rsf.server.manager.entity; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.text.SimpleDateFormat; +import java.util.Date; +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 +@TableName("man_check_diff") +public class CheckDiff 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 orderCode; + + /** + * 鐩樼偣绫诲瀷 0: 鏄庣洏 1: 鏆楃洏 + */ + @ApiModelProperty(value= "鐩樼偣绫诲瀷 0: 鏄庣洏 1: 鏆楃洏 ") + private Integer checkType; + + /** + * 搴撳尯ID + */ + @ApiModelProperty(value= "搴撳尯ID") + private Long areaId; + + /** + * 搴撳尯鍚嶇О + */ + @ApiModelProperty(value= "搴撳尯鍚嶇О") + private String areaName; + + /** + * 甯愰潰搴撳瓨 + */ + @ApiModelProperty(value= "甯愰潰搴撳瓨") + private Double anfme; + + /** + * 鐩樼偣搴撳瓨 + */ + @ApiModelProperty(value= "鐩樼偣搴撳瓨") + private Double checkQty; + + /** + * 鎵ц鐘舵�� + */ + @ApiModelProperty(value= "鎵ц鐘舵��") + private Integer exceStatus; + + /** + * 鐘舵�� 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 CheckDiff() {} + + public CheckDiff(String orderCode,Integer checkType,Long areaId,String areaName,Double anfme,Double checkQty,Integer exceStatus,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) { + this.orderCode = orderCode; + this.checkType = checkType; + this.areaId = areaId; + this.areaName = areaName; + this.anfme = anfme; + this.checkQty = checkQty; + this.exceStatus = exceStatus; + this.status = status; + this.deleted = deleted; + this.tenantId = tenantId; + this.createBy = createBy; + this.createTime = createTime; + this.updateBy = updateBy; + this.updateTime = updateTime; + this.memo = memo; + } + +// CheckDiff checkDiff = new CheckDiff( +// null, // 鐩樼偣鍗� +// null, // 鐩樼偣绫诲瀷 +// null, // 搴撳尯ID +// null, // 搴撳尯鍚嶇О +// null, // 甯愰潰搴撳瓨 +// null, // 鐩樼偣搴撳瓨 +// null, // 鎵ц鐘舵�� +// null, // 鐘舵�乕闈炵┖] +// null, // 鏄惁鍒犻櫎[闈炵┖] +// null, // 绉熸埛 +// null, // 娣诲姞浜哄憳 +// null, // 娣诲姞鏃堕棿[闈炵┖] +// null, // 淇敼浜哄憳 +// null, // 淇敼鏃堕棿[闈炵┖] +// null // 澶囨敞 +// ); + + public String getCheckType$(){ + if (null == this.checkType){ return null; } + switch (this.checkType){ + case 0: + return "鏄庣洏"; + case 1: + return "鏆楃洏"; + default: + return String.valueOf(this.checkType); + } + } + + 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/CheckDiffItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/CheckDiffItem.java new file mode 100644 index 0000000..3cfe075 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/CheckDiffItem.java @@ -0,0 +1,266 @@ +package com.vincent.rsf.server.manager.entity; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.text.SimpleDateFormat; +import java.util.Date; +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 +@TableName("man_check_diff_item") +public class CheckDiffItem 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 checkId; + + /** + * 鐩樼偣鍗� + */ + @ApiModelProperty(value= "鐩樼偣鍗�") + private String orderCode; + + /** + * 鐗╂枡鍚嶇О + */ + @ApiModelProperty(value= "鐗╂枡鍚嶇О") + private String maktx; + + /** + * 鐗╂枡缂栫爜 + */ + @ApiModelProperty(value= "鐗╂枡缂栫爜") + private String matnrCode; + + /** + * 瑙勬牸 + */ + @ApiModelProperty(value= "瑙勬牸") + private String spec; + + /** + * 鍨嬪彿 + */ + @ApiModelProperty(value= "鍨嬪彿") + private String model; + + /** + * 鎵樼洏鐮� + */ + @ApiModelProperty(value= "鎵樼洏鐮�") + private String barcode; + + /** + * 鎵规 + */ + @ApiModelProperty(value= "鎵规") + private String batch; + + /** + * 甯愰潰搴撳瓨 + */ + @ApiModelProperty(value= "甯愰潰搴撳瓨") + private Double anfme; + + /** + * 鐩樼偣搴撳瓨 + */ + @ApiModelProperty(value= "鐩樼偣搴撳瓨") + private Double checkQty; + + /** + * 鎵ц鐘舵�� + */ + @ApiModelProperty(value= "鎵ц鐘舵��") + private Integer exceStatus; + + /** + * 宸紓鍘熷洜 + */ + @ApiModelProperty(value= "宸紓鍘熷洜") + private String reason; + + /** + * 鐘舵�� 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 CheckDiffItem() {} + + public CheckDiffItem(Long checkId,String orderCode,String maktx,String matnrCode,String spec,String model,String barcode,String batch,Double anfme,Double checkQty,Integer exceStatus,String reason,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) { + this.checkId = checkId; + this.orderCode = orderCode; + this.maktx = maktx; + this.matnrCode = matnrCode; + this.spec = spec; + this.model = model; + this.barcode = barcode; + this.batch = batch; + this.anfme = anfme; + this.checkQty = checkQty; + this.exceStatus = exceStatus; + this.reason = reason; + this.status = status; + this.deleted = deleted; + this.tenantId = tenantId; + this.createBy = createBy; + this.createTime = createTime; + this.updateBy = updateBy; + this.updateTime = updateTime; + this.memo = memo; + } + +// CheckDiffItem checkDiffItem = new CheckDiffItem( +// null, // 鐩樼偣ID +// 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/CheckDiffItemMapper.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/CheckDiffItemMapper.java new file mode 100644 index 0000000..46dcc9c --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/CheckDiffItemMapper.java @@ -0,0 +1,12 @@ +package com.vincent.rsf.server.manager.mapper; + +import com.vincent.rsf.server.manager.entity.CheckDiffItem; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +@Mapper +@Repository +public interface CheckDiffItemMapper extends BaseMapper<CheckDiffItem> { + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/CheckDiffMapper.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/CheckDiffMapper.java new file mode 100644 index 0000000..66c0bfc --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/CheckDiffMapper.java @@ -0,0 +1,12 @@ +package com.vincent.rsf.server.manager.mapper; + +import com.vincent.rsf.server.manager.entity.CheckDiff; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +@Mapper +@Repository +public interface CheckDiffMapper extends BaseMapper<CheckDiff> { + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CheckDiffItemService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CheckDiffItemService.java new file mode 100644 index 0000000..4bd898a --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CheckDiffItemService.java @@ -0,0 +1,8 @@ +package com.vincent.rsf.server.manager.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.vincent.rsf.server.manager.entity.CheckDiffItem; + +public interface CheckDiffItemService extends IService<CheckDiffItem> { + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CheckDiffService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CheckDiffService.java new file mode 100644 index 0000000..b651357 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CheckDiffService.java @@ -0,0 +1,8 @@ +package com.vincent.rsf.server.manager.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.vincent.rsf.server.manager.entity.CheckDiff; + +public interface CheckDiffService extends IService<CheckDiff> { + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckDiffItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckDiffItemServiceImpl.java new file mode 100644 index 0000000..c4e385c --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckDiffItemServiceImpl.java @@ -0,0 +1,12 @@ +package com.vincent.rsf.server.manager.service.impl; + +import com.vincent.rsf.server.manager.mapper.CheckDiffItemMapper; +import com.vincent.rsf.server.manager.entity.CheckDiffItem; +import com.vincent.rsf.server.manager.service.CheckDiffItemService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +@Service("checkDiffItemService") +public class CheckDiffItemServiceImpl extends ServiceImpl<CheckDiffItemMapper, CheckDiffItem> implements CheckDiffItemService { + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckDiffServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckDiffServiceImpl.java new file mode 100644 index 0000000..fbceb05 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckDiffServiceImpl.java @@ -0,0 +1,12 @@ +package com.vincent.rsf.server.manager.service.impl; + +import com.vincent.rsf.server.manager.mapper.CheckDiffMapper; +import com.vincent.rsf.server.manager.entity.CheckDiff; +import com.vincent.rsf.server.manager.service.CheckDiffService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +@Service("checkDiffService") +public class CheckDiffServiceImpl extends ServiceImpl<CheckDiffMapper, CheckDiff> implements CheckDiffService { + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java index 2f7e1f7..8a93ef2 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java @@ -310,7 +310,6 @@ itemParams.forEach(item -> { TaskItem taskItem = new TaskItem(); taskItem.setTaskId(task.getId()) - .setOrderId(checkParam.getOrderId()) .setOrderType(OrderType.ORDER_CHECK.type) .setAnfme(item.getAnfme()) .setWorkQty(0.0) @@ -327,7 +326,7 @@ .setCreateTime(new Date()) .setUpdateBy(loginUserId) .setUpdateTime(new Date()) - .setOrderItemId(checkItem.getId()) + .setOrderItemId(checkParam.getId()) .setOrderId(checkParam.getOrderId()) .setPlatItemId(checkParam.getPlatItemId()); items.add(taskItem); 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 dfe9fbb..1a00a7e 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 @@ -785,6 +785,12 @@ } }); } + + if (!locService.update(new LambdaUpdateWrapper<Loc>() + .eq(Loc::getCode, task.getOrgLoc()) + .set(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_F.type))) { + throw new CoolException("婧愬簱浣嶇姸鎬佷慨鏀瑰け璐ワ紒锛�"); + } } if (!Objects.isNull(task.getWarehType()) && task.getWarehType().equals(WarehType.WAREHOUSE_TYPE_AGV.val)) { diff --git a/rsf-server/src/main/resources/mapper/manager/CheckDiffItemMapper.xml b/rsf-server/src/main/resources/mapper/manager/CheckDiffItemMapper.xml new file mode 100644 index 0000000..d891ecf --- /dev/null +++ b/rsf-server/src/main/resources/mapper/manager/CheckDiffItemMapper.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.vincent.rsf.server.manager.mapper.CheckDiffItemMapper"> + +</mapper> diff --git a/rsf-server/src/main/resources/mapper/manager/CheckDiffMapper.xml b/rsf-server/src/main/resources/mapper/manager/CheckDiffMapper.xml new file mode 100644 index 0000000..40d42ea --- /dev/null +++ b/rsf-server/src/main/resources/mapper/manager/CheckDiffMapper.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.vincent.rsf.server.manager.mapper.CheckDiffMapper"> + +</mapper> -- Gitblit v1.9.1