From 986cf93c869bf8d5181f96a4a8b1a6092fc34247 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期三, 05 七月 2023 16:57:06 +0800
Subject: [PATCH] RGV control

---
 src/main/java/com/zy/common/config/RedisConfig.java               |    3 
 src/main/java/com/zy/common/utils/RedisUtil.java                  |   29 +
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java       |  548 +++++++++++++++++++++++---------------
 src/main/resources/mapper/BasRgvPathMapper.xml                    |   24 +
 src/main/java/com/zy/asrs/entity/BasRgvPath.java                  |  154 +++++++++++
 src/main/java/com/zy/asrs/mapper/WrkMastMapper.java               |   14 +
 src/main/resources/mapper/WrkMastMapper.xml                       |   15 +
 src/main/java/com/zy/asrs/service/impl/BasRgvPathServiceImpl.java |   16 +
 src/main/java/com/zy/asrs/mapper/BasRgvPathMapper.java            |   14 +
 src/main/java/com/zy/core/MainProcess.java                        |    4 
 src/main/java/com/zy/asrs/service/BasRgvPathService.java          |   10 
 11 files changed, 608 insertions(+), 223 deletions(-)

diff --git a/src/main/java/com/zy/asrs/entity/BasRgvPath.java b/src/main/java/com/zy/asrs/entity/BasRgvPath.java
new file mode 100644
index 0000000..280ce40
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/BasRgvPath.java
@@ -0,0 +1,154 @@
+package com.zy.asrs.entity;
+
+import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.core.common.SpringUtils;
+import com.zy.system.service.UserService;
+import com.zy.system.entity.User;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import org.springframework.format.annotation.DateTimeFormat;
+import com.core.common.SpringUtils;
+import com.zy.system.service.UserService;
+import com.zy.system.entity.User;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+@Data
+@TableName("asr_bas_rgv_path")
+public class BasRgvPath implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * RGV缂栧彿
+     */
+    @ApiModelProperty(value= "RGV缂栧彿")
+    @TableId(value = "rgv_no", type = IdType.INPUT)
+    @TableField("rgv_no")
+    private Integer rgvNo;
+
+    /**
+     * RGV杩愯璺緞
+     */
+    @ApiModelProperty(value= "RGV杩愯璺緞")
+    private String path;
+
+    /**
+     * 鐘舵�� 1: 姝e父  0: 绂佺敤  
+     */
+    @ApiModelProperty(value= "鐘舵�� 1: 姝e父  0: 绂佺敤  ")
+    private Integer status;
+
+    /**
+     * 娣诲姞浜哄憳
+     */
+    @ApiModelProperty(value= "娣诲姞浜哄憳")
+    @TableField("create_by")
+    private Long createBy;
+
+    /**
+     * 娣诲姞鏃堕棿
+     */
+    @ApiModelProperty(value= "娣诲姞鏃堕棿")
+    @TableField("create_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    /**
+     * 淇敼浜哄憳
+     */
+    @ApiModelProperty(value= "淇敼浜哄憳")
+    @TableField("update_by")
+    private Long updateBy;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    @ApiModelProperty(value= "淇敼鏃堕棿")
+    @TableField("update_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+    /**
+     * 澶囨敞
+     */
+    @ApiModelProperty(value= "澶囨敞")
+    private String memo;
+
+    public BasRgvPath() {}
+
+    public BasRgvPath(Integer rgvNo,String path,Integer status,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
+        this.rgvNo = rgvNo;
+        this.path = path;
+        this.status = status;
+        this.createBy = createBy;
+        this.createTime = createTime;
+        this.updateBy = updateBy;
+        this.updateTime = updateTime;
+        this.memo = memo;
+    }
+
+//    BasRgvPath basRgvPath = new BasRgvPath(
+//            null,    // RGV缂栧彿[闈炵┖]
+//            null,    // RGV杩愯璺緞
+//            null,    // 鐘舵��
+//            null,    // 娣诲姞浜哄憳
+//            null,    // 娣诲姞鏃堕棿
+//            null,    // 淇敼浜哄憳
+//            null,    // 淇敼鏃堕棿
+//            null    // 澶囨敞
+//    );
+
+    public String getStatus$(){
+        if (null == this.status){ return null; }
+        switch (this.status){
+            case 1:
+                return "姝e父";
+            case 0:
+                return "绂佺敤";
+            default:
+                return String.valueOf(this.status);
+        }
+    }
+
+    public String getCreateBy$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.createBy);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getUsername());
+        }
+        return null;
+    }
+
+    public String getCreateTime$(){
+        if (Cools.isEmpty(this.createTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+    }
+
+    public String getUpdateBy$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.updateBy);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getUsername());
+        }
+        return null;
+    }
+
+    public String getUpdateTime$(){
+        if (Cools.isEmpty(this.updateTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
+    }
+
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/BasRgvPathMapper.java b/src/main/java/com/zy/asrs/mapper/BasRgvPathMapper.java
new file mode 100644
index 0000000..57967ac
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/BasRgvPathMapper.java
@@ -0,0 +1,14 @@
+package com.zy.asrs.mapper;
+
+import com.zy.asrs.entity.BasRgvPath;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface BasRgvPathMapper extends BaseMapper<BasRgvPath> {
+
+    BasRgvPath selectByRgvNo(Integer rgvNo);
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
index 6237eef..dad8f44 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -177,6 +177,20 @@
     /*================================================RGV浠诲姟缁戝畾鐩稿叧 ==================================================*/
 
     /**
+     * 鑾峰彇绛夊緟缁戝畾RGV鐨勪换鍔�
+     * @return
+     */
+    List<WrkMast> selectWaitBindRGV();
+
+    /**
+     * 鏌ユ壘鏄惁瀛樺湪鍏ュ嚭搴撳伐浣滀腑绛夊緟RGV鎼繍鐨勪换鍔�
+     *
+     * @param rgvNo
+     * @return
+     */
+    List<WrkMast> selectIoRgvNo(@Param("rgvNo") Integer rgvNo);
+
+    /**
      * 鏌ユ壘鏄惁瀛樺湪鍏ュ簱宸ヤ綔涓鍦ㄨ蛋鍚慠GV鐨勪换鍔�
      * @param wrkNo
      * @return
diff --git a/src/main/java/com/zy/asrs/service/BasRgvPathService.java b/src/main/java/com/zy/asrs/service/BasRgvPathService.java
new file mode 100644
index 0000000..a6708cd
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/BasRgvPathService.java
@@ -0,0 +1,10 @@
+package com.zy.asrs.service;
+
+import com.zy.asrs.entity.BasRgvPath;
+import com.baomidou.mybatisplus.service.IService;
+
+public interface BasRgvPathService extends IService<BasRgvPath> {
+
+    BasRgvPath selectByRgvNo(Integer rgvNo);
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/BasRgvPathServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasRgvPathServiceImpl.java
new file mode 100644
index 0000000..c50e3a8
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/BasRgvPathServiceImpl.java
@@ -0,0 +1,16 @@
+package com.zy.asrs.service.impl;
+
+import com.zy.asrs.mapper.BasRgvPathMapper;
+import com.zy.asrs.entity.BasRgvPath;
+import com.zy.asrs.service.BasRgvPathService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("basRgvPathService")
+public class BasRgvPathServiceImpl extends ServiceImpl<BasRgvPathMapper, BasRgvPath> implements BasRgvPathService {
+
+    @Override
+    public BasRgvPath selectByRgvNo(Integer rgvNo) {
+        return this.baseMapper.selectByRgvNo(rgvNo);
+    }
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index a0aefbe..0e6d25b 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -10,7 +10,6 @@
 import com.zy.asrs.entity.*;
 import com.zy.asrs.mapper.BasCrnErrorMapper;
 import com.zy.asrs.mapper.BasRgvErrMapper;
-import com.zy.asrs.mapper.WaitPakinMapper;
 import com.zy.asrs.mapper.WrkMastMapper;
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.Utils;
@@ -88,6 +87,8 @@
     private BasRgvErrMapper basRgvErrMapper;
     @Autowired
     private BasRgvErrLogService basRgvErrLogService;
+    @Autowired
+    private BasRgvPathService basRgvPathService;
 
     @Value("${wms.url}")
     private String wmsUrl;
@@ -513,9 +514,17 @@
     }
 
     /**
-     * 缁戝畾灏忚溅鏂规硶
+     * 鎼滅储RGV杞︺�傞�氳繃鐩爣绔欐悳绱㈠摢鍙拌溅鍙敤
      */
-    public synchronized void rgvBindSte() {
+    public synchronized Integer searchRgvNo(Integer staNo) {
+        BasDevp basDevp = basDevpService.selectById(staNo);
+        if (basDevp == null) {
+            return null;//鐩爣绔欎笉瀛樺湪
+        }
+        //璺緞鍊�
+        int path = basDevp.getLocType3().intValue();
+
+        ArrayList<RgvThread> list = new ArrayList<>();
         for (RgvSlave rgv : slaveProperties.getRgv()) {
             // 鑾峰彇RGV淇℃伅
             RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
@@ -529,78 +538,63 @@
                 continue;
             }
 
-            // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�, 骞朵笖鏃犱换鍔°�佹棤鐗╂椂鎵嶇户缁墽琛�
-            if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
-                    && rgvProtocol.getModeType() == RgvModeType.AUTO
-                    && rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0
-                    && rgvProtocol.getLoaded1() == 0 && rgvProtocol.getLoaded2() == 0
-            ) {
-                // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
-                if (rgvProtocol.getLastIo().equals("I")) {
-                    if (basRgv.getInEnable().equals("Y")) {
-                        this.rgvBindSteIn(rgv, rgvProtocol); //  鍏ュ簱
-                        rgvProtocol.setLastIo("O");
-                    } else if (basRgv.getOutEnable().equals("Y")) {
-                        this.rgvBindSteOut(rgv, rgvProtocol); //  鍑哄簱
-                        rgvProtocol.setLastIo("I");
-                    }
+            list.add(rgvThread);
+        }
+
+        if (list.size() > 1) {
+            //瓒呰繃涓ゅ彴杞︼紝鎸夌収閰嶇疆鐨勮鍒欒繘琛屽垎閰�
+            for (RgvThread rgvThread : list) {
+                //鑾峰彇杞﹁締閰嶇疆鐨勮矾寰勮鍒�
+                BasRgvPath basRgvPath = basRgvPathService.selectByRgvNo(rgvThread.getSlave().getId());
+                if (basRgvPath == null) {
+                    continue;
                 }
-                // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
-                else if (rgvProtocol.getLastIo().equals("O")) {
-                    if (basRgv.getOutEnable().equals("Y")) {
-                        this.rgvBindSteOut(rgv, rgvProtocol); //  鍑哄簱
-                        rgvProtocol.setLastIo("I");
-                    } else if (basRgv.getInEnable().equals("Y")) {
-                        this.rgvBindSteIn(rgv, rgvProtocol); //  鍏ュ簱
-                        rgvProtocol.setLastIo("O");
-                    }
+                //鐩爣绔欐槸鍚﹀寘鍚綋鍓嶈矾寰勪腑
+                List<Integer> rgvPath = JSON.parseArray(basRgvPath.getPath(), Integer.class);
+                if (rgvPath.contains(path)) {
+                    //褰撳墠璺緞涓寘鍚洰鏍囩珯锛屽垯閫夊畾杩欏彴杞�
+                    return rgvThread.getSlave().getId();
                 }
+            }
+        }else {
+            //灏忎簬鎴栫瓑浜�1鍙拌溅锛屽垎閰嶅叏璺緞
+            List<Integer> rgvPath = new ArrayList<Integer>(){{
+                add(1);add(2);add(3);add(4);add(5);add(6);
+                add(7);add(8);add(9);add(10);add(11);add(12);
+                add(13);add(14);add(15);add(16);add(17);add(18);
+            }};
+            if (rgvPath.contains(path)) {
+                //褰撳墠璺緞涓寘鍚洰鏍囩珯锛屽垯閫夊畾杩欏彴杞�
+                return list.get(0).getSlave().getId();
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * 缁戝畾灏忚溅鏂规硶
+     */
+    public synchronized void rgvBindSte() {
+        //鑾峰彇绛夊緟缁戝畾RGV鐨勪换鍔�
+        List<WrkMast> wrkMasts = wrkMastMapper.selectWaitBindRGV();
+        for (WrkMast wrkMast : wrkMasts) {
+            //鐩爣绔�
+            Integer staNo = wrkMast.getStaNo();
+            //閫氳繃鐩爣绔欐悳绱gv鍙�
+            Integer rgvNo = this.searchRgvNo(staNo);
+            if (rgvNo == null) {//鏈壘鍒板彲鐢ㄧ殑rgv
+                continue;
+            }
+
+            wrkMast.setRgvNo(rgvNo);//缁戝畾rgv鍙�
+            wrkMast.setRgvDstaNo(wrkMast.getSourceStaNo());//璁剧疆RGV鍓嶅線宸ヤ綔妗f簮绔欏彇璐�
+            if (wrkMastMapper.updateById(wrkMast)==0){
+                log.error("缁戝畾灏忚溅鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo());
             }
         }
     }
 
-    /**
-     * 缁戝畾灏忚溅鍏ュ簱鏂规硶
-     */
-    public synchronized void rgvBindSteIn(RgvSlave slave, RgvProtocol rgvProtocol) {
-        for (RgvSlave.RgvStn rgvStn: slave.getRgvInSStn()){
-            Integer staNo = rgvStn.getStaNo();
-            BasDevp basDevp = basDevpService.selectById(rgvStn.getDevpPlcId());
-            if (Cools.isEmpty(basDevp) || basDevp.getWrkNo()==0){
-                continue;
-            }else {
-                WrkMast wrkMast = wrkMastMapper.selectRgvInSteWrkNo(basDevp.getWrkNo());
-                if (!Cools.isEmpty(wrkMast)){
-                    wrkMast.setRgvNo(wrkMast.getCrnNo()>3 ? 2 : 1);
-                    wrkMast.setAppeTime(new Date());
-                    if (wrkMastMapper.updateById(wrkMast)==0){
-                        log.error("缁戝畾灏忚溅鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo());
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * 缁戝畾灏忚溅鍑哄簱鏂规硶
-     */
-    public synchronized void rgvBindSteOut(RgvSlave slave, RgvProtocol rgvProtocol) {
-        for (RgvSlave.RgvStn rgvStn: slave.getRgvOutSStn()){
-            BasDevp basDevp = basDevpService.selectById(rgvStn.getDevpPlcId());
-            if (Cools.isEmpty(basDevp) || basDevp.getWrkNo()==0){
-                continue;
-            }else {
-                WrkMast wrkMast = wrkMastMapper.selectRgvOutSteWrkNo(basDevp.getWrkNo());
-                if (!Cools.isEmpty(wrkMast)){
-                    wrkMast.setRgvNo(rgvStn.getStaNo());
-                    wrkMast.setAppeTime(new Date());
-                    if (wrkMastMapper.updateById(wrkMast)==0){
-                        log.error("缁戝畾灏忚溅鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo());
-                    }
-                }
-            }
-        }
-    }
     /**
      * 鍏ュ嚭搴�  ===>>  RGV鍏ュ嚭搴撲綔涓氫笅鍙�
      */
@@ -618,32 +612,125 @@
                 continue;
             }
 
-            // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�, 骞朵笖鏃犱换鍔°�佹棤鐗╂椂鎵嶇户缁墽琛�
+            // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,
             if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
                     && rgvProtocol.getModeType() == RgvModeType.AUTO
-                    && rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0
-                    && rgvProtocol.getLoaded1() == 0 && rgvProtocol.getLoaded2() == 0
+//                    && rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0
+//                    && rgvProtocol.getLoaded1() == 0 && rgvProtocol.getLoaded2() == 0
                     ) {
-                // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
-                if (rgvProtocol.getLastIo().equals("I")) {
-                    if (basRgv.getInEnable().equals("Y")) {
-                        this.rgvInStn(rgv, rgvProtocol); //  鍏ュ簱
-                        rgvProtocol.setLastIo("O");
-                    } else if (basRgv.getOutEnable().equals("Y")) {
-                        this.rgvOutStn(rgv, rgvProtocol); //  鍑哄簱
-                        rgvProtocol.setLastIo("I");
+
+                //鏌ユ壘鏄惁瀛樺湪鍏ュ嚭搴撳伐浣滀腑绛夊緟RGV鎼繍鐨勪换鍔�
+                List<WrkMast> wrkMasts = wrkMastMapper.selectIoRgvNo(rgv.getId());
+                for (WrkMast wrkMast : wrkMasts) {
+                    if (wrkMast.getWrkSts() == 2) {//2.璁惧涓婅蛋1 => 3.RGV鍙栬揣涓�
+                        if (rgvProtocol.getTaskNo1() != 0 || rgvProtocol.getLoaded1() != 0) {//RGV鏄惁鏃犱换鍔°�丷GV鏄惁鏃犺揣
+                            continue;
+                        }
+
+                        //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+                        RgvCommand rgvCommand = new RgvCommand();
+                        rgvCommand.setRgvNo(wrkMast.getRgvNo()); // RGV缂栧彿
+                        rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+                        rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
+                        rgvCommand.setTaskMode1(RgvTaskModeType.FETCH); // 宸ヤ綅1浠诲姟妯″紡:  鍙栬揣
+                        rgvCommand.setDestinationStaNo1(wrkMast.getRgvDstaNo().shortValue());   //宸ヤ綅1鐩爣绔欑偣
+                        rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
+                        if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getRgvNo(), new Task(4, rgvCommand))) {
+                            //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
+                            log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", wrkMast.getRgvNo(), JSON.toJSON(rgvCommand));
+                        } else {
+                            // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋1 => 3.RGV鍙栬揣涓�
+                            Date now = new Date();
+                            wrkMast.setWrkSts(3L);
+                            wrkMast.setModiTime(now);
+                            if (wrkMastMapper.updateById(wrkMast) == 0) {
+                                log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋1 => 3.RGV鍙栬揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                            }
+                        }
+                    } else if (wrkMast.getWrkSts() == 4) {//4.RGV鍙栬揣瀹屾垚 => 5.RGV鏀捐揣涓�
+                        if (rgvProtocol.getTaskNo1() == 0 || !rgvProtocol.getTaskNo1().equals(wrkMast.getWrkNo().shortValue())) {//RGV蹇呴』鏈変换鍔′笖浠诲姟鍜屽綋鍓嶅伐浣滄。涓�鑷�
+                            continue;
+                        }
+                        if (rgvProtocol.getLoaded1() == 0) {//RGV蹇呴』鏈夌墿
+                            continue;
+                        }
+
+                        //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+                        RgvCommand rgvCommand = new RgvCommand();
+                        rgvCommand.setRgvNo(wrkMast.getRgvNo()); // RGV缂栧彿
+                        rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+                        rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
+                        rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡:  鏀捐揣
+                        rgvCommand.setDestinationStaNo1(wrkMast.getRgvDstaNo().shortValue());   //宸ヤ綅1鐩爣绔欑偣
+                        rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
+                        if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getRgvNo(), new Task(4, rgvCommand))) {
+                            //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
+                            log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", wrkMast.getRgvNo(), JSON.toJSON(rgvCommand));
+                        } else {
+                            // 淇敼宸ヤ綔妗g姸鎬� 4.RGV鍙栬揣瀹屾垚 => 5.RGV鏀捐揣涓�
+                            Date now = new Date();
+                            wrkMast.setWrkSts(5L);
+                            wrkMast.setModiTime(now);
+                            if (wrkMastMapper.updateById(wrkMast) == 0) {
+                                log.error("淇敼宸ヤ綔妗g姸鎬� 4.RGV鍙栬揣瀹屾垚 => 5.RGV鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                            }
+                        }
+                    } else if (wrkMast.getWrkSts() == 23) {//23.璁惧涓婅蛋1 => 24.RGV鍙栬揣涓�
+                        if (rgvProtocol.getTaskNo1() != 0 || rgvProtocol.getLoaded1() != 0) {//RGV鏄惁鏃犱换鍔°�丷GV鏄惁鏃犺揣
+                            continue;
+                        }
+
+                        //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+                        RgvCommand rgvCommand = new RgvCommand();
+                        rgvCommand.setRgvNo(wrkMast.getRgvNo()); // RGV缂栧彿
+                        rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+                        rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
+                        rgvCommand.setTaskMode1(RgvTaskModeType.FETCH); // 宸ヤ綅1浠诲姟妯″紡:  鍙栬揣
+                        rgvCommand.setDestinationStaNo1(wrkMast.getRgvDstaNo().shortValue());   //宸ヤ綅1鐩爣绔欑偣
+                        rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
+                        if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getRgvNo(), new Task(4, rgvCommand))) {
+                            //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
+                            log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", wrkMast.getRgvNo(), JSON.toJSON(rgvCommand));
+                        } else {
+                            // 淇敼宸ヤ綔妗g姸鎬� 23.璁惧涓婅蛋1 => 24.RGV鍙栬揣涓�
+                            Date now = new Date();
+                            wrkMast.setWrkSts(24L);
+                            wrkMast.setModiTime(now);
+                            if (wrkMastMapper.updateById(wrkMast) == 0) {
+                                log.error("淇敼宸ヤ綔妗g姸鎬� 23.璁惧涓婅蛋1 => 24.RGV鍙栬揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                            }
+                        }
+                    } else if (wrkMast.getWrkSts() == 25) {//25.RGV鍙栬揣瀹屾垚 => 26.RGV鏀捐揣涓�
+                        if (rgvProtocol.getTaskNo1() == 0 || !rgvProtocol.getTaskNo1().equals(wrkMast.getWrkNo().shortValue())) {//RGV蹇呴』鏈変换鍔′笖浠诲姟鍜屽綋鍓嶅伐浣滄。涓�鑷�
+                            continue;
+                        }
+                        if (rgvProtocol.getLoaded1() == 0) {//RGV蹇呴』鏈夌墿
+                            continue;
+                        }
+
+                        //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+                        RgvCommand rgvCommand = new RgvCommand();
+                        rgvCommand.setRgvNo(wrkMast.getRgvNo()); // RGV缂栧彿
+                        rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+                        rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
+                        rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡:  鏀捐揣
+                        rgvCommand.setDestinationStaNo1(wrkMast.getRgvDstaNo().shortValue());   //宸ヤ綅1鐩爣绔欑偣
+                        rgvCommand.setCommand((short) 1);   //宸ヤ綅1浠诲姟纭
+                        if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getRgvNo(), new Task(4, rgvCommand))) {
+                            //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
+                            log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", wrkMast.getRgvNo(), JSON.toJSON(rgvCommand));
+                        } else {
+                            // 淇敼宸ヤ綔妗g姸鎬� 25.RGV鍙栬揣瀹屾垚 => 26.RGV鏀捐揣涓�
+                            Date now = new Date();
+                            wrkMast.setWrkSts(26L);
+                            wrkMast.setModiTime(now);
+                            if (wrkMastMapper.updateById(wrkMast) == 0) {
+                                log.error("淇敼宸ヤ綔妗g姸鎬� 25.RGV鍙栬揣瀹屾垚 => 26.RGV鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                            }
+                        }
                     }
                 }
-                // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
-                else if (rgvProtocol.getLastIo().equals("O")) {
-                    if (basRgv.getOutEnable().equals("Y")) {
-                        this.rgvOutStn(rgv, rgvProtocol); //  鍑哄簱
-                        rgvProtocol.setLastIo("I");
-                    } else if (basRgv.getInEnable().equals("Y")) {
-                        this.rgvInStn(rgv, rgvProtocol); //  鍏ュ簱
-                        rgvProtocol.setLastIo("O");
-                    }
-                }
+
             }
         }
     }
@@ -1598,6 +1685,7 @@
      * 鏍规嵁RGV瀹屾垚淇″彿锛屾墽琛屽宸ヤ綔妗g殑瀹屾垚鎿嶄綔锛屽拰RGV鐨勪换鍔′笅鍙�
      */
     public synchronized void rgvFinished() {
+        Date now = new Date();
         for (RgvSlave rgv : slaveProperties.getRgv()) {
             // 鑾峰彇RGV淇℃伅
             RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
@@ -1605,133 +1693,161 @@
             if (rgvProtocol == null) {
                 continue;
             }
-            //  宸ヤ綅1鐘舵�侊細鍙栬揣瀹屾垚绛夊緟纭91 骞朵笖  浠诲姟瀹屾垚浣� = 1
-            if (rgvProtocol.statusType1 == RgvStatusType.FETCHWAITING && rgvProtocol.getTaskNo1() != 0) {
-                //宸ヤ綅1鍙栬揣瀹屾垚鍚庯紝宸ヤ綅2鏄棤璐х┖闂茬姸鎬佹椂锛屽噯澶囩粰宸ヤ綅2鍙戜换鍔★紝纭鏄惁鏈夊緟鎵цRGV浠诲姟
-                if (rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && rgvProtocol.getTaskNo1() > 0 && rgvProtocol.getTaskNo2() == 0
-                        && rgvProtocol.getLoaded1() > 0 && rgvProtocol.getLoaded2() == 0
-                        && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
-                ) {
-                    WrkMast wrkMast1 = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo1().intValue());
-                    if (wrkMast1 == null) {
-                        log.error("RGV宸ヤ綅1澶勪簬绛夊緟纭涓斿彇璐т换鍔″畬鎴愮姸鎬侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�俁GV鍙�={}锛屽伐浣滃彿={}", rgv.getId(), rgvProtocol.getTaskNo1());
-                        continue;
-                    }
-                    List<WrkMast> wrkMastTask = new ArrayList<>();
-                    List<WrkMast> list = new ArrayList<>();
-                    Integer type = 0;//1鍏ュ簱锛�2鍑哄簱
-                    if(wrkMast1.getWrkSts()==6L){
-                        wrkMastTask = getRgvInTask(rgv);
-                        list = wrkMastMapper.selectRgvInWorking(rgv.getId());
-                        type = 1;
-                    } else if(wrkMast1.getWrkSts()==16L){
-                        wrkMastTask = getRgvOutTask(rgv);
-                        list = wrkMastMapper.selectRgvOutWorking(rgv.getId());
-                        type = 2;
-                    }
-                    if(wrkMastTask.size() > 0){//鏈夌户缁墽琛屼换鍔★紝涓嬪彂鍙栬揣浠诲姟缁欏伐浣�2
-                        // 宸茬粡瀛樺湪RGV鎵ц浠诲姟鏃讹紝鍒欒繃婊�
-                        if (list.size() > 1) {
-                            continue;
-                        }
-                        WrkMast wrkMast2 = wrkMastTask.get(0);
-                        //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-                        RgvCommand rgvCommand = new RgvCommand();
-                        rgvCommand.setRgvNo(rgv.getId()); // RGV缂栧彿
-                        rgvCommand.setAckFinish2((short) 0);  // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
-                        rgvCommand.setTaskNo2(wrkMast2.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
-                        rgvCommand.setTaskMode2(RgvTaskModeType.FETCH); // 宸ヤ綅2浠诲姟妯″紡:  鍙栬揣
-                        rgvCommand.setSourceStaNo2(wrkMast2.getRgvSstaNo().shortValue());   //宸ヤ綅2婧愮珯鐐�
-                        rgvCommand.setDestinationStaNo2(wrkMast2.getRgvDstaNo().shortValue());   //宸ヤ綅2鐩爣绔欑偣
-                        rgvCommand.setCommand((short) 0);   //宸ヤ綅1銆�2浠诲姟纭
-                        if (!MessageQueue.offer(SlaveType.Crn, wrkMast2.getRgvNo(), new Task(5, rgvCommand))) {
-                            //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
-                            log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand));
-                        } else {
-                            // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 6.RGV鍏ュ簱鍙栬揣涓�
-                            Date now = new Date();
-                            wrkMast2.setWrkSts(type==1 ? 6L : 16L);
-                            wrkMast2.setCrnStrTime(now);
-                            wrkMast2.setModiTime(now);
-                            if (wrkMastMapper.updateById(wrkMast2) == 0) {
-                                log.error("宸ヤ綅2淇敼宸ヤ綔妗g姸鎬� 2/14.璁惧涓婅蛋 => 6/16.RGV鍏ュ簱鍙栬揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast2.getWrkNo());
-                            }
-                        }
-                    } else {//娌℃湁缁х画鎵ц浠诲姟锛屼笅鍙戞斁璐т换鍔$粰宸ヤ綅1
-                        if(type == 1 && wrkMast1.getWrkSts() != 6L){//RGV鍏ュ簱鍙栬揣涓�
-                            continue;
-                        }
-                        if(type == 2 && wrkMast1.getWrkSts() != 16L){//RGV鍑哄簱鍙栬揣涓�
-                            continue;
-                        }
-
-                        //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-                        RgvCommand rgvCommand = new RgvCommand();
-                        rgvCommand.setRgvNo(rgv.getId()); // RGV缂栧彿
-                        rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
-                        rgvCommand.setTaskNo1(wrkMast1.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
-                        rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡:  鏀捐揣
-                        rgvCommand.setSourceStaNo1(wrkMast1.getRgvSstaNo().shortValue());   //宸ヤ綅1婧愮珯鐐�
-                        rgvCommand.setDestinationStaNo1(wrkMast1.getRgvDstaNo().shortValue());   //宸ヤ綅1鐩爣绔欑偣
-                        rgvCommand.setCommand((short) 0);   //宸ヤ綅1銆�2浠诲姟纭
-                        if (!MessageQueue.offer(SlaveType.Crn, wrkMast1.getRgvNo(), new Task(4, rgvCommand))) {
-                            //step=2,宸ヤ綅1銆�2浠诲姟纭锛�   step=4锛屽伐浣�1纭锛�     step=5锛屽伐浣�2浠诲姟纭
-                            log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand));
-                        } else {
-                            // 淇敼宸ヤ綔妗g姸鎬� 6.RGV鍏ュ簱鍙栬揣涓� => 7.RGV鍏ュ簱鏀捐揣涓�
-                            Date now = new Date();
-                            wrkMast1.setWrkSts(type==1 ? 7L : 17L);
-                            wrkMast1.setCrnEndTime(now);
-                            wrkMast1.setModiTime(now);
-                            if (wrkMastMapper.updateById(wrkMast1) == 0) {
-                                log.error("淇敼宸ヤ綔妗g姸鎬� 6/16.RGV鍏ュ簱鍙栬揣涓� => 7/17.RGV鍏ュ簱鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast1.getWrkNo());
-                            }
-                            log.error("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand));
-                        }
-                    }
-                } else if (rgvProtocol.getModeType() == RgvModeType.AUTO
-                        && rgvProtocol.getTaskNo1() > 0 && rgvProtocol.getTaskNo2() > 0
-                        && rgvProtocol.getLoaded1() > 0 && rgvProtocol.getLoaded2() > 0
-                        && rgvProtocol.statusType2 == RgvStatusType.FETCHWAITING){
-                    //  宸ヤ綅2鐘舵�侊細涔熸槸鍙栬揣瀹屾垚绛夊緟纭91 骞朵笖  浠诲姟瀹屾垚浣� = 1,  宸ヤ綅1銆�2鍚屾椂涓嬪彂鏀捐揣浠诲姟
-                    WrkMast wrkMast1 = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo1().intValue());
-                    WrkMast wrkMast2 = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo2().intValue());
-                    //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-                    RgvCommand rgvCommand = new RgvCommand();
-                    rgvCommand.setRgvNo(rgv.getId()); // RGV缂栧彿
-                    rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
-                    rgvCommand.setTaskNo1(wrkMast1.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
-                    rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡:  鏀捐揣
-                    rgvCommand.setSourceStaNo1(wrkMast1.getRgvSstaNo().shortValue());   //宸ヤ綅1婧愮珯鐐�
-                    rgvCommand.setDestinationStaNo1(wrkMast1.getRgvDstaNo().shortValue());   //宸ヤ綅1鐩爣绔欑偣
-                    rgvCommand.setAckFinish2((short) 0);  // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
-                    rgvCommand.setTaskNo2(wrkMast2.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
-                    rgvCommand.setTaskMode2(RgvTaskModeType.PUT); // 宸ヤ綅2浠诲姟妯″紡:  鏀捐揣
-                    rgvCommand.setSourceStaNo2(wrkMast2.getRgvSstaNo().shortValue());   //宸ヤ綅2婧愮珯鐐�
-                    rgvCommand.setDestinationStaNo2(wrkMast2.getRgvDstaNo().shortValue());   //宸ヤ綅2鐩爣绔欑偣
-                    rgvCommand.setCommand((short) 0);   //宸ヤ綅1銆�2浠诲姟纭
-                    if (!MessageQueue.offer(SlaveType.Crn, wrkMast1.getRgvNo(), new Task(2, rgvCommand))) {
-                        //step=2,宸ヤ綅1銆�2浠诲姟纭锛�   step=4锛屽伐浣�1纭锛�     step=5锛屽伐浣�2浠诲姟纭
-                        log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand));
-                    } else {
-                        // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 6.RGV鍏ュ簱鍙栬揣涓�
-                        Date now = new Date();
-                        wrkMast1.setWrkSts(wrkMast1.getWrkSts()==6L ? 7L : 17L);
-                        wrkMast1.setCrnStrTime(now);
-                        wrkMast1.setModiTime(now);
-                        if (wrkMastMapper.updateById(wrkMast1) == 0) {
-                            log.error("淇敼宸ヤ綔妗g姸鎬� 6/16.RGV鍏ュ簱鍙栬揣涓� => 7/17.RGV鍏ュ簱鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast1.getWrkNo());
-                        }
-
-                        wrkMast2.setWrkSts(wrkMast2.getWrkSts()==6L ? 7L : 17L);
-                        wrkMast2.setCrnStrTime(now);
-                        wrkMast2.setModiTime(now);
-                        if (wrkMastMapper.updateById(wrkMast2) == 0) {
-                            log.error("淇敼宸ヤ綔妗g姸鎬� 6/16.RGV鍏ュ簱鍙栬揣涓� => 7/17.RGV鍏ュ簱鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast2.getWrkNo());
-                        }
-                    }
+            //鍒ゆ柇RGV鏄惁绌洪棽锛屽伐浣�1鏄惁绌洪棽锛屽伐浣�1鏄惁鏈夌墿锛屾槸鍚︿负鐢佃剳妯″紡锛屽伐浣�1鏄惁鏈夊伐浣滃彿
+            if (rgvProtocol.statusType1 == RgvStatusType.FETCHWAITING
+                    && rgvProtocol.getModeType() == RgvModeType.AUTO
+                    && rgvProtocol.getTaskNo1() != 0
+                    && rgvProtocol.getStatus() != 0
+                    && rgvProtocol.getStatus1() != 0
+            ) {
+                WrkMast wrkMast1 = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo1().intValue());
+                if (wrkMast1 == null) {
+                    log.error("RGV宸ヤ綅1澶勪簬绛夊緟纭涓斿彇璐т换鍔″畬鎴愮姸鎬侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�俁GV鍙�={}锛屽伐浣滃彿={}", rgv.getId(), rgvProtocol.getTaskNo1());
+                    continue;
                 }
+
+                if (wrkMast1.getWrkSts() == 3) {//3.RGV鍙栬揣涓� => 4.RGV鍙栬揣瀹屾垚
+                    wrkMast1.setWrkSts(4L);
+                }else if(wrkMast1.getWrkSts() == 5){//5.RGV鏀捐揣涓� => 6.RGV鏀捐揣瀹屾垚
+                    rgvProtocol.setTaskNo1((short) 0);//鍏ュ簱浠诲姟瀹屾垚锛屾竻绌轰换鍔″彿
+                    wrkMast1.setWrkSts(6L);
+                } else if (wrkMast1.getWrkSts() == 24) {//24.RGV鍙栬揣涓� => 25.RGV鍙栬揣瀹屾垚
+                    wrkMast1.setWrkSts(25L);//
+                } else if (wrkMast1.getWrkSts() == 26) {//26.RGV鏀捐揣涓� => 27.RGV鏀捐揣瀹屾垚
+                    rgvProtocol.setTaskNo1((short) 0);//鍑哄簱浠诲姟瀹屾垚锛屾竻绌轰换鍔″彿
+                    wrkMast1.setWrkSts(27L);//27.RGV鏀捐揣瀹屾垚
+                }
+
+                wrkMast1.setModiTime(now);
+                if (wrkMastMapper.updateById(wrkMast1) == 0) {
+                    log.error("宸ヤ綅1淇敼宸ヤ綔妗g姸鎬佸け璐ワ紒锛侊紝宸ヤ綔鍙�={}", wrkMast1.getWrkNo());
+                }
+
+//                //宸ヤ綅1鍙栬揣瀹屾垚鍚庯紝宸ヤ綅2鏄棤璐х┖闂茬姸鎬佹椂锛屽噯澶囩粰宸ヤ綅2鍙戜换鍔★紝纭鏄惁鏈夊緟鎵цRGV浠诲姟
+//                if (rgvProtocol.getModeType() == RgvModeType.AUTO
+//                        && rgvProtocol.getTaskNo1() > 0 && rgvProtocol.getTaskNo2() == 0
+//                        && rgvProtocol.getLoaded1() > 0 && rgvProtocol.getLoaded2() == 0
+//                        && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
+//                ) {
+//                    WrkMast wrkMast1 = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo1().intValue());
+//                    if (wrkMast1 == null) {
+//                        log.error("RGV宸ヤ綅1澶勪簬绛夊緟纭涓斿彇璐т换鍔″畬鎴愮姸鎬侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�俁GV鍙�={}锛屽伐浣滃彿={}", rgv.getId(), rgvProtocol.getTaskNo1());
+//                        continue;
+//                    }
+//                    List<WrkMast> wrkMastTask = new ArrayList<>();
+//                    List<WrkMast> list = new ArrayList<>();
+//                    Integer type = 0;//1鍏ュ簱锛�2鍑哄簱
+//                    if(wrkMast1.getWrkSts()==6L){
+//                        wrkMastTask = getRgvInTask(rgv);
+//                        list = wrkMastMapper.selectRgvInWorking(rgv.getId());
+//                        type = 1;
+//                    } else if(wrkMast1.getWrkSts()==16L){
+//                        wrkMastTask = getRgvOutTask(rgv);
+//                        list = wrkMastMapper.selectRgvOutWorking(rgv.getId());
+//                        type = 2;
+//                    }
+//                    if(wrkMastTask.size() > 0){//鏈夌户缁墽琛屼换鍔★紝涓嬪彂鍙栬揣浠诲姟缁欏伐浣�2
+//                        // 宸茬粡瀛樺湪RGV鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+//                        if (list.size() > 1) {
+//                            continue;
+//                        }
+//                        WrkMast wrkMast2 = wrkMastTask.get(0);
+//                        //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+//                        RgvCommand rgvCommand = new RgvCommand();
+//                        rgvCommand.setRgvNo(rgv.getId()); // RGV缂栧彿
+//                        rgvCommand.setAckFinish2((short) 0);  // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
+//                        rgvCommand.setTaskNo2(wrkMast2.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
+//                        rgvCommand.setTaskMode2(RgvTaskModeType.FETCH); // 宸ヤ綅2浠诲姟妯″紡:  鍙栬揣
+//                        rgvCommand.setSourceStaNo2(wrkMast2.getRgvSstaNo().shortValue());   //宸ヤ綅2婧愮珯鐐�
+//                        rgvCommand.setDestinationStaNo2(wrkMast2.getRgvDstaNo().shortValue());   //宸ヤ綅2鐩爣绔欑偣
+//                        rgvCommand.setCommand((short) 0);   //宸ヤ綅1銆�2浠诲姟纭
+//                        if (!MessageQueue.offer(SlaveType.Crn, wrkMast2.getRgvNo(), new Task(5, rgvCommand))) {
+//                            //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
+//                            log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand));
+//                        } else {
+//                            // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 6.RGV鍏ュ簱鍙栬揣涓�
+//                            Date now = new Date();
+//                            wrkMast2.setWrkSts(type==1 ? 6L : 16L);
+//                            wrkMast2.setCrnStrTime(now);
+//                            wrkMast2.setModiTime(now);
+//                            if (wrkMastMapper.updateById(wrkMast2) == 0) {
+//                                log.error("宸ヤ綅2淇敼宸ヤ綔妗g姸鎬� 2/14.璁惧涓婅蛋 => 6/16.RGV鍏ュ簱鍙栬揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast2.getWrkNo());
+//                            }
+//                        }
+//                    } else {//娌℃湁缁х画鎵ц浠诲姟锛屼笅鍙戞斁璐т换鍔$粰宸ヤ綅1
+//                        if(type == 1 && wrkMast1.getWrkSts() != 6L){//RGV鍏ュ簱鍙栬揣涓�
+//                            continue;
+//                        }
+//                        if(type == 2 && wrkMast1.getWrkSts() != 16L){//RGV鍑哄簱鍙栬揣涓�
+//                            continue;
+//                        }
+//
+//                        //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+//                        RgvCommand rgvCommand = new RgvCommand();
+//                        rgvCommand.setRgvNo(rgv.getId()); // RGV缂栧彿
+//                        rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+//                        rgvCommand.setTaskNo1(wrkMast1.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
+//                        rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡:  鏀捐揣
+//                        rgvCommand.setSourceStaNo1(wrkMast1.getRgvSstaNo().shortValue());   //宸ヤ綅1婧愮珯鐐�
+//                        rgvCommand.setDestinationStaNo1(wrkMast1.getRgvDstaNo().shortValue());   //宸ヤ綅1鐩爣绔欑偣
+//                        rgvCommand.setCommand((short) 0);   //宸ヤ綅1銆�2浠诲姟纭
+//                        if (!MessageQueue.offer(SlaveType.Crn, wrkMast1.getRgvNo(), new Task(4, rgvCommand))) {
+//                            //step=2,宸ヤ綅1銆�2浠诲姟纭锛�   step=4锛屽伐浣�1纭锛�     step=5锛屽伐浣�2浠诲姟纭
+//                            log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand));
+//                        } else {
+//                            // 淇敼宸ヤ綔妗g姸鎬� 6.RGV鍏ュ簱鍙栬揣涓� => 7.RGV鍏ュ簱鏀捐揣涓�
+//                            Date now = new Date();
+//                            wrkMast1.setWrkSts(type==1 ? 7L : 17L);
+//                            wrkMast1.setCrnEndTime(now);
+//                            wrkMast1.setModiTime(now);
+//                            if (wrkMastMapper.updateById(wrkMast1) == 0) {
+//                                log.error("淇敼宸ヤ綔妗g姸鎬� 6/16.RGV鍏ュ簱鍙栬揣涓� => 7/17.RGV鍏ュ簱鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast1.getWrkNo());
+//                            }
+//                            log.error("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand));
+//                        }
+//                    }
+//                } else if (rgvProtocol.getModeType() == RgvModeType.AUTO
+//                        && rgvProtocol.getTaskNo1() > 0 && rgvProtocol.getTaskNo2() > 0
+//                        && rgvProtocol.getLoaded1() > 0 && rgvProtocol.getLoaded2() > 0
+//                        && rgvProtocol.statusType2 == RgvStatusType.FETCHWAITING){
+//                    //  宸ヤ綅2鐘舵�侊細涔熸槸鍙栬揣瀹屾垚绛夊緟纭91 骞朵笖  浠诲姟瀹屾垚浣� = 1,  宸ヤ綅1銆�2鍚屾椂涓嬪彂鏀捐揣浠诲姟
+//                    WrkMast wrkMast1 = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo1().intValue());
+//                    WrkMast wrkMast2 = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo2().intValue());
+//                    //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+//                    RgvCommand rgvCommand = new RgvCommand();
+//                    rgvCommand.setRgvNo(rgv.getId()); // RGV缂栧彿
+//                    rgvCommand.setAckFinish1((short) 0);  // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
+//                    rgvCommand.setTaskNo1(wrkMast1.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙�
+//                    rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡:  鏀捐揣
+//                    rgvCommand.setSourceStaNo1(wrkMast1.getRgvSstaNo().shortValue());   //宸ヤ綅1婧愮珯鐐�
+//                    rgvCommand.setDestinationStaNo1(wrkMast1.getRgvDstaNo().shortValue());   //宸ヤ綅1鐩爣绔欑偣
+//                    rgvCommand.setAckFinish2((short) 0);  // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
+//                    rgvCommand.setTaskNo2(wrkMast2.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
+//                    rgvCommand.setTaskMode2(RgvTaskModeType.PUT); // 宸ヤ綅2浠诲姟妯″紡:  鏀捐揣
+//                    rgvCommand.setSourceStaNo2(wrkMast2.getRgvSstaNo().shortValue());   //宸ヤ綅2婧愮珯鐐�
+//                    rgvCommand.setDestinationStaNo2(wrkMast2.getRgvDstaNo().shortValue());   //宸ヤ綅2鐩爣绔欑偣
+//                    rgvCommand.setCommand((short) 0);   //宸ヤ綅1銆�2浠诲姟纭
+//                    if (!MessageQueue.offer(SlaveType.Crn, wrkMast1.getRgvNo(), new Task(2, rgvCommand))) {
+//                        //step=2,宸ヤ綅1銆�2浠诲姟纭锛�   step=4锛屽伐浣�1纭锛�     step=5锛屽伐浣�2浠诲姟纭
+//                        log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand));
+//                    } else {
+//                        // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 6.RGV鍏ュ簱鍙栬揣涓�
+//                        Date now = new Date();
+//                        wrkMast1.setWrkSts(wrkMast1.getWrkSts()==6L ? 7L : 17L);
+//                        wrkMast1.setCrnStrTime(now);
+//                        wrkMast1.setModiTime(now);
+//                        if (wrkMastMapper.updateById(wrkMast1) == 0) {
+//                            log.error("淇敼宸ヤ綔妗g姸鎬� 6/16.RGV鍏ュ簱鍙栬揣涓� => 7/17.RGV鍏ュ簱鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast1.getWrkNo());
+//                        }
+//
+//                        wrkMast2.setWrkSts(wrkMast2.getWrkSts()==6L ? 7L : 17L);
+//                        wrkMast2.setCrnStrTime(now);
+//                        wrkMast2.setModiTime(now);
+//                        if (wrkMastMapper.updateById(wrkMast2) == 0) {
+//                            log.error("淇敼宸ヤ綔妗g姸鎬� 6/16.RGV鍏ュ簱鍙栬揣涓� => 7/17.RGV鍏ュ簱鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast2.getWrkNo());
+//                        }
+//                    }
+//                }
             }
 
         }
diff --git a/src/main/java/com/zy/common/config/RedisConfig.java b/src/main/java/com/zy/common/config/RedisConfig.java
index d356517..cf99252 100644
--- a/src/main/java/com/zy/common/config/RedisConfig.java
+++ b/src/main/java/com/zy/common/config/RedisConfig.java
@@ -5,6 +5,7 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.springframework.cache.annotation.CachingConfigurerSupport;
 import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
 import org.springframework.data.redis.connection.RedisConnectionFactory;
 import org.springframework.data.redis.core.*;
 import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
@@ -14,7 +15,7 @@
  * Redis閰嶇疆绫�
  * Created by vincent on 2019-12-23
  */
-//@Configuration
+@Configuration
 //@EnableCaching // 寮�鍚暟鎹紦瀛樻満鍒�
 public class RedisConfig extends CachingConfigurerSupport {
 
diff --git a/src/main/java/com/zy/common/utils/RedisUtil.java b/src/main/java/com/zy/common/utils/RedisUtil.java
index b2df114..95da6dc 100644
--- a/src/main/java/com/zy/common/utils/RedisUtil.java
+++ b/src/main/java/com/zy/common/utils/RedisUtil.java
@@ -2,8 +2,11 @@
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.stereotype.Component;
 import org.springframework.util.CollectionUtils;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -13,13 +16,16 @@
  * redisTemplate灏佽
  *
  */
-//@Component
+@Component
 public class RedisUtil {
 
-    @Autowired
-    private RedisTemplate<String, Object> redisTemplate;
+//    @Autowired
+//    private RedisTemplate<String, Object> redisTemplate;
 
-    public RedisUtil(RedisTemplate<String, Object> redisTemplate) {
+    @Autowired
+    private RedisTemplate redisTemplate;
+
+    public RedisUtil(RedisTemplate redisTemplate) {
         this.redisTemplate = redisTemplate;
     }
 
@@ -96,6 +102,21 @@
     }
 
     /**
+     * 鑾峰彇鍏ㄩ儴鏁版嵁
+     * @return
+     */
+    public HashMap<Object, Object> getRedis() {
+        Set<String> keys = redisTemplate.keys("*");
+        HashMap<Object, Object> map = new HashMap<>();
+        for (String key : keys) {
+            Object value = redisTemplate.opsForValue().get(key);
+            map.put(key, value);
+        }
+
+        return map;//杩斿洖鍏ㄩ儴鏁版嵁闆嗗悎
+    }
+
+    /**
      * 鏅�氱紦瀛樻斁鍏�
      *
      * @param key   閿�
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 9b954fc..490c4b9 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -68,8 +68,8 @@
                     mainService.rgvIoExecute();
                     // RGV鍏ュ簱  ===>> 鏍规嵁RGV瀹屾垚淇″彿,鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
                     mainService.rgvFinished();
-                    // 鍏ュ嚭搴�  ===>>  RGV鍑哄簱绔欏埌绯荤粺鍏ュ嚭搴撶珯
-                    mainService.rgvDestStnToCrnStn();
+//                    // 鍏ュ嚭搴�  ===>>  RGV鍑哄簱绔欏埌绯荤粺鍏ュ嚭搴撶珯
+//                    mainService.rgvDestStnToCrnStn();
 //                    // 鍑哄簱  ===>>  RGV鍑哄簱绔欏埌绯荤粺鍑哄簱绔�
 //                    mainService.rgvOutDStnToOutStn();
                     //////////////////////////////////////////////////////////////////
diff --git a/src/main/resources/mapper/BasRgvPathMapper.xml b/src/main/resources/mapper/BasRgvPathMapper.xml
new file mode 100644
index 0000000..1fc1904
--- /dev/null
+++ b/src/main/resources/mapper/BasRgvPathMapper.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.mapper.BasRgvPathMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasRgvPath">
+        <result column="rgv_no" property="rgvNo" />
+        <result column="path" property="path" />
+        <result column="status" property="status" />
+        <result column="create_by" property="createBy" />
+        <result column="create_time" property="createTime" />
+        <result column="update_by" property="updateBy" />
+        <result column="update_time" property="updateTime" />
+        <result column="memo" property="memo" />
+
+    </resultMap>
+
+    <select id="selectByRgvNo" resultMap="BaseResultMap">
+        select * from asr_bas_rgv_path
+        where 1=1
+        and rgv_no = #{rgvNo}
+    </select>
+
+</mapper>
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index bf37b5f..ae4b2c5 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -240,6 +240,13 @@
     <!--                                       RGV璋冨害鍏ュ嚭搴撶浉鍏�                                      -->
     <!-- ==============================================RGV浠诲姟缁戝畾鐩稿叧 ============================================== -->
 
+    <select id="selectWaitBindRGV" resultMap="BaseResultMap">
+        select * from dbo.asr_wrk_mast
+        where 1=1
+        and wrk_sts in (2,22)
+        and rgv_no is null
+    </select>
+
     <select id="selectRgvInSteWrkNo" resultMap="BaseResultMap">
         select top 1 * from dbo.asr_wrk_mast where 1=1 and wrk_sts =12 and wrk_no=#{wrkNo} and rgv_no is null
     </select>
@@ -248,6 +255,14 @@
         select top 1 * from dbo.asr_wrk_mast where 1=1 and wrk_sts =24 and wrk_no=#{wrkNo} and rgv_no is null
     </select>
 
+    <select id="selectIoRgvNo" resultMap="BaseResultMap">
+        select * from dbo.asr_wrk_mast
+        where 1=1
+        and wrk_sts in (2,4,23,25)
+        and rgv_no = #{rgvNo}
+        order by io_pri desc,io_time desc,wrk_no ASC
+    </select>
+
     <select id="selectRgvInSteNo" resultMap="BaseResultMap">
         select top 1 * from dbo.asr_wrk_mast where 1=1 and wrk_sts =12 and rgv_no=#{rgvNo}
         <if test="rgvNo == 1">

--
Gitblit v1.9.1