From d40170ddacd861d4e003ec69f7a87ea1431be4cd Mon Sep 17 00:00:00 2001
From: zhangc <zc@123>
Date: 星期一, 13 一月 2025 15:54:42 +0800
Subject: [PATCH] 优化定时任务,添加自动接单(未完成,逻辑还不清楚),调整环境配置

---
 src/main/java/com/zy/asrs/entity/param/OrderProdSyncParam.java    |    6 
 src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java |    1 
 src/main/java/com/zy/asrs/entity/OrderDetl.java                   |    3 
 src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java             |    6 
 src/main/java/com/zy/asrs/task/AutoOrderScheduler.java            |   76 +++++++++
 src/main/java/com/zy/asrs/task/handler/AutoOrderHandler.java      |  111 +++++++++++++
 src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java  |    9 
 src/main/java/com/zy/asrs/task/OrderSyncScheduler.java            |   47 ++++-
 src/main/java/com/zy/asrs/task/AgvWarnScheduler.java              |   41 +++-
 src/main/resources/mapper/OrderDetlMapper.xml                     |   17 ++
 src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java     |    2 
 src/main/java/com/zy/asrs/controller/AgvWarnController.java       |    4 
 src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java      |    3 
 src/main/java/com/zy/asrs/task/ReportDataScheduler.java           |    8 
 src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java      |   86 +++++-----
 src/main/java/com/zy/asrs/entity/param/OrderSyncParam.java        |    4 
 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java       |   10 +
 src/main/resources/application.yml                                |    2 
 18 files changed, 360 insertions(+), 76 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/AgvWarnController.java b/src/main/java/com/zy/asrs/controller/AgvWarnController.java
index fb2a1fe..9cd3b3a 100644
--- a/src/main/java/com/zy/asrs/controller/AgvWarnController.java
+++ b/src/main/java/com/zy/asrs/controller/AgvWarnController.java
@@ -61,7 +61,7 @@
     @PostMapping("/service/rest/agvCallbackService/warnCallback")
     @AppAuth(memo = "AGV鍛婅鍥炶皟")
     public Object taskEventStaus(@RequestBody AgvWarnCallBackParam param, HttpServletRequest request) {
-        log.info("AGV鍛婅鍥炶皟:{}", JSON.toJSONString(param));
+        //og.info("AGV鍛婅鍥炶皟:{}", JSON.toJSONString(param));
         AppAuthUtil.auth("", param, request);
         List<AgvWarnBody> agvWarnBodies = param.getData();
         //  List<AgvWarnBody> agvWarnBodies = JSONArray.parseArray(data, AgvWarnBody.class);
@@ -69,7 +69,7 @@
         List<AgvWarn> agvWarns = new ArrayList<>();
         List<AgvWarn> updates = new ArrayList<>();
         for (AgvWarnBody body : agvWarnBodies) {
-            List<AgvWarn> agvWarnList = agvWarnService.selectList(new EntityWrapper<AgvWarn>().eq("robot_code", body.getRobotCode()).eq("begin_time", body.getBeginDate()).eq("warn_content", body.getWarnContent()));
+            List<AgvWarn> agvWarnList = agvWarnService.selectList(new EntityWrapper<AgvWarn>().eq("robot_code", body.getRobotCode()).eq("warn_content", body.getWarnContent()));
             if (Cools.isEmpty(agvWarnList)) {
                 agvWarn = new AgvWarn();
                 agvWarn.setBeginTime(body.getBeginDate());
diff --git a/src/main/java/com/zy/asrs/entity/OrderDetl.java b/src/main/java/com/zy/asrs/entity/OrderDetl.java
index 460a30c..5b5aa8e 100644
--- a/src/main/java/com/zy/asrs/entity/OrderDetl.java
+++ b/src/main/java/com/zy/asrs/entity/OrderDetl.java
@@ -302,6 +302,9 @@
     @TableField("report_qty")
     private Double reportQty;
 
+    @TableField("dev_no")
+    private String devNo;
+
     public OrderDetl() {}
 
     public OrderDetl(Long orderId, String orderNo, Double anfme, Double qty, String matnr, String maktx, String batch, String specs, String model, String color, String brand, String unit, Double price, String sku, Double units, String barcode, String origin, String manu, String manuDate, String itemNum, Double safeQty, Double weight, Double length, Double volume, String threeCode, String supp, String suppCode, Integer beBatch, String deadTime, Integer deadWarn, Integer source, Integer inspect, Integer danger, Integer status, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo,Integer processSts) {
diff --git a/src/main/java/com/zy/asrs/entity/param/OrderProdSyncParam.java b/src/main/java/com/zy/asrs/entity/param/OrderProdSyncParam.java
index 5349b0a..2226dd4 100644
--- a/src/main/java/com/zy/asrs/entity/param/OrderProdSyncParam.java
+++ b/src/main/java/com/zy/asrs/entity/param/OrderProdSyncParam.java
@@ -15,6 +15,9 @@
     //鍗曟嵁绫诲瀷
     private String orderType;
 
+    //閫�鏂欏崟鍗曟嵁缂栧彿
+    private String backOrderNo;
+
 
     //璁㈠崟缂栧彿
     private String cPOID;
@@ -80,7 +83,8 @@
         private String 鎿嶄綔鍗曟嵁;
         private String 鎿嶄綔绫诲瀷;
 
-
+        //绔欑偣缂栫爜
+        private String devNo;
         //璁㈠崟琛屽彿
         private String ivouchrowno;
         //鐗╂枡缂栫爜
diff --git a/src/main/java/com/zy/asrs/entity/param/OrderSyncParam.java b/src/main/java/com/zy/asrs/entity/param/OrderSyncParam.java
index 4783d06..1424090 100644
--- a/src/main/java/com/zy/asrs/entity/param/OrderSyncParam.java
+++ b/src/main/java/com/zy/asrs/entity/param/OrderSyncParam.java
@@ -11,6 +11,8 @@
     private String 鎿嶄綔鍗曟嵁;
     private String 鎿嶄綔绫诲瀷;
 
+    //閫�鏂欏崟鍗曟嵁缂栧彿
+    private String backOrderNo;
 
     //鍏ュ嚭搴撴爣璁�
     private Integer pakin;
@@ -46,6 +48,8 @@
 
     @Data
     public static class OrderDetl {
+        //绔欑偣缂栫爜
+        private String devNo;
         //璁㈠崟琛屽彿
         private String ivouchrowno;
         //鐗╂枡缂栫爜
diff --git a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
index 705cbc6..5a6798a 100644
--- a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
@@ -53,4 +53,10 @@
 
     Integer getOrderDetlByDoctypeCount(Map<String, Object> map);
 
+    List<String> getReportDetl(@Param("docType") Long docType);
+
+    List<String> listAutoDetl(@Param("devNo") String devno);
+
+
+
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java
index b815fa0..a6d8aac 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java
@@ -109,6 +109,7 @@
 
         List<AgvLocDetl> agvLocDetls = this.selectList(wrapper);
 
+
         for (AgvLocDetl agvLocDetl : agvLocDetls) {
             //鍒ゆ柇褰撳墠搴撲綅璐х墿鏄惁F鍦ㄥ簱
             AgvLocMast agvLocMast = agvLocMastService.selectById(agvLocDetl.getLocNo());
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
index 21e2a1d..6b192ba 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
@@ -179,6 +179,7 @@
             // 鏇存柊璁㈠崟
             OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", pick.getOrderNo()).eq("matnr", pick.getMatnr()).eq("three_code", pick.getThreeCode()));
             orderDetl.setQty(orderDetl.getQty() + pick.getCount());
+            orderDetl.setUpdateTime(new Date());
             if (!orderDetlService.update(orderDetl, new EntityWrapper<OrderDetl>().eq("order_no", pick.getOrderNo()).eq("matnr", pick.getMatnr()).eq("three_code", pick.getThreeCode()))) {
                 throw new CoolException("淇敼璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�" + pick.getOrderNo() + pick.getMatnr());
             }
@@ -353,6 +354,10 @@
 
         AgvBasDevp agvBasDevp = agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>().eq("dev_no", stationCode));
 
+        if (agvBasDevp == null) {
+            throw new CoolException(stationCode + "绔欑偣淇℃伅閿欒");
+        }
+
         if (Cools.eq(agvBasDevp.getBarcode(), barcode)) {
             return;
         }
@@ -367,9 +372,7 @@
             throw new CoolException(barcode + "宸茬粡缁戝畾鍦�" + agvBasDevp.getDevNo() + "绔欑偣");
         }
 
-        if (agvBasDevp == null) {
-            throw new CoolException(stationCode + "绔欑偣淇℃伅閿欒");
-        }
+
         if (!"O".equals(agvBasDevp.getLocSts())) {
             throw new CoolException(stationCode + "璇ョ珯鐐硅揣浣嶇姸鎬侀潪绌�");
         }
diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
index 52244bc..db118c7 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -854,6 +854,12 @@
             throw new CoolException("鍗曟嵁鍙傛暟涓虹┖鎴栬�呭崟鎹鎯呬负绌猴紝鏃犳硶鐢熸垚鍗曟嵁淇℃伅");
         }
 
+        if ("閾跺骇鐢熶骇閫�鏂欑敵璇峰崟".equalsIgnoreCase(docName)) {
+            if (Cools.isEmpty(param.getBackOrderNo())){
+                throw new CoolException("閫�鏂欏崟鐨勯��鏂欑紪鍙穊ackOrderNo涓嶈兘涓虹┖");
+            }
+        }
+
         Order orderOld = null;
 
         if (!Cools.isEmpty(orderService.selectByNo(param.getCPOID()))) {
@@ -992,6 +998,7 @@
         order.setCreateTime(now);
         order.setUpdateBy(9999L);
         order.setUpdateTime(now);
+        order.setSalesman(param.getBackOrderNo());
         order.setUpstreamcode(param.getUpstreamcode());
         //璁㈠崟鐘舵��
         order.setSettle(1L);
@@ -1026,9 +1033,10 @@
         od.setAnfme(odParam.getIQuantity());
         //閿�鍞鍗曞彿
         od.setThreeCode(odParam.getCDefine22());
+        od.setDevNo(odParam.getDevNo());
         //鑷敱椤�
         if (!Cools.isEmpty(odParam.getBatch()) || !Cools.isEmpty(odParam.getBFree1())) {
-            od.setBatch((Cools.isEmpty(odParam.getBatch()) ? "" : odParam.getBatch()) + "__" + (Cools.isEmpty(odParam.getBFree1()) ? "" : odParam.getBFree1()));
+            od.setBrand((Cools.isEmpty(odParam.getBatch()) ? "" : odParam.getBatch()) + "__" + (Cools.isEmpty(odParam.getBFree1()) ? "" : odParam.getBFree1()));
         }
         od.setWeight(odParam.getINum());
         od.setVolume(odParam.getIinvexchrate());
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
index d40aa5c..bf1f66c 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -25,6 +25,8 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Isolation;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -150,6 +152,7 @@
     }
 
     @Override
+    @Transactional(isolation= Isolation.READ_COMMITTED)
     public void checkComplete2(String orderNo) {
         Order order = this.selectByNo(orderNo);
         if (Cools.isEmpty(order)) {
diff --git a/src/main/java/com/zy/asrs/task/AgvWarnScheduler.java b/src/main/java/com/zy/asrs/task/AgvWarnScheduler.java
index 3dbc5f2..5a653bc 100644
--- a/src/main/java/com/zy/asrs/task/AgvWarnScheduler.java
+++ b/src/main/java/com/zy/asrs/task/AgvWarnScheduler.java
@@ -8,7 +8,9 @@
 import com.core.common.Cools;
 import com.zy.asrs.entity.Agv;
 import com.zy.asrs.entity.AgvWarn;
+import com.zy.asrs.entity.AgvWarnLog;
 import com.zy.asrs.mapper.AgvBasMapper;
+import com.zy.asrs.service.AgvWarnLogService;
 import com.zy.asrs.service.AgvWarnService;
 import com.zy.asrs.task.handler.AgvWarnHandler;
 import com.zy.common.utils.HttpHandler;
@@ -40,10 +42,26 @@
     private AgvWarnService agvWarnService;
 
     @Autowired
+    private AgvWarnLogService agvWarnLogService;
+
+    @Autowired
     private ConfigService configService;
 
     @Autowired
     private AgvBasMapper agvBasMapper;
+
+
+    /**
+     *  鍒犻櫎鍛婅鏃ュ織
+     */
+    @Scheduled(cron = "0 0 1 * * ? ")
+    private void delWarnLog() {
+        String format = DateUtil.format(DateUtil.offsetMonth(new Date(), -1), "yyyy-MM-dd HH:mm:ss");
+        List<AgvWarnLog> agvWarnList = agvWarnLogService.selectList(new EntityWrapper<AgvWarnLog>().le("modi_time", format));
+        for (AgvWarnLog agvWarn : agvWarnList) {
+            agvWarnLogService.deleteById(agvWarn);
+        }
+    }
 
     /**
      * 瓒呰繃涓�鍒嗛挓娌℃洿鏂扮殑锛屽垹闄�
@@ -66,6 +84,7 @@
         Config url = configService.selectOne(new EntityWrapper<Config>().eq("code", "AGV_WARN_REPORT_URL"));
         List<AgvWarn> agvWarnList = agvWarnService.selectList(new EntityWrapper<AgvWarn>());
         StringBuffer buffer;
+        HashMap<String, Object> sendData = new HashMap<>();
         for (AgvWarn agvWarn : agvWarnList) {
             Integer warnTime = getWarnTime(agvWarn.getTimes(), first.getValue(), second.getValue(), third.getValue());
             DateTime begin = DateUtil.parse(agvWarn.getBeginTime(), "yyyy-MM-dd HH:mm:ss");
@@ -76,23 +95,22 @@
                 if (!Cools.isEmpty(agvWarn.getSourceLocNo())) {
                     buffer.append("浠�:[" + agvWarn.getSourceLocNo() + "]鍒癧" + agvWarn.getLocNo() + "]\n");
                 }
-                buffer.append("寮�濮嬫椂闂�:" + agvWarn.getBeginTime() + "\n");
+                buffer.append("鎶ヨ寮�濮嬫椂闂�:" + agvWarn.getBeginTime() + "\n");
+                buffer.append("褰撳墠鏃堕棿:" + DateUtil.formatDateTime(new Date()) + "\n");
                 int i = agvWarn.getTimes() + 1;
-                buffer.append("绗琜" + i + "]娆℃姤璀�");
+                //buffer.append("绗琜" + i + "]娆℃姤璀�");
                 HashMap<String, Object> param = new HashMap<>();
                 HashMap<String, Object> data = new HashMap<>();
                 data.put("content", buffer.toString());
                 param.put("msgtype", "text");
                 param.put("text", data);
-                log.info("鍙戦�佹姤璀︿俊鎭細{}", JSON.toJSONString(param));
+                //log.info("鍙戦�佹姤璀︿俊鎭細{}", JSON.toJSONString(param));
+                sendData.put(agvWarn.getRobotCode() + agvWarn.getWarnContent(), param);
+            }
+            for (HashMap.Entry<String, Object> entry : sendData.entrySet()) {
                 String response = null;
                 try {
-                    response = new HttpHandler.Builder()
-                            .setUri(url.getValue())
-                            .setJson(JSON.toJSONString(param))
-                            .setHttps(true)
-                            .build()
-                            .doPost();
+                    response = new HttpHandler.Builder().setUri(url.getValue()).setJson(JSON.toJSONString(entry.getValue())).setHttps(true).build().doPost();
                 } catch (IOException e) {
                     throw new RuntimeException(e);
                 }
@@ -106,6 +124,7 @@
                     log.error("鍙戦�佸け璐ワ紝閿欒淇℃伅锛歿}", jsonObject.get("errmsg"));
                 }
             }
+
         }
     }
 
@@ -119,9 +138,9 @@
             case 0:
                 return Integer.parseInt(first);
             case 1:
-                return Integer.parseInt(second);
+                return Integer.parseInt(first) + Integer.parseInt(second);
             case 2:
-                return Integer.parseInt(thrid);
+                return Integer.parseInt(first) + Integer.parseInt(second) + Integer.parseInt(thrid);
             default:
                 return (times - 2) * Integer.parseInt(thrid) + Integer.parseInt(first) + Integer.parseInt(second) + Integer.parseInt(thrid);
         }
diff --git a/src/main/java/com/zy/asrs/task/AutoOrderScheduler.java b/src/main/java/com/zy/asrs/task/AutoOrderScheduler.java
new file mode 100644
index 0000000..9628bc4
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/AutoOrderScheduler.java
@@ -0,0 +1,76 @@
+package com.zy.asrs.task;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.zy.asrs.entity.AgvBasDevp;
+import com.zy.asrs.entity.Order;
+import com.zy.asrs.mapper.OrderDetlMapper;
+import com.zy.asrs.service.AgvBasDevpService;
+import com.zy.asrs.service.OrderDetlService;
+import com.zy.asrs.service.OrderService;
+import com.zy.asrs.task.core.ReturnT;
+import com.zy.asrs.task.handler.AutoOrderHandler;
+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;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * Created by vincent on 2020/7/7
+ */
+@Component
+public class AutoOrderScheduler {
+
+    private static final Logger log = LoggerFactory.getLogger(AutoOrderScheduler.class);
+
+
+    @Autowired
+    private OrderDetlMapper orderDetlMapper;
+
+    @Autowired
+    private OrderService orderService;
+
+    @Autowired
+    private OrderDetlService orderDetlService;
+
+    @Autowired
+    private AgvBasDevpService agvBasDevpService;
+
+    @Autowired
+    private ConfigService configService;
+
+    @Autowired
+    private AutoOrderHandler autoOrderHandler;
+
+
+    public void execute() {
+        Config auto = configService.selectOne(new EntityWrapper<Config>().eq("code", "AUTO_ORDER"));
+        if (auto != null && "NO".equals(auto.getValue())) {
+            return;
+        }
+        List<AgvBasDevp> agvBasDevps = agvBasDevpService.selectList(new EntityWrapper<AgvBasDevp>().isNotNull("barcode").or().eq("barcode", ""));
+        for (AgvBasDevp agvBasDevp : agvBasDevps) {
+            List<String> listAutoDetl = orderDetlMapper.listAutoDetl(agvBasDevp.getDevNo());
+            if (listAutoDetl != null && !listAutoDetl.isEmpty()) {
+                for (String orderNo : listAutoDetl) {
+                    Order order = orderService.selectByNo(orderNo);
+                    if (order == null) {
+                        continue;
+                    }
+                    ReturnT<String> start = autoOrderHandler.start(order);
+                    if (start.getCode() == ReturnT.FAIL_CODE) {
+                        log.error("鑷姩鎺ュ崟澶辫触锛岃鍗曞彿锛�" + order.getOrderNo() + "锛屽け璐ュ師鍥狅細" + start.getMsg());
+                    } else {
+                        log.info("鑷姩鎺ュ崟鎴愬姛锛岃鍗曞彿锛�" + order.getOrderNo());
+                        break;
+                    }
+                }
+            }
+        }
+    }
+
+
+}
diff --git a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
index e952ed2..b25e322 100644
--- a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
+++ b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
@@ -1,11 +1,14 @@
 package com.zy.asrs.task;
 
+import cn.hutool.core.date.StopWatch;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
 import com.core.common.Cools;
 import com.zy.asrs.entity.AgvLocDetl;
 import com.zy.asrs.entity.DocType;
 import com.zy.asrs.entity.Order;
 import com.zy.asrs.entity.OrderDetl;
+import com.zy.asrs.mapper.OrderDetlMapper;
 import com.zy.asrs.service.*;
 import com.zy.asrs.task.core.ReturnT;
 import com.zy.asrs.task.handler.OrderSyncHandler;
@@ -38,7 +41,14 @@
     private OrderDetlService orderDetlService;
 
     @Autowired
+    private OrderDetlMapper orderDetlMapper;
+
+    @Autowired
     private DocTypeService docTypeService;
+
+    private Integer page = 1;
+
+    private Integer size = 100;
 
     @Scheduled(cron = "0 0 1 * * ? ")
     public void clearApiLog() {
@@ -53,6 +63,8 @@
     @Scheduled(fixedDelay = 600000)
     //@Async("orderThreadPool")
     public void completeAndReport() {
+        StopWatch stopWatch = new StopWatch();
+        stopWatch.start();
         String erpReport = Parameter.get().getErpReport();
         if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) {
             List<Order> orders = orderService.selectComplete();
@@ -79,6 +91,8 @@
                 }
             }
         }
+        stopWatch.stop();
+        log.info("瀹氭椂浠诲姟瀹屾垚锛岃�楁椂锛歿}ms", stopWatch.getTotalTimeMillis());
     }
 
     //@Scheduled(cron = "* 0/5 * * * ? ")
@@ -87,10 +101,12 @@
     //@Async("orderThreadPool")
     public synchronized void reportOrder() {
         DocType docType = docTypeService.selectOne(new EntityWrapper<DocType>().eq("doc_name", "閾跺骇閲囪喘鍏ュ簱鍗�"));
-        List<Order> orderList = orderService.selectList(new EntityWrapper<Order>().eq("doc_type", docType.getDocId()).in("settle", 2, 4));
-        orderList.forEach(order -> {
-            orderSyncHandler.timelyStart(order);
-        });
+        if (docType != null) {
+            List<String> reportDetl = orderDetlMapper.getReportDetl(docType.getDocId());
+            reportDetl.forEach(orderNo -> {
+                orderSyncHandler.timelyStart(orderService.selectByNo(orderNo));
+            });
+        }
     }
 
 
@@ -98,12 +114,25 @@
     瀹氭椂鏌ヨ鐘舵�佷负2.浣滀笟涓殑鍗曟嵁锛屾鏌ユ槸鍚﹀畬鎴�
      */
     //@Scheduled(cron = "0 */1 * * * ? ")
-    @Scheduled(fixedDelay = 300000)
+    @Scheduled(fixedDelay = 60000)
     public void completeOrder() {
-        List<Order> orderList = orderService.selectList(new EntityWrapper<Order>().eq("settle", 2));
-        orderList.forEach(order -> {
-            orderService.checkComplete2(order.getOrderNo());
-        });
+        try {
+            Page<Order> settle = orderService.selectPage(new Page<Order>(page, size), new EntityWrapper<Order>().eq("settle", 2));
+            if (settle != null) {
+                List<Order> orderList = settle.getRecords();
+                if (orderList == null || orderList.isEmpty()) {
+                    log.info("杞瀹屾瘯锛寋},{}", page, settle.getTotal());
+                    page = 1;
+                    return;
+                }
+                orderList.forEach(order -> {
+                    orderService.checkComplete2(order.getOrderNo());
+                });
+            }
+        } finally {
+            page++;
+        }
+        log.info("鍒嗛〉鏌ヨ瀹屾瘯锛寋}", page);
     }
 
 }
diff --git a/src/main/java/com/zy/asrs/task/ReportDataScheduler.java b/src/main/java/com/zy/asrs/task/ReportDataScheduler.java
index a7e968c..131eeab 100644
--- a/src/main/java/com/zy/asrs/task/ReportDataScheduler.java
+++ b/src/main/java/com/zy/asrs/task/ReportDataScheduler.java
@@ -121,12 +121,10 @@
 
     @Scheduled(fixedDelay = 1000 * 60 * 30)
     public void executeStock() {
-        log.info("Stock瀹氭椂浠诲姟寮�濮嬫墽琛�");
-//        if (!flag) {
-//            return;
-//        }
+        if (!flag) {
+            return;
+        }
         Map<String, Object> mesTokenInfo = getMesTokenInfo();
         reportDataHandler.stock(mesTokenInfo);
-        log.info("Stock瀹氭椂浠诲姟缁撴潫鎵ц");
     }
 }
diff --git a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
index db9ffb0..07994d4 100644
--- a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
@@ -153,7 +153,7 @@
                 if (pltType != null) {
                     agvWrkMast.setPltType(pltType);
                 }
-                log.info("宸ヤ綔鍙�--{},浠撳簱缂栫爜锛歿}", agvWrkMast.getWrkNo(), agvWrkMast.getPltType());
+                //log.info("宸ヤ綔鍙�--{},浠撳簱缂栫爜锛歿}", agvWrkMast.getWrkNo(), agvWrkMast.getPltType());
             }
             agvWrkMast.setModiTime(new Date());
             //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚
diff --git a/src/main/java/com/zy/asrs/task/handler/AutoOrderHandler.java b/src/main/java/com/zy/asrs/task/handler/AutoOrderHandler.java
new file mode 100644
index 0000000..d8d0c55
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/handler/AutoOrderHandler.java
@@ -0,0 +1,111 @@
+package com.zy.asrs.task.handler;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.core.common.Cools;
+import com.zy.asrs.entity.*;
+import com.zy.asrs.service.AgvLocDetlService;
+import com.zy.asrs.service.AgvLocMastService;
+import com.zy.asrs.service.OrderService;
+import com.zy.asrs.task.AbstractHandler;
+import com.zy.asrs.task.core.ReturnT;
+import com.zy.asrs.utils.Utils;
+import com.zy.common.model.LocDto;
+import com.zy.common.model.OrderDto;
+import com.zy.common.model.TaskDto;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+/**
+ * Created by vincent on 2020/7/7
+ */
+@Service
+public class AutoOrderHandler extends AbstractHandler<String> {
+
+    @Autowired
+    private OrderService orderService;
+
+    @Autowired
+    private AgvLocMastService agvLocMastService;
+
+    @Autowired
+    private AgvLocDetlService agvLocDetlService;
+
+    @Transactional
+    public ReturnT<String> start(Order order) {
+//        double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty()).orElse(0.0D);
+//        if (issued <= 0.0D) {
+//            continue;
+//        }
+//
+//
+//        Double issued = orderDetl.getAnfme() - orderDetl.getQty();
+//        //鏍规嵁鐗╂枡鍙峰拰鎵规鎵惧埌瀵瑰簲鐨勫簱瀛橈紝骞朵笖鎸夌収淇敼鏃堕棿鎺掑簭
+//        Wrapper<AgvLocDetl> wrapper = new EntityWrapper<AgvLocDetl>().eq("matnr", orderDetl.getMatnr()).orderBy("modi_time");
+//
+//        wapperSetCondition(wrapper, "three_code", orderDetl.getThreeCode());
+//        List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(wrapper);
+//
+//        for (AgvLocDetl agvLocDetl : agvLocDetls) {
+//            //鍒ゆ柇褰撳墠搴撲綅璐х墿鏄惁F鍦ㄥ簱
+//            AgvLocMast agvLocMast = agvLocMastService.selectById(agvLocDetl.getLocNo());
+//            if (!"F".equals(agvLocMast.getLocSts())) {
+//                continue;
+//            }
+//            //褰撳墠搴撲綅鐨勫簱瀛橀噺
+//            double anfme = agvLocDetl.getAnfme();
+//            //int ioType = anfme > issued ? 101 : 103;
+//            anfme = anfme > issued ? issued : anfme;
+//            //鐢ㄤ簬鏄剧ず宸ヤ綔鏄庣粏妗g殑璁㈠崟鍙�
+//            String orderNoWrkDtel = Utils.getOrderNo(orderNo, anfme);
+//            //鏇存柊璁㈠崟鏁伴噺
+//            orderNo = Utils.orderMergeUpdate(orderNo, anfme);
+//            LocDto locDto = new LocDto(agvLocDetl.getLocNo(), agvLocDetl.getMatnr(), agvLocDetl.getMaktx(), agvLocDetl.getBatch(), orderNoWrkDtel, anfme, agvLocDetl.getProcessSts());
+//            locDto.setCsocode(csocode);
+//            locDto.setIsoseq(isoseq);
+//            locDto.setContainerCode(agvLocDetl.getSuppCode());
+//            locDto.setProcessSts(agvLocDetl.getProcessSts());
+//            //褰撳墠搴撲綅鎵�澶勬ゼ灞�
+//            int floor = Integer.parseInt(agvLocDetl.getLocNo().split("F")[1]);
+//            //locDto.setAgvStaNos(queryAgvStaNosByFloor(floor));
+//            locDto.setAgvStaNos(agvBasDevpService.selectCacheShelvesStationCodeByLocType(agvLocMast.getLocType1(), floor));
+//            locDtoList.add(locDto);
+//
+//            issued -= anfme;
+//        }
+//
+//
+//        // 璁㈠崟棰勬牎楠�  ===>> 1.璁㈠崟鐘舵�侊紱 2.璁㈠崟甯﹀嚭鏁伴噺
+//        List<OrderDto> orderDtos = orderPreVerification(locDtos);
+//
+//        List<TaskDto> taskDtos = new ArrayList<>();
+//        List<TaskDto> agvTaskDtos = new ArrayList<>();
+//        generateTaskDto(locDtos, taskDtos, agvTaskDtos);
+//
+//        //鐢熸垚AGV鍑哄簱浠诲姟
+//        agvWorkService.stockOutWrkMast(agvTaskDtos, getUserId());
+//
+//        // 鐢熸垚鍑哄簱浠诲姟
+//        taskDtos.stream().map(TaskDto::getLocNo).distinct().collect(Collectors.toList());
+//        for (TaskDto taskDto : taskDtos) {
+//            BasDevp staNo = basDevpService.checkSiteStatus(taskDto.getStaNo());
+//            workService.stockOut(staNo, taskDto, getUserId());
+//        }
+        return SUCCESS;
+    }
+
+
+    private void wapperSetCondition(Wrapper wrapper, String column, String condition) {
+        if (Cools.isEmpty(condition)) {
+            wrapper.andNew().eq(column, "").or().isNull(column);
+        } else {
+            wrapper.andNew().eq(column, condition);
+        }
+    }
+}
diff --git a/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java b/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
index 804514b..c8b78ef 100644
--- a/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -95,57 +95,59 @@
         if (!report) {
             return;
         }
-
+        if (order == null) {
+            return;
+        }
         //List<String> docNames = new ArrayList<>(Arrays.asList("閾跺骇閲囪喘鍏ュ簱鍗�"));
         //List<String> docNames = new ArrayList<>(Arrays.asList("閾跺骇閲囪喘鍏ュ簱鍗�", "閾跺骇濮斿鏉愭枡鍑哄簱鍗�", "閾跺骇鐢熶骇鏉愭枡鍑哄簱鍗�"));
 
 
         //if (docNames.contains(docType.getDocName())) {
-            List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId());
-            List<OrderDetl> report = new ArrayList<>();
-            for (OrderDetl orderDetl : orderDetlList) {
-                if (orderDetl.getQty() > 0 && orderDetl.getQty() > (orderDetl.getReportQty() == null ? 0D : orderDetl.getReportQty())) {
-                    report.add(orderDetl);
+        List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId());
+        List<OrderDetl> report = new ArrayList<>();
+        for (OrderDetl orderDetl : orderDetlList) {
+            if (orderDetl.getQty() > 0 && orderDetl.getQty() > (orderDetl.getReportQty() == null ? 0D : orderDetl.getReportQty())) {
+                report.add(orderDetl);
+            }
+        }
+        if (Cools.isEmpty(order.getPltType())) {
+            List<AgvWrkDetlLog> agvWrkDetlLogs = agvWrkDetlLogService.selectList(new EntityWrapper<AgvWrkDetlLog>().eq("order_no", order.getOrderNo()).orderBy("appe_time", false));
+            if (!Cools.isEmpty(agvWrkDetlLogs)) {
+                AgvWrkDetlLog agvWrkDetlLog = agvWrkDetlLogs.get(0);
+                List<AgvWrkMastLog> agvWrkMastLogs = agvWrkMastLogService.selectList(new EntityWrapper<AgvWrkMastLog>().eq("wrk_no", agvWrkDetlLog.getWrkNo()).eq("io_type", 1).orderBy("appe_time", false));
+                if (!Cools.isEmpty(agvWrkMastLogs)) {
+                    AgvLocMast agvLocMast = agvLocMastService.selectById(agvWrkMastLogs.get(0).getLocNo());
+                    if (agvLocMast != null) {
+                        log.info("琛ュ厖閫昏緫鐢熸晥锛歿}", order.getOrderNo());
+                        order.setPltType(agvLocMast.getPltType());
+                    }
                 }
             }
             if (Cools.isEmpty(order.getPltType())) {
-                List<AgvWrkDetlLog> agvWrkDetlLogs = agvWrkDetlLogService.selectList(new EntityWrapper<AgvWrkDetlLog>().eq("order_no", order.getOrderNo()).orderBy("appe_time", false));
-                if (!Cools.isEmpty(agvWrkDetlLogs)) {
-                    AgvWrkDetlLog agvWrkDetlLog = agvWrkDetlLogs.get(0);
-                    List<AgvWrkMastLog> agvWrkMastLogs = agvWrkMastLogService.selectList(new EntityWrapper<AgvWrkMastLog>().eq("wrk_no", agvWrkDetlLog.getWrkNo()).eq("io_type", 1).orderBy("appe_time", false));
-                    if (!Cools.isEmpty(agvWrkMastLogs)) {
-                        AgvLocMast agvLocMast = agvLocMastService.selectById(agvWrkMastLogs.get(0).getLocNo());
-                        if (agvLocMast != null) {
-                            log.info("琛ュ厖閫昏緫鐢熸晥锛歿}", order.getOrderNo());
-                            order.setPltType(agvLocMast.getPltType());
-                        }
-                    }
-                }
-                if (Cools.isEmpty(order.getPltType())) {
-                    return;
+                return;
+            }
+        }
+        if (Cools.isEmpty(order.getInTime())) {
+            order.setInTime(DateUtils.convert(new Date(), DateUtils.yyyyMMddHHmmsssss_F));
+        }
+        if (!Cools.isEmpty(report)) {
+            ReportErpParam param = new ReportErpParam();
+            mappingParam(order, param);
+            mappingParamChildren(report, param);
+            log.info(JSON.toJSONString(param));
+            int code = doHttpRequest(param, "鍗曟嵁瀹℃牳", url, orderReportPath, null, "127.0.0.1");
+            if (code == 0) {
+                Date date = new Date();
+                order.setInTime(DateUtils.convert(date, DateUtils.yyyyMMddHHmmsssss_F));
+                orderService.updateById(order);
+                for (OrderDetl orderDetl : report) {
+                    log.info("{}鍗曟嵁瀹℃牳涓婃姤浜嗭細{}", order.getOrderNo(), orderDetl.getQty() - (orderDetl.getReportQty() == null ? 0D : orderDetl.getReportQty()));
+                    orderDetl.setReportQty(orderDetl.getQty());
+                    orderDetl.setUpdateTime(date);
+                    orderDetlService.updateById(orderDetl);
                 }
             }
-            if (Cools.isEmpty(order.getInTime())) {
-                order.setInTime(DateUtils.convert(new Date(), DateUtils.yyyyMMddHHmmsssss_F));
-            }
-            if (!Cools.isEmpty(report)) {
-                ReportErpParam param = new ReportErpParam();
-                mappingParam(order, param);
-                mappingParamChildren(report, param);
-                log.info(JSON.toJSONString(param));
-                int code = doHttpRequest(param, "鍗曟嵁瀹℃牳", url, orderReportPath, null, "127.0.0.1");
-                if (code == 0) {
-                    Date date = new Date();
-                    order.setInTime(DateUtils.convert(date, DateUtils.yyyyMMddHHmmsssss_F));
-                    orderService.updateById(order);
-                    for (OrderDetl orderDetl : report) {
-                        log.info("{}鍗曟嵁瀹℃牳涓婃姤浜嗭細{}", order.getOrderNo(), orderDetl.getQty() - (orderDetl.getReportQty() == null ? 0D : orderDetl.getReportQty()));
-                        orderDetl.setReportQty(orderDetl.getQty());
-                        orderDetl.setUpdateTime(date);
-                        orderDetlService.updateById(orderDetl);
-                    }
-                }
-           // }
+            // }
 
         }
     }
@@ -178,7 +180,7 @@
             childInfo.setIrowno(orderDetl.getItemNum());
             childInfo.setCInvCode(orderDetl.getMatnr());
             childInfo.setIQuantity(orderDetl.getQty() - (orderDetl.getReportQty() == null ? 0D : orderDetl.getReportQty()) + "");
-            String batch = orderDetl.getBatch();
+            String batch = orderDetl.getBrand();
             if (Cools.isEmpty(batch)) {
                 childInfo.setCBatch("");
                 childInfo.setBFree1("");
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index f2026f2..22524fb 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,4 +1,4 @@
 spring:
   profiles:
     #dev loc prod
-    active: prod
\ No newline at end of file
+    active: loc
\ No newline at end of file
diff --git a/src/main/resources/mapper/OrderDetlMapper.xml b/src/main/resources/mapper/OrderDetlMapper.xml
index 47ec31a..e42a436 100644
--- a/src/main/resources/mapper/OrderDetlMapper.xml
+++ b/src/main/resources/mapper/OrderDetlMapper.xml
@@ -345,4 +345,21 @@
         <include refid="pakOutPageCondition"></include>
     </select>
 
+    <select id="getReportDetl" resultMap="BaseResultMap">
+        select DISTINCT o.order_no
+        from man_order_detl d
+                 join man_order o on d.id = d.order_id
+        where o.doc_type = #{docType}
+          and d.qty > d.report_qty
+          and d.qty > 0
+    </select>
+
+
+    <select id="listAutoDetl" resultMap="BaseResultMap">
+        select DISTINCT o.order_no
+        from man_order_detl d
+                 join man_order o on d.id = d.order_id
+        where d.dev_no = #{devNo}
+        order by d.create_time asc
+    </select>
 </mapper>

--
Gitblit v1.9.1