From 29d3f24dc43df41103bc5f483bfc439494a80971 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期三, 17 十二月 2025 09:30:32 +0800
Subject: [PATCH] 对接mes 对接华晓agv 对接海康agv 初始化开发

---
 src/main/java/com/zy/asrs/task/AGVTaskReportScheduler.java         |  124 ++
 src/main/java/com/zy/asrs/entity/mes/TransInOutStationAllow.java   |   16 
 src/main/java/com/zy/asrs/entity/mes/TransTask.java                |   13 
 src/main/java/com/zy/asrs/entity/Task.java                         |   19 
 src/main/resources/mapper/LocDetlMapper.xml                        |   60 
 src/main/java/com/zy/asrs/entity/OrderPakout.java                  |   27 
 src/main/java/com/zy/asrs/entity/mes/MesOutApply.java              |   87 +
 src/main/java/com/zy/common/web/WcsController.java                 |   69 +
 pom.xml                                                            |    2 
 src/main/java/com/zy/asrs/entity/mes/MesCallOutApply.java          |   42 
 src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java         |  752 +++++++++-------
 src/main/resources/mapper/WrkDetlMapper.xml                        |    4 
 src/main/java/com/zy/common/web/AuthController.java                |  163 +-
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java        |   13 
 src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java         |  508 +++++++---
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java      |   69 +
 src/main/resources/application-dev.yml                             |   23 
 src/main/java/com/zy/asrs/service/RcsService.java                  |    4 
 src/main/java/com/zy/asrs/controller/MesController.java            |   20 
 src/main/webapp/static/js/common.js                                |    2 
 src/main/java/com/zy/asrs/controller/OutController.java            |   71 +
 src/main/java/com/zy/asrs/entity/LocMast.java                      |   18 
 src/main/java/com/zy/common/service/CommonService.java             |   18 
 src/main/java/com/zy/asrs/service/MobileService.java               |    2 
 src/main/java/com/zy/asrs/entity/WrkDetlLog.java                   |   12 
 src/main/java/com/zy/asrs/service/WorkService.java                 |    4 
 src/main/java/com/zy/asrs/entity/OrderDetlPakout.java              |   12 
 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java        |   60 +
 src/main/java/com/zy/asrs/task/AutoLocMoveScheduler.java           |  126 +-
 src/main/java/com/zy/asrs/task/WorkMastScheduler.java              |    6 
 src/main/java/com/zy/asrs/task/OrderSyncScheduler.java             |   71 +
 src/main/java/com/zy/asrs/task/handler/AGVTaskReportHandler.java   |   66 +
 src/main/resources/mapper/TaskMapper.xml                           |    2 
 src/main/java/com/zy/asrs/controller/MobileController.java         |   22 
 src/main/java/com/zy/asrs/service/impl/OrderPakinServiceImpl.java  |   10 
 src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java         |   41 
 src/main/java/com/zy/common/model/LocTypeDto.java                  |    6 
 src/main/java/com/zy/asrs/entity/rcs/RcsReporterTask.java          |    3 
 src/main/java/com/zy/asrs/task/BareBoardScheduler.java             |   28 
 src/main/java/com/zy/asrs/service/impl/OrderPakoutServiceImpl.java |   11 
 src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java       |    9 
 src/main/java/com/zy/asrs/controller/RcsController.java            |    2 
 src/main/java/com/zy/asrs/task/WorkLogScheduler.java               |   18 
 src/main/java/com/zy/asrs/entity/mes/TransParent.java              |    8 
 src/main/java/com/zy/asrs/service/TaskService.java                 |    1 
 src/main/webapp/views/login.html                                   |   13 
 46 files changed, 1,779 insertions(+), 878 deletions(-)

diff --git a/pom.xml b/pom.xml
index cecba08..ef5393c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -124,7 +124,7 @@
     </dependencies>
 
     <build>
-        <finalName>jgwms</finalName>
+        <finalName>ljqwms</finalName>
         <plugins>
             <plugin>
                 <groupId>org.springframework.boot</groupId>
diff --git a/src/main/java/com/zy/asrs/controller/MesController.java b/src/main/java/com/zy/asrs/controller/MesController.java
index 92c13b4..7b4343c 100644
--- a/src/main/java/com/zy/asrs/controller/MesController.java
+++ b/src/main/java/com/zy/asrs/controller/MesController.java
@@ -41,16 +41,16 @@
         return mesReturn;
     }
 
-    // 鍑哄簱鐢宠
-    @PostMapping("/api/mes/outBoundOrder")
-    public MesReturn outBoundOrder(@RequestBody MesOutApply param){
+//    // 鍑哄簱鐢宠
+//    @PostMapping("/api/mes/outBoundOrder")
+//    public MesReturn outBoundOrder(@RequestBody MesOutApply param){
+//
+//        MesReturn mesReturn = new MesReturn();
+//        mesReturn.setSuccess(mesService.outBoundOrder(param) == 1 ? "1" : "2");
+//        return mesReturn;
+//    }
 
-        MesReturn mesReturn = new MesReturn();
-        mesReturn.setSuccess(mesService.outBoundOrder(param) == 1 ? "1" : "2");
-        return mesReturn;
-    }
-
-    // 鍑哄簱鐢宠锛堝彨鏂欙級锛岃閰嶅簱銆佹粦鍧楀簱
+//    // 鍑哄簱鍏ュ簱璁㈠崟鐢宠
     @PostMapping("/api/mes/callOutBoundOrder")
     public MesReturn callOutBoundOrder(@RequestBody MesCallOutApply param){
 
@@ -71,14 +71,12 @@
     // 鍏ョ珯鍏佽
     @PostMapping("/api/mes/allowInStation")
     public MesReturn allowInStation(@RequestBody TransInOutStationAllow param){
-
         return mesService.allowInStation(param);
     }
 
     // 绂荤珯鍏佽锛岃閰嶅簱銆佹粦鍧楀簱
     @PostMapping("/api/mes/allowOutStation")
     public MesReturn allowOutStation(@RequestBody TransInOutStationAllow param){
-
         return mesService.allowOutStation(param);
     }
 
diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index 7e048b2..81cd8f6 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -1,5 +1,6 @@
 package com.zy.asrs.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
@@ -15,6 +16,7 @@
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.OrderInAndOutUtil;
 import com.zy.common.model.WrkDto;
+import com.zy.common.utils.HttpHandler;
 import com.zy.common.web.BaseController;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -525,14 +527,26 @@
         return R.ok("鍑哄簱鎴愬姛");
     }
 
+    /**
+     * 琛ョ┖鏉�
+     *
+     * @param locNo 鐩爣绔欑偣
+     * @param size  鎵樼洏澶у皬 1锛氬皬鎵樼洏  2锛氬ぇ鎵樼洏
+     * @return
+     */
     // pda鍛煎彨绌烘枡妗嗗嚭搴�
     @PostMapping("/callEmptyBinOutBound")
     @ManagerAuth(memo = "pda鍛煎彨绌烘枡妗嗗嚭搴�")
-    public synchronized R callEmptyBinOutBound(@RequestBody JSONObject param) {
-        if(!param.containsKey("staNo") || !param.containsKey("locType")){ // 1.绐勶紝2.瀹�
-            return R.parse(BaseRes.PARAM);
+    public synchronized R callEmptyBinOutBound(@RequestParam(required = false) String locNo
+            , @RequestParam(required = false) String size) {
+        if (Cools.isEmpty(locNo) || Cools.isEmpty(size)) {
+            return R.error("绔欑偣鎴栬�呭ぇ灏忎笉鑳戒负绌�");
         }
-        return mobileService.callEmptyBinOutBound(param.getString("staNo"),param.getString("locType"),getUserId());
+        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 110).eq("memo", locNo));
+        if (wrkMast != null) {
+            return R.error("璇ョ珯鐐�="+locNo+"宸茬粡鏈夌┖鏉垮嚭搴撲换鍔★紝涓轰簡涓嶅牭濉炲爢鍨涙満鎺ラ┏绔欑偣锛岀姝笅鍙戝涓┖鏉垮嚭搴撲换鍔�");
+        }
+        return mobileService.callEmptyBinOutBound(locNo,size,getUserId());
     }
 
 }
diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index 60b2dec..e222a56 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -6,6 +6,7 @@
 import com.core.common.Cools;
 import com.core.common.R;
 import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.EmptyPlateOutParam;
 import com.zy.asrs.service.*;
 import com.zy.common.model.LocDto;
 import com.zy.common.model.TaskDto;
@@ -126,8 +127,9 @@
                 if (issued <= 0.0D) {
                     continue;
                 }
+
                 List<LocDetl> locDetls = locDetlService.queryStockAll(null, exist,orderDetl.getMatnr(), orderDetl.getBatch(),
-                        orderDetl.getBrand(),orderDetl.getStandby1(),orderDetl.getStandby2(),orderDetl.getStandby3(),orderDetl.getBoxType1(),orderDetl.getBoxType2(),orderDetl.getBoxType3());
+                        orderDetl.getBrand(),orderPakOut.getDocType()==11?null:orderDetl.getStandby1(),orderDetl.getStandby2(),orderDetl.getStandby3(),orderDetl.getBoxType1(),orderDetl.getBoxType2(),orderDetl.getBoxType3());
                 for (LocDetl locDetl : locDetls) {
                     if (issued > 0) {
                         LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(),
@@ -212,10 +214,75 @@
                 taskDtos.add(taskDto);
             }
         }
+        OrderPakout orderPakout = orderPakOutService.selectByNo(locDtos.get(0).getOrderNo());
+
+        //閰嶇洏鍑哄簱鍗曠敤锛� i=5鏃舵垨鑰呭嚭搴撳埌鏈�鍚庢椂涓嬪彂绌烘澘鍑哄簱浠诲姟
+        int i = 0;
+        //闇�瑕佸嚭搴撶殑鎵樼洏鏁伴噺
+        int size = taskDtos.size();
+        //浼樺厛绾�
+        int ioPri = 50;
+        //宸蹭笅绌烘澘鍑哄簱浠诲姟鏁伴噺
+        int j=1;
         // -----------------------------------------------------------------------------------------------
         for (TaskDto taskDto : taskDtos) {
             BasDevp staNo = basDevpService.checkSiteStatus(taskDto.getStaNo());
-            workService.stockOut(staNo, taskDto, getUserId());
+            workService.stockOut(staNo, taskDto, getUserId(),ioPri);
+            ioPri--;
+            i++;
+            //閰嶇洏鍑哄簱鍗曚娇鐢紝涓嬪彂闇�瑕佸嚭鐨勭┖鏉夸换鍔�
+            if (orderPakout.getDocType() == 11) {
+                if (size<5&&i==size){
+                    for (;j<=orderPakout.getPayType();j++){
+                        String bar="";
+                        if(!Cools.isEmpty(orderPakout.getShipCode())&&orderPakout.getShipCode().equals("A01")){
+                            bar = "A01";
+                        }
+                        LocMast locMast = new  LocMast();
+                        if(Cools.isEmpty(bar)){
+                            locMast=locMastService.selectOne(new EntityWrapper<LocMast>()
+                                    .eq("loc_sts", "D"));
+                        }else {
+                            locMast=locMastService.selectOne(new EntityWrapper<LocMast>()
+                                    .eq("loc_sts", "D").like("barcode", bar));
+                        }
+
+                        if (Cools.isEmpty(locMast)) {
+                            return R.error("搴撳瓨娌℃湁绌烘澘");
+                        }
+                        String locNo = locMast.getLocNo();
+                        EmptyPlateOutParam emptyPlateOutParam = new EmptyPlateOutParam();
+                        emptyPlateOutParam.setOutSite(303);
+                        emptyPlateOutParam.setLocNos(new ArrayList<String>(){{add(locNo);}});
+                        WrkMast wrkMast = workService.emptyPlateOut(emptyPlateOutParam,ioPri);
+                        ioPri--;
+
+                    }
+                }else if(i == 5){
+                    String bar="";
+                    if(!Cools.isEmpty(orderPakout.getShipCode())&&orderPakout.getShipCode().equals("A01")){
+                        bar = "A01";
+                    }
+                    LocMast locMast = null;
+                    if(Cools.isEmpty(bar)){
+                        locMast=locMastService.selectOne(new EntityWrapper<LocMast>()
+                                .eq("loc_sts", "D"));
+                    }else {
+                        locMast=locMastService.selectOne(new EntityWrapper<LocMast>()
+                                .eq("loc_sts", "D").like("barcode", bar));
+                    }
+
+                    if (Cools.isEmpty(locMast)) {
+                        return R.error("搴撳瓨娌℃湁绌烘澘");
+                    }
+                    String locNo = locMast.getLocNo();
+                    EmptyPlateOutParam emptyPlateOutParam = new EmptyPlateOutParam();
+                    emptyPlateOutParam.setOutSite(303);
+                    emptyPlateOutParam.setLocNos(new ArrayList<String>(){{add(locNo);}});
+                    WrkMast wrkMast = workService.emptyPlateOut(emptyPlateOutParam,ioPri);
+                    ioPri--;
+                }
+            }
         }
         return R.ok();
     }
diff --git a/src/main/java/com/zy/asrs/controller/RcsController.java b/src/main/java/com/zy/asrs/controller/RcsController.java
index 0f0d58e..3b0f903 100644
--- a/src/main/java/com/zy/asrs/controller/RcsController.java
+++ b/src/main/java/com/zy/asrs/controller/RcsController.java
@@ -36,7 +36,7 @@
 
     // 鍗庢檽AGV鐢宠杩涘叆浜х嚎锛堝厜骞曪級
     @PostMapping("/api/robot/apply/inLine")
-    public JSONObject hxApplyInLine(@RequestBody TransParent param){
+    public RcsReturn hxApplyInLine(@RequestBody TransParent param){
 
         return rcsService.hxApplyInLine(param);
     }
diff --git a/src/main/java/com/zy/asrs/entity/LocMast.java b/src/main/java/com/zy/asrs/entity/LocMast.java
index 7eaa33e..c9c6ba9 100644
--- a/src/main/java/com/zy/asrs/entity/LocMast.java
+++ b/src/main/java/com/zy/asrs/entity/LocMast.java
@@ -96,15 +96,29 @@
     @TableField("loc_type")
     private String locType;
 
+    /**
+     * 1.浣庡簱浣�
+     * 2.楂樺簱浣�
+     *
+     */
     @ApiModelProperty(value= "楂樹綆绫诲瀷{0:鏈煡,1:浣庡簱浣�,2:楂樺簱浣峿")
     @TableField("loc_type1")
     private Short locType1;
 
-    @ApiModelProperty(value= "瀹界獎绫诲瀷{0:鏈煡,1:绐勫簱浣�,2:瀹藉簱浣峿")
+    /**
+     * 1.灏忔墭鐩�
+     * 2.澶ф墭鐩�
+     */
+    @ApiModelProperty(value= "")
     @TableField("loc_type2")
     private Short locType2;
 
-    @ApiModelProperty(value= "杞婚噸绫诲瀷{0:鏈煡,1:杞诲簱浣�,2:閲嶅簱浣峿")
+    /**
+     * 婊戝潡鍜岃繛鎺ュ櫒搴撳尯鍒�
+     * 1.婊戝潡搴�
+     * 2.閾炬帴鍣ㄥ簱
+     */
+    @ApiModelProperty(value= "")
     @TableField("loc_type3")
     private Short locType3;
 
diff --git a/src/main/java/com/zy/asrs/entity/OrderDetlPakout.java b/src/main/java/com/zy/asrs/entity/OrderDetlPakout.java
index 3af2a93..d7258be 100644
--- a/src/main/java/com/zy/asrs/entity/OrderDetlPakout.java
+++ b/src/main/java/com/zy/asrs/entity/OrderDetlPakout.java
@@ -93,6 +93,12 @@
     private String batch;
 
     /**
+     * 鏂欐灦鍙�
+     */
+    @ApiModelProperty(value= "鏂欐灦鍙�")
+    private String sku;
+
+    /**
      * 瑙勬牸
      */
     @ApiModelProperty(value= "瑙勬牸")
@@ -128,11 +134,7 @@
     @ApiModelProperty(value= "鍗曚环")
     private Double price;
 
-    /**
-     * sku
-     */
-    @ApiModelProperty(value= "sku")
-    private String sku;
+
 
     /**
      * 鍗曚綅閲�
diff --git a/src/main/java/com/zy/asrs/entity/OrderPakout.java b/src/main/java/com/zy/asrs/entity/OrderPakout.java
index aaa08a9..08ffcc2 100644
--- a/src/main/java/com/zy/asrs/entity/OrderPakout.java
+++ b/src/main/java/com/zy/asrs/entity/OrderPakout.java
@@ -60,6 +60,20 @@
     private Long docType;
 
     /**
+     * 绌烘澘鍑哄簱鏁伴噺
+     */
+    @ApiModelProperty(value= "绌烘澘鍑哄簱鏁伴噺")
+    @TableField("pay_type")
+    private Integer payType;
+
+    /**
+     * 鍖哄煙鍦板潃
+     */
+    @ApiModelProperty(value= "鍖哄煙鍦板潃")
+    @TableField("ship_code")
+    private String shipCode;
+
+    /**
      * 椤圭洰缂栧彿
      */
     @ApiModelProperty(value= "椤圭洰缂栧彿")
@@ -150,12 +164,6 @@
     @TableField("act_fee")
     private Double actFee;
 
-    /**
-     * 浠樻绫诲瀷 1: 鐜伴噾  2: 璁拌处
-     */
-    @ApiModelProperty(value= "浠樻绫诲瀷 1: 鐜伴噾  2: 璁拌处  ")
-    @TableField("pay_type")
-    private Integer payType;
 
     /**
      * 涓氬姟鍛�
@@ -206,13 +214,6 @@
     @ApiModelProperty(value= "鐗╂祦鍚嶇О")
     @TableField("ship_name")
     private String shipName;
-
-    /**
-     * 鐗╂祦鍗曞彿
-     */
-    @ApiModelProperty(value= "鐗╂祦鍗曞彿")
-    @TableField("ship_code")
-    private String shipCode;
 
     /**
      * 璁㈠崟鐘舵��
diff --git a/src/main/java/com/zy/asrs/entity/Task.java b/src/main/java/com/zy/asrs/entity/Task.java
index 17b831f..aff7888 100644
--- a/src/main/java/com/zy/asrs/entity/Task.java
+++ b/src/main/java/com/zy/asrs/entity/Task.java
@@ -66,6 +66,9 @@
 
     /**
      * 鍏ュ嚭搴撶被鍨�
+     * 3.绔欏埌绔�
+     * 4.绔欏埌鍖哄煙
+     * 5.鍖哄煙鍒扮珯
      */
     @ApiModelProperty(value= "鍏ュ嚭搴撶被鍨�")
     @TableField("io_type")
@@ -125,6 +128,13 @@
     @TableField("loc_sts")
     private String locSts;
 
+    @ApiModelProperty(value= "1.娴峰悍AGV  2.鍗庢檽AGV   榛樿鏄�1.娴峰悍")
+    @TableField("plt_type")
+    private Integer pltType=1;
+
+    @ApiModelProperty(value= "鏂欐灦鍙�")
+    private String packed;
+
     /**
      * 鎷f枡
      */
@@ -139,7 +149,7 @@
     @TableField("online_yn")
     private String onlineYn;
 
-    @ApiModelProperty(value= "")
+    @ApiModelProperty(value= "鏄惁浠诲姟鎶ラ敊")
     @TableField("upd_mk")
     private String updMk;
 
@@ -149,10 +159,6 @@
     @ApiModelProperty(value= "閫�鍑�")
     @TableField("exit_mk")
     private String exitMk;
-
-    @ApiModelProperty(value= "")
-    @TableField("plt_type")
-    private Integer pltType;
 
     /**
      * 绌烘澘
@@ -171,9 +177,6 @@
     @ApiModelProperty(value= "")
     @TableField("ctn_type")
     private Integer ctnType;
-
-    @ApiModelProperty(value= "")
-    private String packed;
 
     @ApiModelProperty(value= "")
     @TableField("ove_mk")
diff --git a/src/main/java/com/zy/asrs/entity/WrkDetlLog.java b/src/main/java/com/zy/asrs/entity/WrkDetlLog.java
index 6fa1590..12fada6 100644
--- a/src/main/java/com/zy/asrs/entity/WrkDetlLog.java
+++ b/src/main/java/com/zy/asrs/entity/WrkDetlLog.java
@@ -72,6 +72,12 @@
     private String orderNo;
 
     /**
+     * 鍙栨秷浠诲姟鏍囪 1
+     */
+    @ApiModelProperty(value= "鍙栨秷浠诲姟鏍囪")
+    private Integer danger;
+
+    /**
      * 瑙勬牸
      */
     @ApiModelProperty(value= "瑙勬牸")
@@ -229,12 +235,6 @@
      */
     @ApiModelProperty(value= "瑕佹眰妫�楠� 1: 鏄�  0: 鍚�  ")
     private Integer inspect;
-
-    /**
-     * 鍗遍櫓鍝� 1: 鏄�  0: 鍚�
-     */
-    @ApiModelProperty(value= "鍗遍櫓鍝� 1: 鏄�  0: 鍚�  ")
-    private Integer danger;
 
     /**
      * 淇敼浜哄憳
diff --git a/src/main/java/com/zy/asrs/entity/mes/MesCallOutApply.java b/src/main/java/com/zy/asrs/entity/mes/MesCallOutApply.java
index 1d141cf..dd78348 100644
--- a/src/main/java/com/zy/asrs/entity/mes/MesCallOutApply.java
+++ b/src/main/java/com/zy/asrs/entity/mes/MesCallOutApply.java
@@ -12,23 +12,23 @@
 @Data
 public class MesCallOutApply extends MesParent {
 
-//    // 浠诲姟缂栧彿
-//    private String taskno;
-//    // 浠诲姟鍚嶇О
-//    private String taskname;
-//    // 鐢熶骇璁㈠崟鍙�
-//    @JsonProperty("OrderNo")
-//    private String OrderNo;
+    // 浠诲姟缂栧彿
+    private String taskno;
+    // 浠诲姟鍚嶇О
+    private String taskname;
+    // 鐢熶骇璁㈠崟鍙�
+    @JsonProperty("OrderNo")
+    private String OrderNo;
     // 杩愯緭绫诲瀷锛屽瓧鍏稿��(wms_tranfs_type) 06 瑁呴厤棰嗘枡锛�01锛氱┖鎵�
     @JsonProperty("TransType")
     @JSONField(name = "TransType")
     private String TransType;
-//    // 鐢熶骇绾跨紪鐮�
-//    @JsonProperty("ProductLineId")
-//    private String ProductLineId;
-//    // 宸ヤ綅缂栫爜
-//    @JsonProperty("StationId")
-//    private String StationId;
+    // 鐢熶骇绾跨紪鐮�
+    @JsonProperty("ProductLineId")
+    private String ProductLineId;
+    // 宸ヤ綅缂栫爜
+    @JsonProperty("StationId")
+    private String StationId;
     // 褰撳墠宸ュ簭
     @JsonProperty("CurProcess")
     @JSONField(name = "CurProcess")
@@ -37,6 +37,11 @@
     @JsonProperty("Itemdata")
     @JSONField(name = "Itemdata")
     private List<MesOutApplyItem> Itemdata;
+
+    // 绌烘墭鐩樻暟閲�
+    @JsonProperty("EmptyCount")
+    @JSONField(name = "EmptyCount")
+    private List<MesOutApplyItem> EmptyCount;
 
     // 锛坰fc_shop_route_consume锛塵es涓厤鐩樿〃鍚�
     @Data
@@ -56,6 +61,17 @@
         @JsonProperty("ItemBarcode")
         @JSONField(name = "ItemBarcode")
         private String ItemBarcode;
+
+        // 鐗╂枡浜岀淮鐮�
+        @JsonProperty("stationAGV")
+        @JSONField(name = "stationAGV")
+        private String stationAGV;
+
+        //鎵樼洏鐮�
+        private String wmsBarcode;
+
+        //鏂欐灦鍙�
+        private String rackNumber;
     }
 
 }
diff --git a/src/main/java/com/zy/asrs/entity/mes/MesOutApply.java b/src/main/java/com/zy/asrs/entity/mes/MesOutApply.java
index 2c79729..230e26a 100644
--- a/src/main/java/com/zy/asrs/entity/mes/MesOutApply.java
+++ b/src/main/java/com/zy/asrs/entity/mes/MesOutApply.java
@@ -12,37 +12,66 @@
 @Data
 public class MesOutApply extends MesParent {
 
-//    // 浠诲姟缂栧彿
-//    private String taskno;
-//    // 浠诲姟鍚嶇О
-//    private String taskname;
-//    // 鐢熶骇璁㈠崟鍙�
-//    @JsonProperty("OrderNo")
-//    @JSONField(name = "OrderNo")
-//    private String OrderNo;
-    // 杩愯緭绫诲瀷锛屽瓧鍏稿��(wms_tranfs_type) 01锛氱珛搴撳嚭绌烘墭锛�02 绔嬪簱鍏ョ┖鎵橈紱03 绔嬪簱鍑烘瘺鍧紱 04 绔嬪簱鍥炴瘺鍧紱 05 绔嬪簱鍑烘垚鍝侊紱06 绔嬪簱鍏ユ垚鍝侊紱
+    // 浠诲姟缂栧彿
+    private String taskno;
+    // 浠诲姟鍚嶇О
+    private String taskname;
+    // 鐢熶骇璁㈠崟鍙�
+    @JsonProperty("OrderNo")
+    private String OrderNo;
+    // 杩愯緭绫诲瀷锛屽瓧鍏稿��(wms_tranfs_type) 06 瑁呴厤棰嗘枡锛�01锛氱┖鎵�
     @JsonProperty("TransType")
     @JSONField(name = "TransType")
     private String TransType;
-    // 闆朵欢缂栫爜
-    @JsonProperty("Itemno")
-    @JSONField(name = "Itemno")
-    private String Itemno;
-    // 鏁伴噺
-    @JsonProperty("Qty")
-    @JSONField(name = "Qty")
-    private Integer Qty;
-//    // 鐢熶骇绾跨紪鐮�
-//    @JsonProperty("ProductLineId")
-//    @JSONField(name = "ProductLineId")
-//    private String ProductLineId;
-//    // 宸ヤ綅缂栫爜
-//    @JsonProperty("StationId")
-//    @JSONField(name = "StationId")
-//    private String StationId;
-    // 鐗╂枡浜岀淮鐮�
-    @JsonProperty("ItemBarcode")
-    @JSONField(name = "ItemBarcode")
-    private List<String> ItemBarcode;
+    // 鐢熶骇绾跨紪鐮�
+    @JsonProperty("ProductLineId")
+    private String ProductLineId;
+    // 宸ヤ綅缂栫爜
+    @JsonProperty("StationId")
+    private String StationId;
+    // 褰撳墠宸ュ簭
+    @JsonProperty("CurProcess")
+    @JSONField(name = "CurProcess")
+    private String CurProcess;
+    // 閰嶇洏淇℃伅
+    @JsonProperty("Itemdata")
+    @JSONField(name = "Itemdata")
+    private List<MesOutApply.MesOutApplyItem> Itemdata;
+
+    // 绌烘墭鐩樻暟閲�
+    @JsonProperty("EmptyCount")
+    @JSONField(name = "EmptyCount")
+    private Integer EmptyCount;
+
+    // 锛坰fc_shop_route_consume锛塵es涓厤鐩樿〃鍚�
+    @Data
+    public static class MesOutApplyItem {
+
+        // 閰嶇洏鍙�
+        private String trayid;
+        // 闆朵欢缂栫爜
+        @JsonProperty("Itemno")
+        @JSONField(name = "Itemno")
+        private String Itemno;
+        // 鏁伴噺
+        @JsonProperty("Qty")
+        @JSONField(name = "Qty")
+        private Integer Qty;
+        // 鐗╂枡浜岀淮鐮�
+        @JsonProperty("ItemBarcode")
+        @JSONField(name = "ItemBarcode")
+        private String ItemBarcode;
+
+        // 鐗╂枡浜岀淮鐮�
+        @JsonProperty("stationAGV")
+        @JSONField(name = "stationAGV")
+        private String stationAGV;
+
+        //鎵樼洏鐮�
+        private String wmsBarcode;
+
+        //鏂欐灦鍙�
+        private String rackNumber;
+    }
 
 }
diff --git a/src/main/java/com/zy/asrs/entity/mes/TransInOutStationAllow.java b/src/main/java/com/zy/asrs/entity/mes/TransInOutStationAllow.java
index 73565ca..928d915 100644
--- a/src/main/java/com/zy/asrs/entity/mes/TransInOutStationAllow.java
+++ b/src/main/java/com/zy/asrs/entity/mes/TransInOutStationAllow.java
@@ -7,6 +7,22 @@
 @EqualsAndHashCode(callSuper = true)
 @Data
 public class TransInOutStationAllow extends TransParent {
+    //浠诲姟缂栧彿
+    private String taskno;
+    //浠诲姟鍚嶇О
+    private String taskname;
+    //AGV缂栧彿
+    private String AgvCode;
+    //杩愯緭绫诲瀷
+    private String TransType;
+    //鐢熶骇绾跨紪鍙�
+    private String ProductLineId;
+    //宸ヤ綅缂栧彿
+    private String StationId;
+
+    //浠诲姟绫诲瀷
+
+    private String taskType;
 
     // 鏄惁鍏佽锛孻 鍏佽锛汵锛屼笉鍏佽
     private String status;
diff --git a/src/main/java/com/zy/asrs/entity/mes/TransParent.java b/src/main/java/com/zy/asrs/entity/mes/TransParent.java
index fc44cf7..3f94b61 100644
--- a/src/main/java/com/zy/asrs/entity/mes/TransParent.java
+++ b/src/main/java/com/zy/asrs/entity/mes/TransParent.java
@@ -28,4 +28,12 @@
     @JsonProperty("StationId")
     @JSONField(name = "StationId")
     private String StationId;
+    // 浠诲姟绫诲瀷
+    @JsonProperty("TaskType")
+    @JSONField(name = "TaskType")
+    private String TaskType;
+
+    //璇锋眰绫诲瀷
+    private String method;
+
 }
diff --git a/src/main/java/com/zy/asrs/entity/mes/TransTask.java b/src/main/java/com/zy/asrs/entity/mes/TransTask.java
index 02204e0..14c53c6 100644
--- a/src/main/java/com/zy/asrs/entity/mes/TransTask.java
+++ b/src/main/java/com/zy/asrs/entity/mes/TransTask.java
@@ -58,10 +58,17 @@
     @JsonProperty("OperateType")
     @JSONField(name = "OperateType")
     private Integer OperateType;
+
     // 鎸囧畾AGV鍘傚锛�1 娴峰悍锛�2 鍗庢檽锛涘崕鏅撲笌娴峰悍AGV杩愯浇鑳藉姏涓嶅悓锛孧ES鍙寜闇�姹傛寚瀹�
-    @JsonProperty("AgvFactory")
-    @JSONField(name = "AgvFactory")
-    private Integer AgvFactory;
+//    @JsonProperty("AgvFactory")
+//    @JSONField(name = "AgvFactory")
+    private Integer agvFactory;
+
+    //鎵樼洏鐮�
+    private String barcode;
+
+    //鏂欐灦鍙�
+    private String rackNumber;
 
     // 鎵樼洏ID
     @JsonProperty("TuoPanId")
diff --git a/src/main/java/com/zy/asrs/entity/rcs/RcsReporterTask.java b/src/main/java/com/zy/asrs/entity/rcs/RcsReporterTask.java
index 3fc7170..57a3144 100644
--- a/src/main/java/com/zy/asrs/entity/rcs/RcsReporterTask.java
+++ b/src/main/java/com/zy/asrs/entity/rcs/RcsReporterTask.java
@@ -15,4 +15,7 @@
     private Integer currentSeq;
     // 璇︾粏淇℃伅
     private JSONObject extra;
+
+    //鍗庢檽AGV浠诲姟鐘舵�佸強璇锋眰
+    private String method;
 }
diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java
index 389b487..6c5a8f5 100644
--- a/src/main/java/com/zy/asrs/service/MobileService.java
+++ b/src/main/java/com/zy/asrs/service/MobileService.java
@@ -6,6 +6,7 @@
 import com.zy.asrs.entity.LocDetl;
 import com.zy.asrs.entity.OrderDetl;
 import com.zy.asrs.entity.param.*;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.Date;
 
@@ -107,4 +108,5 @@
      * @param userId 鐢ㄦ埛id
      */
     R callEmptyBinOutBound(String staNo, String locType, Long userId);
+
 }
diff --git a/src/main/java/com/zy/asrs/service/RcsService.java b/src/main/java/com/zy/asrs/service/RcsService.java
index 8fddd1c..29123b8 100644
--- a/src/main/java/com/zy/asrs/service/RcsService.java
+++ b/src/main/java/com/zy/asrs/service/RcsService.java
@@ -29,7 +29,7 @@
      * @param rcsFactory
      * @return
      */
-    int continueTask(RcsTaskContinue rcsTaskContinue, int rcsFactory);
+    int continueTask(Object rcsTaskContinue, int rcsFactory);
 
     /**
      * 2.1.4浠诲姟鍙栨秷鎺ュ彛
@@ -62,5 +62,5 @@
      * @param apply
      * @return
      */
-    JSONObject hxApplyInLine(TransParent apply);
+    RcsReturn hxApplyInLine(TransParent apply);
 }
diff --git a/src/main/java/com/zy/asrs/service/TaskService.java b/src/main/java/com/zy/asrs/service/TaskService.java
index e510b48..9d80237 100644
--- a/src/main/java/com/zy/asrs/service/TaskService.java
+++ b/src/main/java/com/zy/asrs/service/TaskService.java
@@ -14,4 +14,5 @@
     void pickWrkMast(String workNo, Long userId);
 
     List<Task> selectToBeCompleteData();
+
 }
diff --git a/src/main/java/com/zy/asrs/service/WorkService.java b/src/main/java/com/zy/asrs/service/WorkService.java
index 8d34c6e..835461b4 100644
--- a/src/main/java/com/zy/asrs/service/WorkService.java
+++ b/src/main/java/com/zy/asrs/service/WorkService.java
@@ -40,7 +40,7 @@
      */
     void stockOut(BasDevp staNo, List<LocDetlDto> locDetls, IoWorkType ioWorkType, Long userId);
 
-    void stockOut(BasDevp staNo, TaskDto taskDto, Long userId);
+    void stockOut(BasDevp staNo, TaskDto taskDto, Long userId,Integer ioPri);
 
     /**
      * 绌烘澘鍏ュ簱
@@ -58,7 +58,7 @@
      * @param param
      * @return
      */
-    public WrkMast emptyPlateOut(EmptyPlateOutParam param);
+    public WrkMast emptyPlateOut(EmptyPlateOutParam param,Integer ioPri);
 
     /**
      * 鐩樼偣鍑哄簱
diff --git a/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java
index de80492..9e42536 100644
--- a/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java
@@ -22,6 +22,7 @@
 import com.zy.common.service.CommonService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -90,6 +91,10 @@
 
     @Resource
     private MobileService mobileService;
+    @Autowired
+    private DocTypeService docTypeService;
+    @Autowired
+    private OrderService orderService;
 
 
     // region MES鎺ュ彛
@@ -124,7 +129,8 @@
         } else {
             throw new CoolException("鍚屾鐗╂枡淇℃伅锛岀敓鎴愬叆搴撳崟澶辫触");
         }
-
+        mesReturn.setSuccess("1");
+        mesReturn.setMessage("");
         return mesReturn;
     }
 
@@ -189,20 +195,6 @@
             if (mat == null) {
                 if (!matService.insert(newMat))
                     return -2;
-            } else {
-                JSONObject dbMemo = JSONObject.parseObject(mat.getMemo());
-                dbMemo.remove("OrderNo");
-                dbMemo.remove("qty");
-                dbMemo.remove("ItemBarcode");
-                JSONObject newMemo = JSONObject.parseObject(newMat.getMemo());
-                newMemo.remove("OrderNo");
-                newMemo.remove("qty");
-                dbMemo.remove("ItemBarcode");
-                if (!dbMemo.equals(newMemo)) {
-                    newMat.setId(mat.getId());
-                    if (!matService.updateById(newMat))
-                        return -2;
-                }
             }
         } else {
             return -1;
@@ -214,13 +206,12 @@
     /**
      * 鐗╂枡鍚屾鍏ュ簱鍗曪紝鎸塐rderNo鐢熸垚澶氫釜璁㈠崟
      *
-     *
      * @param matRecvForm
      * @return
      */
-    public int inBoundOrder_List(MesMatRecvForm matRecvForm){
+    public int inBoundOrder_List(MesMatRecvForm matRecvForm) {
 
-        long docType = 4;   // docType鏍规嵁搴撶被鍨嬬‘瀹�
+        long docType = 1;   // docType鏍规嵁搴撶被鍨嬬‘瀹�  鏉ユ枡鐢宠鍗�
         long settle = 1;
         Date now = new Date();
 
@@ -232,8 +223,12 @@
 
             // 鏍¢獙璁㈠崟鏄惁閲嶅
             OrderPakin order = orderPakinService.selectByNo(entry.getKey());
-            if (order != null && !StringUtils.isEmpty(order.getOrderNo())) {
-                return -1;
+            // 濡傛灉鍗曟嵁涓嶅瓨鍦ㄥ垯娣诲姞锛涘鏋滃崟鎹瓨鍦紝浣滀笟涓棤娉曚慨鏀癸紝鍙嶄箣鍒欎慨鏀瑰崟鎹�
+            if (!Cools.isEmpty(order)) {
+                if (order.getSettle() > 1L) {
+                    throw new CoolException(entry.getKey() + "姝e湪鍑哄簱锛屾棤娉曚慨鏀瑰崟鎹�");
+                }
+                orderPakinService.remove(order.getId());
             }
 
             // 鐢熸垚璁㈠崟
@@ -243,52 +238,56 @@
             newMemo.put("operuser", matRecvForm.getOperuser());
             newMemo.put("itemdata", list);
 
+
+
+            // 鐢熸垚璁㈠崟
             OrderPakin orderPakin = new OrderPakin();
             orderPakin.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
             orderPakin.setOrderNo(entry.getKey());
             orderPakin.setOrderTime(com.core.common.DateUtils.convert(now));
             orderPakin.setDocType(docType);
-            orderPakin.setSettle(settle);
+            orderPakin.setSettle(1L);
             orderPakin.setStatus(1);
             orderPakin.setCreateBy(defaultUserId);
             orderPakin.setCreateTime(now);
             orderPakin.setUpdateBy(defaultUserId);
             orderPakin.setUpdateTime(now);
-            orderPakin.setMemo(newMemo.toJSONString());  //涓洪鏂欏叆搴撳畬鎴愬弽棣堜繚瀛�   JSONObject.toJSONString(matRecvForm)
+            orderPakin.setMemo(JSONObject.toJSONString(newMemo));  //涓哄嚭搴撳畬鎴愬弽棣堜繚瀛�
             orderPakin.setPakinPakoutStatus(1);
-            if (!orderPakinService.insert(orderPakin)) {
-                log.error("MES淇濆瓨鍏ュ簱璁㈠崟涓绘。澶辫触");
-                throw new CoolException("淇濆瓨鍏ュ簱璁㈠崟涓绘。澶辫触");
-            }
+            orderPakinService.insert(orderPakin);
+            if (list != null && !list.isEmpty()) {
+                for (MesMatInfo mesMatInfo : list) {
 
-            // 鐢熸垚鏄庣粏
-            for (MesMatInfo mesMat : list) {
-                Mat mat = matService.selectByMatnr(mesMat.getItemNo());
-                OrderDetlPakin orderDetlPakin = new OrderDetlPakin();
-                orderDetlPakin.setOrderId(orderPakin.getId());
-                orderDetlPakin.setOrderNo(orderPakin.getOrderNo());
-                orderDetlPakin.setAnfme(Double.valueOf(mesMat.getQty()));
-                orderDetlPakin.setQty(0.0);
-                orderDetlPakin.setMatnr(mat.getMatnr());
-                orderDetlPakin.setMaktx(mat.getMaktx());
-                orderDetlPakin.setSpecs(mat.getSpecs());
-                orderDetlPakin.setModel(mat.getModel());
-                orderDetlPakin.setStandby1(JSONObject.toJSONString(mesMat.getItemBarcode()));   // 闆朵欢浜岀淮鐮�
-                orderDetlPakin.setStandby2("1");  //淇濆瓨榻愬鎬ф鏌ユ爣璇嗭紝1 妫�鏌ワ紱0 涓嶆鏌ワ紱
-                orderDetlPakin.setCreateBy(defaultUserId);
-                orderDetlPakin.setCreateTime(now);
-                orderDetlPakin.setUpdateBy(defaultUserId);
-                orderDetlPakin.setUpdateTime(now);
-                orderDetlPakin.setStatus(1);
-                orderDetlPakin.setPakinPakoutStatus(1);
-                if (!orderDetlPakinService.insert(orderDetlPakin)) {
-                    log.error("MES淇濆瓨鍏ュ簱璁㈠崟鏄庣粏妗eけ璐�1");
-                    throw new CoolException("淇濆瓨鍏ュ簱璁㈠崟鏄庣粏妗eけ璐�1");
+                    // 鐢熸垚鏄庣粏
+                    Mat mat = matService.selectByMatnr(mesMatInfo.getItemNo());
+                    if(Cools.isEmpty(mat)){
+                        log.error("璇ョ墿鏂欑紪鍙风珛搴撴病鏈�="+mesMatInfo.getItemNo());
+                        continue;
+                    }
+                    OrderDetlPakin orderDetlPakin = new OrderDetlPakin();
+                    orderDetlPakin.setOrderId(orderPakin.getId());
+                    orderDetlPakin.setOrderNo(orderPakin.getOrderNo());
+                    orderDetlPakin.setAnfme(Double.valueOf(mesMatInfo.getQty()));
+                    orderDetlPakin.setQty(0.0);
+                    orderDetlPakin.setMatnr(mat.getMatnr());
+                    orderDetlPakin.setMaktx(mat.getMaktx());
+                    orderDetlPakin.setSpecs(mat.getSpecs());
+                    orderDetlPakin.setModel(mat.getModel());
+//                    orderDetlPakin.setThreeCode(mesOutApplyItem.getItemBarcode());
+//                    orderDetlPakin.setStandby1(mesOutApplyItem.getTrayid());   //淇濆瓨閰嶇洏鍙凤紝闈炴墭鐩樺彿
+                    orderDetlPakin.setStandby2("0");  //淇濆瓨榻愬鎬ф鏌ユ爣璇嗭紝1 妫�鏌ワ紱0 涓嶆鏌ワ紱
+                    orderDetlPakin.setCreateBy(defaultUserId);
+                    orderDetlPakin.setCreateTime(now);
+                    orderDetlPakin.setUpdateBy(defaultUserId);
+                    orderDetlPakin.setUpdateTime(now);
+                    orderDetlPakin.setStatus(1);
+                    orderDetlPakin.setPakinPakoutStatus(1);
+                    orderDetlPakinService.insert(orderDetlPakin);
                 }
             }
         }
-
         return 1;
+
     }
 
     /**
@@ -348,9 +347,9 @@
 
             String url = MES_URL + "MaterialReceiptAndReturn";
             String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(mesRecvFeedback));
-            if (!StringUtils.isEmpty(response) && response.contains("Success")){
+            if (!StringUtils.isEmpty(response) && response.contains("Success")) {
                 MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
-                if("1".equals(mesReturn.getSuccess())) {
+                if ("1".equals(mesReturn.getSuccess())) {
                     return 1;
                 }
             }
@@ -367,137 +366,137 @@
      * @param mesOutApply
      * @return 1 鎴愬姛锛�-1 璁㈠崟閲嶅锛�
      */
-    public int outBoundOrder(MesOutApply mesOutApply){
+    public int outBoundOrder(MesOutApply mesOutApply) {
 
-        // 绌烘墭鍑哄簱
-        if (StringUtils.isEmpty(mesOutApply.getOrderNo()) && "01".equals(mesOutApply.getTransType())) {
-            // 鐢熸垚绌烘墭鍑哄簱浠诲姟
-            mobileService.callEmptyBinOutBound(WMS_TRANS_START_STATION_1,"1",defaultUserId);
-
-            try {
-                if (!StringUtils.isEmpty(mesOutApply.getTaskno()) && !StringUtils.isEmpty(mesOutApply.getStationId())) {
-                    TransTask transTask = new TransTask();
-                    transTask.setTaskno(mesOutApply.getTaskno());
-                    transTask.setTaskname(mesOutApply.getTaskname());
-                    transTask.setOrderNo(mesOutApply.getOrderNo());
-                    transTask.setTransType(mesOutApply.getTransType());
-                    transTask.setCurStationId(WMS_TRANS_START_STATION_1);
-                    transTask.setNextProcess(mesOutApply.getProductLineId());
-                    transTask.setNextStationId(mesOutApply.getStationId());
-                    transTask.setItemno(WMS_ZPALLET_ID);  // 鍥哄畾涓虹┖鎵樼殑缂栫爜
-                    transTask.setQty(1);    // 绌烘墭鍙嚭1涓�
-                    transTask.setProductLineId(mesOutApply.getProductLineId());
-                    transTask.setOperateType(1);
-                    transTask.setAgvFactory(1);
-                    JSONObject sendAgvTask = submitTask(transTask);
-                    if (!"1".equals(sendAgvTask.getString("Success"))) {
-                        log.error("鍑哄簱涓嬪彂agv杩愯緭浠诲姟澶辫触锛歿}", JSONObject.toJSONString(transTask));
-                    }
-                }
-            } catch (Exception e) {
-                log.error("涓嬪彂AGV杩愯緭浠诲姟澶辫触", e);
-            }
-
-            return 1;
-        } else {    // 姣涘澂锛堢墿鏂欙級鍑哄簱
-            // docType鏍规嵁搴撶被鍨嬬‘瀹�
-            long docType = 7;
-            long settle = 1;
-
-            // 鏍¢獙璁㈠崟鏄惁閲嶅
-            OrderPakout order = orderPakoutService.selectByNo(mesOutApply.getOrderNo());
-            if (order != null && !StringUtils.isEmpty(order.getOrderNo())) {
-                log.error("鍑哄簱璁㈠崟鍙烽噸澶嶏細{}",mesOutApply.getOrderNo());
-                return -1;
-            }
-
-            // 鐢熸垚璁㈠崟
-            Date now = new Date();
-            OrderPakout orderPakout = new OrderPakout();
-            orderPakout.setUuid( String.valueOf(snowflakeIdWorker.nextId()));
-            orderPakout.setOrderNo(mesOutApply.getOrderNo());
-            orderPakout.setOrderTime(com.core.common.DateUtils.convert(now));
-            orderPakout.setDocType(docType);
-            orderPakout.setSettle(settle);
-            orderPakout.setStatus(1);
-            orderPakout.setCreateBy(defaultUserId);
-            orderPakout.setCreateTime(now);
-            orderPakout.setUpdateBy(defaultUserId);
-            orderPakout.setUpdateTime(now);
-            orderPakout.setMemo(JSONObject.toJSONString(mesOutApply));
-            orderPakout.setPakinPakoutStatus(2);
-            if (!orderPakoutService.insert(orderPakout)) {
-                log.error("MES淇濆瓨鍑哄簱璁㈠崟涓绘。澶辫触");
-                throw new CoolException("淇濆瓨鍑哄簱璁㈠崟涓绘。澶辫触");
-            }
-
-            // 鐢熸垚鏄庣粏
-            Mat mat = matService.selectByMatnr(mesOutApply.getItemno());
-            OrderDetlPakout orderDetlPakout = new OrderDetlPakout();
-            orderDetlPakout.setOrderId(orderPakout.getId());
-            orderDetlPakout.setOrderNo(orderPakout.getOrderNo());
-            orderDetlPakout.setAnfme(Double.valueOf(mesOutApply.getQty()));
-            orderDetlPakout.setQty(0.0);
-            orderDetlPakout.setMatnr(mat.getMatnr());
-            orderDetlPakout.setMaktx(mat.getMaktx());
-            orderDetlPakout.setSpecs(mat.getSpecs());
-            orderDetlPakout.setModel(mat.getModel());
-            orderDetlPakout.setStandby1(barCodeListToStr(mesOutApply.getItemBarcode()));
-            orderDetlPakout.setCreateBy(defaultUserId);
-            orderDetlPakout.setCreateTime(now);
-            orderDetlPakout.setUpdateBy(defaultUserId);
-            orderDetlPakout.setUpdateTime(now);
-            orderDetlPakout.setStatus(1);
-            orderDetlPakout.setPakinPakoutStatus(2);
-            if (!orderDetlPakoutService.insert(orderDetlPakout)) {
-                log.error("MES淇濆瓨鍑哄簱璁㈠崟鏄庣粏妗eけ璐�");
-                throw new CoolException("淇濆瓨鍑哄簱璁㈠崟鏄庣粏妗eけ璐�");
-            }
-
-            // TODO锛氳嫢AGV鍜岃緭閫佺嚎娌℃湁瀹夊叏浜や簰锛屽垯瑕佷繚璇佺珛搴撳嚭璐у畬鎴愬悗鍐嶅懠鍙獳GV銆�
-            // 绔嬪簱鐢熸垚璁㈠崟鍚庯紝鑷姩璋冨害AGV杩愰�佸埌绔欑偣锛岀洰鍓嶅鎵樼敓鎴愬涓��
-            try {
-                if (!StringUtils.isEmpty(mesOutApply.getTaskno()) && !StringUtils.isEmpty(mesOutApply.getStationId())) {
-                    // 鎸夐浂浠朵簩缁寸爜鏌ヨ鏈夊嚑涓墭锛屽鎵樼敓鎴愬涓换鍔★紝姣忔墭瀵瑰簲闆朵欢浜岀淮鐮�
-                    String barCode = barCodeListToStr(mesOutApply.getItemBarcode());
-                    EntityWrapper<MatItemBarcode> matItemBarcodeEntityWrapper = new EntityWrapper<>();
-                    matItemBarcodeEntityWrapper.in("item_barcode", barCode);
-                    List<MatItemBarcode> barcodes = matItemBarcodeMapper.selectList(matItemBarcodeEntityWrapper);
-                     if (barcodes != null) {
-                        Map<String, List<MatItemBarcode>> map = barcodes.stream().collect(Collectors.groupingBy(MatItemBarcode::getZapplet));
-                        for (Map.Entry<String, List<MatItemBarcode>> entry : map.entrySet()) {
-                            List<MatItemBarcode> list = entry.getValue();
-                            List<String> codes = new ArrayList<>();
-                            for (MatItemBarcode zapllet : list) {
-                                codes.add(zapllet.getItemBarcode());
-                            }
-
-                            TransTask transTask = new TransTask();
-                            transTask.setTaskno(mesOutApply.getTaskno());
-                            transTask.setTaskname(mesOutApply.getTaskname());
-                            transTask.setOrderNo(mesOutApply.getOrderNo());
-                            transTask.setTransType(mesOutApply.getTransType());
-                            transTask.setCurStationId(WMS_TRANS_START_STATION_3);
-                            transTask.setNextProcess(mesOutApply.getProductLineId());
-                            transTask.setNextStationId(mesOutApply.getStationId());
-                            transTask.setItemno(mesOutApply.getItemno());
-                            transTask.setQty(list.size());
-                            transTask.setProductLineId(mesOutApply.getProductLineId());
-                            transTask.setItemBarcode(codes);
-                            transTask.setTuoPanId(entry.getKey());
-                            transTask.setOperateType(1);
-                            transTask.setAgvFactory(1);
-                            JSONObject sendAgvTask = submitTask(transTask);
-                            if (!"1".equals(sendAgvTask.getString("Success"))) {
-                                log.error("鍑哄簱涓嬪彂agv杩愯緭浠诲姟澶辫触", JSONObject.toJSONString(transTask));
-                            }
-                        }
-                    }
-                }
-            } catch (Exception e) {
-                log.error("涓嬪彂AGV杩愯緭浠诲姟澶辫触", e);
-            }
-        }
+//        // 绌烘墭鍑哄簱
+//        if (StringUtils.isEmpty(mesOutApply.getOrderNo()) && "01".equals(mesOutApply.getTransType())) {
+//            // 鐢熸垚绌烘墭鍑哄簱浠诲姟
+//            mobileService.callEmptyBinOutBound(WMS_TRANS_START_STATION_1, "1", defaultUserId);
+//
+//            try {
+//                if (!StringUtils.isEmpty(mesOutApply.getTaskno()) && !StringUtils.isEmpty(mesOutApply.getStationId())) {
+//                    TransTask transTask = new TransTask();
+//                    transTask.setTaskno(mesOutApply.getTaskno());
+//                    transTask.setTaskname(mesOutApply.getTaskname());
+//                    transTask.setOrderNo(mesOutApply.getOrderNo());
+//                    transTask.setTransType(mesOutApply.getTransType());
+//                    transTask.setCurStationId(WMS_TRANS_START_STATION_1);
+//                    transTask.setNextProcess(mesOutApply.getProductLineId());
+//                    transTask.setNextStationId(mesOutApply.getStationId());
+//                    transTask.setItemno(WMS_ZPALLET_ID);  // 鍥哄畾涓虹┖鎵樼殑缂栫爜
+//                    transTask.setQty(1);    // 绌烘墭鍙嚭1涓�
+//                    transTask.setProductLineId(mesOutApply.getProductLineId());
+//                    transTask.setOperateType(1);
+//                    transTask.setAgvFactory(1);
+//                    JSONObject sendAgvTask = submitTask(transTask);
+//                    if (!"1".equals(sendAgvTask.getString("Success"))) {
+//                        log.error("鍑哄簱涓嬪彂agv杩愯緭浠诲姟澶辫触锛歿}", JSONObject.toJSONString(transTask));
+//                    }
+//                }
+//            } catch (Exception e) {
+//                log.error("涓嬪彂AGV杩愯緭浠诲姟澶辫触", e);
+//            }
+//
+//            return 1;
+//        } else {    // 姣涘澂锛堢墿鏂欙級鍑哄簱
+//            // docType鏍规嵁搴撶被鍨嬬‘瀹�
+//            long docType = 7;
+//            long settle = 1;
+//
+//            // 鏍¢獙璁㈠崟鏄惁閲嶅
+//            OrderPakout order = orderPakoutService.selectByNo(mesOutApply.getOrderNo());
+//            if (order != null && !StringUtils.isEmpty(order.getOrderNo())) {
+//                log.error("鍑哄簱璁㈠崟鍙烽噸澶嶏細{}", mesOutApply.getOrderNo());
+//                return -1;
+//            }
+//
+//            // 鐢熸垚璁㈠崟
+//            Date now = new Date();
+//            OrderPakout orderPakout = new OrderPakout();
+//            orderPakout.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
+//            orderPakout.setOrderNo(mesOutApply.getOrderNo());
+//            orderPakout.setOrderTime(com.core.common.DateUtils.convert(now));
+//            orderPakout.setDocType(docType);
+//            orderPakout.setSettle(settle);
+//            orderPakout.setStatus(1);
+//            orderPakout.setCreateBy(defaultUserId);
+//            orderPakout.setCreateTime(now);
+//            orderPakout.setUpdateBy(defaultUserId);
+//            orderPakout.setUpdateTime(now);
+//            orderPakout.setMemo(JSONObject.toJSONString(mesOutApply));
+//            orderPakout.setPakinPakoutStatus(2);
+//            if (!orderPakoutService.insert(orderPakout)) {
+//                log.error("MES淇濆瓨鍑哄簱璁㈠崟涓绘。澶辫触");
+//                throw new CoolException("淇濆瓨鍑哄簱璁㈠崟涓绘。澶辫触");
+//            }
+//
+//            // 鐢熸垚鏄庣粏
+//            Mat mat = matService.selectByMatnr(mesOutApply.getItemno());
+//            OrderDetlPakout orderDetlPakout = new OrderDetlPakout();
+//            orderDetlPakout.setOrderId(orderPakout.getId());
+//            orderDetlPakout.setOrderNo(orderPakout.getOrderNo());
+//            orderDetlPakout.setAnfme(Double.valueOf(mesOutApply.getQty()));
+//            orderDetlPakout.setQty(0.0);
+//            orderDetlPakout.setMatnr(mat.getMatnr());
+//            orderDetlPakout.setMaktx(mat.getMaktx());
+//            orderDetlPakout.setSpecs(mat.getSpecs());
+//            orderDetlPakout.setModel(mat.getModel());
+//            orderDetlPakout.setStandby1(barCodeListToStr(mesOutApply.getItemBarcode()));
+//            orderDetlPakout.setCreateBy(defaultUserId);
+//            orderDetlPakout.setCreateTime(now);
+//            orderDetlPakout.setUpdateBy(defaultUserId);
+//            orderDetlPakout.setUpdateTime(now);
+//            orderDetlPakout.setStatus(1);
+//            orderDetlPakout.setPakinPakoutStatus(2);
+//            if (!orderDetlPakoutService.insert(orderDetlPakout)) {
+//                log.error("MES淇濆瓨鍑哄簱璁㈠崟鏄庣粏妗eけ璐�");
+//                throw new CoolException("淇濆瓨鍑哄簱璁㈠崟鏄庣粏妗eけ璐�");
+//            }
+//
+//            // TODO锛氳嫢AGV鍜岃緭閫佺嚎娌℃湁瀹夊叏浜や簰锛屽垯瑕佷繚璇佺珛搴撳嚭璐у畬鎴愬悗鍐嶅懠鍙獳GV銆�
+//            // 绔嬪簱鐢熸垚璁㈠崟鍚庯紝鑷姩璋冨害AGV杩愰�佸埌绔欑偣锛岀洰鍓嶅鎵樼敓鎴愬涓��
+//            try {
+//                if (!StringUtils.isEmpty(mesOutApply.getTaskno()) && !StringUtils.isEmpty(mesOutApply.getStationId())) {
+//                    // 鎸夐浂浠朵簩缁寸爜鏌ヨ鏈夊嚑涓墭锛屽鎵樼敓鎴愬涓换鍔★紝姣忔墭瀵瑰簲闆朵欢浜岀淮鐮�
+//                    String barCode = barCodeListToStr(mesOutApply.getItemBarcode());
+//                    EntityWrapper<MatItemBarcode> matItemBarcodeEntityWrapper = new EntityWrapper<>();
+//                    matItemBarcodeEntityWrapper.in("item_barcode", barCode);
+//                    List<MatItemBarcode> barcodes = matItemBarcodeMapper.selectList(matItemBarcodeEntityWrapper);
+//                    if (barcodes != null) {
+//                        Map<String, List<MatItemBarcode>> map = barcodes.stream().collect(Collectors.groupingBy(MatItemBarcode::getZapplet));
+//                        for (Map.Entry<String, List<MatItemBarcode>> entry : map.entrySet()) {
+//                            List<MatItemBarcode> list = entry.getValue();
+//                            List<String> codes = new ArrayList<>();
+//                            for (MatItemBarcode zapllet : list) {
+//                                codes.add(zapllet.getItemBarcode());
+//                            }
+//
+//                            TransTask transTask = new TransTask();
+//                            transTask.setTaskno(mesOutApply.getTaskno());
+//                            transTask.setTaskname(mesOutApply.getTaskname());
+//                            transTask.setOrderNo(mesOutApply.getOrderNo());
+//                            transTask.setTransType(mesOutApply.getTransType());
+//                            transTask.setCurStationId(WMS_TRANS_START_STATION_3);
+//                            transTask.setNextProcess(mesOutApply.getProductLineId());
+//                            transTask.setNextStationId(mesOutApply.getStationId());
+//                            transTask.setItemno(mesOutApply.getItemno());
+//                            transTask.setQty(list.size());
+//                            transTask.setProductLineId(mesOutApply.getProductLineId());
+//                            transTask.setItemBarcode(codes);
+//                            transTask.setTuoPanId(entry.getKey());
+//                            transTask.setOperateType(1);
+//                            transTask.setAgvFactory(1);
+//                            JSONObject sendAgvTask = submitTask(transTask);
+//                            if (!"1".equals(sendAgvTask.getString("Success"))) {
+//                                log.error("鍑哄簱涓嬪彂agv杩愯緭浠诲姟澶辫触", JSONObject.toJSONString(transTask));
+//                            }
+//                        }
+//                    }
+//                }
+//            } catch (Exception e) {
+//                log.error("涓嬪彂AGV杩愯緭浠诲姟澶辫触", e);
+//            }
+//        }
 
         return 1;
     }
@@ -509,33 +508,33 @@
      * @param mesInApply
      */
     @Transactional
-    public int inBoundOrder(MesInApply mesInApply){
+    public int inBoundOrder(MesInApply mesInApply) {
 
         // 绌烘墭鍥炲簱
         if (StringUtils.isEmpty(mesInApply.getOrderNo()) && StringUtils.isEmpty(mesInApply.getItemno())) {
-                if (!StringUtils.isEmpty(mesInApply.getTaskno()) && !StringUtils.isEmpty(mesInApply.getStationID())) {
-                    TransTask transTask = new TransTask();
-                    transTask.setTaskno(mesInApply.getTaskno());
-                    transTask.setTaskname(mesInApply.getTaskname());
-                    transTask.setOrderNo(mesInApply.getOrderNo());
-                    transTask.setTransType(mesInApply.getTransType());
-                    transTask.setCurProcess(mesInApply.getProductLineId());
-                    transTask.setCurStationId(mesInApply.getStationID());
-                    transTask.setNextStationId(WMS_TRANS_START_STATION_2);
-                    transTask.setItemno(WMS_ZPALLET_ID);  // 鍥哄畾涓虹┖鎵樼殑缂栫爜
-                    transTask.setQty(1);    // 绌烘墭鍙洖1涓�
-                    transTask.setProductLineId(mesInApply.getProductLineId());
-                    transTask.setOperateType(1);
-                    transTask.setAgvFactory(1);
-                    JSONObject sendAgvTask = submitTask(transTask);
-                    if (!"1".equals(sendAgvTask.getString("Success"))) {
-                        log.error("鍑哄簱涓嬪彂agv杩愯緭浠诲姟澶辫触,{}", JSONObject.toJSONString(transTask));
-                        return 2;
-                    }
-                } else {
-                    log.error("鏃犱换鍔″彿锛歿}锛屾垨鏃犵墿鏂欑紪鐮�:{}",mesInApply.getTaskno(),mesInApply.getItemno() );
+            if (!StringUtils.isEmpty(mesInApply.getTaskno()) && !StringUtils.isEmpty(mesInApply.getStationID())) {
+                TransTask transTask = new TransTask();
+                transTask.setTaskno(mesInApply.getTaskno());
+                transTask.setTaskname(mesInApply.getTaskname());
+                transTask.setOrderNo(mesInApply.getOrderNo());
+                transTask.setTransType(mesInApply.getTransType());
+                transTask.setCurProcess(mesInApply.getProductLineId());
+                transTask.setCurStationId(mesInApply.getStationID());
+                transTask.setNextStationId(WMS_TRANS_START_STATION_2);
+                transTask.setItemno(WMS_ZPALLET_ID);  // 鍥哄畾涓虹┖鎵樼殑缂栫爜
+                transTask.setQty(1);    // 绌烘墭鍙洖1涓�
+                transTask.setProductLineId(mesInApply.getProductLineId());
+                transTask.setOperateType(1);
+                transTask.setAgvFactory(1);
+                JSONObject sendAgvTask = submitTask(transTask);
+                if (!"1".equals(sendAgvTask.getString("Success"))) {
+                    log.error("鍑哄簱涓嬪彂agv杩愯緭浠诲姟澶辫触,{}", JSONObject.toJSONString(transTask));
                     return 2;
                 }
+            } else {
+                log.error("鏃犱换鍔″彿锛歿}锛屾垨鏃犵墿鏂欑紪鐮�:{}", mesInApply.getTaskno(), mesInApply.getItemno());
+                return 2;
+            }
 
             return 1;
         } else {    // 姣涘澂銆佹垚鍝佸洖搴�
@@ -716,9 +715,9 @@
 
             String url = MES_URL + "issueComplete";
             String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(mesOutFeedback));
-            if (!StringUtils.isEmpty(response) && response.contains("Success")){
+            if (!StringUtils.isEmpty(response) && response.contains("Success")) {
                 MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
-                if("1".equals(mesReturn.getSuccess())) {
+                if ("1".equals(mesReturn.getSuccess())) {
                     success = 1;
                 }
             }
@@ -759,9 +758,9 @@
 
             String url = MES_URL + "loadComplete";
             String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(result));
-            if (!StringUtils.isEmpty(response) && response.contains("Success")){
+            if (!StringUtils.isEmpty(response) && response.contains("Success")) {
                 MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
-                if("1".equals(mesReturn.getSuccess())) {
+                if ("1".equals(mesReturn.getSuccess())) {
                     success = 1;
                 }
             }
@@ -819,9 +818,9 @@
 
                     String url = MES_URL + "loadComplete";
                     String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(result));
-                    if (!StringUtils.isEmpty(response) && response.contains("Success")){
+                    if (!StringUtils.isEmpty(response) && response.contains("Success")) {
                         MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
-                        if("1".equals(mesReturn.getSuccess())) {
+                        if ("1".equals(mesReturn.getSuccess())) {
                             success++;
                         }
                     }
@@ -885,9 +884,9 @@
 
                     String url = MES_URL + "issueComplete";
                     String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(mesOutFeedback));
-                    if (!StringUtils.isEmpty(response) && response.contains("Success")){
+                    if (!StringUtils.isEmpty(response) && response.contains("Success")) {
                         MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
-                        if("1".equals(mesReturn.getSuccess())) {
+                        if ("1".equals(mesReturn.getSuccess())) {
                             success++;
                         }
                     }
@@ -934,67 +933,144 @@
      * @param mesCallOutApply
      * @return
      */
-    public int callOutBoundOrder(MesCallOutApply mesCallOutApply){
-
-        // docType鏍规嵁搴撶被鍨嬬‘瀹�
-        long docType = 7;
-        long settle = 1;
-
-        // 鏍¢獙璁㈠崟鏄惁閲嶅
-        OrderPakout order = orderPakoutService.selectByNo(mesCallOutApply.getOrderNo());
-        if (order != null && !StringUtils.isEmpty(order.getOrderNo())) {
-            return -1;
+    public int callOutBoundOrder(MesCallOutApply mesCallOutApply) {
+        DocType docType = docTypeService.selectOne(new EntityWrapper<DocType>().eq("doc_name", mesCallOutApply.getTransType()));
+        if (docType == null) {
+            return 0;
         }
+        //鐢熸垚鍑哄簱鍗�
+        if (docType.getPakout() == 1) {
+            long settle = 1;
 
-        // 鐢熸垚璁㈠崟
-        Date now = new Date();
-        OrderPakout orderPakout = new OrderPakout();
-        orderPakout.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
-        orderPakout.setOrderNo(mesCallOutApply.getOrderNo());
-        orderPakout.setOrderTime(com.core.common.DateUtils.convert(now));
-        orderPakout.setDocType(docType);
-        orderPakout.setSettle(settle);
-        orderPakout.setStatus(1);
-        orderPakout.setCreateBy(defaultUserId);
-        orderPakout.setCreateTime(now);
-        orderPakout.setUpdateBy(defaultUserId);
-        orderPakout.setUpdateTime(now);
-        orderPakout.setMemo(JSONObject.toJSONString(mesCallOutApply));
-        orderPakout.setPakinPakoutStatus(2);
-        if (!orderPakoutService.insert(orderPakout)) {
-            log.error("MES淇濆瓨鍑哄簱璁㈠崟锛堝彨鏂欙級涓绘。澶辫触");
-            throw new CoolException("淇濆瓨鍑哄簱璁㈠崟锛堝彨鏂欙級涓绘。澶辫触");
-        }
+            // 鏍¢獙璁㈠崟鏄惁閲嶅
+            OrderPakout order = orderPakoutService.selectByNo(mesCallOutApply.getOrderNo());
+            // 濡傛灉鍗曟嵁涓嶅瓨鍦ㄥ垯娣诲姞锛涘鏋滃崟鎹瓨鍦紝浣滀笟涓棤娉曚慨鏀癸紝鍙嶄箣鍒欎慨鏀瑰崟鎹�
+            if (!Cools.isEmpty(order)) {
+                if (order.getSettle() > 1L) {
+                    throw new CoolException(mesCallOutApply.getOrderNo() + "姝e湪鍑哄簱锛屾棤娉曚慨鏀瑰崟鎹�");
+                }
+                orderPakoutService.remove(order.getId());
+            }
 
-        // 鐢熸垚鏄庣粏
-        if (mesCallOutApply.getItemdata() != null && !mesCallOutApply.getItemdata().isEmpty()) {
-            for (MesCallOutApply.MesOutApplyItem mesOutApplyItem : mesCallOutApply.getItemdata()) {
-                Mat mat = matService.selectByMatnr(mesOutApplyItem.getItemno());
-                OrderDetlPakout orderDetlPakout = new OrderDetlPakout();
-                orderDetlPakout.setOrderId(orderPakout.getId());
-                orderDetlPakout.setOrderNo(orderPakout.getOrderNo());
-                orderDetlPakout.setAnfme(Double.valueOf(mesOutApplyItem.getQty()));
-                orderDetlPakout.setQty(0.0);
-                orderDetlPakout.setMatnr(mat.getMatnr());
-                orderDetlPakout.setMaktx(mat.getMaktx());
-                orderDetlPakout.setSpecs(mat.getSpecs());
-                orderDetlPakout.setModel(mat.getModel());
-                orderDetlPakout.setThreeCode(mesOutApplyItem.getItemBarcode());
-                orderDetlPakout.setStandby1(mesOutApplyItem.getTrayid());   //淇濆瓨閰嶇洏鍙凤紝闈炴墭鐩樺彿
-                orderDetlPakout.setCreateBy(defaultUserId);
-                orderDetlPakout.setCreateTime(now);
-                orderDetlPakout.setUpdateBy(defaultUserId);
-                orderDetlPakout.setUpdateTime(now);
-                orderDetlPakout.setStatus(1);
-                orderDetlPakout.setPakinPakoutStatus(2);
-                if (!orderDetlPakoutService.insert(orderDetlPakout)) {
-                    log.error("MES淇濆瓨鍑哄簱璁㈠崟锛堝彨鏂欙級鏄庣粏妗eけ璐�");
-                    throw new CoolException("淇濆瓨鍑哄簱璁㈠崟锛堝彨鏂欙級鏄庣粏妗eけ璐�");
+            // 鐢熸垚璁㈠崟
+            Date now = new Date();
+            OrderPakout orderPakout = new OrderPakout();
+            orderPakout.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
+            orderPakout.setOrderNo(mesCallOutApply.getOrderNo());
+            orderPakout.setOrderTime(com.core.common.DateUtils.convert(now));
+            orderPakout.setDocType(docType.getDocId());
+            orderPakout.setSettle(settle);
+            orderPakout.setStatus(1);
+            orderPakout.setCreateBy(defaultUserId);
+            orderPakout.setCreateTime(now);
+            orderPakout.setUpdateBy(defaultUserId);
+            orderPakout.setUpdateTime(now);
+            orderPakout.setMemo(JSONObject.toJSONString(mesCallOutApply));
+            orderPakout.setPakinPakoutStatus(2);
+            if (!orderPakoutService.insert(orderPakout)) {
+                log.error("MES淇濆瓨鍑哄簱璁㈠崟锛堝彨鏂欙級涓绘。澶辫触");
+                throw new CoolException("淇濆瓨鍑哄簱璁㈠崟锛堝彨鏂欙級涓绘。澶辫触");
+            }
+            Set<String> set = new HashSet<>();
+            // 鐢熸垚鏄庣粏
+            if (mesCallOutApply.getItemdata() != null && !mesCallOutApply.getItemdata().isEmpty()) {
+                for (MesCallOutApply.MesOutApplyItem mesOutApplyItem : mesCallOutApply.getItemdata()) {
+
+                    set.add(mesOutApplyItem.getTrayid());
+                    Mat mat = matService.selectByMatnr(mesOutApplyItem.getItemno());
+                    OrderDetlPakout orderDetlPakout = new OrderDetlPakout();
+                    orderDetlPakout.setOrderId(orderPakout.getId());
+                    orderDetlPakout.setOrderNo(orderPakout.getOrderNo());
+                    orderDetlPakout.setAnfme(Double.valueOf(mesOutApplyItem.getQty()));
+                    orderDetlPakout.setQty(0.0);
+                    orderDetlPakout.setMatnr(mat.getMatnr());
+                    orderDetlPakout.setMaktx(mat.getMaktx());
+                    orderDetlPakout.setSpecs(mat.getSpecs());
+                    orderDetlPakout.setModel(mat.getModel());
+                    orderDetlPakout.setThreeCode(mesOutApplyItem.getItemBarcode());
+                    orderDetlPakout.setStandby1(mesOutApplyItem.getTrayid());   //淇濆瓨閰嶇洏鍙凤紝闈炴墭鐩樺彿
+                    orderDetlPakout.setCreateBy(defaultUserId);
+                    orderDetlPakout.setCreateTime(now);
+                    orderDetlPakout.setUpdateBy(defaultUserId);
+                    orderDetlPakout.setUpdateTime(now);
+                    orderDetlPakout.setStatus(1);
+                    orderDetlPakout.setPakinPakoutStatus(2);
+                    if (!orderDetlPakoutService.insert(orderDetlPakout)) {
+                        log.error("MES淇濆瓨鍑哄簱璁㈠崟锛堝彨鏂欙級鏄庣粏妗eけ璐�");
+                        throw new CoolException("淇濆瓨鍑哄簱璁㈠崟锛堝彨鏂欙級鏄庣粏妗eけ璐�");
+                    }
                 }
             }
+
+            //鏈夊灏戠涓嶅悓鐨勯厤鐩樺彿   鍙湁閰嶇洏鍑哄簱鍗曢渶瑕佺煡閬�
+            if (mesCallOutApply.getTransType().equals("閰嶇洏鍑哄簱鍗�")){
+                orderPakout.setPayType(set.size());
+                String shipCode =mesCallOutApply.getItemdata().get(0).getTrayid().split("-")[2];
+                orderPakout.setShipCode(shipCode);//鍖哄煙  鏄惁鏄壒娈婃墭鐩�
+                orderPakoutService.updateById(orderPakout);
+            }
+
+            return 1;
+        } else {
+            // 鏍¢獙璁㈠崟鏄惁閲嶅
+            OrderPakin order = orderPakinService.selectByNo(mesCallOutApply.getOrderNo());
+            // 濡傛灉鍗曟嵁涓嶅瓨鍦ㄥ垯娣诲姞锛涘鏋滃崟鎹瓨鍦紝浣滀笟涓棤娉曚慨鏀癸紝鍙嶄箣鍒欎慨鏀瑰崟鎹�
+            if (!Cools.isEmpty(order)) {
+                if (order.getSettle() > 1L) {
+                    throw new CoolException(mesCallOutApply.getOrderNo() + "姝e湪鍑哄簱锛屾棤娉曚慨鏀瑰崟鎹�");
+                }
+                orderPakinService.remove(order.getId());
+            }
+
+            // 鐢熸垚璁㈠崟
+            Date now = new Date();
+            OrderPakin orderPakin = new OrderPakin();
+            orderPakin.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
+            orderPakin.setOrderNo(mesCallOutApply.getOrderNo());
+            orderPakin.setOrderTime(com.core.common.DateUtils.convert(now));
+            orderPakin.setDocType(docType.getDocId());
+            orderPakin.setSettle(1L);
+            orderPakin.setStatus(1);
+            orderPakin.setCreateBy(defaultUserId);
+            orderPakin.setCreateTime(now);
+            orderPakin.setUpdateBy(defaultUserId);
+            orderPakin.setUpdateTime(now);
+            orderPakin.setMemo(JSONObject.toJSONString(mesCallOutApply));  //涓哄嚭搴撳畬鎴愬弽棣堜繚瀛�
+            orderPakin.setPakinPakoutStatus(1);
+            orderPakinService.insert(orderPakin);
+            if (mesCallOutApply.getItemdata() != null && !mesCallOutApply.getItemdata().isEmpty()) {
+                for (MesCallOutApply.MesOutApplyItem mesOutApplyItem : mesCallOutApply.getItemdata()){
+                    // 鐢熸垚鏄庣粏
+                    Mat mat = matService.selectByMatnr(mesOutApplyItem.getItemno());
+                    if(Cools.isEmpty(mat)){
+                        log.error("璇ョ墿鏂欑紪鍙风珛搴撴病鏈�="+mesOutApplyItem.getItemno());
+                        continue;
+                    }
+                    OrderDetlPakin orderDetlPakin = new OrderDetlPakin();
+                    orderDetlPakin.setOrderId(orderPakin.getId());
+                    orderDetlPakin.setOrderNo(orderPakin.getOrderNo());
+                    orderDetlPakin.setAnfme(Double.valueOf(mesOutApplyItem.getQty()));
+                    orderDetlPakin.setQty(0.0);
+                    orderDetlPakin.setMatnr(mat.getMatnr());
+                    orderDetlPakin.setMaktx(mat.getMaktx());
+                    orderDetlPakin.setSpecs(mat.getSpecs());
+                    orderDetlPakin.setModel(mat.getModel());
+                    orderDetlPakin.setThreeCode(mesOutApplyItem.getItemBarcode());
+                    orderDetlPakin.setStandby1(mesOutApplyItem.getTrayid());   //淇濆瓨閰嶇洏鍙凤紝闈炴墭鐩樺彿
+                    orderDetlPakin.setStandby2("0");  //淇濆瓨榻愬鎬ф鏌ユ爣璇嗭紝1 妫�鏌ワ紱0 涓嶆鏌ワ紱
+                    orderDetlPakin.setCreateBy(defaultUserId);
+                    orderDetlPakin.setCreateTime(now);
+                    orderDetlPakin.setUpdateBy(defaultUserId);
+                    orderDetlPakin.setUpdateTime(now);
+                    orderDetlPakin.setStatus(1);
+                    orderDetlPakin.setPakinPakoutStatus(1);
+                    orderDetlPakinService.insert(orderDetlPakin);
+                }
+
+            }
+            return 1;
         }
 
-        return 1;
     }
 
     // endregion
@@ -1046,18 +1122,18 @@
         rcsTaskSubmit.setTargetRoute(targetRouteList);
 
         // 杞彂缁欐捣搴锋垨鍗庢檽RCS
-//        int success = rcsService.submitTask(rcsTaskSubmit, transTask.getAgvFactory());
-        int success = 1;
+        int success = rcsService.submitTask(rcsTaskSubmit, transTask.getAgvFactory());
         if (success == 1) {
             int workNo = commonService.getWorkNo(WorkNoType.OTHER.type);
             Date now = new Date();
             Task task = new Task();
             task.setWrkNo(workNo);
-            task.setTaskType("AGV");
-            task.setWrkSts(301L);
-            task.setIoType(3);
+            task.setTaskType("ZX-AGV");
+            task.setWrkSts(302L);//302.AGV浠诲姟鎵ц涓�
+            task.setIoType(3);//3.绔欏埌绔�
             task.setIoPri(10.00);
             task.setWrkDate(now);
+            task.setBarcode(transTask.getBarcode());
             task.setSourceStaNo(transTask.getCurStationId());
             task.setStaNo(transTask.getNextStationId());
             task.setBarcode(transTask.getTuoPanId());
@@ -1067,25 +1143,27 @@
             task.setAppeTime(now);
             task.setTaskNo(transTask.getTaskno());
             task.setMemo(JSONObject.toJSONString(transTask));
+            task.setPltType(transTask.getAgvFactory());//鍗庢檽AGV
+            task.setPacked(transTask.getRackNumber());//鏂欐灦鍙�
 
             taskService.insert(task);
-            Mat mat = matService.selectByMatnr(transTask.getItemno());
-            TaskDetl taskDetl = new TaskDetl();
-            taskDetl.setWrkNo(task.getWrkNo());
-            taskDetl.setIoTime(task.getIoTime());
-            taskDetl.setMatnr(transTask.getItemno());
-            taskDetl.setAnfme(0.0);
-            taskDetl.setStandby1(String.valueOf(transTask.getQty()));
-            taskDetl.setMaktx(mat.getMaktx());
-            taskDetl.setSpecs(mat.getSpecs());
-            taskDetl.setOrderNo(transTask.getOrderNo());
-            taskDetl.setZpallet(transTask.getTuoPanId());
-            taskDetl.setMemo(JSONObject.toJSONString(transTask.getItemBarcode()));
-            taskDetl.setModiUser(defaultUserId);
-            taskDetl.setModiTime(now);
-            taskDetl.setAppeUser(defaultUserId);
-            taskDetl.setAppeTime(now);
-            taskDetlService.insert(taskDetl);
+//            Mat mat = matService.selectByMatnr(transTask.getItemno());
+//            TaskDetl taskDetl = new TaskDetl();
+//            taskDetl.setWrkNo(task.getWrkNo());
+//            taskDetl.setIoTime(task.getIoTime());
+//            taskDetl.setMatnr(transTask.getItemno());
+//            taskDetl.setAnfme(0.0);
+//            taskDetl.setStandby1(String.valueOf(transTask.getQty()));
+//            taskDetl.setMaktx(mat.getMaktx());
+//            taskDetl.setSpecs(mat.getSpecs());
+//            taskDetl.setOrderNo(transTask.getOrderNo());
+//            taskDetl.setZpallet(transTask.getTuoPanId());
+//            taskDetl.setMemo(JSONObject.toJSONString(transTask.getItemBarcode()));
+//            taskDetl.setModiUser(defaultUserId);
+//            taskDetl.setModiTime(now);
+//            taskDetl.setAppeUser(defaultUserId);
+//            taskDetl.setAppeTime(now);
+//            taskDetlService.insert(taskDetl);
             result.put("Success", "1");
             result.put("Message", "浠诲姟鎺ユ敹鎴愬姛");
         } else {
@@ -1125,9 +1203,9 @@
 
             String url = MES_URL + "api/task/reporter";
             String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(transTaskFeedback));
-            if (!StringUtils.isEmpty(response) && response.contains("Success")){
+            if (!StringUtils.isEmpty(response) && response.contains("Success")) {
                 MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
-                if("1".equals(mesReturn.getSuccess())) {
+                if ("1".equals(mesReturn.getSuccess())) {
                     return 1;
                 }
             }
@@ -1146,9 +1224,9 @@
 
         String url = MES_URL + "api/apply/inLine";
         String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(apply));
-        if (!StringUtils.isEmpty(response) && response.contains("Success")){
+        if (!StringUtils.isEmpty(response) && response.contains("Success")) {
             JSONObject jsonObject = JSONObject.parseObject(response);
-            if("1".equals(jsonObject.getString("Success"))) {
+            if ("1".equals(jsonObject.getString("Success"))) {
                 return jsonObject.getJSONObject("Data").getString("status");
             }
         }
@@ -1163,12 +1241,12 @@
      * @return
      */
     public int applyInStation(TransParent apply) {
-        String path = ("LL").equals(apply.getProductLineId()) ? "AGVTransportPalletNotice" : "AprsAGVTransportPalletNotice";
+        String path = "AGVTransportPalletNotice";
         String url = MES_URL + path;
         String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(apply));
-        if (!StringUtils.isEmpty(response) && response.contains("Success")){
+        if (!StringUtils.isEmpty(response) && response.contains("Success")) {
             MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
-            if("1".equals(mesReturn.getSuccess())) {
+            if ("1".equals(mesReturn.getSuccess())) {
                 return 1;
             }
         }
@@ -1185,19 +1263,34 @@
     public MesReturn allowInStation(TransInOutStationAllow allow) {
 
         MesReturn mesReturn = new MesReturn();
-        mesReturn.setSuccess("1");
+        mesReturn.setSuccess("2");
 
         if ("Y".equals(allow.getStatus())) {
-            RcsTaskContinue rcsTaskContinue = new RcsTaskContinue();
-            rcsTaskContinue.setRobotTaskCode(allow.getTaskno());
-            rcsTaskContinue.setTriggerType("TASK");
-            rcsTaskContinue.setTriggerCode(allow.getTaskno());
+            Task task = taskService.selectOne(new EntityWrapper<Task>().eq("task_no", allow.getTaskno()));
+            if (Cools.isEmpty(task)) {
+                mesReturn.setMessage("娌℃湁鎵句釜璇ヤ换鍔$紪鍙�=" + allow.getTaskno() + "鐨凙GV绉诲姩浠诲姟");
+            } else {
+                //鏌ョ湅鐢宠绔欑偣鐨勬槸娴峰悍杩樻槸鍗庢檽
+                //娴峰悍
+                if (Cools.isEmpty(task.getPltType()) || task.getPltType() == 1) {
+                    RcsTaskContinue rcsTaskContinue = new RcsTaskContinue();
+                    rcsTaskContinue.setRobotTaskCode(allow.getTaskno());
+                    rcsTaskContinue.setTriggerType("TASK");
+                    rcsTaskContinue.setTriggerCode(allow.getTaskno());
 //            rcsTaskContinue.setTriggerType("ROBOT");
 //            rcsTaskContinue.setTriggerCode(allow.getAgvCode());
 
-            int success = rcsService.continueTask(rcsTaskContinue, checkRcsFactory(allow.getAgvCode()));
-            mesReturn.setSuccess(success == 1 ? "1" : "2");
-            mesReturn.setMessage(success == 1 ? "" : "杞彂缁橰CS澶辫触");
+                    int success = rcsService.continueTask(rcsTaskContinue, 1);
+                    mesReturn.setSuccess(success == 1 ? "1" : "2");
+                    mesReturn.setMessage(success == 1 ? "" : "杞彂缁橰CS澶辫触");
+                } else {
+                    allow.setMethod("APPLY_IN_STATION");
+                    int success = rcsService.continueTask(allow, 2);
+                    mesReturn.setSuccess(success == 1 ? "1" : "2");
+                    mesReturn.setMessage(success == 1 ? "" : "杞彂缁橰CS澶辫触");
+                }
+
+            }
         }
 
         return mesReturn;
@@ -1219,9 +1312,9 @@
 
         String url = MES_URL + "AGVArrivalCompleted";
         String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(arrivalStation));
-        if (!StringUtils.isEmpty(response) && response.contains("Success")){
+        if (!StringUtils.isEmpty(response) && response.contains("Success")) {
             MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
-            if("1".equals(mesReturn.getSuccess())) {
+            if ("1".equals(mesReturn.getSuccess())) {
                 return 1;
             }
         }
@@ -1237,11 +1330,11 @@
      */
     public int applyOutStation(TransParent apply) {
 
-        String url = MES_URL + "api/apply/outStation";
+        String url = MES_URL + "AGVDepartureRequest";
         String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(apply));
-        if (!StringUtils.isEmpty(response) && response.contains("Success")){
+        if (!StringUtils.isEmpty(response) && response.contains("Success")) {
             MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
-            if("1".equals(mesReturn.getSuccess())) {
+            if ("1".equals(mesReturn.getSuccess())) {
                 return 1;
             }
         }
@@ -1258,17 +1351,34 @@
     public MesReturn allowOutStation(TransInOutStationAllow allow) {
 
         MesReturn mesReturn = new MesReturn();
-        mesReturn.setSuccess("1");
+        mesReturn.setSuccess("2");
 
         if ("Y".equals(allow.getStatus())) {
-            RcsTaskContinue rcsTaskContinue = new RcsTaskContinue();
-            rcsTaskContinue.setRobotTaskCode(allow.getTaskno());
-            rcsTaskContinue.setTriggerType("TASK");
-            rcsTaskContinue.setTriggerCode(allow.getTaskno());
+            Task task = taskService.selectOne(new EntityWrapper<Task>().eq("task_no", allow.getTaskno()));
+            if (Cools.isEmpty(task)) {
+                mesReturn.setMessage("娌℃湁鎵句釜璇ヤ换鍔$紪鍙�=" + allow.getTaskno() + "鐨凙GV绉诲姩浠诲姟");
+            } else {
+                //鏌ョ湅鐢宠绔欑偣鐨勬槸娴峰悍杩樻槸鍗庢檽
+                //娴峰悍
+                if (Cools.isEmpty(task.getPltType()) || task.getPltType() == 1) {
+                    RcsTaskContinue rcsTaskContinue = new RcsTaskContinue();
+                    rcsTaskContinue.setRobotTaskCode(allow.getTaskno());
+                    rcsTaskContinue.setTriggerType("TASK");
+                    rcsTaskContinue.setTriggerCode(allow.getTaskno());
+//            rcsTaskContinue.setTriggerType("ROBOT");
+//            rcsTaskContinue.setTriggerCode(allow.getAgvCode());
 
-            int success = rcsService.continueTask(rcsTaskContinue, checkRcsFactory(allow.getAgvCode()));
-            mesReturn.setSuccess(success == 1 ? "1" : "2");
-            mesReturn.setMessage(success == 1 ? "" : "杞彂缁橰CS澶辫触");
+                    int success = rcsService.continueTask(rcsTaskContinue, 1);
+                    mesReturn.setSuccess(success == 1 ? "1" : "2");
+                    mesReturn.setMessage(success == 1 ? "" : "杞彂缁橰CS澶辫触");
+                } else {
+                    allow.setMethod("APPLY_OFF_STATION");
+                    int success = rcsService.continueTask(allow, 2);
+                    mesReturn.setSuccess(success == 1 ? "1" : "2");
+                    mesReturn.setMessage(success == 1 ? "" : "杞彂缁橰CS澶辫触");
+                }
+
+            }
         }
 
         return mesReturn;
@@ -1284,9 +1394,9 @@
 
         String url = MES_URL + "AGVDepartureCompleted";
         String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(apply));
-        if (!StringUtils.isEmpty(response) && response.contains("Success")){
+        if (!StringUtils.isEmpty(response) && response.contains("Success")) {
             MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
-            if("1".equals(mesReturn.getSuccess())) {
+            if ("1".equals(mesReturn.getSuccess())) {
                 return 1;
             }
         }
@@ -1295,13 +1405,13 @@
     }
 
     @Override
-    public MesReturn queryInventory(String itemno,String orderNo) {
+    public MesReturn queryInventory(String itemno, String orderNo) {
         MesReturn mesReturn = new MesReturn();
         mesReturn.setSuccess("1");
-        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("matnr", itemno).eq("order_no",orderNo));
+        List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("matnr", itemno).eq("order_no", orderNo));
 
         int count = 0;
-        for(LocDetl locDetl:locDetls) {
+        for (LocDetl locDetl : locDetls) {
             count += locDetl.getAnfme();
         }
         mesReturn.setMessage(String.valueOf(count));
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index c3021b9..b48d5d9 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -622,6 +622,15 @@
                 waitPakin.setModiTime(now);
                 if (!waitPakinService.insert(waitPakin)) {
                     throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
+                }else {
+                    WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
+                            .eq("barcode", param.getBarcode())
+                            .eq("io_type",110));
+                    if (wrkMast != null) {
+                        wrkMast.setWrkSts(15L);//绌烘澘鍑哄簱浠诲姟杞巻鍙叉。
+                        wrkMast.setModiTime(new Date());
+                        wrkMastService.updateById(wrkMast);
+                    }
                 }
             }
             // 鍏宠仈缁勬墭
@@ -720,8 +729,46 @@
                 Order order = OrderInAndOutUtil.selectByNo(Boolean.TRUE, orderNo);
                 OrderInAndOutUtil.updateOrder(Boolean.TRUE, order.getId(), 2L, userId);
             });
-        }
+            if(!Cools.isEmpty(param.getLocNo())){
+                //鐢熸垚AGV鎼繍浠诲姟
+                //鐢熸垚AGV鎼繍鍑哄簱浠诲姟
+                // 淇濆瓨宸ヤ綔妗�
+                Task task = new Task();
+                Date date = new Date();
+                String s = "";
+                if (param.getBarcode().charAt(0) == '3'){
+                    s = "307";
+                }else if (param.getBarcode().charAt(0) == '4'){
+                    s = "401";
+                }else if (param.getBarcode().charAt(0) == '5'){
+                    s = "402";
+                }
+                String TaskNo = param.getBarcode()+"-"+date.getTime();
+                task.setWrkNo(Integer.getInteger(param.getBarcode()))
+                        .setTaskNo(TaskNo)
+                        .setIoTime(date)
+                        .setWrkSts(301L) // 宸ヤ綔鐘舵�侊細301.浠诲姟涓嬪彂
+                        .setIoType(3) // 鍏ュ嚭搴撶姸鎬侊細 3.绔欏埌绔�
+                        .setTaskType("agv")
+                        .setIoPri(10D)
+                        .setFullPlt("Y") // 婊℃澘锛歒
+                        .setPicking("N") // 鎷f枡
+                        .setExitMk("N")// 閫�鍑�
+                        .setStaNo(s)
+                        .setSourceStaNo(param.getLocNo())//绌烘枡鏋剁紦瀛樺尯E1
+                        .setEmptyMk("N")// 绌烘澘
+                        .setBarcode(param.getBarcode())// 鎵樼洏鐮�
+                        .setLinkMis("N")
+                        .setAppeUser(9945L)
+                        .setAppeTime(date)
+                        .setModiUser(9945L)
+                        .setModiTime(date);
+                if (!taskService.insert(task)) {
+                    throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+                }
+            }
 
+        }
     }
 
     // 鍟嗗搧涓婃灦
@@ -1279,14 +1326,25 @@
         if(locMast == null) {
             return R.parse("璇ョ被鍨嬶細" + locType +"绌烘墭鐩樹笉瀛樺湪");
         }
+        String sta="";
+        //婊戝潡搴�
+        if(locMast.getLocType3()==1){
+            if(locMast.getLocType2()==1){
+
+
+            }
+        }else if(locMast.getLocType3()==2){
+            sta="307";
+        }
+
         // 鑾峰彇璺緞
         Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                 .eq("type_no", 110)
-                .eq("stn_no", staNo)
+                .eq("stn_no", sta)
                 .eq("crn_no", locMast.getCrnNo());
         StaDesc staDesc = staDescService.selectOne(wrapper);
         if (staDesc == null) {
-            R.parse("鍑哄簱璺緞涓嶅瓨鍦�,绔欑偣锛�" + staNo);
+            R.parse("鍑哄簱璺緞涓嶅瓨鍦�,绔欑偣锛�" + sta);
         }
         Date now = new Date();
         // 鐢熸垚宸ヤ綔妗�
@@ -1297,8 +1355,8 @@
         wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
         wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱
         wrkMast.setIoPri(10D);
-        wrkMast.setSourceStaNo(staDesc.getCrnStn$()); // 婧愮珯
-        wrkMast.setStaNo(staDesc.getStnNo$()); // 鐩爣绔�
+        wrkMast.setSourceStaNo(sta); // 婧愮珯
+        wrkMast.setStaNo(sta); // 鐩爣绔�
         wrkMast.setCrnNo(staDesc.getCrnNo());
         wrkMast.setSourceLocNo(locMast.getLocNo()); // 婧愬簱浣�
         wrkMast.setFullPlt("N"); // 婊℃澘锛歒
@@ -1310,6 +1368,7 @@
         wrkMast.setAppeTime(now);
         wrkMast.setModiUser(userId);
         wrkMast.setModiTime(now);
+        wrkMast.setMemo(staNo);
         wrkMastService.insert(wrkMast);
 
         // 鏇存柊搴撲綅鐘舵��
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderPakinServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderPakinServiceImpl.java
index 2437d39..a69e0a4 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderPakinServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderPakinServiceImpl.java
@@ -36,6 +36,8 @@
     private DocTypeService docTypeService;
     @Autowired
     private WrkDetlService wrkDetlService;
+    @Autowired
+    private OrderDetlPakinServiceImpl orderDetlPakinService;
 
     @Override
     public OrderPakin selectByNo(String orderNo) {
@@ -71,7 +73,7 @@
         if (Cools.isEmpty(order) || order.getSettle() >= 4L) {
             return;
         }
-        List<OrderDetlPakin> orderDetls = orderDetlMapper.selectList(new EntityWrapper<OrderDetlPakin>().eq("order_id", order.getId()));
+        List<OrderDetlPakin> orderDetls = orderDetlPakinService.selectList(new EntityWrapper<OrderDetlPakin>().eq("order_id", order.getId()));
         boolean complete = true;
         for (OrderDetlPakin orderDetl : orderDetls) {
             if (orderDetl.getAnfme() > orderDetl.getQty()) {
@@ -83,7 +85,7 @@
             // 鍑哄簱璁㈠崟閲嶆柊鏁寸悊鏄庣粏
             DocType docType = docTypeService.selectById(order.getDocType());
             if (null != docType && docType.getPakout() == 1) {
-                if (!orderDetlService.delete(new EntityWrapper<OrderDetlPakin>().eq("order_id", order.getId()))) {
+                if (!orderDetlPakinService.delete(new EntityWrapper<OrderDetlPakin>().eq("order_id", order.getId()))) {
                     throw new CoolException("閲嶆暣鍑哄簱璁㈠崟銆恛rderNo = " + order.getOrderNo() + "銆戞槑缁嗗け璐�");
                 }
                 List<WrkDetl> wrkDetls = wrkDetlService.selectAndLogByOrderNo(orderNo);
@@ -98,7 +100,7 @@
                     orderDetl.setCreateBy(order.getCreateBy());
                     orderDetl.setUpdateTime(order.getUpdateTime());
                     orderDetl.setUpdateBy(order.getUpdateBy());
-                    if (!orderDetlService.insert(orderDetl)) {
+                    if (!orderDetlPakinService.insert(orderDetl)) {
                         throw new CoolException("閲嶆暣鍑哄簱璁㈠崟銆恛rderNo = " + order.getOrderNo() + "銆戞槑缁嗗け璐�");
                     }
                 }
@@ -169,7 +171,7 @@
         if (!this.deleteById(orderId)) {
             throw new CoolException("鍒犻櫎鍗曟嵁澶辫触");
         }
-        orderDetlService.delete(new EntityWrapper<OrderDetlPakin>().eq("order_id", orderId));
+        orderDetlPakinService.delete(new EntityWrapper<OrderDetlPakin>().eq("order_id", orderId));
     }
 
     @Override
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderPakoutServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderPakoutServiceImpl.java
index 592f297..2e41247 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderPakoutServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderPakoutServiceImpl.java
@@ -36,6 +36,8 @@
     private DocTypeService docTypeService;
     @Autowired
     private WrkDetlService wrkDetlService;
+    @Autowired
+    private OrderDetlPakoutServiceImpl orderDetlPakoutService;
 
     @Override
     public OrderPakout selectByNo(String orderNo) {
@@ -71,7 +73,7 @@
         if (Cools.isEmpty(order) || order.getSettle() >= 4L) {
             return;
         }
-        List<OrderDetlPakout> orderDetls = orderDetlMapper.selectList(new EntityWrapper<OrderDetlPakout>().eq("order_id", order.getId()));
+        List<OrderDetlPakout> orderDetls = orderDetlPakoutService.selectList(new EntityWrapper<OrderDetlPakout>().eq("order_id", order.getId()));
         boolean complete = true;
         for (OrderDetlPakout orderDetl : orderDetls) {
             if (orderDetl.getAnfme() > orderDetl.getQty()) {
@@ -83,7 +85,7 @@
             // 鍑哄簱璁㈠崟閲嶆柊鏁寸悊鏄庣粏
             DocType docType = docTypeService.selectById(order.getDocType());
             if (null != docType && docType.getPakout() == 1) {
-                if (!orderDetlService.delete(new EntityWrapper<OrderDetlPakout>().eq("order_id", order.getId()))) {
+                if (!orderDetlPakoutService.delete(new EntityWrapper<OrderDetlPakout>().eq("order_id", order.getId()))) {
                     throw new CoolException("閲嶆暣鍑哄簱璁㈠崟銆恛rderNo = " + order.getOrderNo() + "銆戞槑缁嗗け璐�");
                 }
                 List<WrkDetl> wrkDetls = wrkDetlService.selectAndLogByOrderNo(orderNo);
@@ -98,7 +100,8 @@
                     orderDetl.setCreateBy(order.getCreateBy());
                     orderDetl.setUpdateTime(order.getUpdateTime());
                     orderDetl.setUpdateBy(order.getUpdateBy());
-                    if (!orderDetlService.insert(orderDetl)) {
+                    orderDetl.setBarcode(wrkDetl.getZpallet());
+                    if (!orderDetlPakoutService.insert(orderDetl)) {
                         throw new CoolException("閲嶆暣鍑哄簱璁㈠崟銆恛rderNo = " + order.getOrderNo() + "銆戞槑缁嗗け璐�");
                     }
                 }
@@ -168,7 +171,7 @@
         if (!this.deleteById(orderId)) {
             throw new CoolException("鍒犻櫎鍗曟嵁澶辫触");
         }
-        orderDetlService.delete(new EntityWrapper<OrderDetlPakout>().eq("order_id", orderId));
+        orderDetlPakoutService.delete(new EntityWrapper<OrderDetlPakout>().eq("order_id", orderId));
     }
 
     @Override
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 ba05f58..4f44d10 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -37,6 +37,15 @@
     @Autowired
     private WrkDetlService wrkDetlService;
 
+    @Autowired
+    private OrderPakinService orderPakinService;
+    @Autowired
+    private OrderPakoutService orderPakoutService;
+    @Autowired
+    private OrderDetlPakinService orderDetlPakinService;
+    @Autowired
+    private OrderDetlPakoutService orderDetlPakoutService;
+
     @Override
     public Order selectByNo(String orderNo) {
         List<Order> orderList = this.selectList(new EntityWrapper<Order>().eq("order_no", orderNo));
diff --git a/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
index b7d7be5..e77e4a2 100644
--- a/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
@@ -3,6 +3,7 @@
 import com.alibaba.excel.util.StringUtils;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.mes.TransArrivalStation;
 import com.zy.asrs.entity.mes.TransParent;
@@ -16,7 +17,10 @@
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.io.*;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
 import java.net.ConnectException;
 import java.net.SocketTimeoutException;
 import java.net.URL;
@@ -39,6 +43,12 @@
     // 鍗庢檽RCS鍦板潃
     @Value("${hx.url}")
     private String HX_URL;
+    // 鍗庢檽RCS鍦板潃
+    @Value("${hx.taskNo}")
+    private String taskNo;
+    // 鍗庢檽RCS鍦板潃
+    @Value("${hx.inOk}")
+    private String inOk;
     @Value("${mes.defaultUserId}")
     public long defaultUserId;
 
@@ -55,6 +65,9 @@
     private TaskDetlServiceImpl taskDetlService;
     @Resource
     private WrkMastService wrkMastService;
+
+    @Resource
+    private ApiLogService apiLogService;
 
 
     // region 灏侀攣鍖洪�昏緫锛岀洰鍓嶅彧鏈変竴涓ぇ灏侀攣鍖猴紝浠诲姟鍏ㄩ儴杞埌婊戝潡搴撳鐞嗭紝鎴栫洿鎺ュ啓鍒版粦鍧楀簱
@@ -85,40 +98,40 @@
      */
     public void managerBlock() {
 
-       try {
-           BlockTask firstTask = blockTaskMapper.findTop();
-           if (firstTask == null) {
-               return;
-           }
-           EntityWrapper<BlockStation> wrapper = new EntityWrapper<>();
-           wrapper.eq("block_no", firstTask.getBlockNo());
-           List<BlockStation> stations = blockStationMapper.selectList(wrapper);
-           if (!stations.isEmpty()) {
-               boolean locked = false;
-               for (BlockStation station : stations) {
-                   // 鍙厑璁�1涓巶瀹惰澶囪繘鍏ュ皝閿佸尯锛宻tatus鐘舵�侊細0 绌洪棽锛�1 娴峰悍灏侀攣涓紱2 鍗庢檽灏侀攣涓紱-1 寮傚父锛�
-                   if (station.getStatus() > 0 && !station.getStatus().equals(firstTask.getAgvFactory())) {
-                       locked = true;
-                       break;
-                   }
-               }
+        try {
+            BlockTask firstTask = blockTaskMapper.findTop();
+            if (firstTask == null) {
+                return;
+            }
+            EntityWrapper<BlockStation> wrapper = new EntityWrapper<>();
+            wrapper.eq("block_no", firstTask.getBlockNo());
+            List<BlockStation> stations = blockStationMapper.selectList(wrapper);
+            if (!stations.isEmpty()) {
+                boolean locked = false;
+                for (BlockStation station : stations) {
+                    // 鍙厑璁�1涓巶瀹惰澶囪繘鍏ュ皝閿佸尯锛宻tatus鐘舵�侊細0 绌洪棽锛�1 娴峰悍灏侀攣涓紱2 鍗庢檽灏侀攣涓紱-1 寮傚父锛�
+                    if (station.getStatus() > 0 && !station.getStatus().equals(firstTask.getAgvFactory())) {
+                        locked = true;
+                        break;
+                    }
+                }
 
-               if (!locked) {
-                   // 灏侀攣鐘舵��
-                   int success = blockStationMapper.addByBlockNo(firstTask.getBlockNo(), firstTask.getAgvFactory());
-                   if (success > 0) {
-                       // 閫氱煡RCS
-                       RcsEqptNotify notify = new RcsEqptNotify();
-                       notify.setEqptCode(firstTask.getBlockNo());
-                       notify.setTaskCode(firstTask.getTaskCode());
-                       notify.setActionStatus("1");
-                       notifyEqpt(notify, firstTask.getAgvFactory());
-                   }
-               }
-           }
-       } catch (Exception e) {
-           log.error("绠$悊灏侀攣鍖哄紓甯�", e);
-       }
+                if (!locked) {
+                    // 灏侀攣鐘舵��
+                    int success = blockStationMapper.addByBlockNo(firstTask.getBlockNo(), firstTask.getAgvFactory());
+                    if (success > 0) {
+                        // 閫氱煡RCS
+                        RcsEqptNotify notify = new RcsEqptNotify();
+                        notify.setEqptCode(firstTask.getBlockNo());
+                        notify.setTaskCode(firstTask.getTaskCode());
+                        notify.setActionStatus("1");
+                        notifyEqpt(notify, firstTask.getAgvFactory());
+                    }
+                }
+            }
+        } catch (Exception e) {
+            log.error("绠$悊灏侀攣鍖哄紓甯�", e);
+        }
     }
 
     /**
@@ -168,13 +181,59 @@
      */
     public int submitTask(RcsTaskSubmit rcsTaskSubmit, int rcsFactory){
 
-        String url = rcsFactory == 2 ? HIK_URL : HX_URL + "api/robot/controller/task/submit";
-        String response = sendPost(url, rcsTaskSubmit.toString());
+//        String response = "";
+//        boolean success = false;
+//        Map<String,Object> headers = new HashMap<>();
+//        headers.put("Content-Type","application/json");
+//        headers.put("Content-Length","<calculated when request is sent>");
+//        headers.put("Host","<calculated when request is sent>");
+////        headers.put("Connection","keep-alive");
+////        headers.put("Accept","*/*");
+////        headers.put("Accept-Encoding","gzip, deflate, br");
+//        headers.put("X-lr-request-id","123");
+//        headers.put("X-lr-version","4.3");
+//        try {
+//            response = new HttpHandler.Builder()
+//                    .setUri(HIK_URL)
+//                    .setPath("api/robot/controller/task/submit")
+//                    .setHeaders(headers)
+//                    .setJson(JSON.toJSONString(rcsTaskSubmit))
+//                    .build()
+//                    .doPost();
+//            JSONObject jsonObject = JSON.parseObject(response);
+//            if (jsonObject.getBoolean("success")) {
+//                success = true;
+//            } else {
+//                log.error("涓嬪彂agv浠诲姟澶辫触锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", HIK_URL + "api/robot/controller/task/submit", JSON.toJSONString(rcsTaskSubmit), response);
+//            }
+//        } catch (Exception e) {
+//            log.error("涓嬪彂agv浠诲姟寮傚父", e);
+//        } finally {
+//            try {
+//                // 淇濆瓨鎺ュ彛鏃ュ織
+//                apiLogService.save(
+//                        "涓嬪彂agv浠诲姟",
+//                        HIK_URL + "api/robot/controller/task/submit",
+//                        null,
+//                        "127.0.0.1",
+//                        JSON.toJSONString(rcsTaskSubmit),
+//                        response,
+//                        success
+//                );
+//            } catch (Exception e) {
+//                log.error("涓嬪彂agv浠诲姟淇濆瓨鎺ュ彛鏃ュ織寮傚父", e);
+//            }
+//        }
+//        return success ? 1 : 0;
+
+        String url = rcsFactory == 2 ? HX_URL+taskNo :HIK_URL + "api/robot/controller/task/submit";
+        String response = sendPost(url, JSONObject.toJSONString(rcsTaskSubmit));
+
         if (!StringUtils.isEmpty(response) && response.contains("code")){
             RcsReturn rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
-            if("SUCCESS".equals(rcsReturn.getCode())) {
+            if("SUCCESS".equals(rcsReturn.getCode())||"200".equals(rcsReturn.getCode())) {
                 JSONObject data = rcsReturn.getData();
-                String robotTaskCode = data.getString("robotTaskCode");
+                String robotTaskCode = data.getString("RobotTaskCode");
                 if (robotTaskCode.equals(rcsTaskSubmit.getRobotTaskCode())){
                     return 1;
                 }
@@ -191,18 +250,14 @@
      * @param rcsFactory
      * @return
      */
-    public int continueTask(RcsTaskContinue rcsTaskContinue, int rcsFactory){
+    public int continueTask(Object rcsTaskContinue, int rcsFactory){
 
-        String url = rcsFactory == 2 ? HIK_URL : HX_URL + "api/robot/controller/task/extend/continue";
-        String response = sendPost(url, rcsTaskContinue.toString());
+        String url = rcsFactory == 2 ? HX_URL+inOk :HIK_URL + "api/robot/controller/task/extend/continue";
+        String response = sendPost(url, JSONObject.toJSONString(rcsTaskContinue));
         if (!StringUtils.isEmpty(response) && response.contains("code")){
             RcsReturn rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
-            if("SUCCESS".equals(rcsReturn.getCode())) {
-                JSONObject data = rcsReturn.getData();
-                String robotTaskCode = data.getString("robotTaskCode");
-                if (robotTaskCode.equals(rcsTaskContinue.getRobotTaskCode())) {
-                    return 1;
-                }
+            if("200".equals(rcsReturn.getCode())) {
+                return 1;
             }
         }
 
@@ -218,7 +273,7 @@
      */
     public int cancelTask(RcsTaskCancel rcsTaskCancel, int rcsFactory){
 
-        String url = rcsFactory == 2 ? HIK_URL : HX_URL + "api/robot/controller/task/cancel";
+        String url = rcsFactory == 2 ? HX_URL :HIK_URL + "api/robot/controller/task/cancel";
         String response = sendPost(url, rcsTaskCancel.toString());
         if (!StringUtils.isEmpty(response) && response.contains("code")){
             RcsReturn rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
@@ -243,7 +298,7 @@
      */
     private int notifyEqpt(RcsEqptNotify rcsEqptNotify, int rcsFactory){
 
-        String url = rcsFactory == 2 ? HIK_URL : HX_URL + "api/wcs/robot/eqpt/notify";
+        String url = rcsFactory == 2 ? HX_URL :HIK_URL + "api/wcs/robot/eqpt/notify";
         String response = sendPost(url, rcsEqptNotify.toString());
         if (!StringUtils.isEmpty(response) && response.contains("code")){
             RcsReturn rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
@@ -272,65 +327,51 @@
 
         String robotTaskCode = rcsReporterTask.getRobotTaskCode();
         String singleRobotCode = rcsReporterTask.getSingleRobotCode();
-        JSONObject values = rcsReporterTask.getExtra().getJSONObject("values");
-        // start : 浠诲姟寮�濮嬶紱outbin : 璧板嚭鍌ㄤ綅锛沞nd : 浠诲姟瀹屾垚
-        String method = values.getString("method");
-        String carrierType = values.getString("carrierType");
-        String slotCategory = values.getString("slotCategory");
-        String slotCode = values.getString("slotCode");
-
-        try {
-            if ("Q3".equals(carrierType) || "Q8".equals(carrierType)) {    //AGV
+        //鍗庢檽AGV鐘舵�佸弽棣堬紝鍙婄敵璇�
+        if(Cools.isEmpty(rcsReporterTask.getExtra())){
+            if(Cools.isEmpty(rcsReporterTask.getMethod())){
+                log.error("鍗庢檽AGV涓婃姤鐘舵�丮ethod涓虹┖锛�");
+                rcsReturn.setCode("Err_Internal");
+                rcsReturn.setMessage("鍗庢檽AGV涓婃姤鐘舵�丮ethod涓虹┖");
+                JSONObject data = new JSONObject();
+                data.put("robotTaskCode", robotTaskCode);
+                rcsReturn.setData(data);
+            }else {
                 EntityWrapper<Task> wrapper = new EntityWrapper<>();
                 wrapper.eq("task_no", robotTaskCode);
                 Task task = taskService.selectOne(wrapper);
-                if (task == null || !task.getTaskNo().equals(robotTaskCode)) {
-                    rcsReturn.setCode("Err_RobotCodeNotMatch");
-                    rcsReturn.setMessage("");
-                    JSONObject data = new JSONObject();
-                    data.put("robotTaskCode", robotTaskCode);
-                    rcsReturn.setData(data);
-                    return rcsReturn;
-                }
-                JSONObject memo = JSONObject.parseObject(task.getMemo());
-
-                switch (Objects.requireNonNull(RcsRetMethodEnum.getEnum(method))) {
-                    case TASK_START: {
+                String method = rcsReporterTask.getMethod();
+                JSONObject memo = Cools.isEmpty(task) ? null : JSONObject.parseObject(task.getMemo());
+                switch (method) {
+                    case "TASK_START": {
                         task.setWrkSts(302L);   // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
                         task.setModiTime(new Date());
                         task.setModiUser(defaultUserId);
                         taskService.updateById(task);
                     } break;
-                    case TASK_OUT_BIN: {
+                    case "TASK_OUT_BIN": {
                         // TODO锛氱珛搴撳嚭搴撲竴鎵橈紝AGV寮�濮嬭繍杈撳悗锛岀粰MES鍙戦�佸嚭搴撳畬鎴愶紙涓�鎵樺彂涓�娆★級
-                        JSONObject taskMemo = JSONObject.parseObject(task.getMemo());
-                        mesService.outFeedbackByTuo(taskMemo.getString("OrderNo"), task);
+//                        JSONObject taskMemo = JSONObject.parseObject(task.getMemo());
+//                        mesService.outFeedbackByTuo(taskMemo.getString("OrderNo"), task);
                     } break;
-                    case TASK_END: {
+                    case "TASK_END": {
+                        if(Cools.isEmpty(task)){
+                            rcsReturn.setCode("Err_RobotCodeNotMatch");
+                            rcsReturn.setMessage("");
+                            JSONObject data = new JSONObject();
+                            data.put("robotTaskCode", robotTaskCode);
+                            rcsReturn.setData(data);
+                            return rcsReturn;
+                        }
                         // 鏇存柊浠诲姟鐘舵�佺瓑鍐呴儴閫昏緫
                         task.setWrkSts(304L);   // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
                         task.setModiTime(new Date());
                         task.setModiUser(defaultUserId);
                         taskService.updateById(task);
-                        // 浠诲姟瀹屾垚
-//                        mesService.reporterTask(rcsReporterTask);
-
-//                    EntityWrapper<TaskDetl> wapper2 = new EntityWrapper<>();
-//                    wapper2.eq("wrk_no", task.getWrkNo())
-//                            .eq("matnr", memo.getString("ItemNo"))
-//                            .eq("order_no", memo.getString("OrderNo"));
-//                    TaskDetl taskDetl = taskDetlService.selectOne(wapper2);
-//                    taskDetl.setAnfme()
-//                    taskDetlService.updateById();
-
-//                    // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
-//                    taskService.completeWrkMast();
-//                    taskDetlService.
-
                     } break;
-                    case APPLY_IN_STATION:
-                    case APPLY_OFF_STATION:
-                    case ARRIVE_OFF_STATION: {
+                    case "APPLY_IN_STATION":
+                    case "APPLY_OFF_STATION":
+                    case "ARRIVE_OFF_STATION": {
                         TransParent apply = new TransParent();
                         apply.setTaskno(robotTaskCode);
                         apply.setTaskname(memo.getString("taskName"));
@@ -338,21 +379,19 @@
                         String transType = memo.getString("TransType");
                         apply.setTransType(transType);
                         apply.setProductLineId(memo.getString("ProductLineId"));
-                        if(transType.equals("02") || transType.equals("04") || transType.equals("06")) {
-                            apply.setStationId(task.getSourceStaNo());
-                        } else {
-                            apply.setStationId(task.getStaNo());
-                        }
-
-                        if (RcsRetMethodEnum.APPLY_IN_STATION.getCode().equals(method)) {
+                        apply.setStationId(task.getSourceStaNo());
+                        //agv鍏ョ珯鐢宠
+                        if ("APPLY_IN_STATION".equals(method)) {
                             mesService.applyInStation(apply);
-                        } else if (RcsRetMethodEnum.APPLY_OFF_STATION.getCode().equals(method)) {
+                            //agv绂荤珯璇锋眰
+                        } else if ("APPLY_OFF_STATION".equals(method)) {
                             mesService.applyOutStation(apply);
-                        } else if (RcsRetMethodEnum.ARRIVE_OFF_STATION.getCode().equals(method)) {
+                            //agv绂荤珯瀹屾垚
+                        } else {
                             mesService.outStation(apply);
                         }
                     } break;
-                    case ARRIVE_ON_STATION: {
+                    case "ARRIVE_ON_STATION": {
                         // TODO: 濡傛灉浜х嚎鏄繍杈撹捣鐐癸紝鍒欎笉鍙戦�佸埌绔欏畬鎴愶紝鏆傛椂璋冭瘯浣跨敤lG锛屾湭瀹炵幇鍒ゆ柇
                         if (rcsReporterTask.getCurrentSeq() == 0 && task.getSourceStaNo().startsWith("LG")) {
                             break;
@@ -389,67 +428,155 @@
                     } break;
                     default: {} break;
                 }
-            } else if ("CTU".equals(carrierType)) { //CTU
-                EntityWrapper<WrkMast> wrapper = new EntityWrapper<>();
-                wrapper.eq("task_no", robotTaskCode);
-                WrkMast task = wrkMastService.selectOne(wrapper);
-                if (task == null || !task.getTaskNo().equals(robotTaskCode)) {
-                    rcsReturn.setCode("Err_RobotCodeNotMatch");
-                    rcsReturn.setMessage("");
-                    JSONObject data = new JSONObject();
-                    data.put("robotTaskCode", robotTaskCode);
-                    rcsReturn.setData(data);
-                    return rcsReturn;
-                }
-//                JSONObject memo = JSONObject.parseObject(task.getMemo());
-
-                switch (Objects.requireNonNull(RcsRetMethodEnum.getEnum(method))) {
-                    case TASK_START: {
-//                        task.setWrkSts(302L);   // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
-//                        task.setModiTime(new Date());
-//                        task.setModiUser(defaultUserId);
-//                        taskService.updateById(task);
-                    } break;
-//                    case TASK_OUT_BIN: {} break;
-                    case TASK_END: {
-                        // 鏇存柊浠诲姟鐘舵�佺瓑鍐呴儴閫昏緫
-                        long wrkSts = task.getWrkSts(); // 1.鍏ュ簱锛�101.鍑哄簱锛�
-                        if (task.getIoType() == 1) {
-                            wrkSts = 4L;
-                        } else if (task.getIoType() == 101) {
-                            wrkSts = 14L;
-                        }
-
-                        task.setWrkSts(wrkSts); // 4.鍏ュ簱瀹屾垚锛�14.宸插嚭搴撴湭纭锛�
-                        task.setModiTime(new Date());
-                        task.setModiUser(defaultUserId);
-                        wrkMastService.updateById(task);
-
-                        // TODO锛氫换鍔″畬鎴愯Е鍙戝嚭鍏ュ簱鍙樻洿鎿嶄綔
-
-
-//                        // 鍏ュ簱瀹屾垚
-//                        mesService.inFeedback(memo.getString("OrderNo"));
-//                        // 鍑哄簱瀹屾垚
-//                        mesService.outFeedback(memo.getString("OrderNo"));
-                    } break;
-                    default: {} break;
-                }
             }
-
             // 杩斿洖RCS
             rcsReturn.setCode("SUCCESS");
             rcsReturn.setMessage("");
             JSONObject data = new JSONObject();
             data.put("robotTaskCode", robotTaskCode);
             rcsReturn.setData(data);
-        } catch (Exception e) {
-            log.error("RCS鍙嶉浠诲姟杩涘害澶勭悊寮傚父 - {}", rcsReporterTask, e);
-            rcsReturn.setCode("Err_Internal");
-            rcsReturn.setMessage("鍐呴儴澶勭悊寮傚父");
-            JSONObject data = new JSONObject();
-            data.put("robotTaskCode", robotTaskCode);
-            rcsReturn.setData(data);
+            //娴峰悍AGV鐘舵�佸弽棣堬紝鍙婄敵璇�
+        }else {
+            JSONObject values = rcsReporterTask.getExtra().getJSONObject("values");
+            // start : 浠诲姟寮�濮嬶紱outbin : 璧板嚭鍌ㄤ綅锛沞nd : 浠诲姟瀹屾垚
+            String method = values.getString("method");
+            String carrierType = values.getString("carrierType");
+            String slotCategory = values.getString("slotCategory");
+            String slotCode = values.getString("slotCode");
+            try {
+                // q3,q8=1
+                if ("1".equals(carrierType)) {    //AGV
+                    EntityWrapper<Task> wrapper = new EntityWrapper<>();
+                    wrapper.eq("task_no", robotTaskCode);
+                    Task task = taskService.selectOne(wrapper);
+                    if (task == null || !task.getTaskNo().equals(robotTaskCode)) {
+                        rcsReturn.setCode("Err_RobotCodeNotMatch");
+                        rcsReturn.setMessage("");
+                        JSONObject data = new JSONObject();
+                        data.put("robotTaskCode", robotTaskCode);
+                        rcsReturn.setData(data);
+                        return rcsReturn;
+                    }
+                    JSONObject memo = JSONObject.parseObject(task.getMemo());
+
+                    switch (Objects.requireNonNull(RcsRetMethodEnum.getEnum(method))) {
+                        case TASK_START: {
+                            task.setWrkSts(302L);   // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
+                            task.setModiTime(new Date());
+                            task.setModiUser(defaultUserId);
+                            taskService.updateById(task);
+                        }
+                        break;
+                        case TASK_OUT_BIN: {
+                            // TODO锛氱珛搴撳嚭搴撲竴鎵橈紝AGV寮�濮嬭繍杈撳悗锛岀粰MES鍙戦�佸嚭搴撳畬鎴愶紙涓�鎵樺彂涓�娆★級
+//                        JSONObject taskMemo = JSONObject.parseObject(task.getMemo());
+//                        mesService.outFeedbackByTuo(taskMemo.getString("OrderNo"), task);
+                        }
+                        break;
+                        case TASK_END: {
+                            // 鏇存柊浠诲姟鐘舵�佺瓑鍐呴儴閫昏緫
+                            task.setWrkSts(304L);   // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
+                            task.setModiTime(new Date());
+                            task.setModiUser(defaultUserId);
+                            taskService.updateById(task);
+                            // 浠诲姟瀹屾垚
+//                        mesService.reporterTask(rcsReporterTask);
+
+//                    EntityWrapper<TaskDetl> wapper2 = new EntityWrapper<>();
+//                    wapper2.eq("wrk_no", task.getWrkNo())
+//                            .eq("matnr", memo.getString("ItemNo"))
+//                            .eq("order_no", memo.getString("OrderNo"));
+//                    TaskDetl taskDetl = taskDetlService.selectOne(wapper2);
+//                    taskDetl.setAnfme()
+//                    taskDetlService.updateById();
+
+//                    // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
+//                    taskService.completeWrkMast();
+//                    taskDetlService.
+
+                        }
+                        break;
+                        case APPLY_IN_STATION:
+                        case APPLY_OFF_STATION:
+                        case ARRIVE_OFF_STATION: {
+                            TransParent apply = new TransParent();
+                            apply.setTaskno(robotTaskCode);
+                            apply.setTaskname(memo.getString("taskName"));
+                            apply.setAgvCode(singleRobotCode);
+                            String transType = memo.getString("TransType");
+                            apply.setTransType(transType);
+                            apply.setProductLineId(memo.getString("ProductLineId"));
+                            if (transType.equals("02") || transType.equals("04") || transType.equals("06")) {
+                                apply.setStationId(task.getSourceStaNo());
+                            } else {
+                                apply.setStationId(task.getStaNo());
+                            }
+
+                            if (RcsRetMethodEnum.APPLY_IN_STATION.getCode().equals(method)) {
+                                mesService.applyInStation(apply);
+                            } else if (RcsRetMethodEnum.APPLY_OFF_STATION.getCode().equals(method)) {
+                                mesService.applyOutStation(apply);
+                            } else if (RcsRetMethodEnum.ARRIVE_OFF_STATION.getCode().equals(method)) {
+                                mesService.outStation(apply);
+                            }
+                        }
+                        break;
+                        case ARRIVE_ON_STATION: {
+                            // TODO: 濡傛灉浜х嚎鏄繍杈撹捣鐐癸紝鍒欎笉鍙戦�佸埌绔欏畬鎴愶紝鏆傛椂璋冭瘯浣跨敤lG锛屾湭瀹炵幇鍒ゆ柇
+                            if (rcsReporterTask.getCurrentSeq() == 0 && task.getSourceStaNo().startsWith("LG")) {
+                                break;
+                            }
+
+                            EntityWrapper<TaskDetl> wapper2 = new EntityWrapper<>();
+                            wapper2.eq("wrk_no", task.getWrkNo())
+                                    .eq("matnr", memo.getString("Itemno"))
+                                    .eq("order_no", memo.getString("OrderNo"));
+                            TaskDetl taskDetl = taskDetlService.selectOne(wapper2);
+                            TransArrivalStation arrivalStation = new TransArrivalStation();
+                            arrivalStation.setTaskno(robotTaskCode);
+                            arrivalStation.setTaskname(memo.getString("taskName"));
+                            arrivalStation.setTuoPanId(taskDetl.getZpallet());  // memo.getString("TuoPanId")
+                            arrivalStation.setProductLineId(memo.getString("ProductLineId"));
+                            String transType = memo.getString("TransType");
+                            arrivalStation.setDaotype(transType);
+                            if (transType.equals("02") || transType.equals("04") || transType.equals("06")) {
+                                arrivalStation.setStationID(task.getSourceStaNo());
+                            } else {
+                                arrivalStation.setStationID(task.getStaNo());
+                            }
+                            arrivalStation.setOrderNo(memo.getString("OrderNo"));
+                            arrivalStation.setAgvCode(singleRobotCode);
+                            arrivalStation.setItemno(memo.getString("Itemno"));
+                            String memo2 = taskDetl.getMemo();
+                            List<String> itemBarCode = new ArrayList<>();
+                            Matcher matcher = Pattern.compile("\"([^\"]*)\"").matcher(memo2);
+                            while (matcher.find()) {
+                                itemBarCode.add(matcher.group(1));
+                            }
+                            arrivalStation.setItemBarcode(itemBarCode);
+                            mesService.arriveOnStation(arrivalStation);
+                        }
+                        break;
+                        default: {
+                        }
+                        break;
+                    }
+                }
+                // 杩斿洖RCS
+                rcsReturn.setCode("SUCCESS");
+                rcsReturn.setMessage("");
+                JSONObject data = new JSONObject();
+                data.put("robotTaskCode", robotTaskCode);
+                rcsReturn.setData(data);
+            } catch (Exception e) {
+                log.error("RCS鍙嶉浠诲姟杩涘害澶勭悊寮傚父 - {}", rcsReporterTask, e);
+                rcsReturn.setCode("Err_Internal");
+                rcsReturn.setMessage("鍐呴儴澶勭悊寮傚父");
+                JSONObject data = new JSONObject();
+                data.put("robotTaskCode", robotTaskCode);
+                rcsReturn.setData(data);
+            }
+
         }
 
         return rcsReturn;
@@ -530,17 +657,53 @@
      * @param apply
      * @return
      */
-    public JSONObject hxApplyInLine(TransParent apply) {
+    public RcsReturn hxApplyInLine(TransParent apply) {
 
-        String status = mesService.applyInLine(apply);
-        JSONObject result = new JSONObject();
-        result.put("Success", 1);
-        result.put("Message", status);
-        JSONObject data = new JSONObject();
-        data.put("status", status);
-        result.put("Data", data);
+        RcsReturn rcsReturn = new RcsReturn();
 
-        return result;
+        String robotTaskCode = apply.getTaskno();
+        String singleRobotCode = apply.getAgvCode();
+        //鍗庢檽AGV鐢宠
+            if(Cools.isEmpty(apply.getMethod())){
+                log.error("鍗庢檽AGV涓婃姤鐘舵�丮ethod涓虹┖锛�");
+                rcsReturn.setCode("Err_Internal");
+                rcsReturn.setMessage("鍗庢檽AGV涓婃姤鐘舵�丮ethod涓虹┖");
+                JSONObject data = new JSONObject();
+                data.put("robotTaskCode", robotTaskCode);
+                rcsReturn.setData(data);
+            }else {
+                EntityWrapper<Task> wrapper = new EntityWrapper<>();
+                wrapper.eq("task_no", robotTaskCode);
+                Task task = taskService.selectOne(wrapper);
+                String method = apply.getMethod();
+                JSONObject memo = Cools.isEmpty(task) ? null : JSONObject.parseObject(task.getMemo());
+                switch (method) {
+                    case "APPLY_IN_STATION":
+                    case "APPLY_OFF_STATION":
+                    case "ARRIVE_OFF_STATION": {
+                        //agv鍏ョ珯鐢宠
+                        if ("APPLY_IN_STATION".equals(method)) {
+                            mesService.applyInStation(apply);
+                            //agv绂荤珯璇锋眰
+                        } else if ("APPLY_OFF_STATION".equals(method)) {
+                            mesService.applyOutStation(apply);
+                            //agv绂荤珯瀹屾垚
+                        } else {
+                            mesService.outStation(apply);
+                        }
+                    } break;
+                    default: {} break;
+                }
+            }
+            // 杩斿洖RCS
+            rcsReturn.setCode("SUCCESS");
+            rcsReturn.setMessage("");
+            JSONObject data = new JSONObject();
+            data.put("robotTaskCode", robotTaskCode);
+            rcsReturn.setData(data);
+            //娴峰悍AGV鐘舵�佸弽棣堬紝鍙婄敵璇�
+
+        return rcsReturn;
     }
 
     // endregion
@@ -563,11 +726,16 @@
             log.info("sendPost - {} - {}", url, param);
             URL realUrl = new URL(url);
             URLConnection conn = realUrl.openConnection();
-            conn.setRequestProperty("accept", "*/*");
-            conn.setRequestProperty("connection", "Keep-Alive");
-            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
-            conn.setRequestProperty("Accept-Charset", "utf-8");
-            conn.setRequestProperty("Content-Type", "application/json;charset=utf-8");
+            conn.setRequestProperty("Content-Type", "application/json");
+            conn.setRequestProperty("Content-Length", "<calculated when request is sent>");
+            conn.setRequestProperty("Host", "<calculated when request is sent>");
+            conn.setRequestProperty("Accept", "*/*");
+            conn.setRequestProperty("Accept-Encoding", "gzip, deflate, br");
+            conn.setRequestProperty("Connection", "keep-alive");
+
+            conn.setRequestProperty("X-lr-request-id", String.valueOf(new Date().getTime()));
+            conn.setRequestProperty("X-lr-version", "4.3");
+
             conn.setConnectTimeout(5000);
             conn.setReadTimeout(5000);
             conn.setDoOutput(true);
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index 2c21f63..0e276ff 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -397,7 +397,7 @@
 
     @Override
     @Transactional
-    public void stockOut(BasDevp staNo, TaskDto taskDto, Long userId) {
+    public void stockOut(BasDevp staNo, TaskDto taskDto, Long userId,Integer ioPri) {
         Date now = new Date();
         List<LocDto> locDtos = taskDto.getLocDtos();
         for (LocDto locDto : locDtos) {
@@ -420,7 +420,7 @@
         wrkMast.setIoTime(now);
         wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
         wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
-        wrkMast.setIoPri(13D); // 浼樺厛绾э細13
+        wrkMast.setIoPri(ioPri+0.0); // 浼樺厛绾э細13
         wrkMast.setCrnNo(locMast.getCrnNo());
         wrkMast.setSourceStaNo(staDesc.getCrnStn() + ""); // 婧愮珯
         wrkMast.setStaNo(staDesc.getStnNo() + ""); // 鐩爣绔�
@@ -629,7 +629,7 @@
 
     @Override
     @Transactional
-    public WrkMast emptyPlateOut(EmptyPlateOutParam param) {
+    public WrkMast emptyPlateOut(EmptyPlateOutParam param,Integer ioPri) {
         WrkMast wrkMast = new WrkMast();
         if (Cools.isEmpty(param.getOutSite())) {
             throw new CoolException("绔欑偣涓嶅瓨鍦�");
@@ -659,7 +659,7 @@
             wrkMast.setIoTime(now);
             wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
             wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱
-            wrkMast.setIoPri(10D);
+            wrkMast.setIoPri(ioPri+0.0);
             wrkMast.setSourceStaNo(sourceStaNo + ""); // 婧愮珯
             wrkMast.setStaNo(param.getOutSite() + ""); // 鐩爣绔�
             wrkMast.setCrnNo(locMast.getCrnNo());
@@ -1079,7 +1079,7 @@
     @Transactional
     public void cancelWrkMast(String workNo, Long userId) {
         Date now = new Date();
-        WrkMast wrkMast = wrkMastService.selectById(workNo);
+        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", workNo));
         if (Cools.isEmpty(wrkMast)) {
             throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
         }
@@ -1210,6 +1210,9 @@
         boolean wrkMastRes = wrkMastService.deleteById(wrkMast);
 
         if (wrkMast.getIoType() != 10 && wrkMast.getIoType() != 110) {
+            //鍙栨秷鏍囪锛岃鍗曞畬鎴愬悗鍙嶅啓璁㈠崟鏄庣粏鏃惰繃婊ゆ帀danger = 1鐨勬暟鎹�
+            wrkDetlService.updateForSet("danger = 1" ,new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+
             // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
             if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
 //                throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo());
diff --git a/src/main/java/com/zy/asrs/task/AGVTaskReportScheduler.java b/src/main/java/com/zy/asrs/task/AGVTaskReportScheduler.java
new file mode 100644
index 0000000..fbd0213
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/AGVTaskReportScheduler.java
@@ -0,0 +1,124 @@
+package com.zy.asrs.task;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.Task;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.TaskService;
+import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.task.core.ReturnT;
+import com.zy.asrs.task.handler.AGVTaskReportHandler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.List;
+
+@Component
+public class AGVTaskReportScheduler {
+
+    private static final Logger log = LoggerFactory.getLogger(WorkMastScheduler.class);
+    @Autowired
+    private TaskService taskService;
+    @Autowired
+    private AGVTaskReportHandler AGVTaskReportHandler;
+    @Value("${hik.switch}")
+    private Boolean switchErpReportOld;
+    @Autowired
+    private WrkMastService wrkMastService;
+
+    /**
+     * 婊℃澘鍜岀┖鏉垮嚭搴撲换鍔★紝鍑哄埌杈撻�佺嚎鍚庡垱寤篈GV鎼繍浠诲姟
+     */
+    @Scheduled(cron = "0/3 * * * * ? ")
+    private void createAGVTask(){
+        if (!switchErpReportOld){
+            return;
+        }
+        List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 300));
+        if (wrkMasts.isEmpty()){
+            return;
+        }
+        for (WrkMast wrkMast : wrkMasts){
+            //鏌ヨ鏄惁鏈夋簮绔欏拰鐩爣绔欐湁涓�鏍风殑agv鎼繍浠诲姟
+            //濡傛灉鏈夊垯璺宠繃鏈agv鎼繍浠诲姟涓嬪彂
+            Task task1 = taskService.selectOne(new EntityWrapper<Task>()
+                    .in("source_sta_no", wrkMast.getSourceStaNo(), wrkMast.getMemo())
+                    .in("sta_no", wrkMast.getSourceStaNo(), wrkMast.getMemo()));
+            if (Cools.isEmpty(task1)) {
+
+            //鐢熸垚AGV鎼繍鍑哄簱浠诲姟
+            // 淇濆瓨宸ヤ綔妗�
+            Task task = new Task();
+            Date date = new Date();
+            String TaskNo = wrkMast.getWrkNo()+"-"+date.getTime();
+            task.setWrkNo(wrkMast.getWrkNo())
+                    .setTaskNo(TaskNo)
+                    .setIoTime(date)
+                    .setWrkSts(301L) // 宸ヤ綔鐘舵�侊細301.浠诲姟涓嬪彂
+                    .setIoType(3) // 鍏ュ嚭搴撶姸鎬侊細 3.绔欏埌绔�
+                    .setTaskType("agv")
+                    .setIoPri(10D)
+                    .setFullPlt("Y") // 婊℃澘锛歒
+                    .setPicking("N") // 鎷f枡
+                    .setExitMk("N")// 閫�鍑�
+                    .setStaNo(wrkMast.getMemo())
+                    .setSourceStaNo(wrkMast.getSourceStaNo())//绌烘枡鏋剁紦瀛樺尯E1
+                    .setEmptyMk("N")// 绌烘澘
+                    .setBarcode(wrkMast.getBarcode())// 鎵樼洏鐮�
+                    .setLinkMis("N")
+                    .setAppeUser(9945L)
+                    .setAppeTime(date)
+                    .setModiUser(9945L)
+                    .setModiTime(date);
+            if (!taskService.insert(task)) {
+                throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+            }else {
+                wrkMast.setWrkSts(31L);//31.AGV鎼繍浠诲姟鍒涘缓鎴愬姛
+                wrkMast.setModiTime(date);
+                wrkMastService.updateById(wrkMast);
+            }
+            }
+        }
+    }
+
+    /**
+     * AGV 浠诲姟涓嬪彂鎺ュ彛锛屽畾鏃剁粰AGV涓嬪彂浠诲姟
+     */
+    @Scheduled(cron = "0/3 * * * * ? ")
+    private void execute(){
+        if (!switchErpReportOld){
+            return;
+        }
+        //鏌ヨ鎵�鏈塧gv寰呬笅鍙戜换鍔�
+        List<Task> wrkSts = taskService.selectList(new EntityWrapper<Task>().eq("wrk_sts", 301));
+        if (wrkSts!=null&& !wrkSts.isEmpty()){
+            for (Task task:wrkSts){
+                //鏌ヨ鏄惁鏈夋鍦ㄤ綔涓氱殑婧愮珯鍜岀洰鏍囩珯鏈変竴鏍风殑agv鎼繍浠诲姟
+                //濡傛灉鏈夊垯璺宠繃鏈agv鎼繍浠诲姟涓嬪彂
+                Task task1 = taskService.selectOne(new EntityWrapper<Task>()
+                        .eq("wrk_sts", 302)
+                        .andNew()
+                        .in("source_sta_no", task.getSourceStaNo(), task.getStaNo())
+                        .in("sta_no", task.getStaNo(), task.getSourceStaNo()));
+                if (Cools.isEmpty(task1)) {
+                    //AGV浠诲姟涓嬪彂
+                    ReturnT<String> start = AGVTaskReportHandler.start(task);
+                    if (!start.isSuccess()){
+                        task.setUpdMk("X");
+                        task.setErrorMemo(start.getMsg());
+                        task.setModiTime(new Date());
+                        if (!taskService.updateById(task)) {
+                            log.error("宸ヤ綔妗workNo={}]鏍囪寰呭鐞嗗け璐�", task.getWrkNo());
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/src/main/java/com/zy/asrs/task/AutoLocMoveScheduler.java b/src/main/java/com/zy/asrs/task/AutoLocMoveScheduler.java
index 698e864..bacfd9b 100644
--- a/src/main/java/com/zy/asrs/task/AutoLocMoveScheduler.java
+++ b/src/main/java/com/zy/asrs/task/AutoLocMoveScheduler.java
@@ -40,67 +40,67 @@
     @Autowired
     private AutoMoveService autoMoveService;
 
-    //瀹氭椂鍑哄簱   缁忓吀鍙屼几
-    @Scheduled(cron = "0/3 * * * * ? ")
-    public void locToLocAutoLocMove(){
-        if (slaveWmsParameterProperties.isAutoLocMoveBoolean()){
-            Config config = configService.selectConfigByCode("AutoLocMove");
-            if (Cools.isEmpty(config) || config.getValue().equals("false")) {
-                return;
-            }
-            OrderPakout orderPakout = orderPakoutService.selectOrderMoveStatus();
-            if (!Cools.isEmpty(orderPakout)){
-//                autoMoveService.selectList()
-            }else {
-                orderPakout = orderPakoutService.selectOrderMoveStatusInitial();
-                if (Cools.isEmpty(orderPakout)){
-                    return;
-                }
-                orderPakout.setMoveStatus(2);
-                orderPakoutService.updateById(orderPakout);
-            }
-        }
-    }
-
-    //瀹氭椂鍑哄簱
-    @Scheduled(cron = "0/3 * * * * ? ")
-    public void locToLoc11(){
-        if (slaveWmsParameterProperties.isAutoLocMoveUnilateralBoolean()){
-            Config config = configService.selectConfigByCode("AutoLocMoveUnilateral");
-            if (Cools.isEmpty(config) || config.getValue().equals("false")) {
-                return;
-            }
-            int crnCount = basCrnpService.selectCount(new EntityWrapper<>());
-            for (int crnNo = 1;crnNo < crnCount;crnNo++){
-                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 11).eq("crn_no", crnNo));
-                WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 111).eq("crn_no", crnNo));
-                if (Cools.isEmpty(wrkMast) && Cools.isEmpty(wrkMast1)){
-                    autoLocMoveHandler.start(crnNo,11);
-                }
-            }
-        }
-    }
-
-    //瀹氭椂鍏ュ簱
-    @Scheduled(cron = "0/3 * * * * ? ")
-    public void locToLoc111() {
-        if (slaveWmsParameterProperties.isAutoLocMoveUnilateralBoolean()){
-            Config config = configService.selectConfigByCode("AutoLocMoveUnilateral");
-            if (Cools.isEmpty(config) || config.getValue().equals("false")) {
-                return;
-            }
-            int crnCount = basCrnpService.selectCount(new EntityWrapper<>());
-            for (int crnNo = 1;crnNo < crnCount;crnNo++){
-                BasCrnp basCrnp = basCrnpService.selectById(crnNo);
-                if (basCrnp == null) {
-                    continue;
-                }
-                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 111).eq("crn_no", crnNo));
-                WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 11).eq("crn_no", crnNo));
-                if (Cools.isEmpty(wrkMast)  && Cools.isEmpty(wrkMast1)){
-                    autoLocMoveHandler.start(crnNo,111);
-                }
-            }
-        }
-    }
+//    //瀹氭椂鍑哄簱   缁忓吀鍙屼几
+//    @Scheduled(cron = "0/3 * * * * ? ")
+//    public void locToLocAutoLocMove(){
+//        if (slaveWmsParameterProperties.isAutoLocMoveBoolean()){
+//            Config config = configService.selectConfigByCode("AutoLocMove");
+//            if (Cools.isEmpty(config) || config.getValue().equals("false")) {
+//                return;
+//            }
+//            OrderPakout orderPakout = orderPakoutService.selectOrderMoveStatus();
+//            if (!Cools.isEmpty(orderPakout)){
+////                autoMoveService.selectList()
+//            }else {
+//                orderPakout = orderPakoutService.selectOrderMoveStatusInitial();
+//                if (Cools.isEmpty(orderPakout)){
+//                    return;
+//                }
+//                orderPakout.setMoveStatus(2);
+//                orderPakoutService.updateById(orderPakout);
+//            }
+//        }
+//    }
+//
+//    //瀹氭椂鍑哄簱
+//    @Scheduled(cron = "0/3 * * * * ? ")
+//    public void locToLoc11(){
+//        if (slaveWmsParameterProperties.isAutoLocMoveUnilateralBoolean()){
+//            Config config = configService.selectConfigByCode("AutoLocMoveUnilateral");
+//            if (Cools.isEmpty(config) || config.getValue().equals("false")) {
+//                return;
+//            }
+//            int crnCount = basCrnpService.selectCount(new EntityWrapper<>());
+//            for (int crnNo = 1;crnNo < crnCount;crnNo++){
+//                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 11).eq("crn_no", crnNo));
+//                WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 111).eq("crn_no", crnNo));
+//                if (Cools.isEmpty(wrkMast) && Cools.isEmpty(wrkMast1)){
+//                    autoLocMoveHandler.start(crnNo,11);
+//                }
+//            }
+//        }
+//    }
+//
+//    //瀹氭椂鍏ュ簱
+//    @Scheduled(cron = "0/3 * * * * ? ")
+//    public void locToLoc111() {
+//        if (slaveWmsParameterProperties.isAutoLocMoveUnilateralBoolean()){
+//            Config config = configService.selectConfigByCode("AutoLocMoveUnilateral");
+//            if (Cools.isEmpty(config) || config.getValue().equals("false")) {
+//                return;
+//            }
+//            int crnCount = basCrnpService.selectCount(new EntityWrapper<>());
+//            for (int crnNo = 1;crnNo < crnCount;crnNo++){
+//                BasCrnp basCrnp = basCrnpService.selectById(crnNo);
+//                if (basCrnp == null) {
+//                    continue;
+//                }
+//                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 111).eq("crn_no", crnNo));
+//                WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 11).eq("crn_no", crnNo));
+//                if (Cools.isEmpty(wrkMast)  && Cools.isEmpty(wrkMast1)){
+//                    autoLocMoveHandler.start(crnNo,111);
+//                }
+//            }
+//        }
+//    }
 }
diff --git a/src/main/java/com/zy/asrs/task/BareBoardScheduler.java b/src/main/java/com/zy/asrs/task/BareBoardScheduler.java
index 498483b..b1f3f05 100644
--- a/src/main/java/com/zy/asrs/task/BareBoardScheduler.java
+++ b/src/main/java/com/zy/asrs/task/BareBoardScheduler.java
@@ -25,18 +25,18 @@
     @Autowired
     private SlaveWmsParameterProperties slaveWmsParameterProperties;
 
-    /*
-    * 鑷姩璋冪┖鏉垮嚭搴�
-    * */
-    @Scheduled(cron = "0/3 * * * * ? ")
-    private void execute(){
-        if (slaveWmsParameterProperties.isAutomaticFillingBoardStaNosBoolean()){
-            Config config = configService.selectConfigByCode("AutomaticFillingBoard");
-            if (!Cools.isEmpty(config) && !Cools.isEmpty(config.getValue()) && config.getValue().equals("true")){
-                for (Integer staNo : slaveWmsParameterProperties.getAutomaticFillingBoardStaNos()){
-                    bareBoardHandler.start(110,staNo,"D");
-                }
-            }
-        }
-    }
+//    /*
+//    * 鑷姩璋冪┖鏉垮嚭搴�
+//    * */
+//    @Scheduled(cron = "0/3 * * * * ? ")
+//    private void execute(){
+//        if (slaveWmsParameterProperties.isAutomaticFillingBoardStaNosBoolean()){
+//            Config config = configService.selectConfigByCode("AutomaticFillingBoard");
+//            if (!Cools.isEmpty(config) && !Cools.isEmpty(config.getValue()) && config.getValue().equals("true")){
+//                for (Integer staNo : slaveWmsParameterProperties.getAutomaticFillingBoardStaNos()){
+//                    bareBoardHandler.start(110,staNo,"D");
+//                }
+//            }
+//        }
+//    }
 }
diff --git a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
index c6f6da8..3e27a83 100644
--- a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
+++ b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
@@ -5,9 +5,7 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.zy.asrs.entity.*;
-import com.zy.asrs.entity.mes.MesInApply;
-import com.zy.asrs.entity.mes.MesRecvFeedback;
-import com.zy.asrs.entity.mes.MesReturn;
+import com.zy.asrs.entity.mes.*;
 import com.zy.asrs.service.*;
 import com.zy.asrs.service.impl.RcsServiceImpl;
 import com.zy.asrs.task.core.ReturnT;
@@ -49,6 +47,8 @@
 
     @Resource
     private OrderDetlPakinService orderDetlPakinService;
+    @Resource
+    private OrderDetlPakoutService orderDetlPakoutService;
 
     @Value("${mes.url}")
     public String MES_URL;
@@ -130,7 +130,7 @@
         String erpReport = Parameter.get().getErpReport();
         if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) {
             OrderPakin orderPakin = orderPakinService.selectOne(new EntityWrapper<OrderPakin>().eq("settle", 4)
-                    .eq("doc_type",4).orderBy("update_time"));
+                    .eq("doc_type",1).orderBy("update_time"));
             if (orderPakin == null) {
                 return;
             }
@@ -160,7 +160,7 @@
             mesRecvFeedback.setOperuser(dbMemo.getString("operuser"));
             mesRecvFeedback.setItemdata(list);
 
-            String url = MES_URL + "MaterialReceiptAndReturn";
+            String url = MES_URL + "ActualInventoryFeedback";
             String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(mesRecvFeedback));
             if (!StringUtils.isEmpty(response) && response.contains("Success")) {
                 MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
@@ -173,32 +173,71 @@
         }
     }
 
-    // 鍏朵粬鍏ュ簱鍗曚笂鎶�
+    // 閰嶇洏鍏ュ簱鍗曚笂鎶�
     @Scheduled(cron = "0/30 * * * * ? ")
     @Async("orderThreadPool")
     void otherInOrderCompleteReport() {
         String erpReport = Parameter.get().getErpReport();
         if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) {
             OrderPakin orderPakin = orderPakinService.selectOne(new EntityWrapper<OrderPakin>().eq("settle", 4)
-                    .eq("doc_type", 3).orderBy("update_time"));
+                    .ne("doc_type", 1).orderBy("update_time"));
             if (orderPakin == null) {
                 return;
             }
             List<OrderDetlPakin> orderDetlPakins = orderDetlPakinService.selectByOrderId(orderPakin.getId());
             for (OrderDetlPakin orderDetl : orderDetlPakins) {
-                MesInApply result = JSONObject.parseObject(orderPakin.getMemo(), MesInApply.class);
-                result.setQty(orderDetl.getQty().intValue());
+                MesOutApply result = JSONObject.parseObject(orderPakin.getMemo(), MesOutApply.class);
+                for(MesOutApply.MesOutApplyItem mes:result.getItemdata()){
+                    if (orderDetl.getMatnr().equals(mes.getItemno())){
+                        mes.setWmsBarcode(orderDetl.getBarcode());
+                        mes.setRackNumber(orderDetl.getSku());
+                    }
+                }
 
-//                String url = MES_URL + "loadComplete";
-//                String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(result));
-//                if (!StringUtils.isEmpty(response) && response.contains("Success")) {
-//                    MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
-//                    if ("1".equals(mesReturn.getSuccess())) {
+                String url = MES_URL + "loadComplete";
+                String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(result));
+                if (!StringUtils.isEmpty(response) && response.contains("Success")) {
+                    MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
+                    if ("1".equals(mesReturn.getSuccess())) {
                         orderPakin.setSettle(6L);
                         orderPakinService.updateById(orderPakin);
                         log.info("璁㈠崟涓婃姤鎴愬姛锛宱rderNo={}", orderPakin.getOrderNo());
-//                    }
-//                }
+                    }
+                }
+            }
+        }
+    }
+
+    // 鍑哄簱鍗曚笂鎶�
+    @Scheduled(cron = "0/30 * * * * ? ")
+    @Async("orderThreadPool")
+    void otherOutOrderCompleteReport() {
+        String erpReport = Parameter.get().getErpReport();
+        if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) {
+            OrderPakout orderPakout = orderPakoutService.selectOne(new EntityWrapper<OrderPakout>().eq("settle", 4).orderBy("update_time"));
+            if (orderPakout == null) {
+                return;
+            }
+            List<OrderDetlPakout> orderDetlPakouts = orderDetlPakoutService.selectByOrderId(orderPakout.getId());
+            for (OrderDetlPakout orderDetl : orderDetlPakouts) {
+                MesOutApply result = JSONObject.parseObject(orderPakout.getMemo(), MesOutApply.class);
+                for(MesOutApply.MesOutApplyItem mes:result.getItemdata()){
+                    if (orderDetl.getMatnr().equals(mes.getItemno())){
+                        mes.setWmsBarcode(orderDetl.getBarcode());
+                        mes.setRackNumber(orderDetl.getSku());
+                    }
+                }
+
+                String url = MES_URL + "loadComplete";
+                String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(result));
+                if (!StringUtils.isEmpty(response) && response.contains("Success")) {
+                    MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
+                    if ("1".equals(mesReturn.getSuccess())) {
+                        orderPakout.setSettle(6L);
+                        orderPakoutService.updateById(orderPakout);
+                        log.info("璁㈠崟涓婃姤鎴愬姛锛宱rderNo={}", orderPakout.getOrderNo());
+                    }
+                }
             }
         }
     }
diff --git a/src/main/java/com/zy/asrs/task/WorkLogScheduler.java b/src/main/java/com/zy/asrs/task/WorkLogScheduler.java
index 06a0624..9d52fc9 100644
--- a/src/main/java/com/zy/asrs/task/WorkLogScheduler.java
+++ b/src/main/java/com/zy/asrs/task/WorkLogScheduler.java
@@ -1,6 +1,8 @@
 package com.zy.asrs.task;
 
+import com.zy.asrs.entity.Task;
 import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.TaskService;
 import com.zy.asrs.service.WrkMastService;
 import com.zy.asrs.task.core.ReturnT;
 import com.zy.asrs.task.handler.WorkLogHandler;
@@ -22,6 +24,8 @@
     private WorkLogHandler workLogHandler;
     @Autowired
     private WrkMastService wrkMastService;
+    @Autowired
+    private TaskService taskService;
 
     @Scheduled(cron = "0/3 * * * * ? ")
     private void execute(){
@@ -37,4 +41,18 @@
         }
     }
 
+    @Scheduled(cron = "0/3 * * * * ? ")
+    private void AGVexecute(){
+        List<Task> tasks = taskService.selectToBeCompleteData();
+        if (tasks.isEmpty()) {
+            return;
+        }
+        for (Task task : tasks) {
+            ReturnT<String> result = workLogHandler.AGVstart(task);
+            if (!result.isSuccess()) {
+                log.error("宸ヤ綔妗workNo={}]鍘嗗彶妗e鐞嗗け璐�", task.getTaskNo());
+            }
+        }
+    }
+
 }
diff --git a/src/main/java/com/zy/asrs/task/WorkMastScheduler.java b/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
index 714bd84..c574b8c 100644
--- a/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
+++ b/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
@@ -1,5 +1,6 @@
 package com.zy.asrs.task;
 
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.zy.asrs.entity.Task;
 import com.zy.asrs.entity.WrkMast;
 import com.zy.asrs.service.MesService;
@@ -54,9 +55,12 @@
         }
     }
 
+    /**
+     * AGV 304浠诲姟瀹屾垚锛屾湁鍜學MS鍏宠仈浠诲姟锛屽鍏宠仈浠诲姟鍋氬搴斿鐞嗭紝浠诲姟鐘舵�佷粠304--銆�305锛涙病鏈夊叧鑱斾换鍔★紝浠诲姟鐘舵�佷粠304--銆�305
+     */
     @Scheduled(cron = "0/3 * * * * ? ")
     private void executeTask(){
-        List<Task> wrkMasts = taskService.selectToBeCompleteData();
+        List<Task> wrkMasts = taskService.selectList(new EntityWrapper<Task>().eq("wrk_sts", 304));
         if (wrkMasts.isEmpty()) {
             return;
         }
diff --git a/src/main/java/com/zy/asrs/task/handler/AGVTaskReportHandler.java b/src/main/java/com/zy/asrs/task/handler/AGVTaskReportHandler.java
new file mode 100644
index 0000000..2dd58e0
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/handler/AGVTaskReportHandler.java
@@ -0,0 +1,66 @@
+package com.zy.asrs.task.handler;
+
+import com.zy.asrs.entity.Task;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.entity.rcs.RcsTaskSubmit;
+import com.zy.asrs.entity.rcs.RcsTaskTargetRoute;
+import com.zy.asrs.service.RcsService;
+import com.zy.asrs.task.AbstractHandler;
+import com.zy.asrs.task.core.ReturnT;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
+
+@Slf4j
+@Service
+@Transactional
+public class AGVTaskReportHandler extends AbstractHandler<String> {
+
+    @Resource
+    private RcsService rcsService;
+
+
+    public ReturnT<String> start(Task task) {
+        String SourceStaNoType = "SITE";
+        String TargetStaNoType = "SITE";
+        //缁檃gv涓嬪彂鐨勪换鍔$被鍨�,榛樿绔欏埌绔�
+        //浠诲姟绫诲瀷 4.绔欏埌鍖哄煙
+        if(task.getIoType()==4){
+            TargetStaNoType = "ZONE";
+
+            //浠诲姟绫诲瀷 5.鍖哄煙鍒扮珯
+        }else if(task.getIoType()==5){
+            SourceStaNoType = "ZONE";
+        }
+        // 涓嬪彂缁橰CS
+        RcsTaskSubmit rcsTaskSubmit = new RcsTaskSubmit();
+        rcsTaskSubmit.setRobotTaskCode(task.getTaskNo());
+        rcsTaskSubmit.setInitPriority(10);  //榛樿10
+        List<RcsTaskTargetRoute> targetRouteList = new ArrayList<>();
+        RcsTaskTargetRoute startRoute = new RcsTaskTargetRoute();
+        startRoute.setSeq(0);
+        startRoute.setType(SourceStaNoType);
+        startRoute.setCode(task.getSourceStaNo());
+        startRoute.setOperation("COLLECT");
+        targetRouteList.add(startRoute);
+        RcsTaskTargetRoute endRoute = new RcsTaskTargetRoute();
+        endRoute.setSeq(1);
+        endRoute.setType(TargetStaNoType);
+        endRoute.setCode(task.getStaNo());
+        endRoute.setOperation("DELIVERY");
+        targetRouteList.add(endRoute);
+        rcsTaskSubmit.setTargetRoute(targetRouteList);
+
+        // 杞彂缁欐捣搴锋垨鍗庢檽RCS
+        int success = rcsService.submitTask(rcsTaskSubmit, task.getPltType());
+        if (success == 0){
+            return FAIL;
+        }
+        return SUCCESS;
+    }
+}
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
index dc6f573..7199a61 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -2,10 +2,13 @@
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
+import com.zy.asrs.entity.Task;
 import com.zy.asrs.entity.WaitPakin;
 import com.zy.asrs.entity.WrkDetl;
 import com.zy.asrs.entity.WrkMast;
 import com.zy.asrs.service.*;
+import com.zy.asrs.service.impl.OrderPakinServiceImpl;
+import com.zy.asrs.service.impl.OrderPakoutServiceImpl;
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
 import com.zy.asrs.utils.OrderInAndOutUtil;
@@ -39,6 +42,14 @@
     private WaitPakinLogService waitPakinLogService;
     @Autowired
     private OrderService orderService;
+    @Autowired
+    private TaskService taskService;
+    @Autowired
+    private TaskLogService taskLogService;
+    @Autowired
+    private OrderPakoutServiceImpl orderPakoutService;
+    @Autowired
+    private OrderPakinServiceImpl orderPakinService;
 
     @Transactional
     public ReturnT<String> start(WrkMast wrkMast) {
@@ -50,12 +61,19 @@
                 while (iterator.hasNext()) {
                     WrkDetl wrkDetl = iterator.next();
                     if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
-//                        orderService.checkComplete(wrkDetl.getOrderNo());
-                        if (wrkMast.getIoType() ==  1 || wrkMast.getIoType() == 8 ||  wrkMast.getIoType() == 54 ||  wrkMast.getIoType() == 104){
-                            OrderInAndOutUtil.checkComplete(Boolean.TRUE,wrkDetl.getOrderNo());
-                        } else {
-                            OrderInAndOutUtil.checkComplete(Boolean.FALSE,wrkDetl.getOrderNo());
+                        //鍑哄簱鍗�
+                        if(wrkMast.getIoType()>100){
+                            orderPakoutService.checkComplete(wrkDetl.getOrderNo());
+                            //鍏ュ簱鍗�
+                        }else {
+                            orderPakinService.checkComplete(wrkDetl.getOrderNo());
                         }
+
+//                        if (wrkMast.getIoType() ==  1 || wrkMast.getIoType() == 8 ||  wrkMast.getIoType() == 54 ||  wrkMast.getIoType() == 104){
+//                            OrderInAndOutUtil.checkComplete(Boolean.TRUE,wrkDetl.getOrderNo());
+//                        } else {
+//                            OrderInAndOutUtil.checkComplete(Boolean.FALSE,wrkDetl.getOrderNo());
+//                        }
                         iterator.remove();
                     }
                 }
@@ -125,4 +143,17 @@
         return SUCCESS;
     }
 
+    @Transactional
+    public ReturnT<String> AGVstart(Task task) {
+        // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+        if (!taskLogService.save(task.getWrkNo())) {
+            exceptionHandle("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", task.getWrkNo());
+        }
+        // 鍒犻櫎宸ヤ綔涓绘。
+        if (!taskService.deleteById(task.getId())) {
+            exceptionHandle("鍒犻櫎宸ヤ綔涓绘。[workNo={0}]澶辫触",task.getWrkNo());
+        }
+        return SUCCESS;
+    }
+
 }
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
index 4d77aac..d715373 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -1,20 +1,21 @@
 package com.zy.asrs.task.handler;
 
+import com.alibaba.excel.util.StringUtils;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.mes.MesReturn;
 import com.zy.asrs.enums.LocStsType;
 import com.zy.asrs.service.*;
-import com.zy.asrs.service.impl.BasStationServiceImpl;
-import com.zy.asrs.service.impl.LocCacheServiceImpl;
-import com.zy.asrs.service.impl.OrderPakinServiceImpl;
-import com.zy.asrs.service.impl.TaskDetlServiceImpl;
+import com.zy.asrs.service.impl.*;
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
@@ -56,6 +57,8 @@
     private TaskDetlService taskDetlService;
     @Autowired
     private BasStationServiceImpl basStationService;
+    @Value("${mes.url}")
+    private String url;
 
     public ReturnT<String> start(WrkMast wrkMast) {
         // 4.鍏ュ簱瀹屾垚
@@ -568,8 +571,13 @@
                 default:
                     break;
             }
-            // 淇敼宸ヤ綔涓绘。鐘舵��
-            wrkMast.setWrkSts(15L);
+            if(!Cools.isEmpty(wrkMast.getMemo())){
+                // 淇敼宸ヤ綔涓绘。鐘舵��
+                wrkMast.setWrkSts(30L);//30.绛夊緟鍒涘缓AGV鎼繍浠诲姟
+            }else {
+                // 淇敼宸ヤ綔涓绘。鐘舵��
+                wrkMast.setWrkSts(15L);
+            }
             wrkMast.setModiTime(now);
             if (!wrkMastService.updateById(wrkMast)) {
 //                exceptionHandle("鏇存柊鍑哄簱瀹屾垚鐘舵�佸け璐�;[workNo={0}]", wrkMast.getWrkNo());
@@ -593,12 +601,40 @@
      */
     @Transactional(rollbackFor = Exception.class)
     public ReturnT<String> AgvStart(Task task) {
-        // 4.鍏ュ簱瀹屾垚
-        if (task.getWrkSts() == 4) {
-            return agvDoIn(task);
-            // 14.鍑哄簱瀹屾垚
-        } else if (task.getWrkSts() == 14) {
-            return agvDoOut(task);
+        //鏌ヨ鏄惁鏈夊叧鑱旂殑WrkMast浠诲姟
+        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", task.getWrkNo()));
+        if (wrkMast != null) {
+            if (wrkMast.getIoType()==110){
+                wrkMast.setWrkSts(32L);//32.绛夊緟缁勬墭
+            }else if (wrkMast.getIoType()==101){
+                wrkMast.setWrkSts(15L);//15.鍑哄簱鏇存柊瀹屾垚
+            }
+            wrkMast.setModiTime(new Date());
+            wrkMastService.updateById(wrkMast);
+            task.setWrkSts(305L);//浠诲姟鐘舵�佷粠304--銆�305
+            task.setModiTime(new Date());
+            taskService.updateById(task);
+
+            //瀵硅浆搴忔惉杩愬畬鎴愮殑浠诲姟缁撴灉鍙嶉缁檓es
+        }else if(task.getTaskType().equals("ZX-AGV")){
+            HashMap<String,Object> map = new HashMap<>();
+            map.put("taskno", task.getTaskNo());
+            String mesUrl = url+"AGVArrivalCompletedFit";
+            String response = RcsServiceImpl.sendPost(mesUrl, JSONObject.toJSONString(map));
+            if (!StringUtils.isEmpty(response) && response.contains("Success")){
+                MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
+                if("1".equals(mesReturn.getSuccess())) {
+                    task.setWrkSts(305L);//浠诲姟鐘舵�佷粠304--銆�305
+                    task.setModiTime(new Date());
+                    taskService.updateById(task);
+                }else {
+                    return new ReturnT<>(500, mesReturn.getMessage());
+                }
+            }
+        }else {
+            task.setWrkSts(305L);//浠诲姟鐘舵�佷粠304--銆�305
+            task.setModiTime(new Date());
+            taskService.updateById(task);
         }
         return SUCCESS;
     }
diff --git a/src/main/java/com/zy/common/model/LocTypeDto.java b/src/main/java/com/zy/common/model/LocTypeDto.java
index 154c4b8..e8ac917 100644
--- a/src/main/java/com/zy/common/model/LocTypeDto.java
+++ b/src/main/java/com/zy/common/model/LocTypeDto.java
@@ -14,7 +14,7 @@
 public class LocTypeDto {
 
     // 楂樹綆绫诲瀷{0:鏈煡,1:浣庡簱浣�,2:楂樺簱浣峿
-    private Short locType1;
+    private Short locType1=1;
 
     // 瀹界獎绫诲瀷{0:鏈煡,1:绐勫簱浣�,2:瀹藉簱浣峿
     private Short locType2;
@@ -30,9 +30,9 @@
             throw new CoolException("plc楂樹綆妫�娴嬪紓甯�");
         }
         if (basDevp.getLocType2() == 1) {
-            this.locType2 = 1; // 浣庡簱浣�
+            this.locType1 = 1; // 浣庡簱浣�
         } else {
-            this.locType2 = 2; // 楂樺簱浣�
+            this.locType1 = 2; // 楂樺簱浣�
         }
         log.info(JSON.toJSONString(this));
     }
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index ad88815..baf4f20 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -158,11 +158,11 @@
 
     @Transactional
     public StartupDto getLocNoNew(Integer staDescId,Integer sourceStaNo, LocTypeDto locTypeDto) {
-        List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts", 3).eq("crn_err", 0).eq("in_enable", "Y"));
-        if(basCrnps.size() == 0) {
-            log.error("鍏ュ簱璇锋眰搴撲綅澶辫触锛氬爢鍨涙満鎶ヨ/鏃犲彲鐢�/鏃犲彲鍏�");
-            throw new CoolException("鍏ュ簱璇锋眰搴撲綅澶辫触锛氬爢鍨涙満鎶ヨ/鏃犲彲鐢�/鏃犲彲鍏�");
-        }
+//        List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts", 3).eq("crn_err", 0).eq("in_enable", "Y"));
+//        if(basCrnps.size() == 0) {
+//            log.error("鍏ュ簱璇锋眰搴撲綅澶辫触锛氬爢鍨涙満鎶ヨ/鏃犲彲鐢�/鏃犲彲鍏�");
+//            throw new CoolException("鍏ュ簱璇锋眰搴撲綅澶辫触锛氬爢鍨涙満鎶ヨ/鏃犲彲鐢�/鏃犲彲鍏�");
+//        }
 
         StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>().eq("type_no", staDescId).eq("stn_no", sourceStaNo).eq("crn_no", 1));
         if (staDesc == null) {
@@ -170,11 +170,11 @@
             throw new CoolException("鍏ュ簱璇锋眰搴撲綅澶辫触锛氳矾寰勪笉瀛樺湪" + staDescId +"," + sourceStaNo);
         }
 
-        Short locType2 = locTypeDto.getLocType2();
-        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "O").eq("loc_type2", locType2).orderBy("lev1").orderBy("bay1").orderBy("row1"));
+        Short locType1 = 1;
+        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "O").eq("loc_type1", locType1).orderBy("lev1").orderBy("bay1").orderBy("row1"));
         if (locMast == null) {
-            log.error("鍏ュ簱璇锋眰搴撲綅澶辫触锛氭棤搴撲綅" + locType2);
-            throw new CoolException("鍏ュ簱璇锋眰搴撲綅澶辫触锛氭棤搴撲綅" + locType2);
+            log.error("鍏ュ簱璇锋眰搴撲綅澶辫触锛氭棤搴撲綅" + locType1);
+            throw new CoolException("鍏ュ簱璇锋眰搴撲綅澶辫触锛氭棤搴撲綅" + locType1);
         }
 
         StartupDto startupDto = new StartupDto();
diff --git a/src/main/java/com/zy/common/web/AuthController.java b/src/main/java/com/zy/common/web/AuthController.java
index cc00686..4df945c 100644
--- a/src/main/java/com/zy/common/web/AuthController.java
+++ b/src/main/java/com/zy/common/web/AuthController.java
@@ -14,10 +14,8 @@
 import com.zy.common.properties.SystemProperties;
 import com.zy.common.utils.RandomValidateCodeUtil;
 import com.zy.system.entity.*;
-import com.zy.system.entity.license.LicenseVerify;
 import com.zy.system.service.*;
 import com.zy.system.timer.LicenseTimer;
-import com.zy.system.timer.LoadingConfigTimer;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.transaction.annotation.Transactional;
@@ -50,42 +48,37 @@
     private RolePermissionService rolePermissionService;
     @Autowired
     private LicenseTimer licenseTimer;
-    @Autowired
-    private LoadingConfigTimer loadingConfigTimer;
-
-    @PostMapping("/login.action")
+    @RequestMapping("/login.action")
     @ManagerAuth(value = ManagerAuth.Auth.NONE, memo = "鐧诲綍")
-    public R loginAction(@RequestBody Map<String, String> param) {
+    public R loginAction(String username, String password){
         //楠岃瘉璁稿彲璇佹槸鍚︽湁鏁�
-        if (!licenseTimer.getSystemSupport()) {
+        if (!licenseTimer.getSystemSupport()){
             return R.parse(CodeRes.SYSTEM_20001);
         }
+        if (username.equals("super") && password.equals(Cools.md5(superPwd))) {
+            Map<String, Object> res = new HashMap<>();
+            res.put("username", username);
+            res.put("token", Cools.enToken(System.currentTimeMillis() + username, superPwd));
+            return R.ok(res);
+        }
         EntityWrapper<User> userWrapper = new EntityWrapper<>();
-        userWrapper.eq("username", param.get("username"));
+        userWrapper.eq("username", username);
         User user = userService.selectOne(userWrapper);
-        if (Cools.isEmpty(user)) {
-            if (param.get("username").equals("super") && param.get("password").equals(Cools.md5(superPwd))) {
-                Map<String, Object> res = new HashMap<>();
-                res.put("username", param.get("username"));
-                res.put("token", Cools.enToken(System.currentTimeMillis() + param.get("username"), superPwd));
-                return R.ok(res);
-            }
+        if (Cools.isEmpty(user)){
             return R.parse(CodeRes.USER_10001);
         }
-        if (user.getStatus() != 1) {
+        if (user.getStatus()!=1){
             return R.parse(CodeRes.USER_10002);
         }
-        if (!user.getPassword().equals(param.get("password"))) {
+        if (!user.getPassword().equals(password)){
             return R.parse(CodeRes.USER_10003);
         }
-        String token = Cools.enToken(System.currentTimeMillis() + param.get("username"), user.getPassword());
-        if (loadingConfigTimer.getTokenNumber() == 1) {
-            userLoginService.delete(new EntityWrapper<UserLogin>().eq("user_id", user.getId()).eq("system", "WMS"));
-        }        UserLogin userLogin = new UserLogin();
+        String token = Cools.enToken(System.currentTimeMillis() + username, user.getPassword());
+        userLoginService.delete(new EntityWrapper<UserLogin>().eq("user_id", user.getId()));
+        UserLogin userLogin = new UserLogin();
         userLogin.setUserId(user.getId());
         userLogin.setToken(token);
         userLogin.setCreateTime(new Date());
-        userLogin.setSystem("WMS");
         userLoginService.insert(userLogin);
         Map<String, Object> res = new HashMap<>();
         res.put("username", user.getUsername());
@@ -109,7 +102,7 @@
         int time = 0;
         while (time < 3000) {
             code = RandomValidateCodeUtil.code.get(sd);
-            if (!Cools.isEmpty(code)) {
+            if (!Cools.isEmpty(code)){
                 break;
             } else {
                 Thread.sleep(10);
@@ -122,13 +115,13 @@
 
     @RequestMapping("/user/detail/auth")
     @ManagerAuth
-    public R userDetail() {
+    public R userDetail(){
         return R.ok(userService.selectById(getUserId()));
     }
 
     @RequestMapping("/menu/auth")
     @ManagerAuth
-    public R menu() {
+    public R menu(){
         // 鑾峰彇鎵�鏈変竴绾ц彍鍗�
         List<Resource> oneLevel;
         User user = null;
@@ -147,7 +140,7 @@
             List<RoleResource> roleResources = roleResourceService.selectList(new EntityWrapper<RoleResource>().eq("role_id", user.getRoleId()));
             List<Long> resourceIds = new ArrayList<>();
             roleResources.forEach(roleResource -> resourceIds.add(roleResource.getResourceId()));
-            if (resourceIds.isEmpty()) {
+            if (resourceIds.isEmpty()){
                 return R.ok();
             }
             resourceWrapper = new EntityWrapper<Resource>().in("id", resourceIds).eq("level", 2).eq("status", 1).orderBy("sort");
@@ -165,11 +158,11 @@
                     // 鏄惁鎷ユ湁鏌ョ湅鏉冮檺
                     if (getUserId() != 9527) {
                         Resource view = resourceService.selectOne(new EntityWrapper<Resource>().eq("resource_id", resource.getId()).like("code", "#view"));
-                        if (!Cools.isEmpty(view)) {
+                        if (!Cools.isEmpty(view)){
                             RoleResource param = new RoleResource();
                             param.setResourceId(view.getId());
                             param.setRoleId(user.getRoleId());
-                            if (null == roleResourceService.selectOne(new EntityWrapper<>(param))) {
+                            if (null == roleResourceService.selectOne(new EntityWrapper<>(param))){
                                 continue;
                             }
                         }
@@ -194,11 +187,11 @@
 
     @RequestMapping("/power/list/auth")
     @ManagerAuth
-    public R powerList() {
+    public R powerList(){
         List<Resource> oneLevels = resourceService.selectList(new EntityWrapper<Resource>().eq("level", 1).eq("status", 1).orderBy("sort"));
         List<Map> result = new ArrayList<>();
         // 涓�绾�
-        for (Resource oneLevel : oneLevels) {
+        for (Resource oneLevel : oneLevels){
             List<Map> twoLevelsList = new ArrayList<>();
             Map<String, Object> oneLevelMap = new HashMap<>();
             oneLevelMap.put("title", oneLevel.getName());
@@ -207,7 +200,7 @@
             oneLevelMap.put("children", twoLevelsList);
             List<Resource> twoLevels = resourceService.selectList(new EntityWrapper<Resource>().eq("resource_id", oneLevel.getId()).eq("level", 2).eq("status", 1).orderBy("sort"));
             // 浜岀骇
-            for (Resource twoLevel : twoLevels) {
+            for (Resource twoLevel : twoLevels){
                 Map<String, Object> twoLevelMap = new HashMap<>();
                 twoLevelMap.put("title", twoLevel.getName());
                 twoLevelMap.put("id", twoLevel.getId());
@@ -217,7 +210,7 @@
                 twoLevelMap.put("children", threeLevelsList);
                 // 涓夌骇
                 List<Resource> threeLevels = resourceService.selectList(new EntityWrapper<Resource>().eq("resource_id", twoLevel.getId()).eq("level", 3).eq("status", 1).orderBy("sort"));
-                for (Resource threeLevel : threeLevels) {
+                for (Resource threeLevel : threeLevels){
                     Map<String, Object> threeLevelMap = new HashMap<>();
                     threeLevelMap.put("title", threeLevel.getName());
                     threeLevelMap.put("id", threeLevel.getId());
@@ -256,19 +249,19 @@
         List<Object> result = new ArrayList<>();
         // 鑿滃崟
         List<RoleResource> roleResources = roleResourceService.selectList(new EntityWrapper<RoleResource>().eq("role_id", roleId));
-        for (RoleResource roleResource : roleResources) {
+        for (RoleResource roleResource : roleResources){
             Resource resource = resourceService.selectById(roleResource.getResourceId());
-            if (!Cools.isEmpty(resource)) {
-                if (resource.getLevel() == 3) {
+            if (!Cools.isEmpty(resource)){
+                if (resource.getLevel() == 3){
                     result.add(resource.getId());
                 }
             }
         }
         // 鍔熻兘
         List<RolePermission> rolePermissions = rolePermissionService.selectList(new EntityWrapper<RolePermission>().eq("role_id", roleId));
-        for (RolePermission rolePermission : rolePermissions) {
+        for (RolePermission rolePermission : rolePermissions){
             Permission permission = permissionService.selectById(rolePermission.getPermissionId());
-            if (!Cools.isEmpty(permission)) {
+            if (!Cools.isEmpty(permission)){
                 result.add(permission.getAction());
             }
         }
@@ -278,12 +271,12 @@
     @RequestMapping("/power/auth")
     @ManagerAuth(memo = "鎺堟潈")
     @Transactional
-    public R power(Long roleId, String powers) {
+    public R power(Long roleId, String powers){
         Role role = roleService.selectById(roleId);
         Long leaderId = role.getLeader();
         roleResourceService.delete(new EntityWrapper<RoleResource>().eq("role_id", roleId));
         rolePermissionService.delete(new EntityWrapper<RolePermission>().eq("role_id", roleId));
-        if (!Cools.isEmpty(powers)) {
+        if (!Cools.isEmpty(powers)){
             List<PowerDto> dtos = JSON.parseArray(powers, PowerDto.class);
             for (PowerDto dto : dtos) {
                 Resource resource = resourceService.selectOne(new EntityWrapper<Resource>().eq("id", dto.getTwo()).eq("level", 2));
@@ -301,14 +294,14 @@
                     roleResourceService.insert(roleResource);
                 } else {
                     Permission permission = permissionService.selectOne(new EntityWrapper<Permission>().eq("action", dto.getTwo()));
-                    if (!Cools.isEmpty(permission)) {
+                    if (!Cools.isEmpty(permission)){
                         RolePermission rolePermission = new RolePermission();
                         rolePermission.setRoleId(roleId);
                         rolePermission.setPermissionId(permission.getId());
                         rolePermissionService.insert(rolePermission);
                     }
                 }
-                for (String three : dto.getThree()) {
+                for (String three : dto.getThree()){
                     Resource resource1 = resourceService.selectOne(new EntityWrapper<Resource>().eq("id", three).eq("level", 3));
                     if (!Cools.isEmpty(resource1)) {
                         // 鏍¢獙涓婄骇鏉冮檺
@@ -344,48 +337,48 @@
         return R.ok(resources);
     }
 
-//    @GetMapping(value = "/system/activation/auth")
-//    public R activation() {
-//        if (SystemProperties.SYSTEM_ACTIVATION) {
-//            String activationCode = SystemProperties.getActivationCode(OSinfo.getOSname().getActivationCodePath());
-//            String timeStr = AesUtils.decrypt(activationCode, SystemProperties.SALT);
-//            if (null == timeStr) {
-//                SystemProperties.SYSTEM_ACTIVATION = Boolean.FALSE;
-//                return R.error();
-//            }
-//            Date exprTime = DateUtils.convert(timeStr, DateUtils.yyyyMMddHHmmss);
-//            if (new Date().getTime() < exprTime.getTime()) {
-//                return R.ok().add(DateUtils.convert(exprTime));
-//            } else {
-//                SystemProperties.SYSTEM_ACTIVATION = Boolean.FALSE;
-//                return R.error();
-//            }
-//        } else {
-//            return R.error();
-//        }
-//    }
-//
-//    @PostMapping(value = "/system/secret/auth")
-//    @ManagerAuth
-//    public R systemSecret(@RequestParam(value = "secret") String secret) {
-//        if (Cools.isEmpty(secret)) {
-//            return R.error("璇疯緭鍏ユ縺娲荤爜");
-//        }
-//        // 楠岃瘉婵�娲荤爜
-//        String timeStr = AesUtils.decrypt(secret, SystemProperties.SALT);
-//        if (null == timeStr) {
-//            return R.error("婵�娲荤爜閿欒");
-//        }
-//        Date exprTime = DateUtils.convert(timeStr, DateUtils.yyyyMMddHHmmss);
-//        if (new Date().getTime() >= exprTime.getTime()) {
-//            return R.error("婵�娲荤爜宸插け鏁�");
-//        }
-//        boolean result = SystemProperties.saveActivationCode(OSinfo.getOSname().getActivationCodePath(), secret);
-//        if (!result) {
-//            return R.error("婵�娲诲け璐�");
-//        }
-//        SystemProperties.SYSTEM_ACTIVATION = Boolean.TRUE;
-//        return R.ok("婵�娲绘垚鍔燂紝鏈夋晥鏈熻嚦" + DateUtils.convert(exprTime));
-//    }
+    @GetMapping(value = "/system/activation/auth")
+    public R activation() {
+        if (SystemProperties.SYSTEM_ACTIVATION) {
+            String activationCode = SystemProperties.getActivationCode(OSinfo.getOSname().getActivationCodePath());
+            String timeStr = AesUtils.decrypt(activationCode, SystemProperties.SALT);
+            if (null == timeStr) {
+                SystemProperties.SYSTEM_ACTIVATION = Boolean.FALSE;
+                return R.error();
+            }
+            Date exprTime = DateUtils.convert(timeStr, DateUtils.yyyyMMddHHmmss);
+            if (new Date().getTime() < exprTime.getTime()) {
+                return R.ok().add(DateUtils.convert(exprTime));
+            } else {
+                SystemProperties.SYSTEM_ACTIVATION = Boolean.FALSE;
+                return R.error();
+            }
+        } else {
+            return R.error();
+        }
+    }
+
+    @PostMapping(value = "/system/secret/auth")
+    @ManagerAuth
+    public R systemSecret(@RequestParam(value = "secret") String secret) {
+        if (Cools.isEmpty(secret)) {
+            return R.error("璇疯緭鍏ユ縺娲荤爜");
+        }
+        // 楠岃瘉婵�娲荤爜
+        String timeStr = AesUtils.decrypt(secret, SystemProperties.SALT);
+        if (null == timeStr) {
+            return R.error("婵�娲荤爜閿欒");
+        }
+        Date exprTime = DateUtils.convert(timeStr, DateUtils.yyyyMMddHHmmss);
+        if (new Date().getTime() >= exprTime.getTime()) {
+            return R.error("婵�娲荤爜宸插け鏁�");
+        }
+        boolean result = SystemProperties.saveActivationCode(OSinfo.getOSname().getActivationCodePath(), secret);
+        if (!result) {
+            return R.error("婵�娲诲け璐�");
+        }
+        SystemProperties.SYSTEM_ACTIVATION = Boolean.TRUE;
+        return R.ok("婵�娲绘垚鍔燂紝鏈夋晥鏈熻嚦"+DateUtils.convert(exprTime));
+    }
 
 }
diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index 8e8fcba..bcad0a9 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -12,6 +12,7 @@
 import com.zy.common.CodeRes;
 import com.zy.common.model.LocTypeDto;
 import com.zy.common.model.StartupDto;
+import com.zy.common.model.enums.WorkNoType;
 import com.zy.common.service.CommonService;
 import com.zy.common.web.param.SearchLocParam;
 import lombok.extern.slf4j.Slf4j;
@@ -50,6 +51,8 @@
     private RowLastnoService rowLastnoService;
     @Autowired
     private WorkService workService;
+    @Autowired
+    private TaskService taskService;
 
     // TODO锛氱О閲嶃�佹媿鐓т笂鎶ュ瓨鍌紝CTU鏂欑杩愯浆
 
@@ -87,9 +90,9 @@
         }
 
         // 婧愮珯鐐圭姸鎬佹娴�
-        BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getSourceStaNo(), true);
-        sourceStaNo.setLocType2(param.getLocType1());
-        LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
+//        BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getSourceStaNo(), true);
+//        sourceStaNo.setLocType2(param.getLocType1());
+        LocTypeDto locTypeDto = new LocTypeDto();
 
         StartupDto dto = null;
         switch (param.getIoType()) {
@@ -153,7 +156,7 @@
         EmptyPlateOutParam emptyPlateOutParam = new EmptyPlateOutParam();
         emptyPlateOutParam.setOutSite(12);
         emptyPlateOutParam.setLocNos(new ArrayList<String>(){{add(locMast.getLocNo()+"");}});
-        WrkMast wrkMast = workService.emptyPlateOut(emptyPlateOutParam);
+        WrkMast wrkMast = workService.emptyPlateOut(emptyPlateOutParam,50);
         return R.ok(!Cools.isEmpty(wrkMast)? R.ok("鑷姩绌烘墭鍑哄簱鎴愬姛,宸ヤ綔鍙�:" + wrkMast.getWrkNo()) : R.error("鐢熸垚鑷姩绌烘墭鍑哄簱澶辫触"));
     }
 
@@ -163,7 +166,7 @@
     @Transactional
     public StartupDto startupFullPutStore(Integer devpNo, String barcode, LocTypeDto locTypeDto, List<WaitPakin> waitPakins) {
         // 婧愮珯鐐圭姸鎬佹娴�
-        BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
+//        BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
         // 妫�绱㈠簱浣�
 //        List<String> matnrs = waitPakins.stream().map(WaitPakin::getMatnr).distinct().collect(Collectors.toList());
 //        List<String> batchs = waitPakins.stream().map(WaitPakin::getBatch).distinct().collect(Collectors.toList());
@@ -190,7 +193,7 @@
         wrkMast.setExitMk("N"); // 閫�鍑�
         wrkMast.setEmptyMk("N"); // 绌烘澘
         wrkMast.setLinkMis("Y");
-        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
+        wrkMast.setCtnType(1); // 瀹瑰櫒绫诲瀷
         // 鎿嶄綔浜哄憳鏁版嵁
         wrkMast.setAppeTime(now);
         wrkMast.setModiTime(now);
@@ -221,11 +224,11 @@
             throw new CoolException("鏇存柊閫氱煡妗eけ璐�");
         }
         // 鏇存柊婧愮珯鐐逛俊鎭�
-        sourceStaNo.setWrkNo(workNo);
-        sourceStaNo.setModiTime(now);
-        if (!basDevpService.updateById(sourceStaNo)){
-            throw new CoolException("鏇存柊婧愮珯澶辫触");
-        }
+//        sourceStaNo.setWrkNo(workNo);
+//        sourceStaNo.setModiTime(now);
+//        if (!basDevpService.updateById(sourceStaNo)){
+//            throw new CoolException("鏇存柊婧愮珯澶辫触");
+//        }
         // 鏇存柊鐩爣搴撲綅鐘舵��
         LocMast locMast = locMastService.selectById(dto.getLocNo());
         if (locMast.getLocSts().equals("O")){
@@ -294,4 +297,48 @@
         return dto;
     }
 
+    @PostMapping("/createAGVMoveTask")
+    @ResponseBody
+    public synchronized R createAGVMoveTask(@RequestBody WrkMast wrkMast){
+        if (Cools.isEmpty(wrkMast)){
+            return R.error("鍑哄簱鏃跺垱寤篈GV鎼繍绌烘枡鏋朵换鍔′笉鑳戒负绌�");
+        }
+        //鏌ョ湅鏄惁鏈夌浉鍏崇殑AGV鎼繍浠诲姟瀛樺湪
+        List<Task> tasks = taskService.selectList(new EntityWrapper<Task>()
+                .in("sta_no", wrkMast.getStaNo(),wrkMast.getMemo())
+                .or()
+                .in("source_sta_no", wrkMast.getStaNo(),wrkMast.getMemo()));
+        if (!tasks.isEmpty()){
+            return R.error("鏈夊鍫嗗灈鏈烘帴椹崇珯鐐圭殑AGV鎼繍浠诲姟,鏆傛椂鏃犳硶鐢熸垚AGV鎼繍浠诲姟");
+        }
+        //鐢熸垚AGV鎼繍绌烘枡鏋朵换鍔�
+        // 淇濆瓨宸ヤ綔妗�
+        Task task = new Task();
+        Date date = new Date();
+        String TaskNo = wrkMast.getWrkNo()+"-"+date.getTime();
+        task.setWrkNo(wrkMast.getWrkNo())
+                .setTaskNo(TaskNo)
+                .setIoTime(date)
+                .setWrkSts(301L) // 宸ヤ綔鐘舵�侊細301.浠诲姟涓嬪彂
+                .setIoType(5) // 鍏ュ嚭搴撶姸鎬侊細 5.鍖哄煙鍒扮珯
+                .setTaskType("agv")
+                .setIoPri(10D)
+                .setFullPlt("N") // 婊℃澘锛歒
+                .setPicking("N") // 鎷f枡
+                .setExitMk("N")// 閫�鍑�
+                .setStaNo(wrkMast.getStaNo())
+                .setSourceStaNo("E1")//绌烘枡鏋剁紦瀛樺尯E1
+                .setEmptyMk("Y")// 绌烘澘
+                .setBarcode("")// 鎵樼洏鐮�
+                .setLinkMis("N")
+                .setAppeUser(9945L)
+                .setAppeTime(date)
+                .setModiUser(9945L)
+                .setModiTime(date);
+        if (!taskService.insert(task)) {
+            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+        }
+        return R.ok();
+    }
+
 }
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 07d72b5..c807524 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -1,5 +1,5 @@
 server:
-  port: 8089
+  port: 8083
   servlet:
     context-path: /@pom.build.finalName@
 
@@ -12,7 +12,7 @@
     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
     username: sa
     password: sa@123
-    url: jdbc:sqlserver://127.0.0.1:1433;databasename=jgwms
+    url: jdbc:sqlserver://127.0.0.1:1433;databasename=jnejc-ljqwms
 #    username: sa
 #    password: Skyouc#23
 #    url: jdbc:sqlserver://192.168.4.24:1433;databasename=jsxswms
@@ -43,14 +43,14 @@
     path: /stock/out/@pom.build.finalName@/logs
 
 super:
-  pwd: asrs2023
+  pwd: xltys1995
 
 swagger:
   enable: false
 
 #License鐩稿叧閰嶇疆
 license:
-  subject: integrationasrs
+  subject: jnejc-ljqasrs
   publicAlias: publicCert
   storePass: public_zhongyang_123456789
   licensePath: license.lic
@@ -131,15 +131,24 @@
 
 #mes瀵规帴
 mes:
-  url: http://172.26.11.250/dev-api/basicmodel/Api/WMS/
+
+  url: http://172.26.160.5:80/dev-api/basicmodel/WmsFit/Api/
   #榛樿鎺ュ彛鎿嶄綔浜哄憳id
   defaultUserId: 30
 
 #娴峰悍瀵规帴
 hik:
-  url: http://127.0.0.1:8089/hik/
+  switch: false
+  url: http://172.26.11.98:80/
 
 #鍗庢檽瀵规帴
 hx:
-  url: http://127.0.0.1:8089/hx/
+  url: http://172.26.3.131:8300/api/robot/
+  #杞簭浠诲姟涓嬪彂
+  taskNo: controller/task/submit
+  #鍏ョ珯鍏佽
+  inOk: eqpt/notify/product
+  #绂荤珯鍏佽
+
+  #绂荤珯瀹屾垚
 
diff --git a/src/main/resources/mapper/LocDetlMapper.xml b/src/main/resources/mapper/LocDetlMapper.xml
index 31cc31b..9db0603 100644
--- a/src/main/resources/mapper/LocDetlMapper.xml
+++ b/src/main/resources/mapper/LocDetlMapper.xml
@@ -125,65 +125,65 @@
             <when test="batch != null and batch != ''">
                 and a.batch = #{batch}
             </when>
-            <otherwise>
-                and (a.batch IS NULL OR a.batch = '')
-            </otherwise>
+<!--            <otherwise>-->
+<!--                and (a.batch IS NULL OR a.batch = '')-->
+<!--            </otherwise>-->
         </choose>
         <choose>
             <when test="brand != null and brand != ''">
                 and a.brand = #{brand}
             </when>
-            <otherwise>
-                and (a.brand IS NULL OR a.brand = '')
-            </otherwise>
+<!--            <otherwise>-->
+<!--                and (a.brand IS NULL OR a.brand = '')-->
+<!--            </otherwise>-->
         </choose>
         <choose>
             <when test="standby1 != null and standby1 != ''">
                 and a.standby1 = #{standby1}
             </when>
-            <otherwise>
-                and (a.standby1 IS NULL OR a.standby1 = '')
-            </otherwise>
+<!--            <otherwise>-->
+<!--                and (a.standby1 IS NULL OR a.standby1 = '')-->
+<!--            </otherwise>-->
         </choose>
         <choose>
             <when test="standby2 != null and standby2 != ''">
                 and a.standby2 = #{standby2}
             </when>
-            <otherwise>
-                and (a.standby2 IS NULL OR a.standby2 = '')
-            </otherwise>
+<!--            <otherwise>-->
+<!--                and (a.standby2 IS NULL OR a.standby2 = '')-->
+<!--            </otherwise>-->
         </choose>
         <choose>
             <when test="standby3 != null and standby3 != ''">
                 and a.standby3 = #{standby3}
             </when>
-            <otherwise>
-                and (a.standby3 IS NULL OR a.standby3 = '')
-            </otherwise>
+<!--            <otherwise>-->
+<!--                and (a.standby3 IS NULL OR a.standby3 = '')-->
+<!--            </otherwise>-->
         </choose>
         <choose>
             <when test="boxType1 != null and boxType1 != ''">
                 and a.box_type1 = #{boxType1}
             </when>
-            <otherwise>
-                and (a.box_type1 IS NULL OR a.box_type1 = '')
-            </otherwise>
+<!--            <otherwise>-->
+<!--                and (a.box_type1 IS NULL OR a.box_type1 = '')-->
+<!--            </otherwise>-->
         </choose>
         <choose>
             <when test="boxType2 != null and boxType2 != ''">
                 and a.box_type2 = #{boxType2}
             </when>
-            <otherwise>
-                and (a.box_type2 IS NULL OR a.box_type2 = '')
-            </otherwise>
+<!--            <otherwise>-->
+<!--                and (a.box_type2 IS NULL OR a.box_type2 = '')-->
+<!--            </otherwise>-->
         </choose>
         <choose>
             <when test="boxType3 != null and boxType3 != ''">
                 and a.box_type3 = #{boxType3}
             </when>
-            <otherwise>
-                and (a.box_type3 IS NULL OR a.box_type3 = '')
-            </otherwise>
+<!--            <otherwise>-->
+<!--                and (a.box_type3 IS NULL OR a.box_type3 = '')-->
+<!--            </otherwise>-->
         </choose>
     </sql>
     <sql id="batchSeqNew">
@@ -545,12 +545,12 @@
         <include refid="batchSeqA"></include>
 
 
-        <if test="locNos != null and locNos.size > 0">
-            and b.loc_no not in
-            <foreach item="item" collection="locNos" index="index"  separator="," open="(" close=")">
-                #{item}
-            </foreach>
-        </if>
+<!--        <if test="locNos != null and locNos.size > 0">-->
+<!--            and b.loc_no not in-->
+<!--            <foreach item="item" collection="locNos" index="index"  separator="," open="(" close=")">-->
+<!--                #{item}-->
+<!--            </foreach>-->
+<!--        </if>-->
 
         order by
         DATEPART(yyyy,a.modi_time),DATEPART(mm,a.modi_time),DATEPART(dd,a.modi_time), a.anfme
diff --git a/src/main/resources/mapper/TaskMapper.xml b/src/main/resources/mapper/TaskMapper.xml
index 66cbbeb..37b366b 100644
--- a/src/main/resources/mapper/TaskMapper.xml
+++ b/src/main/resources/mapper/TaskMapper.xml
@@ -9,7 +9,7 @@
 
     </resultMap>
     <select id="selectToBeCompleteData" resultType="com.zy.asrs.entity.Task">
-        select * from agv_task where ((wrk_sts = 4 Or wrk_sts = 14 ) and io_type != 103 and io_type != 104 and io_type != 107 ) or (wrk_sts = 2 and io_type=6) order by upd_mk,error_time,io_time,wrk_no
+        select * from agv_task where wrk_sts = 305 order by upd_mk,error_time,io_time,wrk_no
     </select>
 
 </mapper>
diff --git a/src/main/resources/mapper/WrkDetlMapper.xml b/src/main/resources/mapper/WrkDetlMapper.xml
index 2d7e421..02f8087 100644
--- a/src/main/resources/mapper/WrkDetlMapper.xml
+++ b/src/main/resources/mapper/WrkDetlMapper.xml
@@ -88,9 +88,9 @@
     </update>
 
     <select id="selectAndLogByOrderNo" resultMap="BaseResultMap">
-        select * from asr_wrk_detl where order_no = #{orderNo}
+        select * from asr_wrk_detl where order_no = #{orderNo} and danger != 1
         union
-        select * from asr_wrk_detl_log where order_no = #{orderNo}
+        select * from asr_wrk_detl_log where order_no = #{orderNo} and danger != 1
     </select>
 
     <update id="updateInspect">
diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js
index 3bf62ea..ca66c3c 100644
--- a/src/main/webapp/static/js/common.js
+++ b/src/main/webapp/static/js/common.js
@@ -1,4 +1,4 @@
-var baseUrl = "/jgwms";
+var baseUrl = "/ljqwms";
 
 // 璇︽儏绐楀彛-楂樺害
 var detailHeight = '80%';
diff --git a/src/main/webapp/views/login.html b/src/main/webapp/views/login.html
index 23f1ef0..ca0a611 100644
--- a/src/main/webapp/views/login.html
+++ b/src/main/webapp/views/login.html
@@ -134,12 +134,14 @@
         }
         let params = {username: username, password: hex_md5(password)}
         $.ajax({
-            url: baseUrl + "/login.action",
-            headers: {'Content-Type': 'application/json'},
-            data: JSON.stringify(params),
+            url: baseUrl+"/login.action",
+            data: {
+                username: username,
+                password: hex_md5(password)
+            },
             method: 'POST',
             success: function (res) {
-                if (res.code === 200) {
+                if (res.code === 200){
                     localStorage.setItem("token", res.data.token);
                     localStorage.setItem("username", res.data.username);
                     window.location.href = "index.html";
@@ -149,9 +151,6 @@
                     layer.tips(res.msg, '#username', {tips: [4, '#ff0000']});
                 } else if (res.code === 10003) {
                     layer.tips(res.msg, '#password', {tips: [4, '#ff0000']});
-                } else if (res.code == 20001) {
-                    layer.tips(res.msg, '.login-btn', {tips: [3, '#ff0000']});
-                    $("#updateLicense").show()
                 } else {
                     layer.tips(res.msg, '.login-btn', {tips: [3, '#ff0000']});
                 }

--
Gitblit v1.9.1