From 024504a3933e8f2f86e80383e61fa574524a0d28 Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期二, 10 三月 2026 16:39:52 +0800
Subject: [PATCH]  logo修改 +入库完成校验

---
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java |   46 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 46 insertions(+), 0 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java
index db47253..a647b93 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaCheckOrderServiceImpl.java
@@ -34,7 +34,10 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class PdaCheckOrderServiceImpl implements PdaCheckOrderService {
@@ -62,6 +65,12 @@
     private ReportMsgService reportMsgService;
     @Autowired
     private UserService userService;
+
+    @Autowired
+    private CheckOrderItemService checkOrderItemService;
+
+    @Autowired
+    private CheckOrderService checkOrderService;
 
 
     @Override
@@ -202,6 +211,43 @@
             throw new CoolException("鏇存柊宸紓鍗曞け璐�");
         }
 
+        // 鎸夌洏鐐瑰崟鏄庣粏姹囨�诲疄鐩樻暟閲忓苟鍥炲啓
+        Set<Long> taskItemIds = diffItems.stream().map(CheckDiffItem::getTaskItemId).filter(Objects::nonNull).collect(Collectors.toSet());
+        if (!taskItemIds.isEmpty()) {
+            List<TaskItem> taskItems = taskItemService.listByIds(taskItemIds);
+            Map<Long, BigDecimal> orderItemIdToCheckQty = new HashMap<>();
+            for (CheckDiffItem di : diffItems) {
+                if (di.getTaskItemId() == null) {
+                    continue;
+                }
+                TaskItem ti = taskItems.stream().filter(t -> t.getId().equals(di.getTaskItemId())).findFirst().orElse(null);
+                if (ti == null || ti.getOrderItemId() == null) {
+                    continue;
+                }
+                Double cq = di.getCheckQty() != null ? di.getCheckQty() : 0.0;
+                orderItemIdToCheckQty.merge(ti.getOrderItemId(), BigDecimal.valueOf(cq), BigDecimal::add);
+            }
+            for (Map.Entry<Long, BigDecimal> e : orderItemIdToCheckQty.entrySet()) {
+                double workQty = e.getValue().setScale(6, RoundingMode.HALF_UP).doubleValue();
+                if (!checkOrderItemService.update(new LambdaUpdateWrapper<WkOrderItem>()
+                        .eq(WkOrderItem::getId, e.getKey())
+                        .set(WkOrderItem::getWorkQty, workQty))) {
+                    throw new CoolException("鐩樼偣鍗曟槑缁嗗疄鐩樻暟閲忔洿鏂板け璐�");
+                }
+            }
+            if (checkDiff.getOrderId() != null) {
+                List<WkOrderItem> orderItems = checkOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderId, checkDiff.getOrderId()));
+                BigDecimal orderWorkQty = orderItems.stream()
+                        .map(oi -> oi.getWorkQty() != null ? BigDecimal.valueOf(oi.getWorkQty()) : BigDecimal.ZERO)
+                        .reduce(BigDecimal.ZERO, BigDecimal::add);
+                if (!checkOrderService.update(new LambdaUpdateWrapper<WkOrder>()
+                        .eq(WkOrder::getId, checkDiff.getOrderId())
+                        .set(WkOrder::getWorkQty, orderWorkQty.setScale(6, RoundingMode.HALF_UP).doubleValue()))) {
+                    throw new CoolException("鐩樼偣鍗曚富琛ㄥ疄鐩樻暟閲忔洿鏂板け璐�");
+                }
+            }
+        }
+
         task.setTaskStatus(TaskStsType.COMPLETE_OUT.id);
         task.setUpdateBy(loginUserId);
         task.setUpdateTime(new Date());

--
Gitblit v1.9.1