From aa2d0845d83b95135d0c86a2cc62f66947ecd6f9 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期三, 06 八月 2025 13:39:13 +0800
Subject: [PATCH] 1

---
 src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java |  120 ++++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 73 insertions(+), 47 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java
index d950ce2..13f1f43 100644
--- a/src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java
@@ -270,36 +270,48 @@
     }
 
     @Override
-    public boolean reportCheckOrder(String matnr, String batch) {
-        List<InventoryCheckOrderDetl> checkOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>()
-                .eq("matnr", matnr)
-                .eq("batch", batch)
-        );
-
-        ArrayList<String> warehouseIdList = new ArrayList<>();
+    public boolean reportCheckOrder(List<InventoryCheckOrderDetl> checkOrderDetls) {
         ArrayList<String> orderNoList = new ArrayList<>();
+        HashMap<String, List<InventoryCheckOrderDetl>> map = new HashMap<>();
         for (InventoryCheckOrderDetl checkOrderDetl : checkOrderDetls) {
-            if (!warehouseIdList.contains(checkOrderDetl.getCwarehouseid())) {
-                warehouseIdList.add(checkOrderDetl.getCwarehouseid());
+            if (map.containsKey(checkOrderDetl.getCwarehouseid())) {
+                List<InventoryCheckOrderDetl> list = map.get(checkOrderDetl.getCwarehouseid());
+                list.add(checkOrderDetl);
+                map.put(checkOrderDetl.getCwarehouseid(), list);
+            }else {
+                List<InventoryCheckOrderDetl> list = new ArrayList<>();
+                list.add(checkOrderDetl);
+                map.put(checkOrderDetl.getCwarehouseid(), list);
             }
+
             if (!orderNoList.contains(checkOrderDetl.getOrderNo())) {
                 orderNoList.add(checkOrderDetl.getOrderNo());
             }
         }
 
         boolean result = true;
-        for (String cwarehouseid : warehouseIdList) {
-            Object process1 = processInvcount(matnr, batch, cwarehouseid);
-            //鍙戦�佽姹�
-            NcResultMessage response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, invcountAdd, JSONObject.toJSONString(process1));
-            log.info("鐩樼偣鍗時esponse:{}", response);
-            if (!Cools.isEmpty(response) && response.isSuccess()) {
+        for (Map.Entry<String, List<InventoryCheckOrderDetl>> entry : map.entrySet()) {
+            String cwarehouseid = entry.getKey();
+            List<InventoryCheckOrderDetl> list = entry.getValue();
+            Object process1 = processInvcount(list, cwarehouseid);
+            NcResultMessage response = null;
+            boolean success = false;
+            try {
+                //鍙戦�佽姹�
+                response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, invcountAdd, JSONObject.toJSONString(process1));
                 log.info("鐩樼偣鍗時esponse:{}", response);
-            } else {
-                result = false;
+                if (!Cools.isEmpty(response) && response.isSuccess()) {
+                    log.info("鐩樼偣鍗時esponse:{}", response);
+                    success = true;
+                } else {
+                    result = false;
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            } finally {
+                reportApiLog(null, process1, null, response, "鐩樼偣涓婃姤", nyncIp, invcountAdd, success);
             }
         }
-
 
         if (result) {
             List<InventoryCheckOrder> inventoryCheckOrders = inventoryCheckOrderService.selectList(new EntityWrapper<InventoryCheckOrder>()
@@ -431,45 +443,59 @@
         return data;
     }
 
-    private Object processInvcount(String matnr, String batch, String cwarehouseid) {
-        List<InventoryCheckOrderDetl> inventoryCheckOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>()
-                .eq("matnr", matnr)
-                .eq("batch", batch)
-                .eq("cwarehouseid", cwarehouseid)
-        );
+    private Object processInvcount(List<InventoryCheckOrderDetl> inventoryCheckOrderDetls, String cwarehouseid) {
         if (inventoryCheckOrderDetls.isEmpty()) {
             throw new CoolException("鐩樼偣鏄庣粏涓嶅瓨鍦�");
         }
 
-        //鍚堝苟鏁伴噺
-        BigDecimal checkAnfmeDecimal = new BigDecimal(0);
+        HashMap<String, InventoryCheckOrderDetl> map = new HashMap<>();
         for (InventoryCheckOrderDetl checkOrderDetl : inventoryCheckOrderDetls) {
-            checkAnfmeDecimal = checkAnfmeDecimal.add(BigDecimal.valueOf(checkOrderDetl.getCheckAnfme()));
-        }
+            String key = checkOrderDetl.getMatnr() + "_" + checkOrderDetl.getBatch() + "_" + checkOrderDetl.getCstateid();
+            if (map.containsKey(key)) {
+                InventoryCheckOrderDetl orderDetl = map.get(key);
+                BigDecimal checkAnfmeDecimal = BigDecimal.valueOf(orderDetl.getCheckAnfme());
+                checkAnfmeDecimal = checkAnfmeDecimal.add(BigDecimal.valueOf(checkOrderDetl.getCheckAnfme()));
+                //璁$畻杈呮暟閲�
+                Double weight = MatUtils.calcWeight(orderDetl.getMatnr(), checkAnfmeDecimal.doubleValue());
 
-        //璁$畻杈呮暟閲�
-        Double weight = MatUtils.calcWeight(matnr, checkAnfmeDecimal.doubleValue());
+                orderDetl.setCheckAnfme(checkAnfmeDecimal.doubleValue());
+                orderDetl.setWeight(weight);
+                map.put(key, orderDetl);
+            } else {
+                //璁$畻杈呮暟閲�
+                Double weight = MatUtils.calcWeight(checkOrderDetl.getMatnr(), checkOrderDetl.getCheckAnfme());
+                checkOrderDetl.setWeight(weight);
+                map.put(key, checkOrderDetl);
+            }
+        }
 
         //缁勮瀵硅薄鏁版嵁
         Map<String, Object> data = new HashMap<String, Object>();
 
         List<InvCountBodyVO> invCountBodyVOList = new ArrayList<>();
 
-        NccScPcdaWms nccScPcdaWms = nccScPcdaWmsService.selectOne(new EntityWrapper<NccScPcdaWms>()
-                .eq("WLBM", matnr)
-                .eq("VBATCHCODE", batch)
-        );
-        if (null == nccScPcdaWms) {
-            throw new CoolException("ERP鏁版嵁搴撴棤娉曟煡璇㈠埌鐩樼偣涓婃姤鏁版嵁");
+        for (Map.Entry<String, InventoryCheckOrderDetl> entry : map.entrySet()) {
+            InventoryCheckOrderDetl checkOrderDetl = entry.getValue();
+            String matnr = checkOrderDetl.getMatnr();
+            String batch = checkOrderDetl.getBatch();
+
+            NccScPcdaWms nccScPcdaWms = nccScPcdaWmsService.selectOne(new EntityWrapper<NccScPcdaWms>()
+                    .eq("WLBM", matnr)
+                    .eq("VBATCHCODE", batch)
+            );
+            if (null == nccScPcdaWms) {
+                throw new CoolException("ERP鏁版嵁搴撴棤娉曟煡璇㈠埌鐩樼偣涓婃姤鏁版嵁");
+            }
+            InvCountBodyVO invCountBodyVO = new InvCountBodyVO();
+            invCountBodyVO.setCmaterialoid(matnr);
+            invCountBodyVO.setVbatchcode(batch);
+            invCountBodyVO.setNcountnum(checkOrderDetl.getCheckAnfme());
+            invCountBodyVO.setNcountastnum(checkOrderDetl.getWeight());
+            invCountBodyVO.setCstateid(checkOrderDetl.getCstateid());
+            invCountBodyVO.setPk_batchcode(nccScPcdaWms.getPkBatchcode());
+            invCountBodyVOList.add(invCountBodyVO);
         }
-        InvCountBodyVO invCountBodyVO = new InvCountBodyVO();
-        invCountBodyVO.setCmaterialoid(matnr);
-        invCountBodyVO.setVbatchcode(batch);
-        invCountBodyVO.setNcountnum(checkAnfmeDecimal.doubleValue());
-        invCountBodyVO.setNcountastnum(weight);
-        invCountBodyVO.setCstateid(nccScPcdaWms.getPkStorestate());
-        invCountBodyVO.setPk_batchcode(nccScPcdaWms.getPkBatchcode());
-        invCountBodyVOList.add(invCountBodyVO);
+
 
         InvCountHeaderVO invCountHeaderVO = new InvCountHeaderVO();
         invCountHeaderVO.setPk_org("FYT");
@@ -538,8 +564,8 @@
                 iaIjBillB.setCstateid(orderDetl.getCstateidVcode());
 
                 hid = nccSaleDbddWms.getCbillid();
+                bids.add(iaIjBillB);
             }
-            bids.add(iaIjBillB);
         }
         data.put("hid", hid);
         data.put("bids", bids);
@@ -598,7 +624,7 @@
             }
 
             whsTransBillBodyVO = new WhsTransBillBodyVO();
-            whsTransBillBodyVO.setCstateid(nccScPcdaWms.getPkStorestate());
+            whsTransBillBodyVO.setCstateid(orderDetl.getCstateid());
 
             String remark = orderDetl.getRemark();
             //if (!Cools.isEmpty(remark)) {
@@ -650,7 +676,7 @@
             generalout_b.setCsourcetype("4K-01");
             generalout_b.setCsourcebillhid(cspecialhid);
             generalout_b.setCmaterialvid(orderDetl.getMatnr());
-            generalout_b.setCstateid(nccScPcdaWms.getPkStorestate());
+            generalout_b.setCstateid(orderDetl.getCstateid());
             generalout_b.setPk_batchcode(nccScPcdaWms.getPkBatchcode());
             StoreType storeType = storeTypeService.selectOne(new EntityWrapper<StoreType>().eq("store_id", orderDetl.getStandby1()));
             generalout_b.setCdptvid(storeType.getDepartmentId());

--
Gitblit v1.9.1