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