From 5ea5d085cc7c9a1aea3d4ee7e3a9c93ea05a2eb1 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期四, 17 七月 2025 16:35:16 +0800
Subject: [PATCH] 盘点功能优化

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyInspectServiceImpl.java |   91 +++++++++++++++++++++++++++++++++------------
 1 files changed, 67 insertions(+), 24 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyInspectServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyInspectServiceImpl.java
index 1ca78d1..3305f54 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyInspectServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyInspectServiceImpl.java
@@ -2,13 +2,11 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.vincent.rsf.framework.common.R;
 import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.server.manager.controller.params.IsptOrderParam;
 import com.vincent.rsf.server.manager.controller.params.QlyInspectAndItem;
 import com.vincent.rsf.server.manager.entity.*;
-import com.vincent.rsf.server.manager.enums.QlyIsptResult;
 import com.vincent.rsf.server.manager.enums.QlyIsptStatus;
 import com.vincent.rsf.server.manager.mapper.QlyInspectMapper;
 import com.vincent.rsf.server.manager.service.*;
@@ -46,23 +44,23 @@
     private WarehouseAreasItemService warehouseAreasItemService;
 
     @Override
-    public List<AsnOrderItem> listByAsn(Map<String, Object> map) {
+    public List<WkOrderItem> listByAsn(Map<String, Object> map) {
         if (Objects.isNull(map.get("asnCode"))) {
             throw new CoolException("鏀惰揣鍗曟嵁鏄庣粏缂栫爜涓嶈兘涓虹┖锛侊紒");
         }
-        AsnOrder asnOrder = asnOrderService.getOne(new LambdaQueryWrapper<AsnOrder>()
-                .eq(AsnOrder::getCode, map.get("asnCode"))
-                .ne(AsnOrder::getNtyStatus, 0));
-        if (Objects.isNull(asnOrder)) {
+        WkOrder wkOrder = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>()
+                .eq(WkOrder::getCode, map.get("asnCode"))
+                .ne(WkOrder::getNtyStatus, 0));
+        if (Objects.isNull(wkOrder)) {
             throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
         }
-        List<AsnOrderItem> asnOrderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>()
-                .eq(AsnOrderItem::getAsnCode, map.get("asnCode"))
-                .eq(AsnOrderItem::getNtyStatus, 1));
-        if (asnOrderItems.isEmpty()) {
+        List<WkOrderItem> wkOrderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>()
+                .eq(WkOrderItem::getOrderCode, map.get("asnCode"))
+                .eq(WkOrderItem::getNtyStatus, 1));
+        if (wkOrderItems.isEmpty()) {
             return new ArrayList<>();
         }
-        return asnOrderItems;
+        return wkOrderItems;
     }
 
     @Override
@@ -112,7 +110,7 @@
                         .select("asn_id as id, SUM(anfme) anfme, SUM(qty) qty, area_id, area_name, asn_code, asn_id, splr_id, splr_batch")
                         .eq(StringUtils.isNotBlank(code), "asn_code", code)
                         .lambda()
-                        .isNull(WarehouseAreasItem::getIsptResult)
+//                        .isNull(WarehouseAreasItem::getIsptResult)
                         .lt(WarehouseAreasItem::getWorkQty, 1)
                         .lt(WarehouseAreasItem::getQty, 1)
                 .groupBy(WarehouseAreasItem::getAsnCode));
@@ -133,8 +131,8 @@
         if (Objects.isNull(param.getIds()) || param.getIds().isEmpty()) {
             throw new CoolException("鍗曟嵁ID涓嶈兘涓虹┖锛侊紒");
         }
-        List<AsnOrder> asnOrders = asnOrderService.list(new LambdaQueryWrapper<AsnOrder>().in(AsnOrder::getId, param.getIds()));
-        if (asnOrders.isEmpty()) {
+        List<WkOrder> wkOrders = asnOrderService.list(new LambdaQueryWrapper<WkOrder>().in(WkOrder::getId, param.getIds()));
+        if (wkOrders.isEmpty()) {
             throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
         }
 //        List<AsnOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().in(AsnOrderItem::getAsnId, param.getIds()));
@@ -145,27 +143,27 @@
         List<WarehouseAreasItem> orderItems = warehouseAreasItemService.list(new LambdaQueryWrapper<WarehouseAreasItem>()
                 .in(WarehouseAreasItem::getAsnId, param.getIds()));
         Map<Long, List<WarehouseAreasItem>> listMap = orderItems.stream().collect(Collectors.groupingBy(WarehouseAreasItem::getAsnId));
-        for (AsnOrder asnOrder : asnOrders) {
+        for (WkOrder wkOrder : wkOrders) {
             QlyInspect inspect = new QlyInspect();
             String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_INSPECT_CODE, null);
             if (StringUtils.isBlank(ruleCode)) {
                 throw new CoolException("绛栫暐閿欒锛氳妫�鏌ョ瓥鐣ャ��" + SerialRuleCode.SYS_INSPECT_CODE + "銆嶆槸鍚﹁缃纭紒锛�");
             }
             inspect.setCode(ruleCode)
-                    .setWkType(asnOrder.getWkType())
+                    .setWkType(wkOrder.getWkType())
                     .setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_ING.val)
                     .setCreateBy(loginUserId)
-                    .setAsnId(asnOrder.getId())
-                    .setAsnCode(asnOrder.getCode());
+                    .setAsnId(wkOrder.getId())
+                    .setAsnCode(wkOrder.getCode());
             /**鑾峰彇鍗曟嵁鏄庣粏*/
-            List<WarehouseAreasItem> asnOrderItems = listMap.get(asnOrder.getId());
+            List<WarehouseAreasItem> asnOrderItems = listMap.get(wkOrder.getId());
             if (Objects.isNull(asnOrderItems) || asnOrderItems.isEmpty()) {
                 continue;
             }
             double anfme = asnOrderItems.stream().mapToDouble(WarehouseAreasItem::getAnfme).sum();
             inspect.setRcptQty(anfme);
             if (!this.save(inspect)) {
-                throw new CoolException("鍗曟嵁" + asnOrder.getCode() + "淇濆瓨澶辫触锛侊紒");
+                throw new CoolException("鍗曟嵁" + wkOrder.getCode() + "淇濆瓨澶辫触锛侊紒");
             }
             List<QlyIsptItem> items = new ArrayList<>();
             for (WarehouseAreasItem orderItem : asnOrderItems) {
@@ -174,11 +172,17 @@
                 isptItem.setAsnItemId(orderItem.getId())
                         .setIspectId(inspect.getId())
                         .setRcptQty(orderItem.getAnfme())
+                        .setRcptId(orderItem.getId())
+                        .setPlatItemId(orderItem.getPlatItemId())
+                        .setPlatOrderCode(orderItem.getPlatOrderCode())
+                        .setPlatWorkCode(orderItem.getPlatWorkCode())
+                        .setProjectCode(orderItem.getProjectCode())
                         .setAnfme(0.0)
                         .setFieldsIndex(orderItem.getFieldsIndex())
                         .setSplrBatch(orderItem.getSplrBatch())
                         .setSplrName(orderItem.getSplrId$())
                         .setCreateBy(loginUserId)
+                        .setUpdateBy(loginUserId)
                         .setDlyQty(orderItem.getAnfme());
                 items.add(isptItem);
             }
@@ -202,12 +206,51 @@
         if (Objects.isNull(qlyInspect.getAsnCode()) || StringUtils.isBlank(qlyInspect.getAsnCode())) {
             throw new CoolException("鏀惰揣鍗曞彿涓嶈兘涓虹┖锛侊紒");
         }
-        AsnOrder asnOrder = asnOrderService.getOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getId, qlyInspect.getAsnCode()));
-        if (Objects.isNull(asnOrder)) {
+        WkOrder wkOrder = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>().eq(WkOrder::getId, qlyInspect.getAsnCode()));
+        if (Objects.isNull(wkOrder)) {
             throw new CoolException("鏀惰揣鍗曚笉瀛樺湪锛侊紒");
         }
-        qlyInspect.setAsnCode(asnOrder.getCode()).setAsnId(asnOrder.getId());
+        qlyInspect.setAsnCode(wkOrder.getCode()).setAsnId(wkOrder.getId());
 
         return this.save(qlyInspect);
     }
+
+    /**
+     * @author Ryan
+     * @date 2025/5/14
+     * @description: 璐ㄦ瀹℃牳纭
+     * @version 1.0
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R verifyComplate(Long id) {
+        if (Objects.isNull(id)) {
+            throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        QlyInspect inspect = this.getById(id);
+        if (Objects.isNull(inspect)) {
+            throw new CoolException("璐ㄦ鍗曟嵁涓嶅瓨鍦紒锛�");
+        }
+        inspect.setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_DONE.val);
+        if (!this.saveOrUpdate(inspect)) {
+            throw new CoolException("鍗曟嵁淇敼澶辫触锛侊紒");
+        }
+        List<QlyIsptItem> items = qlyIsptItemService.selectIsptResult(new LambdaQueryWrapper<QlyIsptItem>().eq(QlyIsptItem::getIspectId, inspect.getId()));
+        if (items.isEmpty()) {
+            throw new CoolException("璐ㄦ鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�");
+        }
+
+        for (QlyIsptItem isptItem : items) {
+            if (isptItem.getSafeQty().compareTo(0.0) <= 0 && isptItem.getDisQty().compareTo(0.0) <= 0 ) {
+                continue;
+            }
+            WarehouseAreasItem item = warehouseAreasItemService.getById(isptItem.getRcptId());
+            if (Objects.isNull(item)) {
+                throw new CoolException("搴撳瓨鏄庣粏涓嶅瓨鍦紒锛�");
+            }
+            qlyIsptItemService.confirmReceipt(isptItem, item);
+        }
+
+        return R.ok("瀹℃牳瀹屾垚锛侊紒");
+    }
 }

--
Gitblit v1.9.1