From 462a8c41fb4043017d75148873f9aa0559722ae3 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期五, 06 六月 2025 16:25:34 +0800
Subject: [PATCH] 添加下发执行功能

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

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
index e034a1f..d0e8a20 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
@@ -161,38 +161,37 @@
             throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
         }
         Map<Long, List<DeliveryItem>> listMap = items.stream().collect(Collectors.groupingBy(DeliveryItem::getDeliveryId));
-        //鑾峰彇绗竴涓狪D
-        Long deliveryId = items.stream().findFirst().get().getDeliveryId();
-        Delivery delivery = deliveryService.getById(deliveryId);
-        if (Objects.isNull(delivery)) {
-            throw new CoolException("涓诲崟鎹笉瀛樺湪锛侊紒");
-        }
-        AsnOrder order = new AsnOrder();
-        BeanUtils.copyProperties(delivery, order);
-        String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_OUT_STOCK_CODE, order);
-        if (Objects.isNull(ruleCode) || StringUtils.isBlank(ruleCode)) {
-            throw new CoolException("缂栫爜瑙勫垯閿欒锛氳妫�鏌� 銆孲YS_OUT_STOCK_CODE銆嶇紪鐮佹槸鍚﹁缃垚鍔�");
-        }
-        order.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val)
-                .setType(delivery.getType())
-                .setWkType(delivery.getWkType())
-                .setCode(ruleCode)
-                .setId(null)
-                .setUpdateBy(loginUserId)
-                .setCreateBy(loginUserId);
-        if (!this.save(order)) {
-            throw new CoolException("涓诲崟淇濆瓨澶辫触锛侊紒");
-        }
-
         listMap.keySet().forEach(key -> {
-            Delivery delivery1 = deliveryService.getById(key);
+            //TODO 鍒ゆ柇鍗曟嵁鏄惁宸茬粡瀛樺湪锛屽瀛樺湪鍒欑疮鍔犱慨鏀瑰瓙琛紝涓嶅瓨鍦ㄦ墠鏂板缓
+            Delivery delivery = deliveryService.getById(key);
+            if (Objects.isNull(delivery)) {
+                throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
+            }
+            AsnOrder order = new AsnOrder();
+            BeanUtils.copyProperties(delivery, order);
+            String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_OUT_STOCK_CODE, order);
+            if (Objects.isNull(ruleCode) || StringUtils.isBlank(ruleCode)) {
+                throw new CoolException("缂栫爜瑙勫垯閿欒锛氳妫�鏌� 銆孲YS_OUT_STOCK_CODE銆嶇紪鐮佹槸鍚﹁缃垚鍔�");
+            }
+            order.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val)
+                    .setType(delivery.getType())
+                    .setWkType(delivery.getWkType())
+                    .setCode(ruleCode)
+                    .setPoId(delivery.getId())
+                    .setId(null)
+                    .setUpdateBy(loginUserId)
+                    .setCreateBy(loginUserId)
+                    .setPoCode(delivery.getCode());
+            if (!this.save(order)) {
+                throw new CoolException("涓诲崟淇濆瓨澶辫触锛侊紒");
+            }
             List<AsnOrderItem> orderItems = new ArrayList<>();
             listMap.get(key).forEach(item -> {
                 AsnOrderItem orderItem = new AsnOrderItem();
                 Double anfme = Math.round((item.getAnfme() - item.getWorkQty() - item.getQty()) * 10000) / 10000.0;
                 BeanUtils.copyProperties(item, orderItem);
                 orderItem.setId(null)
-                        .setPoCode(delivery1.getCode())
+                        .setPoCode(order.getPoCode())
                         .setMaktx(item.getMaktx())
                         .setMatnrCode(item.getMatnrCode())
                         .setFieldsIndex(item.getFieldsIndex())
@@ -206,7 +205,6 @@
                         .setPlatOrderCode(item.getPlatOrderCode())
                         .setProjectCode(item.getProjectCode())
                         .setPlatItemId(item.getPlatItemId())
-                        .setFieldsIndex(item.getFieldsIndex())
                         .setUpdateBy(loginUserId)
                         .setCreateBy(loginUserId)
                         .setPoDetlId(item.getId());
@@ -220,13 +218,17 @@
             });
 
             Double sum = orderItems.stream().mapToDouble(AsnOrderItem::getAnfme).sum();
-
+            //淇敼璁″垝鏁伴噺
+            order.setAnfme(sum).setWorkQty(0.0);
+            if (!this.saveOrUpdate(order)) {
+                throw new CoolException("涓诲崟鏁伴噺淇敼澶辫触锛侊紒");
+            }
             if (!asnOrderItemService.saveBatch(orderItems)) {
                 throw new CoolException("鏄庣粏淇濆瓨澶辫触锛侊紒");
             }
 
             Short exceStatus = POExceStatus.PO_EXCE_STATUS_SECTION_DONE.val;
-            if (delivery1.getAnfme().compareTo(sum) <= 0) {
+            if (delivery.getAnfme().compareTo(order.getAnfme()) <= 0) {
                 exceStatus = AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val;
             }
 
@@ -236,15 +238,8 @@
                     .eq(Delivery::getId, key))) {
                 throw new CoolException("涓诲崟淇敼澶辫触锛侊紒");
             }
+
         });
-
-        Double sum = items.stream().mapToDouble(DeliveryItem::getAnfme).sum();
-        //淇敼璁″垝鏁伴噺
-        order.setAnfme(sum).setWorkQty(0.0);
-        if (!this.saveOrUpdate(order)) {
-            throw new CoolException("涓诲崟鏁伴噺淇敼澶辫触锛侊紒");
-        }
-
         return R.ok();
     }
 

--
Gitblit v1.9.1