From 03f63637e706283f1a95b7d0d6d631901ae359b2 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期一, 21 七月 2025 13:24:00 +0800 Subject: [PATCH] 盘点单功能优化 --- rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java | 17 ++++++++++++++++- rsf-admin/src/page/orders/check/CheckOrderPub.jsx | 7 ++++--- rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/CheckOrderSchedules.java | 26 +++++++++++++++++++------- rsf-server/src/main/resources/application.yml | 2 +- rsf-admin/src/i18n/zh.js | 2 +- rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/CheckDiffItem.java | 3 +++ rsf-admin/src/page/orders/check/CheckOrderList.jsx | 2 +- 7 files changed, 45 insertions(+), 14 deletions(-) diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js index 2814362..b902fdd 100644 --- a/rsf-admin/src/i18n/zh.js +++ b/rsf-admin/src/i18n/zh.js @@ -679,7 +679,7 @@ checkType: "鐩樼偣绫诲瀷", areaId: "搴撳尯ID", areaName: "搴撳尯", - anfme: "搴撻潰鏁伴噺", + anfme: "搴撳瓨鏁伴噺", checkQty: "鐩樼偣鏁伴噺", exceStatus: "鎵ц鐘舵��", }, diff --git a/rsf-admin/src/page/orders/check/CheckOrderList.jsx b/rsf-admin/src/page/orders/check/CheckOrderList.jsx index b9cee96..d6945e1 100644 --- a/rsf-admin/src/page/orders/check/CheckOrderList.jsx +++ b/rsf-admin/src/page/orders/check/CheckOrderList.jsx @@ -73,7 +73,7 @@ <AutocompleteInput label="table.field.checkOrder.type" optionValue="value" /> </ReferenceInput>, <ReferenceInput source="wkType" reference="dictData" filter={{ dictTypeCode: 'sys_check_order_type' }} label="table.field.checkOrder.checkType" alwaysOn> - <AutocompleteInput label="table.field.checkOrder.checkType" optionValue="value" /> + <AutocompleteInput label="table.field.checkOrder.checkType" optionValue="value"/> </ReferenceInput>, <TextInput source="logisNo" label="table.field.checkOrder.logisNo" />, <DateInput source="arrTime" label="table.field.checkOrder.arrTime" />, diff --git a/rsf-admin/src/page/orders/check/CheckOrderPub.jsx b/rsf-admin/src/page/orders/check/CheckOrderPub.jsx index e9d4ded..b35286f 100644 --- a/rsf-admin/src/page/orders/check/CheckOrderPub.jsx +++ b/rsf-admin/src/page/orders/check/CheckOrderPub.jsx @@ -87,7 +87,7 @@ const mas = data.filter(item => selectedIds.includes(item.id)).map(item => item.matnrCode); //璁剧疆搴撲綅淇℃伅绛涢�夋潯浠� setSelectedMatnr(mas); - // onUnselectItems() + onUnselectItems() } return ( record.exceStatus != 3 ? <><Button label="toolbar.confirm" size="medium" onClick={handleRowClick} /></> : <></> @@ -222,7 +222,7 @@ </Box> <Box sx={{ textAlign: 'center' }}> <CloseButton setOpen={setOpen} /> - <SubmitButton selectedIds={selectedIds} setSelectedIds={setSelectedIds} rowSelectedIds={rowSelectedIds} gridRef={gridRef} record={record} /> + <SubmitButton selectedIds={selectedIds} setOpen={setOpen} setSelectedIds={setSelectedIds} rowSelectedIds={rowSelectedIds} gridRef={gridRef} record={record} /> </Box> </Card> </Grid> @@ -420,7 +420,7 @@ //鎻愪氦鎸夐挳 -const SubmitButton = ({ selectedIds, setSelectedIds, rowSelectedIds, gridRef, record }) => { +const SubmitButton = ({ selectedIds, setSelectedIds, rowSelectedIds, gridRef, record, setOpen }) => { const notify = useNotify(); const refresh = useRefresh(); const translate = useTranslate(); @@ -444,6 +444,7 @@ const { data: { code, data, msg } } = await request.post('/check/generate/tasks', records); if (code == 200) { refresh(); + setOpen(false) } else { notify(msg); } 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 index f644846..5c16c7d 100644 --- 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 @@ -218,6 +218,9 @@ } public Double getDiffQty() { + if (checkQty.compareTo(0.0) <= 0) { + return 0.0; + } Double diffQty = Math.round((this.checkQty - this.anfme) * 1000) / 1000.0; return diffQty; } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/CheckOrderSchedules.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/CheckOrderSchedules.java index a1fb5ed..d201957 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/CheckOrderSchedules.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/CheckOrderSchedules.java @@ -47,15 +47,27 @@ * @description: 鑷姩鑾峰彇宸茬敓鎴愮洏鐐逛换鍔$殑鐩樼偣鍒楄〃 * @version 1.0 */ - @Scheduled(cron = "0/5 * * * * ?") + @Scheduled(cron = "0/15 * * * * ?") @Transactional(rollbackFor = Exception.class) public void genReCheck() { - List<CheckDiffItem> list = checkDiffItemService.list(new LambdaQueryWrapper<CheckDiffItem>().select(CheckDiffItem::getTaskItemId)); + List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>() + .select(Task::getId) + .eq(Task::getTaskType, TaskType.TASK_TYPE_CHECK_OUT.type)); + if (tasks.isEmpty()) { + return; + } + List<CheckDiffItem> list = checkDiffItemService + .list(new LambdaQueryWrapper<CheckDiffItem>() + .select(CheckDiffItem::getTaskItemId)); if (list.isEmpty()) { return; } + Set<Long> taskIds = tasks.stream().map(Task::getId).collect(Collectors.toSet()); List<Long> itemIds = list.stream().map(CheckDiffItem::getTaskItemId).collect(Collectors.toList()); - List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().notIn(TaskItem::getId, itemIds)); + List<TaskItem> taskItems = taskItemService + .list(new LambdaQueryWrapper<TaskItem>() + .in(TaskItem::getTaskId, taskIds) + .notIn(TaskItem::getId, itemIds)); if (taskItems.isEmpty()) { return; } @@ -64,7 +76,7 @@ taskMps.keySet().forEach(orderId -> { WkOrder order = checkOrderService.getById(orderId); if (Objects.isNull(order)) { - throw new CoolException("鐩樼偣鍗曟嵁涓嶅瓨鍦紒锛�"); + throw new CoolException("鐩樼偣鍗曟嵁涓嶅瓨鍦紒锛�"); } CheckDiff checkDiff = checkDiffService.getOne(new LambdaQueryWrapper<CheckDiff>().eq(CheckDiff::getOrderId, orderId)); if (Objects.isNull(checkDiff)) { @@ -119,9 +131,9 @@ } }); - if (!checkDiffItemService.saveBatch(diffItems)) { - throw new CoolException("鐩樼偣宸紓鍗曚繚瀛樺け璐ワ紒锛�"); - } + if (!checkDiffItemService.saveBatch(diffItems)) { + throw new CoolException("鐩樼偣宸紓鍗曚繚瀛樺け璐ワ紒锛�"); + } }); } } 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 7ed0dfb..a9b1461 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 @@ -83,11 +83,14 @@ private OutStockService outStockService; @Autowired private OutStockItemService outStockItemService; - @Autowired private CheckOrderItemService checkOrderItemService; @Autowired private CheckOrderService checkOrderService; + @Autowired + private CheckDiffService checkDiffService; + @Autowired + private CheckDiffItemService checkDiffItemService; @Override @Transactional(rollbackFor = Exception.class) @@ -783,6 +786,18 @@ .setSql("work_qty = work_qty - " + taskItem.getAnfme()))) { throw new CoolException("鐩樼偣鍗曟墽琛屾暟閲忎慨鏀瑰け璐ワ紒锛�"); } + + List<CheckDiffItem> diffItems = checkDiffItemService + .list(new LambdaQueryWrapper<CheckDiffItem>() + .eq(CheckDiffItem::getTaskItemId, taskItem.getTaskId())); + if (!diffItems.isEmpty()) { + CheckDiffItem item = diffItems.stream().findFirst().get(); + List<CheckDiffItem> items = checkDiffItemService.list(new LambdaQueryWrapper<CheckDiffItem>() + .eq(CheckDiffItem::getId, item.getCheckId())); + if (items.isEmpty()) { + checkDiffService.removeById(item.getCheckId()); + } + } }); } diff --git a/rsf-server/src/main/resources/application.yml b/rsf-server/src/main/resources/application.yml index db51329..ac31a5b 100644 --- a/rsf-server/src/main/resources/application.yml +++ b/rsf-server/src/main/resources/application.yml @@ -25,7 +25,7 @@ # global-config: # field-strategy: 0 configuration: - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl +# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl map-underscore-to-camel-case: true cache-enabled: true call-setters-on-nulls: true -- Gitblit v1.9.1