From 259e38eb55c12b501427702d551d4de61182406c Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期六, 13 十二月 2025 15:03:12 +0800
Subject: [PATCH] 接口对接功能完善

---
 src/main/java/com/zy/asrs/task/handler/JlerHandler.java       |  140 ++++++++++
 src/main/resources/mapper/WrkMastLogMapper.xml                |    3 
 src/main/java/com/zy/asrs/entity/mes/TransTask.java           |    3 
 src/main/resources/mapper/TaskDetlMapper.xml                  |   96 +++---
 src/main/java/com/zy/asrs/task/JlerScheduler.java             |   65 ++++
 src/main/java/com/zy/asrs/entity/WrkMast.java                 |    8 
 src/main/resources/mapper/WrkMastMapper.xml                   |    5 
 src/main/java/com/zy/asrs/entity/WrkMastLog.java              |   11 
 src/main/java/com/zy/asrs/task/OrderSyncScheduler.java        |   63 +++
 src/main/java/com/zy/asrs/controller/MobileController.java    |   11 
 src/main/java/com/zy/common/web/WcsController.java            |    4 
 src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java    |  253 ++++++++++++------
 src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java    |   93 ++++--
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java |   54 +++
 src/main/resources/application-dev.yml                        |    3 
 src/main/java/com/zy/asrs/service/RcsService.java             |    2 
 src/main/java/com/zy/asrs/controller/MesController.java       |    7 
 src/main/java/com/zy/asrs/service/MobileService.java          |    8 
 18 files changed, 640 insertions(+), 189 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/MesController.java b/src/main/java/com/zy/asrs/controller/MesController.java
index 47cf305..d8e2634 100644
--- a/src/main/java/com/zy/asrs/controller/MesController.java
+++ b/src/main/java/com/zy/asrs/controller/MesController.java
@@ -12,6 +12,7 @@
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.util.List;
 
 @RestController
 @Slf4j
@@ -28,11 +29,13 @@
     // 鐗╂枡淇℃伅鍚屾
     @PostMapping("/api/mes/synMatInfo")
     @AppAuth(memo = "鐗╂枡淇℃伅鍚屾")
-    public MesReturn synMatInfo(@RequestHeader(required = false) String appkey,@RequestBody MesMatRecvForm param, HttpServletRequest request){
+    public MesReturn synMatInfo(@RequestHeader(required = false) String appkey, @RequestBody List<MesMatRecvForm> param, HttpServletRequest request){
         auth(appkey, param, request);
         MesReturn mesReturn = new MesReturn();
         try {
-            mesReturn = mesService.matInfoAndInBound(param);
+            for(MesMatRecvForm matRecvForm:param) {
+                mesReturn = mesService.matInfoAndInBound(matRecvForm);
+            }
         } catch (Exception e) {
             mesReturn.setSuccess("2");
             mesReturn.setMessage("鐗╂枡淇℃伅鍚屾澶辫触");
diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index 7e048b2..2335fea 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -532,7 +532,16 @@
         if(!param.containsKey("staNo") || !param.containsKey("locType")){ // 1.绐勶紝2.瀹�
             return R.parse(BaseRes.PARAM);
         }
-        return mobileService.callEmptyBinOutBound(param.getString("staNo"),param.getString("locType"),getUserId());
+        return mobileService.callEmptyBinOutBound(null,param.getString("staNo"),param.getString("locType"),getUserId());
+    }
+
+    @PostMapping("/callEmptyBinInBound")
+    @ManagerAuth(memo = "pda鍛煎彨鏂欐鍥炲簱")
+    public synchronized R callEmptyBinInBound(@RequestBody JSONObject param) {
+        if(!param.containsKey("site")){ // 鎼繍璧风偣
+            return R.parse(BaseRes.PARAM);
+        }
+        return mobileService.callEmptyBinInBound(param.getString("site"),getUserId());
     }
 
 }
diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java
index daf4250..f828241 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMast.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -332,6 +332,14 @@
     @TableField("task_no")
     private String taskNo;
 
+    @ApiModelProperty(value= "鏄惁鍛煎彨agv,0.鏈懠鍙紝1.宸插懠鍙�")
+    @TableField("call_agv")
+    private Integer callAgv;
+
+    @ApiModelProperty(value= "agv鐩爣绔欑偣")
+    @TableField("agv_sta")
+    private String agvSta;
+
     public WrkMast() {}
 
     public String getYmd$(){
diff --git a/src/main/java/com/zy/asrs/entity/WrkMastLog.java b/src/main/java/com/zy/asrs/entity/WrkMastLog.java
index 820f59d..bbffab0 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMastLog.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMastLog.java
@@ -327,6 +327,17 @@
     @TableField("take_none")
     private String takeNone;
 
+    @TableField("task_no")
+    private String taskNo;
+
+    @ApiModelProperty(value= "鏄惁鍛煎彨agv,0.鏈懠鍙紝1.宸插懠鍙�")
+    @TableField("call_agv")
+    private Integer callAgv;
+
+    @ApiModelProperty(value= "agv鐩爣绔欑偣")
+    @TableField("agv_sta")
+    private String agvSta;
+
     public WrkMastLog() {
     }
 
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..a70adce 100644
--- a/src/main/java/com/zy/asrs/entity/mes/TransTask.java
+++ b/src/main/java/com/zy/asrs/entity/mes/TransTask.java
@@ -18,7 +18,8 @@
     @JsonProperty("OrderNo")
     @JSONField(name = "OrderNo")
     private String OrderNo;
-    // 杩愯緭绫诲瀷锛�01锛氱┖鎵橈紝02锛氭瘺鍧紝03锛氭垚鍝侊紝04锛氳浆搴忥紝鏈帴鍙d负杞簭
+    // 杩愯緭绫诲瀷锛�01涓婄┖鎵� 02 涓嬬┖鎵橈紝姣涘澂 03 涓婃瘺鍧� 04 涓嬫垚鍝� 05 涓婂垁 06 涓嬪垁
+    //涓婂嚭绔嬪簱锛屼笅鍏ョ珛搴�
     @JsonProperty("TransType")
     @JSONField(name = "TransType")
     private String TransType;
diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java
index 389b487..de92c86 100644
--- a/src/main/java/com/zy/asrs/service/MobileService.java
+++ b/src/main/java/com/zy/asrs/service/MobileService.java
@@ -5,6 +5,7 @@
 import com.zy.asrs.entity.BasDevp;
 import com.zy.asrs.entity.LocDetl;
 import com.zy.asrs.entity.OrderDetl;
+import com.zy.asrs.entity.mes.MesOutApply;
 import com.zy.asrs.entity.param.*;
 
 import java.util.Date;
@@ -106,5 +107,10 @@
      * @param locType 鎵樼洏绫诲瀷 1.绐勶紝2.瀹�
      * @param userId 鐢ㄦ埛id
      */
-    R callEmptyBinOutBound(String staNo, String locType, Long userId);
+    R callEmptyBinOutBound(MesOutApply mesOutApply,String staNo, String locType, Long userId);
+
+    /**
+     * pda鍛煎彨鏂欐鍥炲簱
+     */
+    R callEmptyBinInBound(String site, 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..fdaebe2 100644
--- a/src/main/java/com/zy/asrs/service/RcsService.java
+++ b/src/main/java/com/zy/asrs/service/RcsService.java
@@ -20,7 +20,7 @@
      * @param rcsFactory 1 娴峰悍锛�2 鍗庢檽锛�
      * @return
      */
-    int submitTask(RcsTaskSubmit rcsTaskSubmit, int rcsFactory);
+    RcsReturn submitTask(RcsTaskSubmit rcsTaskSubmit, int rcsFactory);
 
     /**
      * 2.1.3浠诲姟缁х画鎵ц鎺ュ彛
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 02b555d..38a457c 100644
--- a/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MesServiceImpl.java
@@ -4,18 +4,17 @@
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
 import com.core.common.SnowflakeIdWorker;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.mes.*;
-import com.zy.asrs.entity.rcs.RcsReporterTask;
-import com.zy.asrs.entity.rcs.RcsTaskContinue;
-import com.zy.asrs.entity.rcs.RcsTaskSubmit;
-import com.zy.asrs.entity.rcs.RcsTaskTargetRoute;
+import com.zy.asrs.entity.rcs.*;
 import com.zy.asrs.mapper.AgvInfoMapper;
 import com.zy.asrs.mapper.MatItemBarcodeMapper;
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.OrderInAndOutUtil;
+import com.zy.common.model.LocDetlDto;
 import com.zy.common.model.enums.WorkNoType;
 import com.zy.common.service.CommonService;
 import lombok.extern.slf4j.Slf4j;
@@ -86,6 +85,12 @@
 
     @Resource
     private MobileService mobileService;
+
+    @Resource
+    private WrkMastService wrkMastService;
+
+    @Resource
+    private WrkDetlService wrkDetlService;
 
 
     // region MES鎺ュ彛
@@ -267,7 +272,7 @@
                 orderDetlPakin.setMaktx(mat.getMaktx());
                 orderDetlPakin.setSpecs(mat.getSpecs());
                 orderDetlPakin.setModel(mat.getModel());
-                orderDetlPakin.setStandby1(JSONObject.toJSONString(mesMat.getItemBarcode()));   // 闆朵欢浜岀淮鐮�
+                orderDetlPakin.setStandby1(barCodeListToStr(mesMat.getItemBarcode()));   // 闆朵欢浜岀淮鐮�
                 orderDetlPakin.setStandby2("1");  //淇濆瓨榻愬鎬ф鏌ユ爣璇嗭紝1 妫�鏌ワ紱0 涓嶆鏌ワ紱
                 orderDetlPakin.setCreateBy(defaultUserId);
                 orderDetlPakin.setCreateTime(now);
@@ -361,48 +366,59 @@
      * @param mesOutApply
      * @return 1 鎴愬姛锛�-1 璁㈠崟閲嶅锛�
      */
+    @Transactional
     public int outBoundOrder(MesOutApply mesOutApply){
 
         // 绌烘墭鍑哄簱
         if (StringUtils.isEmpty(mesOutApply.getOrderNo()) && "01".equals(mesOutApply.getTransType())) {
             // 鐢熸垚绌烘墭鍑哄簱浠诲姟
-            mobileService.callEmptyBinOutBound(WMS_TRANS_START_STATION_1,"1",defaultUserId);
+            mobileService.callEmptyBinOutBound(mesOutApply,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);
-            }
+//            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;
+            long settle = 2;
 
             // 鏍¢獙璁㈠崟鏄惁閲嶅
             OrderPakout order = orderPakoutService.selectByNo(mesOutApply.getOrderNo());
             if (order != null && !StringUtils.isEmpty(order.getOrderNo())) {
                 log.error("鍑哄簱璁㈠崟鍙烽噸澶嶏細{}",mesOutApply.getOrderNo());
                 return -1;
+            }
+            String itemBarcode = barCodeListToStr(mesOutApply.getItemBarcode());
+            // 鑷姩鍑哄簱
+            LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("standby1", itemBarcode));
+            if (locDetl == null) {
+                throw new CoolException("闆朵欢浜岀淮鐮佹病鏈夊尮閰嶅埌搴撳瓨锛�" +itemBarcode );
+            }
+            LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetl.getLocNo()));
+            if (!locMast.getLocSts().equals("F")) {
+                throw new CoolException("搴撲綅鐘舵�佷笉涓篎锛�" +locMast.getLocNo() );
             }
 
             // 鐢熸垚璁㈠崟
@@ -420,6 +436,7 @@
             orderPakout.setUpdateTime(now);
             orderPakout.setMemo(JSONObject.toJSONString(mesOutApply));
             orderPakout.setPakinPakoutStatus(2);
+            orderPakout.setNumber(locMast.getBarcode()); // 鎵樼洏鏉$爜锛屼笂鎶ユ椂鐢�
             if (!orderPakoutService.insert(orderPakout)) {
                 log.error("MES淇濆瓨鍑哄簱璁㈠崟涓绘。澶辫触");
                 throw new CoolException("淇濆瓨鍑哄簱璁㈠崟涓绘。澶辫触");
@@ -431,12 +448,14 @@
             orderDetlPakout.setOrderId(orderPakout.getId());
             orderDetlPakout.setOrderNo(orderPakout.getOrderNo());
             orderDetlPakout.setAnfme(Double.valueOf(mesOutApply.getQty()));
+            orderDetlPakout.setWorkQty(orderDetlPakout.getAnfme());
             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.setStandby1(itemBarcode);
             orderDetlPakout.setCreateBy(defaultUserId);
             orderDetlPakout.setCreateTime(now);
             orderDetlPakout.setUpdateBy(defaultUserId);
@@ -448,48 +467,102 @@
                 throw new CoolException("淇濆瓨鍑哄簱璁㈠崟鏄庣粏妗eけ璐�");
             }
 
-            // 绔嬪簱鐢熸垚璁㈠崟鍚庯紝鑷姩璋冨害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());
-                            }
+            // 鐢熸垚宸ヤ綔鍙�
+            int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(101));
+            // 鐢熸垚宸ヤ綔妗�
+            WrkMast wrkMast = new WrkMast();
+            wrkMast.setWrkNo(workNo);
+            wrkMast.setIoTime(now);
+            wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+            wrkMast.setIoType(101); // 鍏ュ嚭搴撶姸鎬�
+            wrkMast.setIoPri(13D); // 浼樺厛绾э細13
+            wrkMast.setCrnNo(1);
+            wrkMast.setSourceStaNo("203"); // 婧愮珯
+            wrkMast.setStaNo("204"); // 鐩爣绔�
+            wrkMast.setSourceLocNo(locMast.getLocNo()); // 婧愬簱浣�
+            wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+            wrkMast.setPicking("N"); // 鎷f枡
+            wrkMast.setExitMk("N"); // 閫�鍑�
+            wrkMast.setEmptyMk("N"); // 绌烘澘
+            wrkMast.setLinkMis("N");
+            wrkMast.setBarcode(locMast.getBarcode());
+            wrkMast.setAppeUser(defaultUserId); // 鎿嶄綔浜哄憳鏁版嵁
+            wrkMast.setAppeTime(now);
+            wrkMast.setModiUser(defaultUserId);
+            wrkMast.setModiTime(now);
+            wrkMast.setMemo(JSONObject.toJSONString(mesOutApply));
+            wrkMast.setTaskNo(mesOutApply.getTaskno());
+            wrkMast.setAgvSta(mesOutApply.getStationId());
+            wrkMastService.insert(wrkMast);
+            // 鐢熸垚宸ヤ綔妗f槑缁�
+                WrkDetl wrkDetl = new WrkDetl();
+                wrkDetl.sync(locDetl);
+                wrkDetl.setOrderNo(orderPakout.getOrderNo()); // 鎵嬪姩鍑哄簱涓嶉渶瑕佸甫鍑哄簱瀛樹腑鐨勫崟鎹紪鍙�
+                wrkDetl.setWrkNo(workNo);
+                wrkDetl.setIoTime(now);
+                wrkDetl.setAnfme(orderDetlPakout.getAnfme()); // 鏁伴噺
+                wrkDetl.setAppeTime(now);
+                wrkDetl.setAppeUser(defaultUserId);
+                wrkDetl.setModiTime(now);
+                wrkDetl.setModiUser(defaultUserId);
+//                wrkDetl.setMatnr(detlDto.getLocDetl().getMatnr());
+//                wrkDetl.setMaktx(detlDto.getLocDetl().getMaktx());
+//                wrkDetl.setUnit(detlDto.getLocDetl().getUnit());
+//                wrkDetl.setSpecs(detlDto.getLocDetl().getSpecs());
+//                wrkDetl.setUnit(detlDto.getLocDetl().getUnit());
+//                wrkDetl.setModel(detlDto.getLocDetl().getModel());
+                wrkDetlService.insert(wrkDetl);
 
-                            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);
+            // 淇敼搴撲綅鐘舵��:   F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
+            if (locMast.getLocSts().equals("F")) {
+                locMast.setLocSts("R");
+                locMast.setModiUser(defaultUserId);
+                locMast.setModiTime(now);
+                locMastService.updateById(locMast);
             }
+            log.info("鍑哄簱浠诲姟鐢熸垚鎴愬姛锛屼换鍔″彿锛歿}",workNo);
+            // 绔嬪簱鐢熸垚璁㈠崟鍚庯紝鑷姩璋冨害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(mesOutApply.getQty());
+//                            transTask.setProductLineId(mesOutApply.getProductLineId());
+//                            transTask.setItemBarcode(mesOutApply.getItemBarcode());
+//                            transTask.setTuoPanId(locDetl.getZpallet());
+//                            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;
@@ -513,8 +586,8 @@
                     transTask.setOrderNo(mesInApply.getOrderNo());
                     transTask.setTransType(mesInApply.getTransType());
                     transTask.setCurProcess(mesInApply.getProductLineId());
-                    transTask.setCurStationId(mesInApply.getStationID());
-                    transTask.setNextStationId(WMS_TRANS_START_STATION_2);
+                    transTask.setCurStationId("A3");
+                    transTask.setNextStationId("A4");
                     transTask.setItemno(WMS_ZPALLET_ID);  // 鍥哄畾涓虹┖鎵樼殑缂栫爜
                     transTask.setQty(1);    // 绌烘墭鍙洖1涓�
                     transTask.setProductLineId(mesInApply.getProductLineId());
@@ -571,9 +644,9 @@
             orderDetlPakin.setMaktx(mat.getMaktx());
             orderDetlPakin.setSpecs(mat.getSpecs());
             orderDetlPakin.setModel(mat.getModel());
-            if (mesInApply.getProductInfo() != null) {
-                orderDetlPakin.setStandby1(JSONObject.toJSONString(mesInApply.getProductInfo())); //闆朵欢璇︽儏瀛樺湪1
-            }
+            List<String> itemBarcode = mesInApply.getProductInfo().stream().map(MesInApply.ProductInfo::getItemBarcode).collect(Collectors.toList());
+            orderDetlPakin.setStandby1(barCodeListToStr(itemBarcode)); //闆朵欢璇︽儏瀛樺湪1
+
             orderDetlPakin.setStandby2("0");  //淇濆瓨榻愬鎬ф鏌ユ爣璇嗭紝1 妫�鏌ワ紱0 涓嶆鏌ワ紱
             orderDetlPakin.setCreateBy(defaultUserId);
             orderDetlPakin.setCreateTime(now);
@@ -597,7 +670,6 @@
             waitPakin.setAppeTime(now);
             waitPakin.setModiUser(defaultUserId);
             waitPakin.setModiTime(now);
-            List<String> itemBarcode = mesInApply.getProductInfo().stream().map(MesInApply.ProductInfo::getItemBarcode).collect(Collectors.toList());
             waitPakin.setStandby1(barCodeListToStr(itemBarcode));
             waitPakinService.insert(waitPakin);
             OrderInAndOutUtil.increaseWorkQty(Boolean.TRUE, orderPakin.getId(), orderDetlPakin.getMatnr(), orderDetlPakin.getBatch(),
@@ -770,6 +842,9 @@
      * @return
      */
     public static String barCodeListToStr(List<String> list) {
+        if(list.isEmpty()) {
+            return "";
+        }
         StringBuilder stringBuilder = new StringBuilder();
         for (String str : list) {
             stringBuilder.append(str).append(",");
@@ -1047,8 +1122,14 @@
         rcsTaskSubmit.setTargetRoute(targetRouteList);
 
         // 杞彂缁欐捣搴锋垨鍗庢檽RCS
-        int success = rcsService.submitTask(rcsTaskSubmit, transTask.getAgvFactory());
-        if (success == 1) {
+        RcsReturn rcsReturn = rcsService.submitTask(rcsTaskSubmit, transTask.getAgvFactory());
+        if (rcsReturn.getCode().equals("SUCCESS")) {
+            JSONObject data = rcsReturn.getData();
+            String robotTaskCode = data.getString("robotTaskCode");
+            if (Cools.isEmpty(transTask.getTaskno())) {
+                transTask.setTaskno(robotTaskCode);
+                result.put("taskno", transTask.getTaskno());
+            }
             int workNo = commonService.getWorkNo(WorkNoType.OTHER.type);
             Date now = new Date();
             Task task = new Task();
@@ -1075,12 +1156,12 @@
             taskDetl.setIoTime(task.getIoTime());
             taskDetl.setMatnr(transTask.getItemno());
             taskDetl.setAnfme(0.0);
-            taskDetl.setStandby1(String.valueOf(transTask.getQty()));
+//            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.setMemo(barCodeListToStr(transTask.getItemBarcode()));
             taskDetl.setModiUser(defaultUserId);
             taskDetl.setModiTime(now);
             taskDetl.setAppeUser(defaultUserId);
@@ -1163,7 +1244,7 @@
      * @return
      */
     public int applyInStation(TransParent apply) {
-        String path = ("LL").equals(apply.getProductLineId()) ? "AGVTransportPalletNotice" : "AprsAGVTransportPalletNotice";
+        String path = ("LL").equals(apply.getProductLineId()) ? "AGVTransportPalletNotice" : "Aprs/AGVTransportPalletNotice";
         String url = MES_URL + path;
         String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(apply));
         if (!StringUtils.isEmpty(response) && response.contains("Success")){
@@ -1195,7 +1276,7 @@
 //            rcsTaskContinue.setTriggerType("ROBOT");
 //            rcsTaskContinue.setTriggerCode(allow.getAgvCode());
 
-            int success = rcsService.continueTask(rcsTaskContinue, checkRcsFactory(allow.getAgvCode()));
+            int success = rcsService.continueTask(rcsTaskContinue, 1);
             mesReturn.setSuccess(success == 1 ? "1" : "2");
             mesReturn.setMessage(success == 1 ? "" : "杞彂缁橰CS澶辫触");
         }
@@ -1217,7 +1298,8 @@
             arrivalStation.setOrderNo(null);
         }
 
-        String url = MES_URL + "AGVArrivalCompleted";
+        String path = ("LL").equals(arrivalStation.getProductLineId()) ? "AGVArrivalCompleted" : "Aprs/AGVArrivalCompleted";
+        String url = MES_URL + path;
         String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(arrivalStation));
         if (!StringUtils.isEmpty(response) && response.contains("Success")){
             MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
@@ -1282,7 +1364,8 @@
      */
     public int outStation(TransParent apply) {
 
-        String url = MES_URL + "AGVDepartureCompleted";
+        String path = ("LL").equals(apply.getProductLineId()) ? "AGVDepartureCompleted" : "Aprs/AGVDepartureCompleted";
+        String url = MES_URL + path;
         String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(apply));
         if (!StringUtils.isEmpty(response) && response.contains("Success")){
             MesReturn mesReturn = JSONObject.parseObject(response, MesReturn.class);
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..29ffc69 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -7,6 +7,8 @@
 import com.core.common.*;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.mes.MesOutApply;
+import com.zy.asrs.entity.mes.TransTask;
 import com.zy.asrs.entity.param.*;
 import com.zy.asrs.enums.CommonEnum;
 import com.zy.asrs.enums.LocStsType;
@@ -25,6 +27,7 @@
 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;
 
@@ -41,6 +44,11 @@
 @Slf4j
 @Service
 public class MobileServiceImpl implements MobileService {
+    @Value("${wms.wmsTransStartStation2}")
+    public String WMS_TRANS_START_STATION_2;
+
+    @Value("${wms.zpalletId}")
+    public String WMS_ZPALLET_ID;
 
     @Autowired
     private MatService matService;
@@ -114,6 +122,9 @@
     private BasStationService basStationService;
     @Autowired
     private BasContainerService basContainerService;
+
+    @Resource
+    private MesService mesService;
 
     @Override
     @Transactional
@@ -654,6 +665,7 @@
                         elem.getBoxType1(), elem.getBoxType2(), elem.getBoxType3(), elem.getAnfme());
                 detlDto.setOrderId(order.getId());
                 detlDto.setOrderNo(order.getOrderNo());
+                detlDto.setStandby1(detls.getStandby1());
                 if (DetlDto.has(detlDtos, detlDto)) {
                     DetlDto one = DetlDto.findDto(detlDtos, detlDto);
                     assert one != null;
@@ -706,6 +718,7 @@
                 waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
                 waitPakin.setAnfme(detlDto.getAnfme());  // 鏁伴噺
                 waitPakin.setStatus("Y");    // 鐘舵��
+                waitPakin.setStandby1(detlDto.getStandby1());
                 waitPakin.setAppeUser(userId);
                 waitPakin.setAppeTime(now);
                 waitPakin.setModiUser(userId);
@@ -1274,7 +1287,7 @@
 
     @Override
     @Transactional
-    public R callEmptyBinOutBound(String staNo, String locType, Long userId) {
+    public R callEmptyBinOutBound(MesOutApply mesOutApply, String staNo, String locType, Long userId) {
         LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", 'D').eq("loc_type2", locType));
         if(locMast == null) {
             return R.parse("璇ョ被鍨嬶細" + locType +"绌烘墭鐩樹笉瀛樺湪");
@@ -1282,11 +1295,11 @@
         // 鑾峰彇璺緞
         Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                 .eq("type_no", 110)
-                .eq("stn_no", staNo)
+                .eq("stn_no", 204)
                 .eq("crn_no", locMast.getCrnNo());
         StaDesc staDesc = staDescService.selectOne(wrapper);
         if (staDesc == null) {
-            R.parse("鍑哄簱璺緞涓嶅瓨鍦�,绔欑偣锛�" + staNo);
+            return R.parse("鍑哄簱璺緞涓嶅瓨鍦�,绔欑偣锛�" + staNo);
         }
         Date now = new Date();
         // 鐢熸垚宸ヤ綔妗�
@@ -1310,6 +1323,14 @@
         wrkMast.setAppeTime(now);
         wrkMast.setModiUser(userId);
         wrkMast.setModiTime(now);
+        if (mesOutApply != null) {
+            wrkMast.setTaskNo(mesOutApply.getTaskno());
+            wrkMast.setAgvSta(mesOutApply.getStationId());
+            wrkMast.setMemo(JSONObject.toJSONString(mesOutApply));
+        } else {
+            wrkMast.setAgvSta(staNo);
+        }
+
         wrkMastService.insert(wrkMast);
 
         // 鏇存柊搴撲綅鐘舵��
@@ -1319,10 +1340,35 @@
             locMast.setModiTime(now);
             locMastService.updateById(locMast);
         }
-
+        log.info("鐢熸垚绌烘墭鍑哄簱浠诲姟鎴愬姛,浠诲姟鍙�:{}",wrkMast.getWrkNo());
         return R.ok("鍑哄簱鎴愬姛");
     }
 
+    @Override
+    public R callEmptyBinInBound(String site, Long userId) {
+        TransTask transTask = new TransTask();
+//        transTask.setTaskno(mesInApply.getTaskno());
+//        transTask.setTaskname(mesInApply.getTaskname());
+//        transTask.setOrderNo(mesInApply.getOrderNo());
+        transTask.setTransType("02"); // 涓嬫瘺鍧�
+//        transTask.setCurProcess(mesInApply.getProductLineId());
+        transTask.setCurStationId(site);
+        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 = mesService.submitTask(transTask);
+        if ("1".equals(sendAgvTask.getString("Success"))) {
+            log.info("pda鍛煎彨鏂欐鍥炲簱鎴愬姛,{}", JSONObject.toJSONString(transTask));
+            return R.ok("鎴愬姛");
+        } else {
+            log.error("pda鍛煎彨鏂欐鍥炲簱澶辫触,{}", JSONObject.toJSONString(transTask));
+            return R.parse("澶辫触");
+        }
+    }
+
     /**
      * @author Ryan
      * @date 2025/9/25
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 4ffaa27..d743466 100644
--- a/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
@@ -1,10 +1,12 @@
 package com.zy.asrs.service.impl;
 
 import com.alibaba.excel.util.StringUtils;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.mes.TransArrivalStation;
+import com.zy.asrs.entity.mes.TransInOutStationAllow;
 import com.zy.asrs.entity.mes.TransParent;
 import com.zy.asrs.entity.rcs.*;
 import com.zy.asrs.enums.RcsRetMethodEnum;
@@ -25,10 +27,7 @@
 import java.net.URL;
 import java.net.URLConnection;
 import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -55,7 +54,7 @@
     @Resource
     private BlockTaskMapper blockTaskMapper;
     @Resource
-    private TaskDetlServiceImpl taskDetlService;
+    private TaskDetlService taskDetlService;
     @Resource
     private WrkMastService wrkMastService;
 
@@ -172,7 +171,7 @@
      * @param rcsFactory 1 娴峰悍锛�2 鍗庢檽锛�
      * @return
      */
-    public int submitTask(RcsTaskSubmit rcsTaskSubmit, int rcsFactory){
+    public RcsReturn submitTask(RcsTaskSubmit rcsTaskSubmit, int rcsFactory){
 
 //        String response = "";
 //        boolean success = false;
@@ -218,22 +217,46 @@
 //            }
 //        }
 //        return success ? 1 : 0;
+        RcsReturn rcsReturn = new RcsReturn();
+        boolean success = false;
+        String url = rcsFactory == 2 ? HX_URL : HIK_URL + "api/robot/controller/task/submit";
+        String response = "";
+        try {
+            response = sendPost(url, JSONObject.toJSONString(rcsTaskSubmit));
+            if (!StringUtils.isEmpty(response) && response.contains("code")) {
+                rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
+                if ("SUCCESS".equals(rcsReturn.getCode())) {
+            // 妯℃嫙杩斿洖
+//            rcsReturn.setCode("SUCCESS");
+//            JSONObject jsonObject = new JSONObject();
+//            jsonObject.put("robotTaskCode",4);
+//            rcsReturn.setData(jsonObject);
+                    success = true;
 
-        String url = rcsFactory == 2 ? HX_URL :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())) {
-                JSONObject data = rcsReturn.getData();
-                String robotTaskCode = data.getString("robotTaskCode");
-                if (robotTaskCode.equals(rcsTaskSubmit.getRobotTaskCode())){
-                    return 1;
+                    log.info("鍛煎彨agv鎼繍鎴愬姛锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", url, JSON.toJSONString(rcsTaskSubmit), response);
+                } else {
+                    log.error("鍛煎彨agv鎼繍澶辫触锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", url, JSON.toJSONString(rcsTaskSubmit), response);
                 }
             }
+        } catch (Exception e) {
+            log.error("鍛煎彨agv鎼繍寮傚父", e);
+        } finally {
+            try {
+                // 淇濆瓨鎺ュ彛鏃ュ織
+                apiLogService.save(
+                        "鍛煎彨agv鎼繍",
+                        url,
+                        null,
+                        "127.0.0.1",
+                        JSON.toJSONString(rcsTaskSubmit),
+                        response,
+                        success
+                );
+            } catch (Exception e) {
+                log.error("鍛煎彨agv鎼繍淇濆瓨鎺ュ彛鏃ュ織寮傚父", e);
+            }
         }
-
-        return 0;
+        return rcsReturn;
     }
 
     /**
@@ -333,7 +356,7 @@
 
         try {
             // q3,q8=1
-            if ("1".equals(carrierType)) {    //AGV
+//            if ("1".equals(carrierType)) {    //AGV
                 EntityWrapper<Task> wrapper = new EntityWrapper<>();
                 wrapper.eq("task_no", robotTaskCode);
                 Task task = taskService.selectOne(wrapper);
@@ -403,13 +426,20 @@
                             mesService.applyOutStation(apply);
                         } else if (RcsRetMethodEnum.ARRIVE_OFF_STATION.getCode().equals(method)) {
                             mesService.outStation(apply);
+                            // agv缁х画鎵ц
+
+                            TransInOutStationAllow inOutStationAllow = new TransInOutStationAllow();
+                            inOutStationAllow.setTaskno(robotTaskCode);
+                            inOutStationAllow.setStatus("Y");
+                            inOutStationAllow.setAgvCode("agv001");
+                            mesService.allowOutStation(inOutStationAllow);
                         }
                     } break;
                     case ARRIVE_ON_STATION: {
                         // TODO: 濡傛灉浜х嚎鏄繍杈撹捣鐐癸紝鍒欎笉鍙戦�佸埌绔欏畬鎴愶紝鏆傛椂璋冭瘯浣跨敤lG锛屾湭瀹炵幇鍒ゆ柇
-                        if (rcsReporterTask.getCurrentSeq() == 0 && task.getSourceStaNo().startsWith("LG")) {
-                            break;
-                        }
+//                        if (rcsReporterTask.getCurrentSeq() == 0 && task.getSourceStaNo().startsWith("LG") || task.getSourceStaNo().startsWith("LL")) {
+//                            break;
+//                        }
 
                         EntityWrapper<TaskDetl> wapper2 = new EntityWrapper<>();
                         wapper2.eq("wrk_no", task.getWrkNo())
@@ -419,7 +449,7 @@
                         TransArrivalStation arrivalStation = new TransArrivalStation();
                         arrivalStation.setTaskno(robotTaskCode);
                         arrivalStation.setTaskname(memo.getString("taskName"));
-                        arrivalStation.setTuoPanId(taskDetl.getZpallet());  // memo.getString("TuoPanId")
+                        arrivalStation.setTuoPanId(taskDetl == null ? "":taskDetl.getZpallet());  // memo.getString("TuoPanId")
                         arrivalStation.setProductLineId(memo.getString("ProductLineId"));
                         String transType = memo.getString("TransType");
                         arrivalStation.setDaotype(transType);
@@ -431,18 +461,19 @@
                         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);
+                        String memo2 = taskDetl == null ? "":taskDetl.getMemo();
+                        String[] array = memo2.split(",");
+//                        List<String> itemBarCode = new ArrayList<>();
+//                        Matcher matcher = Pattern.compile("\"([^\"]*)\"").matcher(memo2);
+//                        while (matcher.find()) {
+//                            itemBarCode.add(matcher.group(1));
+//                        }
+                        arrivalStation.setItemBarcode(Arrays.asList(array));
                         mesService.arriveOnStation(arrivalStation);
                     } break;
                     default: {} break;
                 }
-            }
+//            }
 //            else if ("CTU".equals(carrierType)) { //CTU
 //                EntityWrapper<WrkMast> wrapper = new EntityWrapper<>();
 //                wrapper.eq("task_no", robotTaskCode);
diff --git a/src/main/java/com/zy/asrs/task/JlerScheduler.java b/src/main/java/com/zy/asrs/task/JlerScheduler.java
new file mode 100644
index 0000000..c81f34d
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/JlerScheduler.java
@@ -0,0 +1,65 @@
+package com.zy.asrs.task;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.zy.asrs.entity.BasDevp;
+import com.zy.asrs.entity.Task;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.mapper.WrkMastMapper;
+import com.zy.asrs.service.BasDevpService;
+import com.zy.asrs.service.TaskService;
+import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.task.handler.JlerHandler;
+import com.zy.system.entity.Config;
+import com.zy.system.service.ConfigService;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @author pang.jiabao
+ * @description 娴庡崡浜屾満搴婂姞宸ョ浉鍏冲畾鏃朵换鍔�
+ * @createDate 2025/11/18 14:18
+ */
+@Component
+public class JlerScheduler {
+
+    @Resource
+    private ConfigService configService;
+
+    @Resource
+    private JlerHandler jlerHandler;
+
+    @Resource
+    private TaskService taskService;
+
+    @Resource
+    private WrkMastMapper wrkMastMapper;
+
+    @Resource
+    private BasDevpService basDevpService;
+
+    @Resource
+    private WrkMastService wrkMastService;
+
+    /**
+     * 璐х墿鍒拌揪鍑哄簱鍙o紝鐢熸垚agv浠诲姟
+     */
+    @Scheduled(cron = "0/5 * * * * ? ")
+    private void createAgvOutTasks() {
+        List<BasDevp> devps = basDevpService.selectList(new EntityWrapper<BasDevp>().in("dev_no", 202, 204)
+                .gt("wrk_no",0).lt("wrk_no",9990));
+        for(BasDevp basDevp:devps) {
+            WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", basDevp.getWrkNo()));
+            if(wrkMast != null && wrkMast.getCallAgv() == 0 && !Cools.isEmpty(wrkMast.getAgvSta())) {
+                jlerHandler.createAgvOutTasks(wrkMast);
+            }
+        }
+    }
+
+}
+
diff --git a/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java b/src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
index 8d350c7..357d643 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;
@@ -180,7 +178,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", 3).orderBy("update_time"));
+                    .in("doc_type", 3).orderBy("update_time"));
             if (orderPakin == null) {
                 return;
             }
@@ -189,16 +187,59 @@
                 MesInApply result = JSONObject.parseObject(orderPakin.getMemo(), MesInApply.class);
                 result.setQty(orderDetl.getQty().intValue());
 
-//                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/10 * * * * ? ")
+    @Async("orderThreadPool")
+    void outOrderCompleteReport() {
+        String erpReport = Parameter.get().getErpReport();
+        if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) {
+
+            List<OrderPakout> orderPakoutList = orderPakoutService.selectList(new EntityWrapper<OrderPakout>().eq("settle", 4).orderBy("update_time"));
+            if (orderPakoutList.size() == 0) {
+                return;
+            }
+
+            for(OrderPakout orderPakout:orderPakoutList) {
+                try {
+                    MesOutApply mesOutApply = JSONObject.parseObject(orderPakout.getMemo(), MesOutApply.class);
+                    MesOutFeedback mesOutFeedback = new MesOutFeedback();
+                    mesOutFeedback.setTaskno(mesOutApply.getTaskno());
+                    mesOutFeedback.setTaskname(mesOutApply.getTaskname());
+                    mesOutFeedback.setProductLineId(mesOutApply.getProductLineId());
+                    mesOutFeedback.setStationId(mesOutApply.getStationId());
+                    mesOutFeedback.setItemno(mesOutApply.getItemno());
+                    mesOutFeedback.setTuoPanId(orderPakout.getNumber());
+                    mesOutFeedback.setQty(mesOutApply.getQty());
+                    mesOutFeedback.setItemBarcode(mesOutApply.getItemBarcode());
+                    mesOutFeedback.setOrderNo(mesOutApply.getOrderNo());
+
+                    String url = MES_URL + "Aprs/issueComplete";
+                    String response = RcsServiceImpl.sendPost(url, JSONObject.toJSONString(mesOutFeedback));
+                    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());
+                        }
+                    }
+                }catch (Exception e) {
+                    log.error("鍑哄簱璁㈠崟涓婃姤澶辫触,orderNo:{},exception:{}",orderPakout.getOrderNo(),e);
+                }
             }
         }
     }
diff --git a/src/main/java/com/zy/asrs/task/handler/JlerHandler.java b/src/main/java/com/zy/asrs/task/handler/JlerHandler.java
new file mode 100644
index 0000000..06862fe
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/handler/JlerHandler.java
@@ -0,0 +1,140 @@
+package com.zy.asrs.task.handler;
+
+import com.alibaba.fastjson.JSONObject;
+import com.core.common.Cools;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.entity.mes.MesInApply;
+import com.zy.asrs.entity.mes.MesOutApply;
+import com.zy.asrs.entity.mes.TransTask;
+import com.zy.asrs.service.MesService;
+import com.zy.asrs.service.WrkMastService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+
+/**
+ * @author pang.jiabao
+ * @description 娴庡崡浜屾満搴婂姞宸ョ浉鍏冲畾鏃朵换鍔�
+ * @createDate 2025/12/10 14:25
+ */
+@Slf4j
+@Service
+public class JlerHandler {
+
+    @Resource
+    private MesService mesService;
+
+    @Value("${wms.wmsTransStartStation3}")
+    public String WMS_TRANS_START_STATION_3;
+
+    @Value("${wms.zpalletId}")
+    public String WMS_ZPALLET_ID;
+
+    @Resource
+    private WrkMastService wrkMastService;
+
+    @Transactional
+    public void createAgvOutTasks(WrkMast wrkMast) {
+
+        String memo = wrkMast.getMemo();
+        MesOutApply mesOutApply = null;
+        if(!Cools.isEmpty(memo)) {
+            mesOutApply = JSONObject.parseObject(memo, MesOutApply.class);
+        }
+
+        // 绌烘墭鍑哄簱
+        if(wrkMast.getIoType() == 110) {
+            if(mesOutApply == null) { // 涓嶆槸mes涓嬪彂鐨勭┖鎵樺嚭搴�
+                TransTask transTask = new TransTask();
+//                transTask.setTaskno(mesOutApply.getTaskno());
+//                transTask.setTaskname(mesOutApply.getTaskname());
+//                transTask.setOrderNo(mesOutApply.getOrderNo());
+                transTask.setTransType("01");
+                transTask.setCurStationId(WMS_TRANS_START_STATION_3);
+//                transTask.setNextProcess(mesOutApply.getProductLineId());
+                transTask.setNextStationId(wrkMast.getAgvSta());
+                transTask.setItemno(WMS_ZPALLET_ID);  // 鍥哄畾涓虹┖鎵樼殑缂栫爜
+                transTask.setQty(1);    // 绌烘墭鍙嚭1涓�
+//                transTask.setProductLineId(mesOutApply.getProductLineId());
+                transTask.setOperateType(1);
+                transTask.setAgvFactory(1);
+                JSONObject sendAgvTask = mesService.submitTask(transTask);
+                if ("1".equals(sendAgvTask.getString("Success"))) {
+                    String taskno = sendAgvTask.getString("taskno");
+                    if(Cools.isEmpty(wrkMast.getTaskNo())) {
+                        wrkMast.setTaskNo(taskno);
+                    }
+                    wrkMast.setCallAgv(1);
+                    wrkMastService.updateById(wrkMast);
+                }else {
+                    log.error("鍑哄簱涓嬪彂agv杩愯緭浠诲姟澶辫触锛歿}", JSONObject.toJSONString(transTask));
+                }
+            } else {
+                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(WMS_ZPALLET_ID);  // 鍥哄畾涓虹┖鎵樼殑缂栫爜
+                transTask.setItemBarcode(new ArrayList<>()); // 娌℃湁闆朵欢浜岀淮鐮�
+                transTask.setQty(1);    // 绌烘墭鍙嚭1涓�
+                transTask.setProductLineId(mesOutApply.getProductLineId());
+                transTask.setOperateType(1);
+                transTask.setAgvFactory(1);
+                JSONObject sendAgvTask = mesService.submitTask(transTask);
+                if ("1".equals(sendAgvTask.getString("Success"))) {
+//                    String taskno = sendAgvTask.getString("taskno");
+//                    if(Cools.isEmpty(wrkMast.getTaskNo())) {
+//                        wrkMast.setTaskNo(taskno);
+//                    }
+                    wrkMast.setCallAgv(1);
+                    wrkMastService.updateById(wrkMast);
+                }else {
+                    log.error("鍑哄簱涓嬪彂agv杩愯緭浠诲姟澶辫触锛歿}", JSONObject.toJSONString(transTask));
+                }
+            }
+        } else if(wrkMast.getIoType() == 101) { // 婊℃墭鍑哄簱
+            if(mesOutApply == null) {
+                log.error("婊℃墭鍑哄簱鍛煎彨agv鏃爐ransTask锛屼换鍔″彿锛歿}",wrkMast.getWrkNo());
+            } else {
+                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(mesOutApply.getQty());
+                transTask.setProductLineId(mesOutApply.getProductLineId());
+                transTask.setItemBarcode(mesOutApply.getItemBarcode());
+                transTask.setTuoPanId(wrkMast.getBarcode());
+                transTask.setOperateType(1);
+                transTask.setAgvFactory(1);
+
+                JSONObject sendAgvTask = mesService.submitTask(transTask);
+                if ("1".equals(sendAgvTask.getString("Success"))) {
+//                    String taskno = sendAgvTask.getString("taskno");
+//                    if(Cools.isEmpty(wrkMast.getTaskNo())) {
+//                        wrkMast.setTaskNo(taskno);
+//                    }
+                    wrkMast.setCallAgv(1);
+                    wrkMastService.updateById(wrkMast);
+                }else {
+                    log.error("鍑哄簱涓嬪彂agv杩愯緭浠诲姟澶辫触锛歿}", JSONObject.toJSONString(transTask));
+                }
+            }
+        } else {
+            log.error("鍑哄簱鍛煎彨agv浠诲姟绫诲瀷閿欒锛屼换鍔″彿锛歿}",wrkMast.getWrkNo());
+        }
+    }
+
+}
diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index 9e43cf2..17a163d 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -82,13 +82,13 @@
                 return R.error(CodeRes.EXIST_500);
             }
         }
-        if (Cools.isEmpty(param.getLocType1(),param.getLocType2())){
+        if (Cools.isEmpty(param.getLocType2())){ //  param.getLocType1(),
             return R.error("楂樹綆/闀跨煭妫�娴嬩俊鍙蜂笉鑳戒负绌�");
         }
 
         // 婧愮珯鐐圭姸鎬佹娴�
         BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getSourceStaNo(), true);
-        sourceStaNo.setLocType1(param.getLocType1());
+        sourceStaNo.setLocType1((short) 1); // todo 鍏堥粯璁や綆搴撲綅
         sourceStaNo.setLocType2(param.getLocType2());
         LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
 
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 3d4a5fd..de14ec8 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -121,7 +121,7 @@
   #褰撳墠搴撳悕绉�
   currentName: 鍔犲伐搴�
   #绔嬪簱AGV鑷姩杩愯揣鍑哄簱鍙g紪鐮�
-  wmsTransStartStation1: 205
+  wmsTransStartStation1: 204
   #绔嬪簱AGV鑷姩杩愯揣鍏ュ簱鍙g紪鐮侊紙杈撻�佺嚎锛�
   wmsTransStartStation2: 202
   #绔嬪簱AGV鑷姩杩愯揣鍑哄簱鍙g紪鐮侊紙杈撻�佺嚎锛�
@@ -132,6 +132,7 @@
 #mes瀵规帴
 mes:
   url: http://172.26.11.250/dev-api/basicmodel/Api/WMS/
+#  url: http://192.9.100.173:8088/prod-api/basicmodel/Api/WMS/
   #榛樿鎺ュ彛鎿嶄綔浜哄憳id
   defaultUserId: 30
 
diff --git a/src/main/resources/mapper/TaskDetlMapper.xml b/src/main/resources/mapper/TaskDetlMapper.xml
index 0754c45..0c224d6 100644
--- a/src/main/resources/mapper/TaskDetlMapper.xml
+++ b/src/main/resources/mapper/TaskDetlMapper.xml
@@ -3,54 +3,54 @@
 <mapper namespace="com.zy.asrs.mapper.TaskDetlMapper">
 
     <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
-    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.TaskDetl">
-        <result column="wrk_no" property="wrkNo" />
-        <result column="io_time" property="ioTime" />
-        <result column="anfme" property="anfme" />
-        <result column="zpallet" property="zpallet" />
-        <result column="matnr" property="matnr" />
-        <result column="maktx" property="maktx" />
-        <result column="batch" property="batch" />
-        <result column="order_no" property="orderNo" />
-        <result column="specs" property="specs" />
-        <result column="model" property="model" />
-        <result column="color" property="color" />
-        <result column="brand" property="brand" />
-        <result column="unit" property="unit" />
-        <result column="price" property="price" />
-        <result column="sku" property="sku" />
-        <result column="units" property="units" />
-        <result column="barcode" property="barcode" />
-        <result column="origin" property="origin" />
-        <result column="manu" property="manu" />
-        <result column="manu_date" property="manuDate" />
-        <result column="item_num" property="itemNum" />
-        <result column="safe_qty" property="safeQty" />
-        <result column="weight" property="weight" />
-        <result column="man_length" property="manLength" />
-        <result column="volume" property="volume" />
-        <result column="three_code" property="threeCode" />
-        <result column="supp" property="supp" />
-        <result column="supp_code" property="suppCode" />
-        <result column="be_batch" property="beBatch" />
-        <result column="dead_time" property="deadTime" />
-        <result column="dead_warn" property="deadWarn" />
-        <result column="source" property="source" />
-        <result column="inspect" property="inspect" />
-        <result column="danger" property="danger" />
-        <result column="modi_user" property="modiUser" />
-        <result column="modi_time" property="modiTime" />
-        <result column="appe_user" property="appeUser" />
-        <result column="appe_time" property="appeTime" />
-        <result column="memo" property="memo" />
-        <result column="line_number" property="lineNumber" />
-        <result column="standby1" property="standby1" />
-        <result column="standby2" property="standby2" />
-        <result column="standby3" property="standby3" />
-        <result column="box_type1" property="boxType1" />
-        <result column="box_type2" property="boxType2" />
-        <result column="box_type3" property="boxType3" />
+<!--    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.TaskDetl">-->
+<!--        <result column="wrk_no" property="wrkNo" />-->
+<!--        <result column="io_time" property="ioTime" />-->
+<!--        <result column="anfme" property="anfme" />-->
+<!--        <result column="zpallet" property="zpallet" />-->
+<!--        <result column="matnr" property="matnr" />-->
+<!--        <result column="maktx" property="maktx" />-->
+<!--        <result column="batch" property="batch" />-->
+<!--        <result column="order_no" property="orderNo" />-->
+<!--        <result column="specs" property="specs" />-->
+<!--        <result column="model" property="model" />-->
+<!--        <result column="color" property="color" />-->
+<!--        <result column="brand" property="brand" />-->
+<!--        <result column="unit" property="unit" />-->
+<!--        <result column="price" property="price" />-->
+<!--        <result column="sku" property="sku" />-->
+<!--        <result column="units" property="units" />-->
+<!--        <result column="barcode" property="barcode" />-->
+<!--        <result column="origin" property="origin" />-->
+<!--        <result column="manu" property="manu" />-->
+<!--        <result column="manu_date" property="manuDate" />-->
+<!--        <result column="item_num" property="itemNum" />-->
+<!--        <result column="safe_qty" property="safeQty" />-->
+<!--        <result column="weight" property="weight" />-->
+<!--        <result column="man_length" property="manLength" />-->
+<!--        <result column="volume" property="volume" />-->
+<!--        <result column="three_code" property="threeCode" />-->
+<!--        <result column="supp" property="supp" />-->
+<!--        <result column="supp_code" property="suppCode" />-->
+<!--        <result column="be_batch" property="beBatch" />-->
+<!--        <result column="dead_time" property="deadTime" />-->
+<!--        <result column="dead_warn" property="deadWarn" />-->
+<!--        <result column="source" property="source" />-->
+<!--        <result column="inspect" property="inspect" />-->
+<!--        <result column="danger" property="danger" />-->
+<!--        <result column="modi_user" property="modiUser" />-->
+<!--        <result column="modi_time" property="modiTime" />-->
+<!--        <result column="appe_user" property="appeUser" />-->
+<!--        <result column="appe_time" property="appeTime" />-->
+<!--        <result column="memo" property="memo" />-->
+<!--        <result column="line_number" property="lineNumber" />-->
+<!--        <result column="standby1" property="standby1" />-->
+<!--        <result column="standby2" property="standby2" />-->
+<!--        <result column="standby3" property="standby3" />-->
+<!--        <result column="box_type1" property="boxType1" />-->
+<!--        <result column="box_type2" property="boxType2" />-->
+<!--        <result column="box_type3" property="boxType3" />-->
 
-    </resultMap>
+<!--    </resultMap>-->
 
 </mapper>
diff --git a/src/main/resources/mapper/WrkMastLogMapper.xml b/src/main/resources/mapper/WrkMastLogMapper.xml
index 8086afb..6d0ba62 100644
--- a/src/main/resources/mapper/WrkMastLogMapper.xml
+++ b/src/main/resources/mapper/WrkMastLogMapper.xml
@@ -61,6 +61,9 @@
         <result column="full_plt" property="fullPlt" />
         <result column="pre_have" property="preHave" />
         <result column="take_none" property="takeNone" />
+        <result column="task_no" property="taskNo" />
+        <result column="call_agv" property="callAgv" />
+        <result column="agv_sta" property="agvSta" />
     </resultMap>
     <sql id="queryWhere">
         <where>
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 83c4cce..5a9aacd 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -60,6 +60,9 @@
         <result column="full_plt" property="fullPlt" />
         <result column="pre_have" property="preHave" />
         <result column="take_none" property="takeNone" />
+        <result column="task_no" property="taskNo" />
+        <result column="call_agv" property="callAgv" />
+        <result column="agv_sta" property="agvSta" />
     </resultMap>
 
     <select id="selectToBeCompleteData" resultMap="BaseResultMap">
@@ -70,7 +73,7 @@
         select * from asr_wrk_mast
         where wrk_sts=5
         or (wrk_sts=15 and ove_mk='Y' and wrk_no not in (select wrk_no from asr_bas_devp))
-        or (wrk_sts=15 and dateadd(mi,3,crn_end_time) &lt;= getdate() and wrk_no not in (select wrk_no from asr_bas_devp))
+        or (wrk_sts=15 and dateadd(mi,1,crn_end_time) &lt;= getdate() and wrk_no not in (select wrk_no from asr_bas_devp))
         or (wrk_sts=15 and crn_end_time is null and wrk_no not in (select wrk_no from asr_bas_devp))
         order by io_time,wrk_no asc
     </select>

--
Gitblit v1.9.1