From c229a84e0a8eb68c974e6d23fa1296e064025d76 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期二, 29 七月 2025 17:09:00 +0800 Subject: [PATCH] 调拔单功能优化 --- rsf-admin/src/page/task/TaskItemList.jsx | 8 +- rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java | 2 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java | 4 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferServiceImpl.java | 8 ++ rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java | 101 ++++++++++++++++++++++++++++++++- rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TransferController.java | 4 - rsf-admin/src/page/task/TaskEdit.jsx | 3 rsf-admin/src/page/orders/transfer/ManualCreate.jsx | 3 rsf-admin/src/page/orders/transfer/CreateBySelectMats.jsx | 15 ++-- rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java | 1 rsf-admin/src/page/orders/transfer/TransferList.jsx | 4 11 files changed, 124 insertions(+), 29 deletions(-) diff --git a/rsf-admin/src/page/orders/transfer/CreateBySelectMats.jsx b/rsf-admin/src/page/orders/transfer/CreateBySelectMats.jsx index ef7023d..d61da62 100644 --- a/rsf-admin/src/page/orders/transfer/CreateBySelectMats.jsx +++ b/rsf-admin/src/page/orders/transfer/CreateBySelectMats.jsx @@ -107,12 +107,7 @@ if (res?.data?.code === 200) { const {data} = res.data; setTableData(data?.records); - setRowCount(data?.total) - - console.log(rowCount); - console.log(data); - - + setRowCount(data?.total); } else { notify(res.data.msg); } @@ -120,7 +115,7 @@ useEffect(() => { getData(); - }, [open]); + }, [open, page]); const handleSearch = () => { getData() @@ -215,7 +210,6 @@ const SelectMatsTableView = ({ tableData, page, pageSize,setPage, setPageSize, rowCount, setTableData, selectedRows, setSelectedRows, dyFields, setDyFields }) => { const translate = useTranslate(); - const notify = useNotify(); const [extendColumns, setExtendColumns] = useState([]); @@ -239,6 +233,11 @@ }; useEffect(() => { + console.log('------->'); + console.log(page); + }, [page]) + + useEffect(() => { if (extendColumns == undefined || extendColumns.length < 1) { getDynamicFields(); } diff --git a/rsf-admin/src/page/orders/transfer/ManualCreate.jsx b/rsf-admin/src/page/orders/transfer/ManualCreate.jsx index 309a331..a74fe34 100644 --- a/rsf-admin/src/page/orders/transfer/ManualCreate.jsx +++ b/rsf-admin/src/page/orders/transfer/ManualCreate.jsx @@ -47,6 +47,7 @@ import { minHeight, padding } from "@mui/system"; import SaveIcon from '@mui/icons-material/Save'; import request from '@/utils/request'; +import _, { set } from 'lodash'; const ManualCreate = (props) => { const { open, setOpen, orderId } = props; @@ -374,7 +375,7 @@ headerClassName: "custom", }, { - field: 'splrBatch', + field: 'batch', headerName: translate('table.field.outStockItem.splrBatch'), minWidth: 100, flex: 1, diff --git a/rsf-admin/src/page/orders/transfer/TransferList.jsx b/rsf-admin/src/page/orders/transfer/TransferList.jsx index 827cbcf..e31ad77 100644 --- a/rsf-admin/src/page/orders/transfer/TransferList.jsx +++ b/rsf-admin/src/page/orders/transfer/TransferList.jsx @@ -138,7 +138,7 @@ > <StyledDatagrid preferenceKey='transfer' - bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />} + bulkActionButtons={false} rowClick={(id, resource, record) => false} expand={() => <TransferOrders />} expandSingle={true} @@ -163,7 +163,7 @@ <DateField source="createTime" label="common.field.createTime" showTime /> <TextField source="memo" label="common.field.memo" sortable={false} /> <WrapperField cellClassName="opt" label="common.field.opt"> - <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} /> + <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} label="toolbar.detail"/> <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> <PublicButton setDrawerVal={setDrawerVal} drawerVal={drawerVal} setSelect={setSelect} /> </WrapperField> diff --git a/rsf-admin/src/page/task/TaskEdit.jsx b/rsf-admin/src/page/task/TaskEdit.jsx index e5c4a9f..e9686fe 100644 --- a/rsf-admin/src/page/task/TaskEdit.jsx +++ b/rsf-admin/src/page/task/TaskEdit.jsx @@ -40,7 +40,7 @@ <SimpleForm shouldUnregister warnWhenUnsavedChanges - toolbar={<FormToolbar />} + toolbar={false} mode="onTouched" defaultValues={{}} sx={{ @@ -113,6 +113,7 @@ <NumberInput label="table.field.task.sort" source="sort" + readOnly /> </Stack> </Grid> diff --git a/rsf-admin/src/page/task/TaskItemList.jsx b/rsf-admin/src/page/task/TaskItemList.jsx index 76e19e7..abf3e6e 100644 --- a/rsf-admin/src/page/task/TaskItemList.jsx +++ b/rsf-admin/src/page/task/TaskItemList.jsx @@ -22,11 +22,11 @@ NumberInput, useGetRecordId, } from 'react-admin'; -import { Box, Typography, Card, Stack, LinearProgress } from '@mui/material'; -import { styled } from '@mui/material/styles'; -import PageDrawer from "../components/PageDrawer"; import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; +import { Box, Typography, Card, Stack, LinearProgress } from '@mui/material'; import MyCreateButton from "../components/MyCreateButton"; +import PageDrawer from "../components/PageDrawer"; +import { styled } from '@mui/material/styles'; import TaskItemCreate from "./TaskItemCreate"; import request from '@/utils/request'; @@ -103,7 +103,7 @@ actions={( <TopToolbar> <FilterButton /> - <MyCreateButton onClick={() => { setCreateDialog(true) }} /> + {/* <MyCreateButton onClick={() => { setCreateDialog(true) }} /> */} <SelectColumnsButton preferenceKey='taskItem' /> {/* <MyExportButton /> */} </TopToolbar> diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TransferController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TransferController.java index e1add27..3842fd6 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TransferController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TransferController.java @@ -99,10 +99,6 @@ if (!transferService.save(transfer)) { return R.error("Save Fail"); } - - /***淇濆瓨鎴愬姛锛岃嚜鍔ㄧ敓鎴愬嚭搴撳崟*/ - transferService.genOutStock(transfer, getLoginUserId()); - return R.ok("Save Success").add(transfer); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java index f767169..d74fa92 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java @@ -2,15 +2,16 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.vincent.rsf.framework.exception.CoolException; +import com.vincent.rsf.server.api.service.WcsService; import com.vincent.rsf.server.api.utils.LocUtils; import com.vincent.rsf.server.common.constant.Constants; import com.vincent.rsf.server.manager.controller.params.LocToTaskParams; -import com.vincent.rsf.server.manager.enums.LocStsType; -import com.vincent.rsf.server.manager.enums.TaskStsType; +import com.vincent.rsf.server.manager.enums.*; import com.vincent.rsf.server.manager.entity.*; -import com.vincent.rsf.server.manager.enums.TaskType; import com.vincent.rsf.server.manager.service.*; import com.vincent.rsf.server.manager.service.impl.LocServiceImpl; +import com.vincent.rsf.server.manager.service.impl.TransferOrderServiceImpl; +import com.vincent.rsf.server.manager.utils.LocManageUtil; import com.vincent.rsf.server.system.constant.GlobalConfigCode; import com.vincent.rsf.server.system.entity.Config; import com.vincent.rsf.server.system.service.ConfigService; @@ -53,6 +54,18 @@ private List<Integer> rows; @Autowired private LocItemService locItemService; + @Autowired + private OutStockService outStockService; + @Autowired + private OutStockItemService outStockItemService; + @Autowired + private AsnOrderItemService asnOrderItemService; + @Autowired + private AsnOrderService asnOrderService; + @Autowired + private TransferOrderService transferOrderService; + @Autowired + private TransferService transferService; /** * @param @@ -89,6 +102,88 @@ List<Long> longSet = tasks.stream().map(Task::getId).collect(Collectors.toList()); List<Task> vaildTasks = taskService.list(new LambdaQueryWrapper<Task>().in(Task::getId, longSet)); taskService.completeTask(vaildTasks); + + List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>() + .eq(TaskItem::getWkType, OrderWorkType.ORDER_WORK_TYPE_STOCK_TERANSFER.type) + .in(TaskItem::getTaskId, longSet)); + if (!taskItems.isEmpty()) { + genInStock(taskItems); + } + } + + /** + * @author Ryan + * @date 2025/7/29 + * @description: 鐢熸垚鍏ュ簱鍗� + * @version 1.0 + */ + @Transactional(rollbackFor = Exception.class) + public void genInStock(List<TaskItem> taskItems) { + Set<Long> orderIds = taskItems.stream().map(TaskItem::getSourceId).collect(Collectors.toSet()); + List<WkOrder> wkOrders = outStockService.list(new LambdaQueryWrapper<WkOrder>().in(WkOrder::getId, orderIds)); + wkOrders.forEach(wkOrder -> { + List<WkOrderItem> orderItems = outStockItemService.list(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderId, wkOrder.getId())); + if (!orderItems.isEmpty()) { + WkOrder order = new WkOrder(); + BeanUtils.copyProperties(wkOrder, order); + order.setWkType(OrderWorkType.ORDER_WORK_TYPE_OTHER_TERANSFER.type) + .setId(null) + .setType(OrderType.ORDER_IN.type) + .setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_RECEIPT_DONE.val); + if (!asnOrderService.save(order)) { + throw new CoolException("鍏ュ簱鍗曠敓鎴愬け璐ワ紒锛�"); + } + + orderItems.forEach(orderItem -> { + orderItem.setOrderId(order.getId()).setOrderCode(order.getCode()).setId(null); + if (!asnOrderItemService.save(orderItem)) { + throw new CoolException("鍏ュ簱鍗曟槑缁嗕繚瀛樺け璐ワ紒锛�"); + } + }); + } + }); + + Set<Long> taskIds = taskItems.stream().map(TaskItem::getTaskId).collect(Collectors.toSet()); + List<Task> tasks = taskService.listByIds(taskIds); + if (!tasks.isEmpty()) { + tasks.forEach(task -> { + TaskItem one = taskItemService.getOne(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId()), false); + if (Objects.isNull(one)) { + throw new CoolException("鏁版嵁閿欒锛氫换鍔℃槑缁嗕涪澶憋紒锛�"); + } + TransferOrder order = transferOrderService.getOne(new LambdaQueryWrapper<TransferOrder>().eq(TransferOrder::getOrderId, one.getOrderId())); + if (Objects.isNull(order)) { + throw new CoolException("鏁版嵁閿欒锛侊紒"); + } + Transfer transfer = transferService.getById(order.getTransferId()); + Task task1 = new Task(); + BeanUtils.copyProperties(task, task1); + String targetLoc = LocManageUtil.getTargetLoc(transfer.getTarAreaId()); + if (Objects.isNull(targetLoc)) { + throw new CoolException("鏈兘鎵惧埌鏈夋晥搴撲綅"); + } + task.setTaskType(TaskType.TASK_TYPE_IN.type) + .setTargLoc(targetLoc) + .setTargSite(null) + .setId(null) + .setTaskStatus(TaskStsType.GENERATE_IN.id); + if (!taskService.save(task1)) { + throw new CoolException("浠诲姟鐢熸垚澶辫触锛侊紒"); + } + List<TaskItem> items = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId())); + if (items.isEmpty()) { + throw new CoolException("鏁版嵁閿欒锛侊紒"); + } + items.forEach(taskItem -> { + TaskItem item = new TaskItem(); + BeanUtils.copyProperties(taskItem, item); + item.setTaskId(task1.getId()).setId(null); + if (!taskItemService.save(item)) { + throw new CoolException("鍏ュ簱浠诲姟鏄庣粏淇濆瓨澶辫触锛侊紒"); + } + }); + }); + } } /** diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java index 42daaa4..9b829a1 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java @@ -488,7 +488,7 @@ WkOrderItem orderItem = outStockItemService.getOne(new LambdaQueryWrapper<WkOrderItem>() .eq(WkOrderItem::getOrderId, outId) .eq(StringUtils.isNotBlank(locItem.getBatch()), WkOrderItem::getSplrBatch, locItem.getBatch()) - .eq(StringUtils.isNotBlank(locItem.getFieldsIndex()), WkOrderItem::getFieldsIndex, locItem.getFieldsIndex()) +// .eq(StringUtils.isNotBlank(locItem.getFieldsIndex()), WkOrderItem::getFieldsIndex, locItem.getFieldsIndex()) .eq(WkOrderItem::getMatnrId, locItem.getMatnrId())); if (Objects.isNull(orderItem)) { 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 c536971..5d9fb64 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 @@ -1150,7 +1150,8 @@ } catch (Exception e) { throw new CoolException(e.getMessage()); } - } else if (task.getResource().equals(TaskResouceType.TASK_RESOUCE_ORDER_TYPE.val) || task.getResource().equals(TaskResouceType.TASK_RESOUCE_CHECK_TYPE.val)) { + } else if (task.getResource().equals(TaskResouceType.TASK_RESOUCE_ORDER_TYPE.val) + || task.getResource().equals(TaskResouceType.TASK_RESOUCE_CHECK_TYPE.val)) { WkOrderItem orderItem = new WkOrderItem(); if (task.getResource().equals(TaskResouceType.TASK_RESOUCE_CHECK_TYPE.val)) { CheckDiffItem diffItem = checkDiffItemService.getById(key); @@ -1279,7 +1280,6 @@ if (!stockItemService.saveBatch(stockItems)) { throw new CoolException("搴撳瓨淇敼鏋跺け璐ワ紒锛�"); } - } /** diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferServiceImpl.java index dd30339..2a64db5 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TransferServiceImpl.java @@ -100,6 +100,10 @@ } catch (Exception e) { throw new CoolException(e.getMessage()); } + + /***淇濆瓨鎴愬姛锛岃嚜鍔ㄧ敓鎴愬嚭搴撳崟*/ + genOutStock(transfer, loginUserId); + return R.ok(); } @@ -199,7 +203,7 @@ Double anfmes = items.stream().mapToDouble(TransferItem::getAnfme).sum(); wkOrder.setCode(ruleCode) .setAnfme(anfmes) - .setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_UN_EXCE.val) + .setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val) .setType(OrderType.ORDER_OUT.type) .setWkType(OrderWorkType.ORDER_WORK_TYPE_STOCK_TERANSFER.type) .setCreateBy(loginUserId) @@ -258,7 +262,7 @@ Set<Long> longs = wkOrders.stream().map(WkOrder::getId).collect(Collectors.toSet()); if (!outStockService.remove(new LambdaQueryWrapper<WkOrder>() .in(WkOrder::getId, longs) - .ne(WkOrder::getExceStatus, WaveExceStatus.WAVE_EXCE_STATUS_INIT.val))) { + .eq(WkOrder::getExceStatus, AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val))) { throw new CoolException("褰撳墠鍑哄簱鍗曞凡鎵ц锛屼笉鏀寔鍒犻櫎锛侊紒"); } outStockItemService.remove(new LambdaQueryWrapper<WkOrderItem>().in(WkOrderItem::getOrderId, longs)); diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java index 7e69732..ccad70d 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java @@ -29,7 +29,6 @@ public static String getTargetLoc(Long areaId) { //TODO 搴撲綅绛栫暐鍚庣画鎺掓湡 LocService locService = SpringUtils.getBean(LocService.class); - Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>() .eq(Loc::getAreaId, areaId) .orderByAsc(Loc::getLev) -- Gitblit v1.9.1