From f4214b3e0764ab116fc6975dbbc5bb4fc80f9fcd Mon Sep 17 00:00:00 2001
From: zhangchao <zc857179121@qq.com>
Date: 星期四, 21 十一月 2024 16:08:15 +0800
Subject: [PATCH] rcs超时

---
 src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java |  527 ++++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 344 insertions(+), 183 deletions(-)

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 e7a3b9d..42f7ef1 100644
--- a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
@@ -5,8 +5,11 @@
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
+import com.core.common.R;
+import com.core.common.SnowflakeIdWorker;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.MesBuyPakinReportParam;
 import com.zy.asrs.entity.param.MesOrderReportParam;
 import com.zy.asrs.entity.param.MesPakinReportParam;
 import com.zy.asrs.entity.param.MesPakoutReportParam;
@@ -14,7 +17,6 @@
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
 import com.zy.common.utils.HttpHandler;
-import io.swagger.models.auth.In;
 import lombok.Synchronized;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -24,6 +26,7 @@
 
 import java.io.IOException;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 @Slf4j
@@ -31,20 +34,44 @@
 public class AgvWrkMastHandler extends AbstractHandler<String> {
 
     //鍏ュ簱绫诲瀷鏁扮粍
-    private static final int[] IN_TYPE_ARRAY = new int[1];
+    private static final List<Integer> IN_TYPE_LIST = new ArrayList<Integer>() {{
+        add(1);
+    }};
+    //private static final int[] IN_TYPE_ARRAY = {1};
     //鍑哄簱绫诲瀷鏁扮粍
-    private static final int[] OUT_TYPE_ARRAY = new int[1];
+    private static final List<Integer> OUT_TYPE_List = new ArrayList<Integer>() {{
+//        add(101);
+    }};
+    //private static final int[] OUT_TYPE_ARRAY = {101};
     //绉诲簱绫诲瀷鏁扮粍
-    private static final int[] MOVE_TYPE_ARRAY = new int[1];
+    private static final List<Integer> MOVE_TYPE_List = new ArrayList<Integer>() {{
+        add(11);
+        add(101);
+        add(12);
+        add(53);
+        add(103);
+        add(108);
+        add(111);
+        add(112);
+
+
+    }};
+    //private static final int[] MOVE_TYPE_ARRAY = {11,12};
 
     @Value("${agvBasDev.maxWorkNum}")
     private int maxWrokNum;
+    @Value("${mes.report}")
+    private Boolean flag;
     @Value("${mes.url}")
     private String url;
+    @Value("${mes.getTokenUrl}")
+    private String getTokenUrl;
     @Value("${mes.orderReportPath}")
     private String orderReportPath;
     @Value("${mes.pakinReportPath}")
     private String pakinReportPath;
+    @Value("${mes.buyPakinReportPath}")
+    private String buyPakinReportPath;
     @Value("${mes.pakoutReportPath}")
     private String pakoutReportPath;
     @Value("${mes.getTokenPath}")
@@ -79,10 +106,23 @@
     private AgvWorkService agvWorkService;
     @Autowired
     private ApiLogService apiLogService;
+    @Autowired
+    private DocTypeService docTypeService;
+    @Autowired
+    private OrderDetlService orderDetlService;
+    @Autowired
+    private SnowflakeIdWorker snowflakeIdWorker;
+    @Autowired
+    private FlowLogService flowLogService;
 
     @Transactional
     public ReturnT<String> completedPutWayWrk(AgvWrkMast agvWrkMast) {
-        try{
+        //鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏
+        List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
+
+        long flowId = snowflakeIdWorker.nextId();
+        Date now = new Date();
+        try {
             int wrkNo = agvWrkMast.getWrkNo();
             String barcode = agvWrkMast.getBarcode();
             String orderNo = getOrderNoByWrkNo(wrkNo);
@@ -93,9 +133,8 @@
                 agvBasDevp = agvWrkMast.getSourceLocNo();
             }
 
-            //鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏
-            List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
 
+            agvWrkMast.setModiTime(new Date());
             //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚
             agvWrkMast.setWrkSts(207L);
             agvWrkMastService.updateById(agvWrkMast);
@@ -109,29 +148,29 @@
                 agvWrkDetlLogService.save(wrkNo);
             }
 
-            switch (agvWrkMast.getIoType()){
+            switch (agvWrkMast.getIoType()) {
                 case 1:
-                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
                     //鏇存柊鐩爣搴撲綅鏄庣粏
                     log.info("鏇存柊鐩爣搴撲綅鏄庣粏 agvWrkMast.getLocNo(): " + agvWrkMast.getLocNo() + ", wrkNo: " + wrkNo);
-                    agvLocDetlService.addLocDetlInfo(agvWrkMast.getLocNo(),wrkNo);
+                    agvLocDetlService.addLocDetlInfo(agvWrkMast.getLocNo(), wrkNo);
                     //鐢熸垚鍏ュ簱閫氱煡鍘嗗彶妗�
                     boolean save = agvWaitPakinLogService.save(barcode);
                     //鍒犻櫎鍏ュ簱閫氱煡妗�
                     log.info("鍒犻櫎鍏ュ簱閫氱煡妗� supp_code: " + barcode);
-                    agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("supp_code",barcode));
+                    agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("supp_code", barcode));
                     break;
                 case 10:
-                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
-                    agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0);
+                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "D", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
+                    agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0);
                     break;
                 case 11:
                 case 12:
-                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
                     //鏇存柊搴撳瓨鏄庣粏
-                    agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo());
+                    agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(), agvWrkMast.getLocNo());
                     //淇敼婧愬簱浣嶇姸鎬佷负O
-                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null);
+                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", null);
                     break;
                 case 53:
                     //淇敼宸ヤ綔鍏氭槑缁�
@@ -141,64 +180,110 @@
                         AgvLocDetl agvLocDetl = agvLocDetlService.selectByMatnrAndBatchAndCsocodeAndisoCode(agvWrkMast.getLocNo(), agvWrkDetl.getMatnr(), agvWrkDetl.getBatch(), agvWrkDetl.getThreeCode(), agvWrkDetl.getDeadTime());
                         if (!Cools.isEmpty(agvLocDetl)) {
                             double updateAnfme = agvLocDetl.getAnfme() - agvWrkDetl.getAnfme();
-                            agvLocDetlService.updateAnfme(updateAnfme,agvLocDetl.getLocNo(),agvLocDetl.getMatnr(),agvLocDetl.getBatch(),agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime());
+//                            OrderDetl orderDetl = orderDetlService.selectItem(agvWrkDetl.getOrderNo(), agvWrkDetl.getMatnr(), agvWrkDetl.getThreeCode());
+//                            FlowLog flowLog = new FlowLog();
+//                            flowLog.setFid(String.valueOf(flowId));
+//                            flowLog.setSpare2(String.valueOf(agvWrkMast.getWrkNo()));
+//                            flowLog.setLocNo(agvWrkMast.getLocNo());
+//                            flowLog.setSpare1(agvWrkDetl.getSuppCode());
+//                            flowLog.setOpType(53L);
+//                            flowLog.setOrderNo(agvWrkDetl.getOrderNo());
+//                            flowLog.setThreeCode(agvWrkDetl.getThreeCode());
+//                            flowLog.setMatnr(agvWrkDetl.getMatnr());
+//                            flowLog.setMaktx(agvWrkDetl.getMaktx());
+//
+//                            flowLog.setOrderPrevious(orderDetl.getAnfme());
+//                            flowLog.setOrderCurrent(orderDetl.getAnfme());
+//                            flowLog.setOrderChanged(0.0);
+//
+//                            flowLog.setQtyPrevious(orderDetl.getQty());
+//                            flowLog.setQtyCurrent(updateAnfme);
+//                            flowLog.setQtyChanged(agvWrkDetl.getAnfme());
+//
+//                            flowLog.setLocPrevious(agvLocDetl.getAnfme());
+//                            flowLog.setLocCurrent(updateAnfme);
+//                            flowLog.setLocChanged(agvWrkDetl.getAnfme());
+//
+//                            flowLog.setAppeTime(now);
+//                            if (!flowLogService.insert(flowLog)) {
+//                                throw new CoolException("鍚屾鍗婃垚鍝佽皟鎷ㄥ崟娴佹按璁板綍澶辫触");
+//                            }
+                            agvLocDetlService.updateAnfme(updateAnfme, agvLocDetl.getLocNo(), agvLocDetl.getMatnr(), agvLocDetl.getBatch(), agvLocDetl.getThreeCode(), agvLocDetl.getDeadTime());
                         }
                         //AgvLocDetl agvLocDetl = agvLocDetlService.selectLocdetl(agvWrkMast.getLocNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getBatch(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime());
 
                     });
-                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
-                    agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue());
+                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
+                    agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue());
+                    break;
+                case 57:
+                    // 鏇存柊搴撳瓨鏄庣粏
+                    List<AgvWrkDetl> wrkDetlList = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
+                    wrkDetlList.forEach(agvWrkDetl -> {
+                        AgvLocDetl agvLocDetl = new AgvLocDetl();
+                        agvLocDetl.setLocNo(agvWrkMast.getLocNo());
+                        agvLocDetl.sync(agvWrkDetl);
+                        agvLocDetl.setModiTime(now);
+                        agvLocDetl.setAppeTime(now);
+                        if (!agvLocDetlService.insert(agvLocDetl)) {
+                            throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+                        }
+                    });
+                    // 鏇存柊绔欑偣 + 搴撲綅鐘舵��     婧愬簱浣嶆槸绔欑偣
+                    agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue());
+                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
                     break;
                 case 58:
-                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
-                    agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue());
+                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
+                    agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue());
                     break;
                 case 108:
-                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+                case 114:
+                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
                     //鏇存柊搴撳瓨鏄庣粏
-                    agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo());
+                    agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(), agvWrkMast.getLocNo());
                     //淇敼婧愬簱浣嶇姸鎬佷负O
-                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0);
+                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0);
                     break;
                 case 109:
                     // 搴撲綅 -- 鎺ラ┏浣� / 搴撲綅
-                    if (agvWrkMast.getLocNo().substring(0,2).equals("DB")) {
-                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+                    if (agvWrkMast.getLocNo().substring(0, 2).equals("DB")) {
+                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
                         // 鎺ラ┏浣� -- 搴撲綅
                     } else {
-                        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+                        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "D", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
                     }
                     // 鎺ラ┏浣� -- 搴撲綅
-                    if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) {
-                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0);
+                    if (agvWrkMast.getSourceLocNo().substring(0, 2).equals("DB")) {
+                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0);
                         // 搴撲綅 -- 鎺ラ┏浣� / 搴撲綅
                     } else {
                         //淇敼婧愬簱浣嶇姸鎬佷负O
-                        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0);
+                        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0);
                     }
                     break;
                 case 111:
                     // 搴撲綅 -- 鎺ラ┏浣� / 搴撲綅
-                    if (agvWrkMast.getLocNo().substring(0,2).equals("DB")) {
-                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+                    if (agvWrkMast.getLocNo().substring(0, 2).equals("DB")) {
+                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
                         // 鎺ラ┏浣� -- 搴撲綅
                     } else {
-                        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+                        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "D", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
                     }
 
                     // 鎺ラ┏浣� -- 搴撲綅
-                    if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) {
-                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0);
+                    if (agvWrkMast.getSourceLocNo().substring(0, 2).equals("DB")) {
+                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0);
                         // 搴撲綅 -- 鎺ラ┏浣� / 搴撲綅
                     } else {
                         //淇敼婧愬簱浣嶇姸鎬佷负O
-                        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0);
+                        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0);
                         //鏇存柊鐩爣搴撲綅鏄庣粏 101.鍑哄簱 鍒犻櫎婧愬簱浣嶅簱瀛樻槑缁�
-                        agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo()));
+                        agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvWrkMast.getSourceLocNo()));
                     }
                     break;
                 case 112:
-                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
                     List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
                     for (AgvWrkDetl agvWrkDetl : agvWrkDetls) {
                         AgvLocDetl locDetl = new AgvLocDetl();
@@ -208,27 +293,27 @@
                         agvLocDetlService.insert(locDetl);
                     }
                     // 鎺ラ┏浣� -- 搴撲綅
-                    if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) {
-                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0);
+                    if (agvWrkMast.getSourceLocNo().substring(0, 2).equals("DB")) {
+                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0);
                         // 搴撲綅 -- 鎺ラ┏浣� / 搴撲綅
                     } else {
                         //淇敼婧愬簱浣嶇姸鎬佷负O
-                        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0);
+                        agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0);
                     }
                     break;
                 case 113:
-                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "D", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
                     // 鎺ラ┏浣� -- 搴撲綅
-                    if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) {
-                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0);
+                    if (agvWrkMast.getSourceLocNo().substring(0, 2).equals("DB")) {
+                        agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0);
                     }
                     break;
                 case 121:
-                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue());
                     //鏇存柊搴撳瓨鏄庣粏
-                    agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo());
+                    agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(), agvWrkMast.getLocNo());
                     //淇敼婧愬簱浣嶇姸鎬佷负O
-                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0);
+                    agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0);
                     break;
 
                 default:
@@ -238,55 +323,67 @@
                 //鍒犻櫎AGV宸ヤ綔妗�
                 agvWrkMastService.deleteById(wrkNo);
                 //鍒犻櫎AGV宸ヤ綔鏄庣粏妗�
-                agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo));
+                agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo));
             }
+//            else {
+//                agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"O","",agvWrkMast.getWhsType().shortValue());
+//                if (!agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) {
+//                    agvWrkMast.setSourceLocNo("");
+//                }
+//                agvWrkMastService.updateById(agvWrkMast);
+//            }
 
-            if(!isJSON(orderNo)){
+            if (!isJSON(orderNo)) {
                 //妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚
-                orderService.checkComplete(orderNo);
-            }else{
+                orderService.checkComplete(orderNo, agvWrkMast.getPltType());
+            } else {
                 List<Map> maps = JSONArray.parseArray(orderNo, Map.class);
                 maps.forEach(map -> {
                     String o = map.get("orderNo").toString();
-                    orderService.checkComplete(o);
+                    orderService.checkComplete(o, agvWrkMast.getPltType());
                 });
             }
 
             //涓婃姤mes
-            MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld);
-            if(!Cools.isEmpty(param)){
-                doHttpRequest(param,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1");
-            }
+//            MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld);
+//            if(!Cools.isEmpty(param)){
+//                doHttpRequest(param,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1");
+//            }
 
-            return SUCCESS;
-        }catch (Exception e){
-            log.error(""+e.getMessage());
+            //return SUCCESS;
+        } catch (Exception e) {
+            log.error("" + e.getMessage());
         }
-        return FAIL;
+        //TODO
+        //鏆傛椂鍔犱笂trycatch
+        reportMes(agvWrkMast, agvWrkDetlListOld);
+        return SUCCESS;
     }
 
 
     @Transactional
     public ReturnT<String> completedCarryWrk(AgvWrkMast agvWrkMast) {
 
-        try{
+        //鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏
+        List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
 
-            //鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏
-            List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
+
+        try {
 
             Date now = new Date();
             int wrkNo = agvWrkMast.getWrkNo();
             String orderNo = getOrderNoByWrkNo(wrkNo);
             //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚
             agvWrkMast.setWrkSts(207L);
+            agvWrkMast.setModiTime(new Date());
             agvWrkMastService.updateById(agvWrkMast);
             //淇敼婧愬簱浣嶇姸鎬佷负O
             if (agvWrkMast.getIoType() == 110) {
-                agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null);
+                agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", null);
             }
-            if(agvWrkMast.getIoType() == 101){
+            if (agvWrkMast.getIoType() == 101) {
                 //鏇存柊鐩爣搴撲綅鏄庣粏 101.鍑哄簱 鍒犻櫎婧愬簱浣嶅簱瀛樻槑缁�
-                agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo()));
+                agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvWrkMast.getSourceLocNo()));
                 //鐢熸垚绌烘澘鍏ュ簱浠诲姟
                 Short containerType = Short.valueOf(agvWrkMast.getBarcode().substring(0, 2));
                 try {
@@ -312,6 +409,7 @@
                     wrkMast.setAppeTime(now);
                     wrkMast.setModiUser(9527L);
                     wrkMast.setModiTime(now);
+                    wrkMast.setPltType(agvWrkMast.getPltType());
                     wrkMast.setLogErrMemo("completedCarryWrk");
                     if (!agvWrkMastService.insertByIncrease(wrkMast)) {
                         throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
@@ -325,7 +423,7 @@
                     agvBasDevp.setLocSts("R");
                     agvBasDevp.setLocType2(Short.valueOf(agvWrkMast.getBarcode().substring(0, 2)));
                     agvBasDevpService.updateById(agvBasDevp);
-                }catch (Exception e){
+                } catch (Exception e) {
                     e.printStackTrace();
                     log.error(e.getMessage());
                 }
@@ -338,37 +436,38 @@
             //鍒犻櫎AGV宸ヤ綔妗�
             agvWrkMastService.deleteById(wrkNo);
             //鍒犻櫎AGV宸ヤ綔鏄庣粏妗�
-            agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo));
-            if(!isJSON(orderNo)){
+            agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo));
+            if (!isJSON(orderNo)) {
                 //妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚
-                orderService.checkComplete(orderNo);
-            }else{
+                orderService.checkComplete(orderNo, agvWrkMast.getPltType());
+            } else {
                 List<Map> maps = JSONArray.parseArray(orderNo, Map.class);
                 maps.forEach(map -> {
                     String o = map.get("orderNo").toString();
-                    orderService.checkComplete(o);
+                    orderService.checkComplete(o, agvWrkMast.getPltType());
                 });
             }
 
             //涓婃姤mes
-            MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld);
-            if(!Cools.isEmpty(param)){
-                doHttpRequest(param,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1");
-            }
+//            MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld);
+//            if(!Cools.isEmpty(param)){
+//                doHttpRequest(param,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1");
+//            }
 
-            return SUCCESS;
-        }catch (Exception e){
-            log.error(""+e.getMessage());
+        } catch (Exception e) {
+            log.error("" + e.getMessage());
         }
-        return FAIL;
+        reportMes(agvWrkMast, agvWrkDetlListOld);
+        return SUCCESS;
     }
+
 
     @Transactional
     public ReturnT<String> completedCarryWrk2(AgvWrkMast agvWrkMast) {
-        try{
-            //鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏
-            List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
+        //鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏
+        List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo()));
 
+        try {
             int wrkNo = agvWrkMast.getWrkNo();
             String orderNo = getOrderNoByWrkNo(wrkNo);
             String agvBasDevp = "";
@@ -379,12 +478,13 @@
             }
             //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚
             agvWrkMast.setWrkSts(207L);
+            agvWrkMast.setModiTime(new Date());
             agvWrkMastService.updateById(agvWrkMast);
             //淇敼婧愬簱浣嶇姸鎬佷负O
-            agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null);
-            if(agvWrkMast.getIoType() == 101){
+            agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", null);
+            if (agvWrkMast.getIoType() == 101) {
                 //鏇存柊鐩爣搴撲綅鏄庣粏 101.鍑哄簱 鍒犻櫎婧愬簱浣嶅簱瀛樻槑缁�
-                agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo()));
+                agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvWrkMast.getSourceLocNo()));
             }
 
             //鐢熸垚AGV宸ヤ綔鍘嗗彶妗�
@@ -394,49 +494,54 @@
             //鍒犻櫎AGV宸ヤ綔妗�
             agvWrkMastService.deleteById(wrkNo);
             //鍒犻櫎AGV宸ヤ綔鏄庣粏妗�
-            agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo));
-            if(!isJSON(orderNo)){
+            agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo));
+            if (!isJSON(orderNo)) {
                 //妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚
-                orderService.checkComplete(orderNo);
-            }else{
+                orderService.checkComplete(orderNo, agvWrkMast.getPltType());
+            } else {
                 List<Map> maps = JSONArray.parseArray(orderNo, Map.class);
                 maps.forEach(map -> {
                     String o = map.get("orderNo").toString();
-                    orderService.checkComplete(o);
+                    orderService.checkComplete(o, agvWrkMast.getPltType());
                 });
             }
             //涓婃姤mes
-            MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld);
-            if(!Cools.isEmpty(param)){
-                doHttpRequest(param,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1");
-            }
-            return SUCCESS;
-        }catch (Exception e){
-            log.error(""+e.getMessage());
+//            MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld);
+//            if(!Cools.isEmpty(param)){
+//                doHttpRequest(param,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1");
+//            }
+//            reportMes(agvWrkMast,agvWrkDetlListOld);
+//            return SUCCESS;
+        } catch (Exception e) {
+            log.error("" + e.getMessage());
         }
-        return FAIL;
+        //TODO 寮犺秴
+        reportMes(agvWrkMast, agvWrkDetlListOld);
+        return SUCCESS;
     }
 
     @Transactional
     @Synchronized
     public ReturnT<String> startPutWayWrk(AgvWrkMast agvWrkMast) throws IOException {
 
-        try{
+        try {
             //涓嬪彂浠诲姟
             int startWrkCode = agvWrkMastService.startWrk(agvWrkMast);
-            if(startWrkCode != 0){
+            if (startWrkCode != 0) {
                 throw new CoolException("浠诲姟涓嬪彂澶辫触");
             }
 
             agvWrkMast.setWrkSts(202L);
+            agvWrkMast.setModiTime(new Date());
             agvWrkMastService.updateById(agvWrkMast);
-            if(agvWrkMast.getIoType() == 1){
+            if (agvWrkMast.getIoType() == 1) {
                 //淇敼AGV鍏ュ簱閫氱煡妗g姸鎬佸叆鍑虹姸鎬佷负Y
-                agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(),"Y");
+                agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(), "Y");
             }
             return SUCCESS;
-        }catch (Exception e){
-            log.error("淇敼AGV鍏ュ簱閫氱煡妗g姸鎬佸叆鍑虹姸鎬佷负Y"+e.getMessage());
+        } catch (Exception e) {
+            //TODO
+            log.error("淇敼AGV鍏ュ簱閫氱煡妗g姸鎬佸叆鍑虹姸鎬佷负Y" + e.getMessage());
         }
         return FAIL;
     }
@@ -444,16 +549,16 @@
     @Transactional
     @Synchronized
     public ReturnT<String> startAllcationIn(AgvWrkMast agvWrkMast) throws IOException {
-        
+
         //涓嬪彂浠诲姟
-        try{
+        try {
             int startWrkCode = agvWrkMastService.startAllcationIn(agvWrkMast);
-            if(startWrkCode != 0){
+            if (startWrkCode != 0) {
                 throw new CoolException("浠诲姟涓嬪彂澶辫触");
             }
             return SUCCESS;
-        }catch (Exception e){
-            log.error("浠诲姟涓嬪彂澶辫触"+e.getMessage());
+        } catch (Exception e) {
+            log.error("浠诲姟涓嬪彂澶辫触" + e.getMessage());
         }
         return FAIL;
 
@@ -492,10 +597,11 @@
             List<Map<String, Object>> devNoMaps = agvBasDevpService.selectDevNoAndNumBystationCode(agvWrkMast.getLocNo());
             //鍙栫涓�涓殏瀛樹綅锛屽苟鏌ヨ鍏舵鏁颁笌閰嶇疆鐨勬鏁板仛姣旇緝
             Map<String, Object> devNoMap = devNoMaps.get(0);
-            if((int)devNoMap.get("num") < maxWrokNum){
+            if ((int) devNoMap.get("num") < maxWrokNum) {
                 agvWrkMast.setLocNo(devNoMap.get("dev_no").toString());
+                agvWrkMast.setModiTime(new Date());
                 agvWrkMastService.updateById(agvWrkMast);
-                log.info("after锛�" + devNoMap.toString()  +  ", wrkNo:" + agvWrkMast.getWrkNo() + ", locNo: " + agvWrkMast.getLocNo());
+                log.info("after锛�" + devNoMap.toString() + ", wrkNo:" + agvWrkMast.getWrkNo() + ", locNo: " + agvWrkMast.getLocNo());
             }
         });
 
@@ -506,14 +612,14 @@
     @Transactional
     public ReturnT<String> autoEmptyOut(AgvBasDevp agvBasDevp) {
 
-        agvWorkService.emptyPlateOut(agvBasDevp.getDevNo(),0,9527L);
+        agvWorkService.emptyPlateOut(agvBasDevp.getDevNo(), 0, 9527L);
 
         return SUCCESS;
     }
 
-    private String getOrderNoByWrkNo(int wrkNo){
+    private String getOrderNoByWrkNo(int wrkNo) {
         AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo));
-        if(Cools.isEmpty(agvWrkDetl)){
+        if (Cools.isEmpty(agvWrkDetl)) {
             return null;
         }
         return agvWrkDetl.getOrderNo();
@@ -534,10 +640,10 @@
         }
     }
 
-    private List<AgvWrkMast> filter(List<AgvWrkMast> agvWrkMastList){
+    private List<AgvWrkMast> filter(List<AgvWrkMast> agvWrkMastList) {
         return agvWrkMastList.stream().filter(agvWrkMast -> {
             AgvWrkMast agvWrkMastWroking = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", agvWrkMast.getLocNo()));
-            if(!Cools.isEmpty(agvWrkMastWroking) && agvWrkMastWroking.getWrkSts()<=202){
+            if (!Cools.isEmpty(agvWrkMastWroking) && agvWrkMastWroking.getWrkSts() <= 202) {
                 System.out.println("source_loc_no > 1");
                 return false;
             }
@@ -550,7 +656,7 @@
     /*
   鐢熸垚宸ヤ綔妗�
    */
-    private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode, Date now, Long userId, int containerType, int floor){
+    private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode, Date now, Long userId, int containerType, int floor) {
         AgvWrkMast wrkMast = new AgvWrkMast();
         //宸ヤ綔鐘舵��
         wrkMast.setWrkSts(wrkSts);
@@ -579,62 +685,97 @@
             throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
         }
 
-        wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no",sourceLocNo).eq("barcode",barcode).orderBy("modi_time",false));
+        wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no", sourceLocNo).eq("barcode", barcode).orderBy("modi_time", false));
 
         return wrkMast;
     }
 
-    private Object getReportParamByIoType(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls){
-        if(Cools.isEmpty(agvWrkDetls)){
-            return null;
+    private void reportMes(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls) {
+        if (!flag) {
+            return;
+        }
+        if (Cools.isEmpty(agvWrkDetls)) {
+            return;
         }
         //鍖哄垎涓嶅悓浠诲姟绫诲瀷鐨勪笂鎶ユ柟寮�
 
-        if(Arrays.asList(IN_TYPE_ARRAY).contains(agvWrkMast.getIoType())){
-
+        if (IN_TYPE_LIST.contains(agvWrkMast.getIoType())) {
+            String barcode = agvWrkMast.getBarcode();
+            if (barcode.startsWith("20") || barcode.startsWith("21") || barcode.startsWith("40")) {
+                reportMesPakinOrder(agvWrkMast, agvWrkDetls);
+            }
         }
-        if(Arrays.asList(OUT_TYPE_ARRAY).contains(agvWrkMast.getIoType())){
-
+        if (OUT_TYPE_List.contains(agvWrkMast.getIoType())) {
+            reportMesPakoutOrder(agvWrkMast, agvWrkDetls);
         }
-        if(Arrays.asList(MOVE_TYPE_ARRAY).contains(agvWrkMast.getIoType())){
-            return generateMesParam(agvWrkMast,agvWrkDetls);
+        if (MOVE_TYPE_List.contains(agvWrkMast.getIoType())) {
+            generateMesParam(agvWrkMast, agvWrkDetls);
         }
-
-        return null;
     }
 
-    private void reportMesPakinOrder(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls){
+    private void reportMesPakinOrder(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls) {
 
-        for (AgvWrkDetl agvWrkDetl : agvWrkDetls){
-            MesPakinReportParam mesPakinReportParam = new MesPakinReportParam();
-            mesPakinReportParam.setInboundOrderCode(agvWrkDetl.getOrderNo());
-            mesPakinReportParam.setBizType("0");
-            mesPakinReportParam.setInventoryAttr(new MesPakinReportParam.InventoryAttr(agvWrkDetl.getThreeCode(),agvWrkDetl.getMatnr(),agvWrkMast.getLocNo()));
-            mesPakinReportParam.setNoQrCodeExecAmount(new MesPakinReportParam.NoQrCodeExecAmount(agvWrkDetl.getAnfme(),agvWrkDetl.getUnit(),null));
+        for (AgvWrkDetl agvWrkDetl : agvWrkDetls) {
+            //鍒ゆ柇鏄惁閲囪喘鍏ュ簱
 
-            doHttpRequest(mesPakinReportParam,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1");
+            String orderNo = agvWrkDetl.getOrderNo();
+            Order order = orderService.selectByNo(orderNo);
+
+            DocType docType = docTypeService.selectById(order.getDocType());
+
+            if (docType.getDocName().contains("閲囪喘")) {
+
+                OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(orderNo, agvWrkDetl.getMatnr(), agvWrkDetl.getThreeCode(), agvWrkDetl.getDeadTime());
+
+                MesBuyPakinReportParam mesBuyPakinReportParam = new MesBuyPakinReportParam();
+                List<MesBuyPakinReportParam.Iteam> iteams = new ArrayList<>();
+                MesBuyPakinReportParam.Iteam iteam = new MesBuyPakinReportParam.Iteam();
+                iteam.setMaterialCode(agvWrkDetl.getMatnr());
+                iteam.setBatchNo(agvWrkDetl.getBatch());
+                iteam.setAmount(agvWrkDetl.getAnfme());
+                iteam.setStorageLocationCode(agvWrkMast.getLocNo());
+                iteam.setLineNo(orderDetl.getItemNum());
+                iteam.setSupplierCode(order.getSalesman());
+                iteam.setUnit(agvWrkDetl.getUnit());
+
+                iteams.add(iteam);
+
+                mesBuyPakinReportParam.setCode(orderNo);
+                mesBuyPakinReportParam.setIteam(iteams);
+
+                doHttpRequest(mesBuyPakinReportParam, getMesTokenInfo(), "涓婃姤mes閲囪喘鍏ュ簱淇℃伅", url, buyPakinReportPath, null, "127.0.0.1");
+
+            } else {
+                MesPakinReportParam mesPakinReportParam = new MesPakinReportParam();
+                //mesPakinReportParam.setInboundOrderCode(agvWrkDetl.getOrderNo());
+                mesPakinReportParam.setBizType("0");
+                mesPakinReportParam.setInventoryAttr(new MesPakinReportParam.InventoryAttr(null, agvWrkDetl.getMatnr(), agvWrkMast.getLocNo()));
+                mesPakinReportParam.setNoQrCodeExecAmount(new MesPakinReportParam.NoQrCodeExecAmount(agvWrkDetl.getAnfme(), agvWrkDetl.getUnit(), null));
+
+                doHttpRequest(mesPakinReportParam, getMesTokenInfo(), "涓婃姤mes鍏ュ簱淇℃伅", url, pakinReportPath, null, "127.0.0.1");
+            }
         }
 
     }
 
-    private void reportMesPakoutOrder(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls){
-        for (AgvWrkDetl agvWrkDetl : agvWrkDetls){
+    private void reportMesPakoutOrder(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls) {
+        for (AgvWrkDetl agvWrkDetl : agvWrkDetls) {
             MesPakoutReportParam mesPakoutReportParam = new MesPakoutReportParam();
             mesPakoutReportParam.setStorageCode(agvWrkMast.getLocNo());
             AgvLocMast agvLocMast = agvLocMastService.selectById(agvWrkMast.getLocNo());
             mesPakoutReportParam.setWareHouseCode(agvLocMast.getPltType().toString());
             mesPakoutReportParam.setMaterialCode(agvWrkDetl.getMatnr());
-            mesPakoutReportParam.setBatchNos(Arrays.asList(agvWrkDetl.getBatch()));
-            mesPakoutReportParam.setAmount(new MesPakoutReportParam.Amount(agvWrkDetl.getAnfme(),agvWrkDetl.getUnit(),null));
+            mesPakoutReportParam.setBatchNos(Arrays.asList(agvWrkDetl.getThreeCode().trim()));
+            mesPakoutReportParam.setAmount(new MesPakoutReportParam.Amount(agvWrkDetl.getAnfme(), agvWrkDetl.getUnit(), null));
 
-            doHttpRequest(mesPakoutReportParam,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1");
+            doHttpRequest(mesPakoutReportParam, getMesTokenInfo(), "涓婃姤mes鍑哄簱淇℃伅", url, pakoutReportPath, null, "127.0.0.1");
 
         }
     }
 
-    private MesOrderReportParam generateMesParam(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls){
+    private void generateMesParam(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls) {
 
-        if(agvWrkMast.getIoType() == 53){
+        if (agvWrkMast.getIoType() == 53) {
             String locNo = agvWrkMast.getLocNo();
             agvWrkMast.setLocNo(agvWrkMast.getSourceLocNo());
             agvWrkMast.setSourceLocNo(locNo);
@@ -644,25 +785,35 @@
 
         List<MesOrderReportParam.TransferOrderItem> transferOrderItems = new ArrayList<>();
         List<MesOrderReportParam.TransferOrderItem.InventoryDetail> inventoryDetails = new ArrayList<>();
+        List<MesOrderReportParam.RecordCustomFieldBaseCO.CustomField> customFields = new ArrayList<>();
+
+        MesOrderReportParam.RecordCustomFieldBaseCO recordCustomFieldBaseCO = new MesOrderReportParam.RecordCustomFieldBaseCO();
+        recordCustomFieldBaseCO.setCustomFields(customFields);
+        param.setRecordCustomFieldBaseCO(recordCustomFieldBaseCO);
+
         //娣诲姞transferOrderItem灞炴��
         MesOrderReportParam.TransferOrderItem transferOrderItem = new MesOrderReportParam.TransferOrderItem();
         transferOrderItem.setRemark(agvWrkDetls.get(0).getOrderNo());
-        transferOrderItem.setTargetLocationCode(agvWrkMast.getLocNo());
+        //璋冩嫧
+        if (agvWrkMast.getLocNo().contains("YZ")) {
+            transferOrderItem.setTargetLocationCode(agvWrkMast.getLocNo());
+        } else {
+            //鍑哄簱榛樿浠撲綅
+            String floor = agvWrkMast.getLocNo().split("F")[1];
+            transferOrderItem.setTargetLocationCode(getTargetLocationByFloor(floor));
+        }
         transferOrderItems.add(transferOrderItem);
         transferOrderItem.setInventoryDetails(inventoryDetails);
 
         param.setTransferOrderItems(transferOrderItems);
 
-        for (AgvWrkDetl agvWrkDetl : agvWrkDetls){
+        for (AgvWrkDetl agvWrkDetl : agvWrkDetls) {
             MesOrderReportParam.TransferOrderItem.InventoryDetail inventoryDetail = new MesOrderReportParam.TransferOrderItem.InventoryDetail();
             //娣诲姞amount灞炴��
-            MesOrderReportParam.TransferOrderItem.InventoryDetail.Amount amount = new MesOrderReportParam.TransferOrderItem.InventoryDetail.Amount();
-            amount.setAmount(agvWrkDetl.getAnfme());
-            amount.setUnitName(agvWrkDetl.getUnit());
+            MesOrderReportParam.TransferOrderItem.InventoryDetail.Amount amount = new MesOrderReportParam.TransferOrderItem.InventoryDetail.Amount(agvWrkDetl.getAnfme(), agvWrkDetl.getUnit(), null);
             inventoryDetail.setAmount(amount);
             //娣诲姞bizKey灞炴��
-            MesOrderReportParam.TransferOrderItem.InventoryDetail.BizKey bizKey = new MesOrderReportParam.TransferOrderItem.InventoryDetail.BizKey();
-            bizKey.setBatchNo(agvWrkDetl.getThreeCode());
+            MesOrderReportParam.TransferOrderItem.InventoryDetail.BizKey bizKey = new MesOrderReportParam.TransferOrderItem.InventoryDetail.BizKey(Cools.isEmpty(agvWrkDetl.getBatch()) ? "" : agvWrkDetl.getBatch().trim());
             inventoryDetail.setBizKey(bizKey);
             //娣诲姞inventoryDetail灞炴��
             inventoryDetail.setLocationCode(agvWrkMast.getSourceLocNo());
@@ -670,46 +821,63 @@
             inventoryDetail.setQcStatus(1);
             inventoryDetail.setStorageStatus(1);
             inventoryDetails.add(inventoryDetail);
+            //娣诲姞閿�鍞鍗曞彿
+            MesOrderReportParam.RecordCustomFieldBaseCO.CustomField customField = new MesOrderReportParam.RecordCustomFieldBaseCO.CustomField("workOrderCode__c", agvWrkDetl.getThreeCode().trim());
+            customFields.add(customField);
         }
 
-        return param;
+        doHttpRequest(param, getMesTokenInfo(), "涓婃姤mes璋冩嫧淇℃伅", url, orderReportPath, null, "127.0.0.1");
+
     }
 
     //鑾峰彇mes token淇℃伅
-    private Map<String,Object> getMesTokenInfo(){
-        Map<String,String> param = new HashMap<>();
-        param.put("appKey",appKey);
-        param.put("appSecret",appSecret);
+    private Map<String, Object> getMesTokenInfo() {
+        Map<String, String> param = new HashMap<>();
+        param.put("appKey", appKey);
+        param.put("appSecret", appSecret);
 
-        JSONObject jsonObject = doHttpRequest(param,null, "鑾峰彇MesToken", url, getTokenPath, null, "127.0.0.1");
+        JSONObject jsonObject = doHttpRequest(param, null, "鑾峰彇MesToken", getTokenUrl, getTokenPath, null, "127.0.0.1");
 
-        Map<String,Object> headParam = new HashMap<>();
-        headParam.put("X-AUTH",JSON.parseObject(jsonObject.get("data").toString()).get("appAccessToken").toString());
+        Map<String, Object> headParam = new HashMap<>();
+        headParam.put("X-AUTH", JSON.parseObject(jsonObject.get("data").toString()).get("appAccessToken").toString());
 
         return headParam;
 
     }
 
-    private JSONObject doHttpRequest(Object requestParam,Map<String,Object> headParam, String namespace, String url, String path, String appkey, String ip){
+    //鏍规嵁妤煎眰榛樿鍑哄簱浠撲綅
+    private String getTargetLocationByFloor(String f) {
+        int floor = Integer.parseInt(f);
+        if (floor == 1) {
+            return "WH-000";
+        }
+
+        if (floor == 2) {
+            return "WH-000";
+        }
+
+        if (floor == 3) {
+            return "WH-000";
+        }
+
+        return null;
+    }
+
+    private JSONObject doHttpRequest(Object requestParam, Map<String, Object> headParam, String namespace, String url, String path, String appkey, String ip) {
 
         String response = "";
         boolean success = false;
 
         try {
-            response = new HttpHandler.Builder()
-                    .setUri(url)
-                    .setPath(path)
-                    .setHeaders(headParam)
-                    .setJson(JSONObject.toJSONString(requestParam))
-                    .setHttps(true)
-                    .build()
-                    .doPost();
+            response = new HttpHandler.Builder().setUri(url).setPath(path).setTimeout(30, TimeUnit.SECONDS).setHeaders(headParam).setJson(JSONObject.toJSONString(requestParam)).setHttps(true).build().doPost();
             JSONObject jsonObject = JSON.parseObject(response);
 
-            if(Cools.isEmpty(jsonObject.get("code")) && Integer.parseInt(jsonObject.get("code").toString()) != 200){
-                throw new CoolException(jsonObject.get("dsc").toString());
+            if (Cools.isEmpty(jsonObject.get("code")) || Integer.parseInt(jsonObject.get("code").toString()) != 200) {
+                log.info("mes鎺ュ彛璋冪敤澶辫触锛岃繑鍥炰俊鎭細" + jsonObject);
+                //TODO 寮犺秴
+                throw new CoolException("mes鎺ュ彛璋冪敤澶辫触锛岃繑鍥炰俊鎭�:" + jsonObject);
             }
-
+            success = true;
             return jsonObject;
 
 //            String succeed = jsonObject.get("succeed").toString();
@@ -720,20 +888,13 @@
 //            }
 //            success = true;
 
-        }catch (Exception e){
+        } catch (Exception e) {
             log.error(e.getMessage());
             throw new CoolException(e.getMessage());
-        }finally {
-            apiLogService.save(
-                    namespace,
-                    url + path,
-                    appkey,
-                    ip,
-                    JSON.toJSONString(JSONObject.toJSONString(requestParam)),
-                    response,
-                    success
-            );
+        } finally {
+            apiLogService.save(namespace, url + path, appkey, ip, JSON.toJSONString(JSONObject.toJSONString(requestParam)), response, success);
         }
 
     }
+
 }

--
Gitblit v1.9.1