From a2ef24e5d60de082204a53e65bff6705e064c61e Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期三, 18 六月 2025 15:37:46 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java    |   76 +++++++++++-
 src/main/java/com/zy/asrs/service/ReportToThirdService.java             |    3 
 src/main/java/com/zy/nc/vo/InvCountHeaderVO.java                        |   13 ++
 src/main/java/com/zy/asrs/task/ReportInventoryCheckOrdersScheduler.java |  127 +++++++++++++++++++++
 src/main/java/com/zy/asrs/task/WorkMastScheduler.java                   |   79 -------------
 src/main/java/com/zy/nc/vo/InvCountBodyVO.java                          |   14 ++
 src/main/resources/application.yml                                      |    2 
 7 files changed, 226 insertions(+), 88 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/ReportToThirdService.java b/src/main/java/com/zy/asrs/service/ReportToThirdService.java
index 26af8a2..3a1a8af 100644
--- a/src/main/java/com/zy/asrs/service/ReportToThirdService.java
+++ b/src/main/java/com/zy/asrs/service/ReportToThirdService.java
@@ -1,6 +1,7 @@
 package com.zy.asrs.service;
 
 import com.zy.asrs.entity.DocType;
+import com.zy.asrs.entity.InventoryCheckOrder;
 import com.zy.asrs.entity.Order;
 import com.zy.asrs.entity.OrderDetl;
 
@@ -12,4 +13,6 @@
 
     boolean reportTkrk(String matnr, String batch, String orderNo, Double anfme);
 
+    boolean reportCheckOrder(InventoryCheckOrder checkOrder);
+
 }
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 507c554..a32b024 100644
--- a/src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java
@@ -6,14 +6,8 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.core.exception.CoolException;
-import com.zy.asrs.entity.DocType;
-import com.zy.asrs.entity.Order;
-import com.zy.asrs.entity.OrderDetl;
-import com.zy.asrs.entity.StoreType;
-import com.zy.asrs.service.ApiLogService;
-import com.zy.asrs.service.OrderService;
-import com.zy.asrs.service.ReportToThirdService;
-import com.zy.asrs.service.StoreTypeService;
+import com.zy.asrs.entity.*;
+import com.zy.asrs.service.*;
 import com.zy.nc.SendUtil;
 import com.zy.nc.entity.*;
 import com.zy.nc.service.NccSaleXsfhmxWmsService;
@@ -36,9 +30,14 @@
 
     @Autowired
     private ApiLogService apiLogService;
-
     @Autowired
     private OrderService orderService;
+    @Autowired
+    private WrkDetlService wrkDetlService;
+    @Autowired
+    private InventoryCheckOrderService inventoryCheckOrderService;
+    @Autowired
+    private InventoryCheckOrderDetlService inventoryCheckOrderDetlService;
 
     @Autowired
     private StoreTypeService storeTypeService;
@@ -60,6 +59,9 @@
 
     @Value("${NYNC.saveRefWhsTrans}")
     private String saveRefWhsTrans;
+
+    @Value("${NYNC.invcountAdd}")
+    private String invcountAdd;
 
     @Value("${NYNC.purchasein}")
     private String purchasein;
@@ -219,6 +221,21 @@
         }
     }
 
+    @Override
+    public boolean reportCheckOrder(InventoryCheckOrder checkOrder) {
+        Object process1 = processInvcount(checkOrder);
+        //鍙戦�佽姹�
+        NcResultMessage response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, invcountAdd, JSONObject.toJSONString(process1));
+        log.info("鐩樼偣鍗時esponse:{}", response);
+        if (!Cools.isEmpty(response) && response.isSuccess()) {
+            log.info("鐩樼偣鍗時esponse:{}", response);
+            return true;
+        } else {
+//            remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100);
+            return false;
+        }
+    }
+
     private Object processXSFH(List<OrderDetl> orderDetls, Boolean flag) {
         //缁勮瀵硅薄鏁版嵁
         Map<String, Object> data = new HashMap<String, Object>();
@@ -296,6 +313,47 @@
         return data;
     }
 
+    private Object processInvcount(InventoryCheckOrder checkOrder) {
+        List<InventoryCheckOrderDetl> inventoryCheckOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>()
+                .eq("order_no", checkOrder.getOrderNo()));
+        if (inventoryCheckOrderDetls.isEmpty()) {
+            throw new CoolException("鐩樼偣鏄庣粏涓嶅瓨鍦�");
+        }
+
+        //缁勮瀵硅薄鏁版嵁
+        Map<String, Object> data = new HashMap<String, Object>();
+
+        //浠撳簱id
+        String cwarehouseid = null;
+        List<InvCountBodyVO> invCountBodyVOList = new ArrayList<>();
+        for (InventoryCheckOrderDetl inventoryCheckOrderDetl : inventoryCheckOrderDetls) {
+            List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>()
+                    .eq("matnr", inventoryCheckOrderDetl.getMatnr())
+                    .eq("batch", inventoryCheckOrderDetl.getBatch())
+            );
+            if (wrkDetls.isEmpty()) {
+                throw new CoolException("宸ヤ綔妗f槑缁嗕笉瀛樺湪");
+            }
+
+            cwarehouseid = wrkDetls.get(0).getStandby1();
+
+            InvCountBodyVO invCountBodyVO = new InvCountBodyVO();
+            invCountBodyVO.setCmaterialoid(inventoryCheckOrderDetl.getMatnr());
+            invCountBodyVO.setVbatchcode(inventoryCheckOrderDetl.getBatch());
+            invCountBodyVO.setNcountastnum(inventoryCheckOrderDetl.getCheckAnfme());
+            invCountBodyVOList.add(invCountBodyVO);
+        }
+
+        InvCountHeaderVO invCountHeaderVO = new InvCountHeaderVO();
+        invCountHeaderVO.setPk_org("FYT");
+        invCountHeaderVO.setCtrantypeid("4R-01");
+        invCountHeaderVO.setCwarehouseid(cwarehouseid);
+
+        data.put("InvCountHeaderVO", invCountHeaderVO);
+        data.put("InvCountBodyVO", invCountBodyVOList);
+        return data;
+    }
+
     private Object processZKRK(List<OrderDetl> orderDetls) {
         //缁勮瀵硅薄鏁版嵁
         Map<String, Object> data = new HashMap<String, Object>();
diff --git a/src/main/java/com/zy/asrs/task/ReportInventoryCheckOrdersScheduler.java b/src/main/java/com/zy/asrs/task/ReportInventoryCheckOrdersScheduler.java
new file mode 100644
index 0000000..424577b
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/ReportInventoryCheckOrdersScheduler.java
@@ -0,0 +1,127 @@
+package com.zy.asrs.task;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.zy.asrs.entity.InventoryCheckOrder;
+import com.zy.asrs.entity.InventoryCheckOrderDetl;
+import com.zy.asrs.service.InventoryCheckOrderDetlService;
+import com.zy.asrs.service.InventoryCheckOrderService;
+import com.zy.asrs.service.ReportToThirdService;
+import com.zy.system.entity.Config;
+import com.zy.system.service.ConfigService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Slf4j
+@Component
+public class ReportInventoryCheckOrdersScheduler {
+
+    @Autowired
+    private InventoryCheckOrderService inventoryCheckOrderService;
+    @Autowired
+    private InventoryCheckOrderDetlService inventoryCheckOrderDetlService;
+    @Autowired
+    private ConfigService configService;
+    @Autowired
+    private ReportToThirdService reportToThirdService;
+
+    /**
+     * 涓婃姤鐩樼偣缁撴灉
+     */
+    @Scheduled(cron = "0/3 * * * * ? ")
+    public void execute() {
+        List<InventoryCheckOrder> inventoryCheckOrders = inventoryCheckOrderService.selectList(new EntityWrapper<InventoryCheckOrder>()
+                .eq("status", 1));
+        if (inventoryCheckOrders.isEmpty()) {
+            return;
+        }
+
+        for (InventoryCheckOrder checkOrder : inventoryCheckOrders) {
+            List<InventoryCheckOrderDetl> checkOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>().eq("order_no", checkOrder.getOrderNo()));
+            boolean complete = true;
+            for (InventoryCheckOrderDetl checkOrderDetl : checkOrderDetls) {
+                if (!checkOrderDetl.getStatus().equals("2")) {
+                    complete = false;
+                }
+            }
+            if (complete) {
+                boolean result = reportToThirdService.reportCheckOrder(checkOrder);
+                if (!result) {
+                    continue;
+                }
+
+                checkOrder.setStatus("2");
+                if (!inventoryCheckOrderService.updateById(checkOrder)) {
+                    log.error("鐩樼偣鍗昜orderNo={}]鏇存柊鐘舵�佹垚鍔�", checkOrder.getOrderNo());
+                } else {
+                    log.info("鐩樼偣鍗昜orderNo={}]鏇存柊鐘舵�佸け璐�", checkOrder.getOrderNo());
+                }
+            }
+        }
+    }
+
+    /**
+     * 鑷姩鍒犻櫎瓒呰繃1澶╋紝鏃犳槑缁嗙殑鐩樼偣鍗�
+     */
+    @Scheduled(cron = "0/3 * * * * ? ")
+    public void execute2() {
+        List<InventoryCheckOrder> inventoryCheckOrders = inventoryCheckOrderService.selectList(new EntityWrapper<InventoryCheckOrder>());
+        if (inventoryCheckOrders.isEmpty()) {
+            return;
+        }
+        for (InventoryCheckOrder checkOrder : inventoryCheckOrders) {
+            List<InventoryCheckOrderDetl> checkOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>().eq("order_no", checkOrder.getOrderNo()));
+            if (checkOrderDetls.isEmpty() && System.currentTimeMillis() - checkOrder.getCreateTime().getTime() >= 1000 * 60 * 60 * 24) {
+                if (!inventoryCheckOrderService.deleteById(checkOrder)) {
+                    log.error("鐩樼偣鍗昜orderNo={}]鍒犻櫎澶辫触", checkOrder.getOrderNo());
+                } else {
+                    log.info("鐩樼偣鍗昜orderNo={}]鍒犻櫎鎴愬姛", checkOrder.getOrderNo());
+                }
+            }
+        }
+    }
+
+//    /**
+//     * 鑷姩瀹岀粨杈惧埌涓�瀹氭暟閲忕殑鐩樼偣鍗�
+//     */
+//    @Scheduled(cron = "0/30 * * * * ? ")
+//    public void execute3() {
+//        List<InventoryCheckOrder> inventoryCheckOrders = inventoryCheckOrderService.selectList(new EntityWrapper<InventoryCheckOrder>());
+//        if (inventoryCheckOrders.isEmpty()) {
+//            return;
+//        }
+//        int num = 20;
+//        try {
+//            Config config = configService.selectConfigByCode("CheckOrderNum");
+//            if (Cools.isEmpty(config) || config.getValue().equals("false")) {
+//
+//            } else {
+//                num = Integer.parseInt(config.getValue());
+//            }
+//        } catch (Exception e) {
+//
+//        }
+//        for (InventoryCheckOrder checkOrder : inventoryCheckOrders) {
+//            List<InventoryCheckOrderDetl> checkOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>().eq("order_no", checkOrder.getOrderNo()));
+//            boolean complete = true;
+//            for (InventoryCheckOrderDetl checkOrderDetl : checkOrderDetls) {
+//                if (!checkOrderDetl.getStatus().equals("2")) {
+//                    complete = false;
+//                }
+//            }
+//            if (complete && checkOrderDetls.size() >= num) {
+//                checkOrder.setStatus("2");
+//                if (!inventoryCheckOrderService.updateById(checkOrder)) {
+//                    log.error("鐩樼偣鍗昜orderNo={}]鏇存柊鐘舵�佹垚鍔�", checkOrder.getOrderNo());
+//                } else {
+//                    log.info("鐩樼偣鍗昜orderNo={}]鏇存柊鐘舵�佸け璐�", checkOrder.getOrderNo());
+//                }
+//            }
+//        }
+//    }
+
+}
diff --git a/src/main/java/com/zy/asrs/task/WorkMastScheduler.java b/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
index 5f241c3..59c2a50 100644
--- a/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
+++ b/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
@@ -1,17 +1,9 @@
 package com.zy.asrs.task;
 
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.common.Cools;
-import com.zy.asrs.entity.InventoryCheckOrder;
-import com.zy.asrs.entity.InventoryCheckOrderDetl;
 import com.zy.asrs.entity.WrkMast;
-import com.zy.asrs.service.InventoryCheckOrderDetlService;
-import com.zy.asrs.service.InventoryCheckOrderService;
 import com.zy.asrs.service.WrkMastService;
 import com.zy.asrs.task.core.ReturnT;
 import com.zy.asrs.task.handler.WorkMastHandler;
-import com.zy.system.entity.Config;
-import com.zy.system.service.ConfigService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -34,17 +26,6 @@
     @Autowired
     private WorkMastHandler workMastHandler;
 
-    @Autowired
-    private InventoryCheckOrderService inventoryCheckOrderService;
-
-
-    @Autowired
-    private InventoryCheckOrderDetlService inventoryCheckOrderDetlService;
-
-
-    @Autowired
-    private ConfigService configService;
-
 
     @Scheduled(cron = "0/3 * * * * ? ")
     public void execute() {
@@ -60,66 +41,6 @@
                 wrkMast.setErrorTime(new Date());
                 if (!wrkMastService.updateById(wrkMast)) {
                     log.error("宸ヤ綔妗workNo={}]鏍囪寰呭鐞嗗け璐�", wrkMast.getWrkNo());
-                }
-            }
-        }
-    }
-
-    /**
-     * 鑷姩鍒犻櫎瓒呰繃1澶╋紝鏃犳槑缁嗙殑鐩樼偣鍗�
-     */
-    @Scheduled(cron = "0/3 * * * * ? ")
-    public void execute2() {
-        List<InventoryCheckOrder> inventoryCheckOrders = inventoryCheckOrderService.selectList(new EntityWrapper<InventoryCheckOrder>());
-        if (inventoryCheckOrders.isEmpty()) {
-            return;
-        }
-        for (InventoryCheckOrder checkOrder : inventoryCheckOrders) {
-            List<InventoryCheckOrderDetl> checkOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>().eq("order_no", checkOrder.getOrderNo()));
-            if (checkOrderDetls.isEmpty() && System.currentTimeMillis() - checkOrder.getCreateTime().getTime() >= 1000 * 60 * 60 * 24) {
-                if (!inventoryCheckOrderService.deleteById(checkOrder)) {
-                    log.error("鐩樼偣鍗昜orderNo={}]鍒犻櫎澶辫触", checkOrder.getOrderNo());
-                } else {
-                    log.info("鐩樼偣鍗昜orderNo={}]鍒犻櫎鎴愬姛", checkOrder.getOrderNo());
-                }
-            }
-        }
-    }
-
-    /**
-     * 鑷姩瀹岀粨杈惧埌涓�瀹氭暟閲忕殑鐩樼偣鍗�
-     */
-    @Scheduled(cron = "0/30 * * * * ? ")
-    public void execute3() {
-        List<InventoryCheckOrder> inventoryCheckOrders = inventoryCheckOrderService.selectList(new EntityWrapper<InventoryCheckOrder>());
-        if (inventoryCheckOrders.isEmpty()) {
-            return;
-        }
-        int num = 20;
-        try {
-            Config config = configService.selectConfigByCode("CheckOrderNum");
-            if (Cools.isEmpty(config) || config.getValue().equals("false")) {
-
-            } else {
-                num = Integer.parseInt(config.getValue());
-            }
-        } catch (Exception e) {
-
-        }
-        for (InventoryCheckOrder checkOrder : inventoryCheckOrders) {
-            List<InventoryCheckOrderDetl> checkOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>().eq("order_no", checkOrder.getOrderNo()));
-            boolean complete = true;
-            for (InventoryCheckOrderDetl checkOrderDetl : checkOrderDetls) {
-                if (!checkOrderDetl.getStatus().equals("2")) {
-                    complete = false;
-                }
-            }
-            if (complete && checkOrderDetls.size() >= num) {
-                checkOrder.setStatus("2");
-                if (!inventoryCheckOrderService.updateById(checkOrder)) {
-                    log.error("鐩樼偣鍗昜orderNo={}]鏇存柊鐘舵�佹垚鍔�", checkOrder.getOrderNo());
-                } else {
-                    log.info("鐩樼偣鍗昜orderNo={}]鏇存柊鐘舵�佸け璐�", checkOrder.getOrderNo());
                 }
             }
         }
diff --git a/src/main/java/com/zy/nc/vo/InvCountBodyVO.java b/src/main/java/com/zy/nc/vo/InvCountBodyVO.java
new file mode 100644
index 0000000..12b3fb4
--- /dev/null
+++ b/src/main/java/com/zy/nc/vo/InvCountBodyVO.java
@@ -0,0 +1,14 @@
+package com.zy.nc.vo;
+
+import lombok.Data;
+
+@Data
+public class InvCountBodyVO {
+
+    private String cmaterialoid;//鐗╂枡
+
+    private String vbatchcode;//鎵规
+
+    private Double ncountastnum;//鐩樼偣鏁伴噺
+
+}
diff --git a/src/main/java/com/zy/nc/vo/InvCountHeaderVO.java b/src/main/java/com/zy/nc/vo/InvCountHeaderVO.java
new file mode 100644
index 0000000..7de858b
--- /dev/null
+++ b/src/main/java/com/zy/nc/vo/InvCountHeaderVO.java
@@ -0,0 +1,13 @@
+package com.zy.nc.vo;
+
+import lombok.Data;
+
+@Data
+public class InvCountHeaderVO {
+
+    // 蹇呭~瀛楁
+    private String pk_org; // 搴撳瓨缁勭粐鏈�鏂扮増鏈�
+    private String cwarehouseid; // 浠撳簱
+    private String ctrantypeid; // 鐩樼偣绫诲瀷
+
+}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 3525f0a..9c42cc1 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -99,6 +99,8 @@
   whstrans: /nccloud/api/ic/whstrans/save
   #4.2鍏朵粬鍑哄簱鍗曟柊澧�
   generalout: /nccloud/api/ic/generalout/save
+  #鐩樼偣鍗曟柊澧�
+  invcountAdd: /nccloud/api/ic/invcount/save
   #4.3.鍏朵粬鍏ュ簱鍗曞弬鐓ц浆搴撴柊澧�
   #saveRefWhsTrans: http://ip:port/nccloud/api/ic/generalin/saveRefWhsTrans
   #5.1鏂板杞簱鍗�

--
Gitblit v1.9.1