From 5ae1669ac1794f62cf72e7d5352853da14d440b9 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期六, 12 四月 2025 15:30:41 +0800 Subject: [PATCH] # bug修复 20250412问题修复 --- rsf-admin/src/page/asnOrder/AsnOrderList.jsx | 20 ++ rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java | 2 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyInspectServiceImpl.java | 19 ++ rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrController.java | 4 rsf-admin/src/page/qlyInspect/QlyInspectList.jsx | 15 + rsf-admin/src/page/locAreaRela/LocAreaRelaList.jsx | 154 +++++++++++++++++++ rsf-admin/src/page/qlyInspect/QlyInspectOpCreate.jsx | 178 ++++++++++++++++++++++ rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java | 4 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java | 1 rsf-admin/src/page/basicInfo/loc/LocList.jsx | 1 rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java | 2 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyInspectController.java | 5 rsf-admin/src/layout/SubMenu.jsx | 5 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java | 7 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrder.java | 1 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/MatnrsTemplate.java | 8 rsf-admin/src/i18n/zh.js | 1 rsf-admin/src/i18n/en.js | 3 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/QlyInspectService.java | 2 19 files changed, 403 insertions(+), 29 deletions(-) diff --git a/rsf-admin/src/i18n/en.js b/rsf-admin/src/i18n/en.js index 7afc39b..a9d204c 100644 --- a/rsf-admin/src/i18n/en.js +++ b/rsf-admin/src/i18n/en.js @@ -137,7 +137,7 @@ container: 'Container', contract: 'Contract', qlyInspect: 'QlyInspect', - qlyIsptItem: '璐ㄦ淇℃伅鏄庣粏', + qlyIsptItem: 'qlyIsptItem', dictType: 'DictType', dictData: 'DictData', companys: 'Companys', @@ -425,6 +425,7 @@ dlyQty: "dlyQty", rcptQty: "rcptQty", isptQty: "isptQty", + isptResult: "isptResult", isptStatus: "isptStatus", }, qlyIsptItem: { diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js index 681bb53..d1e20f5 100644 --- a/rsf-admin/src/i18n/zh.js +++ b/rsf-admin/src/i18n/zh.js @@ -433,6 +433,7 @@ dlyQty: "閫佽揣鏁伴噺", rcptQty: "鏀惰揣鏁伴噺 ", isptQty: "璐ㄦ鏁伴噺", + isptResult: "璐ㄦ缁撴灉", isptStatus: "璐ㄦ鐘舵��", }, qlyIsptItem: { diff --git a/rsf-admin/src/layout/SubMenu.jsx b/rsf-admin/src/layout/SubMenu.jsx index bb979eb..d79867e 100644 --- a/rsf-admin/src/layout/SubMenu.jsx +++ b/rsf-admin/src/layout/SubMenu.jsx @@ -10,7 +10,8 @@ } from '@mui/material'; import ExpandMore from '@mui/icons-material/ExpandMore'; import { useTranslate, useSidebarState } from 'react-admin'; - +import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'; +import KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight'; const SubMenu = (props) => { const { handleToggle, isOpen, name, icon, children, dense } = props; const translate = useTranslate(); @@ -21,7 +22,7 @@ <MenuItem dense={dense} onClick={handleToggle} sx={{ display: 'flex', alignItems: 'center' }}> <ListItemIcon sx={{ minWidth: 40, color: 'text.secondary', display: 'flex', alignItems: 'center' }}> {/* {isOpen ? <ExpandMore /> : icon} */} - {icon} + {isOpen ? <KeyboardArrowDownIcon /> : <KeyboardArrowRightIcon />} </ListItemIcon> <Typography variant="inherit" color="textSecondary" sx={{ ml: 1, display: 'flex', alignItems: 'center' }}> {translate(name)} diff --git a/rsf-admin/src/page/asnOrder/AsnOrderList.jsx b/rsf-admin/src/page/asnOrder/AsnOrderList.jsx index 26d7d70..ada23e8 100644 --- a/rsf-admin/src/page/asnOrder/AsnOrderList.jsx +++ b/rsf-admin/src/page/asnOrder/AsnOrderList.jsx @@ -78,7 +78,14 @@ <TextInput source="poCode" label="table.field.asnOrder.poCode" />, <NumberInput source="poId" label="table.field.asnOrder.poId" />, <TextInput source="type" label="table.field.asnOrder.type" />, - <TextInput source="wkType" label="table.field.asnOrder.wkType" />, + <ReferenceInput source="wkType" reference="dictData" filter={{dictTypeCode: 'sys_business_type'}} label="table.field.asnOrder.wkType"> + <AutocompleteInput + label="table.field.asnOrder.wkType" + optionValue="value" + filterToQuery={(val) => ({ name: val })} + /> + </ReferenceInput>, + // <AutocompleteInput source='wkType' label='table.field.asnOrder.wkType' optionText={ } choices={JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_business_type')) || []} />, <NumberInput source="anfme" label="table.field.asnOrder.anfme" />, <NumberInput source="qty" label="table.field.asnOrder.qty" />, <TextInput source="logisNo" label="table.field.asnOrder.logisNo" />, @@ -102,13 +109,13 @@ const AsnOrderList = () => { const translate = useTranslate(); - const [createDialog, setCreateDialog] = useState(false); const [drawerVal, setDrawerVal] = useState(false); const [modalType, setmodalType] = useState(0); const billReload = useRef(); - const navigate = useNavigate(); + const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_business_type')) || []; + const assign = (record) => { navigate(`/asnOrderItem?asnId=${record.id}`); }; @@ -139,6 +146,7 @@ perPage={DEFAULT_PAGE_SIZE} > <StyledDatagrid + sx={{ width: '100%' }} preferenceKey='asnOrder' bulkActionButtons={<> <InspectionsButton /><BulkDeleteButton mutationMode={OPERATE_MODE} /></>} rowClick={() => false} @@ -151,13 +159,17 @@ <TextField source="poCode" label="table.field.asnOrder.poCode" /> <NumberField source="poId" label="table.field.asnOrder.poId" /> <TextField source="type$" label="table.field.asnOrder.type" /> + {/* <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}> + <TextField source="wkType" /> + </ReferenceField> */} + {/* <AutocompleteInput choices={dicts} optionText="label" label="table.field.qlyInspect.wkType" source="wkType" optionValue="value" /> */} <TextField source="wkType$" label="table.field.asnOrder.wkType" /> <NumberField source="anfme" label="table.field.asnOrder.anfme" /> <NumberField source="qty" label="table.field.asnOrder.qty" /> <TextField source="logisNo" label="table.field.asnOrder.logisNo" /> <DateField source="arrTime" label="table.field.asnOrder.arrTime" showTime /> <TextField source="rleStatus$" label="table.field.asnOrder.rleStatus" sortable={false} /> - <TextField source="updateBy$" label="common.field.updateBy" /> + <TextField source="updateBy$" label="common.field.updateBy" /> <DateField source="updateTime" label="common.field.updateTime" showTime /> <TextField source="createBy$" label="common.field.createBy" /> <DateField source="createTime" label="common.field.createTime" showTime /> diff --git a/rsf-admin/src/page/basicInfo/loc/LocList.jsx b/rsf-admin/src/page/basicInfo/loc/LocList.jsx index bac9056..8811f4d 100644 --- a/rsf-admin/src/page/basicInfo/loc/LocList.jsx +++ b/rsf-admin/src/page/basicInfo/loc/LocList.jsx @@ -172,7 +172,6 @@ onClick={() => { setCreateDialog(true) }}> {translate('create.empty.button')} </Button> - <Button variant="contained" color="primary" diff --git a/rsf-admin/src/page/locAreaRela/LocAreaRelaList.jsx b/rsf-admin/src/page/locAreaRela/LocAreaRelaList.jsx new file mode 100644 index 0000000..cb1ae2b --- /dev/null +++ b/rsf-admin/src/page/locAreaRela/LocAreaRelaList.jsx @@ -0,0 +1,154 @@ +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 LocAreaRelaCreate from "./LocAreaRelaCreate"; +import LocAreaRelaPanel from "./LocAreaRelaPanel"; +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="locAreaId" label="table.field.locAreaRela.locAreaId" />, + <NumberInput source="locId" label="table.field.locAreaRela.locId" />, + + <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 LocAreaRelaList = () => { + 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.locAreaRela"} + empty={<EmptyData onClick={() => { setCreateDialog(true) }} />} + filters={filters} + sort={{ field: "create_time", order: "desc" }} + actions={( + <TopToolbar> + <FilterButton /> + <MyCreateButton onClick={() => { setCreateDialog(true) }} /> + <SelectColumnsButton preferenceKey='locAreaRela' /> + <MyExportButton /> + </TopToolbar> + )} + perPage={DEFAULT_PAGE_SIZE} + > + <StyledDatagrid + preferenceKey='locAreaRela' + bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />} + rowClick={(id, resource, record) => false} + expand={() => <LocAreaRelaPanel />} + expandSingle={true} + omit={['id', 'createTime', 'createBy', 'memo']} + > + <NumberField source="id" /> + <NumberField source="locAreaId" label="table.field.locAreaRela.locAreaId" /> + <NumberField source="locId" label="table.field.locAreaRela.locId" /> + + <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> + <LocAreaRelaCreate + open={createDialog} + setOpen={setCreateDialog} + /> + <PageDrawer + title='LocAreaRela Detail' + drawerVal={drawerVal} + setDrawerVal={setDrawerVal} + > + </PageDrawer> + </Box> + ) +} + +export default LocAreaRelaList; diff --git a/rsf-admin/src/page/qlyInspect/QlyInspectList.jsx b/rsf-admin/src/page/qlyInspect/QlyInspectList.jsx index 46b4912..5a0bbc3 100644 --- a/rsf-admin/src/page/qlyInspect/QlyInspectList.jsx +++ b/rsf-admin/src/page/qlyInspect/QlyInspectList.jsx @@ -52,7 +52,7 @@ import request from '@/utils/request'; import AsnSelModal from "./AsnSelModal"; import InspectModal from "./InspectModal"; - +import QlyInspectOpCreate from './QlyInspectOpCreate'; const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ '& .css-1vooibu-MuiSvgIcon-root': { height: '.9em' @@ -69,14 +69,12 @@ const filters = [ <SearchInput source="condition" alwaysOn />, - <TextInput source="code" label="table.field.qlyInspect.code" />, <TextInput source="wkType" label="table.field.qlyInspect.wkType" />, <NumberInput source="safeQty" label="table.field.qlyInspect.safeQty" />, <NumberInput source="dlyQty" label="table.field.qlyInspect.dlyQty" />, <NumberInput source="rcptQty" label="table.field.qlyInspect.rcptQty" />, <NumberInput source="isptQty" label="table.field.qlyInspect.isptQty" />, - <TextInput label="common.field.memo" source="memo" />, <SelectInput label="common.field.status" @@ -91,9 +89,9 @@ const QlyInspectList = () => { const translate = useTranslate(); - const [createDialog, setCreateDialog] = useState(false); const [drawerVal, setDrawerVal] = useState(false); + const [opCreateDialog, setOpCreateDialog] = useState(false); return ( <Box display="flex"> @@ -119,6 +117,7 @@ actions={( <TopToolbar> <AsnCreatButton /> + <MyCreateButton onClick={() => { setOpCreateDialog(true) }} /> <FilterButton /> <SelectColumnsButton preferenceKey='qlyInspect' /> <MyExportButton /> @@ -167,14 +166,16 @@ open={createDialog} setOpen={setCreateDialog} /> + <QlyInspectOpCreate + open={opCreateDialog} + setOpen={setOpCreateDialog} + /> <PageDrawer title='QlyInspect Detail' drawerVal={drawerVal} setDrawerVal={setDrawerVal} > </PageDrawer> - - </Box> ) } @@ -186,7 +187,7 @@ const notify = useNotify(); const refresh = useRefresh(); const [createDialog, setCreateDialog] = useState(false); - + const [opCreateDialog, setOpCreateDialog] = useState(false); return ( <> diff --git a/rsf-admin/src/page/qlyInspect/QlyInspectOpCreate.jsx b/rsf-admin/src/page/qlyInspect/QlyInspectOpCreate.jsx new file mode 100644 index 0000000..ea33da9 --- /dev/null +++ b/rsf-admin/src/page/qlyInspect/QlyInspectOpCreate.jsx @@ -0,0 +1,178 @@ +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, + ReferenceField, +} 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 QlyInspectOpCreate = (props) => { + const { open, setOpen } = props; + const translate = useTranslate(); + const notify = useNotify(); + const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_business_type')) || []; + const isptResult = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_inspect_result')) || []; + const isptStatus = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_qly_inspect_status')) || []; + + 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}> + <ReferenceInput + source="asnCode" + reference="asnOrder" + > + <AutocompleteInput + label="table.field.qlyInspect.asnCode" + optionText="code" + filterToQuery={(val) => ({ name: val })} + /> + </ReferenceInput> + </Grid> + <Grid item xs={6} display="flex" gap={1}> + <AutocompleteInput + choices={dicts} + optionText="label" + label="table.field.qlyInspect.wkType" + source="wkType" + optionValue="value" + parse={v => v} + validate={[required()]} /> + </Grid> + <Grid item xs={6} display="flex" gap={1}> + <NumberInput + label="table.field.qlyInspect.safeQty" + source="safeQty" + /> + </Grid> + <Grid item xs={6} display="flex" gap={1}> + <NumberInput + label="table.field.qlyInspect.dlyQty" + source="dlyQty" + /> + </Grid> + <Grid item xs={6} display="flex" gap={1}> + <NumberInput + label="table.field.qlyInspect.rcptQty" + source="rcptQty" + /> + </Grid> + <Grid item xs={6} display="flex" gap={1}> + <NumberInput + label="table.field.qlyInspect.isptQty" + source="isptQty" + /> + </Grid> + <Grid item xs={6} display="flex" gap={1}> + <AutocompleteInput + choices={isptStatus} + optionText="label" + label="table.field.qlyInspect.isptStatus" + source="isptStatus" + optionValue="value" + parse={v => v} + /> + </Grid> + <Grid item xs={6} display="flex" gap={1}> + <AutocompleteInput + choices={isptResult} + optionText="label" + label="table.field.qlyInspect.isptResult" + source="isptResult" + optionValue="value" + 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 QlyInspectOpCreate; diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java index efd29ac..c8cd598 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java @@ -213,6 +213,10 @@ Double receiptQty = receipts.stream().mapToDouble(ReceiptDetlsDto::getReceiptQty).sum(); + if (Objects.isNull(receiptQty) || receiptQty.compareTo(0.00) <= 0) { + throw new CoolException("鏀惰揣鏁伴噺涓嶈兘灏忎簬鎴栫瓑浜庨浂锛侊紒"); + } + String asnCode = receipts.stream().findFirst().get().getAsnCode(); AsnOrder asnOrder = asnOrderMapper.getOne(new LambdaQueryWrapper<AsnOrder>() diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java index 16a1c10..ad98507 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java @@ -107,7 +107,7 @@ FieldsItem item = new FieldsItem(); item.setUuid(uuid) .setValue(template.get(obj.getFields()).toString()) - .setMatnrId(Long.parseLong(template.get("matnrId").toString())) + .setMatnrId(!Objects.isNull(template.get("matnrId")) ? Long.parseLong(template.get("matnrId").toString()) : null) .setFieldsId(obj.getId()); fieldsItems.add(item); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java index 267ca22..3ca24bd 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java @@ -125,7 +125,7 @@ if (!Objects.isNull(map.get("ids"))) { orderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().in(AsnOrderItem::getId, map.get("ids")).eq(AsnOrderItem::getStatus, 1)); } else { - orderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().last("limit 1")); + orderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>()); } ExcelUtil.build(ExcelUtil.create(orderItems, AsnOrderItem.class, true), response); diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrController.java index 091cf4a..2067080 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatnrController.java @@ -204,9 +204,9 @@ if (!Objects.isNull(map.get("ids"))) { matnrs = matnrService.list(new LambdaQueryWrapper<Matnr>().in(Matnr::getId, map.get("ids")).eq(Matnr::getStatus, 1)); } else { - matnrs = matnrService.list(new LambdaQueryWrapper<Matnr>().last("limit 1")); + matnrs = matnrService.list(); } - ExcelUtil.build(ExcelUtil.create(matnrs, Matnr.class, true), response); + ExcelUtil.build(ExcelUtil.create(matnrs, Matnr.class, false), response); } @PreAuthorize("hasAuthority('manager:matnr:list')") diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyInspectController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyInspectController.java index 57d0e20..6c9ff33 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyInspectController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/QlyInspectController.java @@ -14,9 +14,12 @@ import com.vincent.rsf.server.manager.controller.params.QlyInspectAndItem; import com.vincent.rsf.server.manager.entity.QlyInspect; import com.vincent.rsf.server.manager.service.QlyInspectService; +import com.vincent.rsf.server.system.constant.SerialRuleCode; import com.vincent.rsf.server.system.controller.BaseController; +import com.vincent.rsf.server.system.utils.SerialRuleUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -104,7 +107,7 @@ public R save(@RequestBody QlyInspect qlyInspect) { qlyInspect.setCreateBy(getLoginUserId()); qlyInspect.setUpdateBy(getLoginUserId()); - if (!qlyInspectService.save(qlyInspect)) { + if (!qlyInspectService.qlySave(qlyInspect)) { return R.error("Save Fail"); } return R.ok("Save Success").add(qlyInspect); diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrder.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrder.java index 9ea862d..f8c4cf4 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrder.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrder.java @@ -124,7 +124,6 @@ * 鏄惁鍒犻櫎 1: 鏄� 0: 鍚� */ @ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄� 0: 鍚� ") - @TableLogic private Integer deleted; /** diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java index 0e1a978..572b4d2 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItem.java @@ -190,7 +190,6 @@ * 鏄惁鍒犻櫎 1: 鏄� 0: 鍚� */ @ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄� 0: 鍚� ") - @TableLogic private Integer deleted; /** diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/MatnrsTemplate.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/MatnrsTemplate.java index 9904ef6..cb9e44e 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/MatnrsTemplate.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/MatnrsTemplate.java @@ -22,22 +22,22 @@ public class MatnrsTemplate { @NotNull - @Excel(name = "鐗╂枡鍚嶇О") + @Excel(name = "鐗╂枡鍚嶇О*") @ExcelComment(example = "鍗庝负鎵嬫満") private String name; @NotNull - @Excel(name = "鍒嗙被鍔╄鐮�") + @Excel(name = "鍒嗙被鍔╄鐮�*") @ExcelComment(example = "256874556") private String groupCode; @NotNull - @Excel(name = "鍒嗙被鍚嶇О") + @Excel(name = "鍒嗙被鍚嶇О*") @ExcelComment(example = "绉诲姩璁惧") private String groupName; @NotNull - @Excel(name = "鐗╂枡鍔╄鐮�") + @Excel(name = "鐗╂枡鍔╄鐮�*") @ExcelComment(example = "P3528461569") private String erpCode; diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/QlyInspectService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/QlyInspectService.java index 74f09eb..06d5073 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/QlyInspectService.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/QlyInspectService.java @@ -20,4 +20,6 @@ List<AsnOrder> getUnInspect(Map<String, Object> map); R saveSelected(IsptOrderParam param, Long loginUserId); + + boolean qlySave(QlyInspect qlyInspect); } 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 6c91462..08d52a5 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 @@ -267,9 +267,9 @@ if (orderItems.isEmpty()) { throw new CoolException("鏀惰揣鏄庣粏涓虹┖锛侊紒"); } - if (Objects.isNull(asrder.getAnfme()) || asrder.getAnfme().compareTo(0.00) == 0) { - throw new CoolException("鏀惰揣鏁伴噺涓嶈兘涓洪浂锛侊紒"); - } +// if (Objects.isNull(asrder.getAnfme()) || asrder.getAnfme().compareTo(0.00) == 0) { +// throw new CoolException("鏀惰揣鏁伴噺涓嶈兘涓洪浂锛侊紒"); +// } AsnOrder order = this.getById(asrder.getId()); AsnOrderLog orderLog = new AsnOrderLog(); order.setExceStatus(Short.parseShort(AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val)); @@ -290,6 +290,7 @@ AsnOrderItemLog itemLog = new AsnOrderItemLog(); BeanUtils.copyProperties(item, itemLog); itemLog.setAsnItemId(itemLog.getId()) + .setLogId(orderLog.getId()) .setAsnId(item.getAsnId()); logs.add(itemLog); }); diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyInspectServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyInspectServiceImpl.java index e4330bc..568cf81 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyInspectServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyInspectServiceImpl.java @@ -176,4 +176,23 @@ } return R.ok("淇濆瓨鎴愬姛锛侊紒"); } + + @Override + public boolean qlySave(QlyInspect qlyInspect) { + String code = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_INSPECT_CODE, qlyInspect); + if (Objects.isNull(code) || StringUtils.isBlank(code)) { + throw new CoolException("缂栫爜瑙勫垯閿欒锛�" + "璇锋鏌ョ紪鐮侊細" + "銆孲YS_INSPECT_CODE銆�" + "鏄惁璁剧疆鎴愬姛锛侊紒"); + } + qlyInspect.setCode(code); + if (Objects.isNull(qlyInspect.getAsnCode()) || StringUtils.isBlank(qlyInspect.getAsnCode())) { + throw new CoolException("鏀惰揣鍗曞彿涓嶈兘涓虹┖锛侊紒"); + } + AsnOrder asnOrder = asnOrderService.getOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getId, qlyInspect.getAsnCode())); + if (Objects.isNull(asnOrder)) { + throw new CoolException("鏀惰揣鍗曚笉瀛樺湪锛侊紒"); + } + qlyInspect.setAsnCode(asnOrder.getCode()).setAsnId(asnOrder.getId()); + + return this.save(qlyInspect); + } } -- Gitblit v1.9.1