From 9636d80c2043c8e4638c3dcb18f12873221dedcd Mon Sep 17 00:00:00 2001
From: 1 <1@123>
Date: 星期二, 10 三月 2026 08:11:41 +0800
Subject: [PATCH] lsh#

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java |   58 +++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 45 insertions(+), 13 deletions(-)

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 db8643e..8f88520 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
@@ -8,7 +8,6 @@
 import com.fasterxml.jackson.databind.cfg.CoercionAction;
 import com.fasterxml.jackson.databind.cfg.CoercionInputShape;
 import com.vincent.rsf.framework.common.Cools;
-import com.vincent.rsf.framework.common.DateUtils;
 import com.vincent.rsf.server.api.config.RemotesInfoProperties;
 import com.vincent.rsf.server.api.controller.erp.params.TaskInParam;
 import com.vincent.rsf.server.api.entity.CommonResponse;
@@ -34,7 +33,6 @@
 import com.vincent.rsf.server.manager.enums.LocStsType;
 import com.vincent.rsf.server.system.entity.Config;
 import com.vincent.rsf.server.system.service.ConfigService;
-import com.vincent.rsf.server.system.service.impl.ConfigServiceImpl;
 import com.vincent.rsf.server.system.utils.SerialRuleUtils;
 import com.vincent.rsf.server.system.utils.SystemAuthUtils;
 import lombok.Synchronized;
@@ -764,7 +762,7 @@
                     //绉诲簱
                     moveInStock(task, loginUserId);
                 } else if (task.getTaskType().equals(TaskType.TASK_TYPE_EMPTY_IN.type)) {
-                    //绉诲簱
+                    //绌烘澘鍏ュ簱
                     complateInstockE(task, loginUserId);
                 } else if (task.getTaskType().equals(TaskType.TASK_TYPE_CROSS_DOCKING_OUT.type)) {
                     //瓒婂簱
@@ -932,7 +930,7 @@
         }
 
         List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId()));
-
+        String type = LocStsType.LOC_STS_TYPE_F.type;
         if (!taskItems.isEmpty()) {
             //绉诲簱鏈夊彲鑳芥槸绌烘澘
             try {
@@ -945,12 +943,14 @@
             if (!locItemService.remove(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocCode, task.getOrgLoc()))) {
                 throw new CoolException("婧愬簱浣嶆槑缁嗗垹闄ゅけ璐ワ紒");
             }
+        } else {
+            type = LocStsType.LOC_STS_TYPE_D.type;
         }
 
         /**淇敼搴撲綅鐘舵�佷负F.鍦ㄥ簱*/
         if (!locService.update(new LambdaUpdateWrapper<Loc>()
                 .set(Loc::getBarcode, task.getBarcode())
-                .set(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_F.type)
+                .set(Loc::getUseStatus, type)
                 .set(Loc::getUpdateBy, loginUserId)
                 .set(Loc::getUpdateTime, new Date())
                 .eq(Loc::getCode, task.getTargLoc()))) {
@@ -995,14 +995,14 @@
                 } else if (task.getTaskType().equals(TaskType.TASK_TYPE_CROSS_DOCKING_OUT.type)) {
                     //109.澶囪揣
                     complateOutStockDocking(task, loginUserId);
-                } else if (task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type)) {
+                } else if (task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type) || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_OUT.type)) {
                     //107.鐩�
 //                    pickOrCheckTask(task.getId(), Constants.TASK_TYPE_OUT_CHECK);
                     complateOutStock2(task, loginUserId);
-                } else if (task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_OUT.type)) {
-                    //103.鎷i��
-//                    pickOrCheckTask(task.getId(), Constants.TASK_TYPE_OUT_PICK);
-                    complateOutStock2(task, loginUserId);
+//                } else if () {
+//                    //103.鎷i��
+////                    pickOrCheckTask(task.getId(), Constants.TASK_TYPE_OUT_PICK);
+//                    complateOutStock2(task, loginUserId);
                 } else {
                     complateOutStock(task, loginUserId);
                 }
@@ -1051,7 +1051,7 @@
                     .eq(LocItemWorking::getTaskId, taskItem.getTaskId())
                     .eq(LocItemWorking::getFieldsIndex, taskItem.getFieldsIndex())
                     .eq(StringUtils.isNotEmpty(taskItem.getBatch()), LocItemWorking::getBatch, taskItem.getBatch())
-                    .eq(LocItemWorking::getMatnrId, taskItem.getMatnrId()));
+                    .eq(LocItemWorking::getMatnrId, taskItem.getMatnrId()).last("limit 1"));
             if (Objects.isNull(locWorking)) {
                continue;
             }
@@ -1134,7 +1134,39 @@
         if (!taskService.updateById(task)) {
             throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
         }
+        // 鐩樼偣鍐嶅叆搴撲换鍔$粨鏉燂細灏嗗叧鑱旂殑鐩樼偣宸紓鍗曠疆涓哄凡瀹℃牳
+        if (TaskType.TASK_TYPE_CHECK_IN.type.equals(task.getTaskType())) {
+            markCheckDiffApprovedWhenCheckInDone(task);
+        }
+    }
 
+    /**
+     * 鐩樼偣鍐嶅叆搴撳畬鎴愬悗锛屽皢鍏宠仈鐨勭洏鐐瑰樊寮傚崟缃负宸插鏍革紙鏈夊崟鎸� orderId锛屾棤鍗曟寜 鍑哄簱浠诲姟鍙� orderCode锛�
+     */
+    @Override
+    public void markCheckDiffApprovedWhenCheckInDone(Task checkInTask) {
+        List<TaskItem> items = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, checkInTask.getId()).last("limit 1"));
+        Long orderId = items.isEmpty() ? null : items.get(0).getOrderId();
+        CheckDiff checkDiff = null;
+        if (orderId != null && !orderId.equals(0L)) {
+            checkDiff = checkDiffService.getOne(new LambdaQueryWrapper<CheckDiff>().eq(CheckDiff::getOrderId, orderId).last("limit 1"));
+        } else {
+            Task outTask = taskService.getOne(new LambdaQueryWrapper<Task>()
+                    .eq(Task::getBarcode, checkInTask.getBarcode())
+                    .eq(Task::getTaskType, TaskType.TASK_TYPE_CHECK_OUT.type)
+                    .last("limit 1"));
+            if (outTask != null) {
+                checkDiff = checkDiffService.getOne(new LambdaQueryWrapper<CheckDiff>()
+                        .eq(CheckDiff::getOrderCode, outTask.getTaskCode())
+                        .and(w -> w.isNull(CheckDiff::getOrderId).or().eq(CheckDiff::getOrderId, 0))
+                        .last("limit 1"));
+            }
+        }
+        if (checkDiff != null && !CheckDiffExceStatus.CHECK_DIFF_EXCE_STATUS_END.val.equals(checkDiff.getExceStatus())) {
+            checkDiffService.update(new LambdaUpdateWrapper<CheckDiff>()
+                    .eq(CheckDiff::getId, checkDiff.getId())
+                    .set(CheckDiff::getExceStatus, CheckDiffExceStatus.CHECK_DIFF_EXCE_STATUS_END.val));
+        }
     }
 
     /**
@@ -1380,7 +1412,7 @@
         Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>()
                 .eq(Loc::getCode, task.getOrgLoc()));
         if (Objects.isNull(loc)) {
-            throw new CoolException("娌℃湁绌哄簱浣嶏紒锛�");
+            throw new CoolException("婧愬簱浣嶄笉瀛樺湪锛侊紒");
         }
 
         String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TASK_CODE, task);
@@ -1426,7 +1458,7 @@
                 if (taskItem.getFieldsIndex().equals(working.getFieldsIndex())) {
                     Double minQty = taskItem.getAnfme();
                     if (!task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type)) {
-                        minQty = Math.round((working.getAnfme() - taskItem.getQty()) * 1000000) / 1000000.0;
+                        minQty = Math.round((working.getAnfme() - taskItem.getAnfme()) * 1000000) / 1000000.0;
                     }
                     if (minQty.compareTo(0.0) >= 0) {
                         taskItem.setAnfme(minQty);

--
Gitblit v1.9.1