From b110cc66907a093794b0887a6b2889e57c8c11fb Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期一, 25 八月 2025 13:41:59 +0800 Subject: [PATCH] 库存调整功能修改 --- rsf-admin/src/page/stockManage/locRevise/ReviseLogList.jsx | 30 ++++++++-- rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ReviseLog.java | 1 rsf-admin/src/page/stockManage/locRevise/LocsReviseDetl.jsx | 3 rsf-admin/src/page/stockManage/locRevise/LocReviseList.jsx | 9 ++ rsf-admin/src/page/stockManage/locRevise/LocReviseEdit.jsx | 8 ++ rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java | 1 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogServiceImpl.java | 68 +++++++++++++--------- rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java | 1 rsf-server/src/main/resources/application-dev.yml | 2 9 files changed, 85 insertions(+), 38 deletions(-) diff --git a/rsf-admin/src/page/stockManage/locRevise/LocReviseEdit.jsx b/rsf-admin/src/page/stockManage/locRevise/LocReviseEdit.jsx index f3e589e..b6c7cf9 100644 --- a/rsf-admin/src/page/stockManage/locRevise/LocReviseEdit.jsx +++ b/rsf-admin/src/page/stockManage/locRevise/LocReviseEdit.jsx @@ -18,6 +18,8 @@ NumberField, required, useRecordContext, + useGetRecordId, + useGetOne, DeleteButton, } from 'react-admin'; import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting'; @@ -34,6 +36,10 @@ const LocReviseEdit = () => { const translate = useTranslate(); const [disabled, setDisabled] = useState(false); + + const orderId = useGetRecordId(); + const {data, isPending} = useGetOne("locRevise", {id: orderId}); + console.log(data); const FormToolbar = () => { return ( @@ -136,7 +142,7 @@ </Grid> </SimpleForm> </Edit > - <ReviseLogList /> + <ReviseLogList record = {data}/> </> ) } diff --git a/rsf-admin/src/page/stockManage/locRevise/LocReviseList.jsx b/rsf-admin/src/page/stockManage/locRevise/LocReviseList.jsx index 80520c1..ba7cbf2 100644 --- a/rsf-admin/src/page/stockManage/locRevise/LocReviseList.jsx +++ b/rsf-admin/src/page/stockManage/locRevise/LocReviseList.jsx @@ -147,7 +147,7 @@ <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} /> + <DelButton /> <CompleteButton /> </WrapperField> </StyledDatagrid> @@ -166,6 +166,13 @@ ) } +const DelButton = () => { + const record = useRecordContext(); + return ( + record?.exceStatus == 0 ? <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> : <></> + ) +} + //瀹屾垚鍗曟嵁 const CompleteButton = () => { const record = useRecordContext(); diff --git a/rsf-admin/src/page/stockManage/locRevise/LocsReviseDetl.jsx b/rsf-admin/src/page/stockManage/locRevise/LocsReviseDetl.jsx index 1422424..5dc09cb 100644 --- a/rsf-admin/src/page/stockManage/locRevise/LocsReviseDetl.jsx +++ b/rsf-admin/src/page/stockManage/locRevise/LocsReviseDetl.jsx @@ -101,6 +101,7 @@ const getData = async (matnr) => { setIsLoading(true) const res = await request.post(`/reviseLogItem/page`, { + // const res = await request.post(`/locItem/page`, { locCode: record?.locCode, matnrCode: matnr, current: page?.page, @@ -153,7 +154,7 @@ backgroundColor: 'background.paper', zIndex: 1000 }}> - {translate("common.action.newAddMats")} + {translate("common.button.edit")} <Box sx={{ position: 'absolute', top: 8, right: 8, zIndex: 1001 }}> <DialogCloseButton onClose={handleClose} /> </Box> diff --git a/rsf-admin/src/page/stockManage/locRevise/ReviseLogList.jsx b/rsf-admin/src/page/stockManage/locRevise/ReviseLogList.jsx index 3656ba1..33ae7c6 100644 --- a/rsf-admin/src/page/stockManage/locRevise/ReviseLogList.jsx +++ b/rsf-admin/src/page/stockManage/locRevise/ReviseLogList.jsx @@ -33,6 +33,7 @@ DeleteButton, useGetRecordId, Button, + useGetOne, } from 'react-admin'; import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; import MyCreateButton from "@/page/components/MyCreateButton"; @@ -85,7 +86,7 @@ />, ] -const ReviseLogList = () => { +const ReviseLogList = ({ record }) => { const [createDialog, setCreateDialog] = useState(false); const [drawerVal, setDrawerVal] = useState(false); const [item, setItem] = useState(); @@ -106,12 +107,12 @@ title={false} empty={false} filters={filters} - filter={{ reviseId: orderId }} + filter={{ reviseId: record?.id }} sort={{ field: "create_time", order: "desc" }} actions={( <TopToolbar> <FilterButton /> - <MyCreateButton onClick={() => { setCreateDialog(true); }} /> + <CreateItemButton setCreateDialog={setCreateDialog} record={record} /> <SelectColumnsButton preferenceKey='check' /> </TopToolbar> )} @@ -145,14 +146,14 @@ <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"> - <EditLocRevise setDrawerVal={setDrawerVal} setItem={setItem} /> - <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} redirect={false} /> - </WrapperField> + <EditOperatate setDrawerVal={setDrawerVal} setItem={setItem} record={record} /> + </WrapperField > </StyledDatagrid> </List> <SelectLocsRevise locRevise={orderId} open={createDialog} + record={record} setOpen={setCreateDialog} /> <LocsReviseDetl @@ -166,6 +167,23 @@ export default ReviseLogList; +const CreateItemButton = ({ setCreateDialog, record }) => { + return ( + record?.exceStatus < 2 ? <MyCreateButton onClick={() => { setCreateDialog(true); }} /> : <></> + ) +} + +const EditOperatate = ({ setDrawerVal, setItem, record }) => { + return ( + record?.exceStatus < 2 ? + <> + <EditLocRevise setDrawerVal={setDrawerVal} setItem={setItem} /> + <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} redirect={false} /> + </> : <></> + ) + +} + const EditLocRevise = ({ setDrawerVal, setItem }) => { const record = useRecordContext(); const editRevise = () => { diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java index ebf4be0..6fc3a82 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java @@ -117,7 +117,6 @@ if (Objects.isNull(transferParams)) { throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒"); } - return receiveMsgService.syncTransfer(transferParams, getLoginUserId()); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java index 5a05b4d..917aaf5 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java @@ -49,6 +49,7 @@ @ApiModelProperty(value= "涓诲崟ID") private Long locId; + @ApiModelProperty("搴撲綅缂栫爜") private String locCode; diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ReviseLog.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ReviseLog.java index 0a57ae3..f23b806 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ReviseLog.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/ReviseLog.java @@ -59,6 +59,7 @@ @ApiModelProperty(value= "搴撳尯ID") private Long areaId; + /***搴撲綅缂栫爜*/ @ApiModelProperty("搴撲綅") private String locCode; diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogServiceImpl.java index baf9048..b182f25 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/ReviseLogServiceImpl.java @@ -19,6 +19,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Set; import java.util.stream.Collectors; @Service("reviseLogService") @@ -35,11 +36,13 @@ @Autowired private LocService locService; + @Autowired private ReviseLogItemService reviseLogItemService; /** * 搴撳瓨璋冩暣鍗曟槑缁嗘坊鍔� + * * @param revise * @param loginUserId * @return @@ -62,11 +65,29 @@ .setReviseId(locRevise.getId()) .setCreateBy(loginUserId) .setUpdateBy(loginUserId) - .setReviseCode(locRevise.getCode()) ; + .setReviseCode(locRevise.getCode()); if (!reviseLogService.save(reviseLog)) { throw new CoolException("璋冩暣鍗曟槑缁嗕繚瀛樺け璐ワ紒锛�"); } + + List<LocItem> locItems = locItemService.list(new LambdaQueryWrapper<LocItem>() + .eq(LocItem::getLocCode, item.getLocCode())); + if (!locItems.isEmpty()) { + locItems.forEach(ote -> { + ReviseLogItem logItem = new ReviseLogItem(); + BeanUtils.copyProperties(ote, logItem); + logItem.setReviseLogId(reviseLog.getId()); + if (!reviseLogItemService.save(logItem)) { + throw new CoolException("鏄庣粏淇濆瓨澶辫触锛侊紒"); + } + }); + } + + Double sum = locItems.stream().mapToDouble(LocItem::getAnfme).sum(); + + locRevise.setAnfme(Math.round((sum + locRevise.getAnfme()) * 10000) / 10000.0); }); + locRevise.setExceStatus(CommonExceStatus.COMMON_EXCE_STATUS_UN_EXCE.val); if (!locReviseService.updateById(locRevise)) { @@ -91,41 +112,34 @@ if (!revise.getExceStatus().equals(CommonExceStatus.COMMON_EXCE_STATUS_EXCE_ING.val)) { throw new CoolException("鍗曟嵁鐘舵�佹湭鎵ц鎴栧凡瀹屾垚锛屾棤娉曟墽琛屽畬鎴愭搷浣滐紒锛�"); } - ReviseLog logs = reviseLogService.getOne(new LambdaQueryWrapper<ReviseLog>().eq(ReviseLog::getReviseId, revise.getId())); - if (Objects.isNull(logs)) { + List<ReviseLog> logs = reviseLogService.list(new LambdaQueryWrapper<ReviseLog>().eq(ReviseLog::getReviseId, revise.getId())); + if (logs.isEmpty()) { throw new CoolException("搴撳瓨鏃ュ織涓嶅瓨鍦紒锛�"); } - List<ReviseLogItem> logItems = reviseLogItemService.list(new LambdaQueryWrapper<ReviseLogItem>().eq(ReviseLogItem::getReviseLogId, logs.getId())); + Set<Long> longs = logs.stream().map(ReviseLog::getId).collect(Collectors.toSet()); + List<ReviseLogItem> logItems = reviseLogItemService.list(new LambdaQueryWrapper<ReviseLogItem>().in(ReviseLogItem::getReviseLogId, longs)); + if (logItems.isEmpty()) { + throw new CoolException("璋冩暣鏄庣粏涓虹┖!!"); + } Map<Long, List<ReviseLogItem>> listMap = logItems.stream().collect(Collectors.groupingBy(ReviseLogItem::getLocId)); listMap.keySet().forEach(items -> { Loc loc = locService.getById(items); if (Objects.isNull(loc)) { throw new CoolException("搴撲綅涓嶅瓨鍦紒锛�"); } + locItemService.remove(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocId, loc.getId())); listMap.get(items).forEach(logItem -> { - LocItem one = locItemService.getOne(new LambdaQueryWrapper<LocItem>() - .eq(LocItem::getMatnrId, logItem.getMatnrId()) - .eq(StringUtils.isNotBlank(logItem.getBatch()), LocItem::getBatch, logItem.getBatch()) - .eq(StringUtils.isNotBlank(logItem.getFieldsIndex()), LocItem::getFieldsIndex, logItem.getFieldsIndex()) - .eq(LocItem::getLocCode, logItem.getLocCode())); - if (Objects.isNull(one)) { - LocItem locDetl = new LocItem(); - BeanUtils.copyProperties(logItem, locDetl); - locDetl.setLocId(loc.getId()) - .setType(OrderType.ORDER_REVISE.type) - .setLocCode(loc.getCode()) - .setAnfme(logItem.getReviseQty()) - .setUpdateBy(loginUserId) - .setId(null) - .setCreateBy(loginUserId); - if (!locItemService.save(locDetl)) { - throw new CoolException("搴撳瓨鏄庣粏淇濆瓨澶辫触锛侊紒"); - } - } else { - one.setAnfme(logItem.getReviseQty()); - if (!locItemService.updateById(one)) { - throw new CoolException("搴撳瓨鏄庣粏淇敼澶辫触锛侊紒"); - } + LocItem locDetl = new LocItem(); + BeanUtils.copyProperties(logItem, locDetl); + locDetl.setLocId(loc.getId()) + .setType(OrderType.ORDER_REVISE.type) + .setLocCode(loc.getCode()) + .setAnfme(logItem.getReviseQty()) + .setUpdateBy(loginUserId) + .setId(null) + .setCreateBy(loginUserId); + if (!locItemService.save(locDetl)) { + throw new CoolException("搴撳瓨鏄庣粏淇濆瓨澶辫触锛侊紒"); } }); }); diff --git a/rsf-server/src/main/resources/application-dev.yml b/rsf-server/src/main/resources/application-dev.yml index ceebf5e..9c4faaf 100644 --- a/rsf-server/src/main/resources/application-dev.yml +++ b/rsf-server/src/main/resources/application-dev.yml @@ -14,7 +14,7 @@ # url: jdbc:mysql://47.76.147.249:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai # username: rsf username: root - url: jdbc:mysql://192.168.4.151:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai + url: jdbc:mysql://127.0.0.1:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai password: 34821015 type: com.alibaba.druid.pool.DruidDataSource druid: -- Gitblit v1.9.1