From f30358a20ae9a74ee7f6c604a8d102c1b9b24659 Mon Sep 17 00:00:00 2001
From: lsh <lsh123456>
Date: 星期二, 25 六月 2024 16:24:26 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/WrkMastExecuteServiceImpl.java |   21 +
 src/main/java/com/zy/asrs/service/BasJarService.java                  |    4 
 src/main/java/com/zy/core/thread/JarThread.java                       |  160 +++++++--
 src/main/resources/mapper/BasJarMapper.xml                            |   15 
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java           |  224 ++++++++++++-
 src/main/java/com/zy/asrs/mapper/BasJarMapper.java                    |    3 
 src/main/java/com/zy/asrs/mapper/WrkMastExecuteMapper.java            |    9 
 src/main/java/com/zy/core/enums/SteTaskModeType.java                  |  103 +-----
 src/main/java/com/zy/asrs/entity/BasJar.java                          |   12 
 src/main/resources/mapper/WrkMastExecuteMapper.xml                    |   18 +
 src/main/java/com/zy/asrs/entity/WrkMastExecute.java                  |    4 
 src/main/java/com/zy/core/enums/JarTaskModeType.java                  |   14 
 src/main/java/com/zy/core/model/protocol/StaProtocol.java             |    2 
 src/main/java/com/zy/asrs/service/impl/BasJarServiceImpl.java         |    4 
 src/main/java/com/zy/core/model/command/SteCommand.java               |  101 +++---
 src/main/java/com/zy/core/thread/SiemensCrnThread.java                |    1 
 src/main/java/com/zy/core/thread/SteThread.java                       |   86 ++---
 src/main/java/com/zy/asrs/service/WrkMastExecuteService.java          |   12 
 src/main/java/com/zy/asrs/entity/BasJarMast.java                      |    6 
 src/main/java/com/zy/core/MainProcess.java                            |    2 
 src/main/java/com/zy/core/model/command/JarCommand.java               |   16 
 src/main/java/com/zy/core/thread/SiemensDevpThread.java               |  104 +++++-
 src/main/java/com/zy/asrs/utils/SteAndJarUtil.java                    |   18 +
 23 files changed, 631 insertions(+), 308 deletions(-)

diff --git a/src/main/java/com/zy/asrs/entity/BasJar.java b/src/main/java/com/zy/asrs/entity/BasJar.java
index c24010d..6c9e7de 100644
--- a/src/main/java/com/zy/asrs/entity/BasJar.java
+++ b/src/main/java/com/zy/asrs/entity/BasJar.java
@@ -130,22 +130,22 @@
      * 鍑虹綈灏忚溅
      */
     @ApiModelProperty(value= "鍑虹綈灏忚溅")
-    @TableField("out_ste_id")
-    private Integer outSteId;
+    @TableField("out_ste_no")
+    private Integer outSteNo;
 
     /**
      * 鍏ョ綈RGV
      */
     @ApiModelProperty(value= "鍏ョ綈RGV")
-    @TableField("enter_rgv_id")
-    private Integer enterRgvId;
+    @TableField("enter_rgv_no")
+    private Integer enterRgvNo;
 
     /**
      * 鍑虹綈RGV
      */
     @ApiModelProperty(value= "鍑虹綈RGV")
-    @TableField("out_rgv_id")
-    private Integer outRgvId;
+    @TableField("out_rgv_no")
+    private Integer outRgvNo;
 
     /**
      * 鍐峰嵈
diff --git a/src/main/java/com/zy/asrs/entity/BasJarMast.java b/src/main/java/com/zy/asrs/entity/BasJarMast.java
index f39f4bd..c8ab673 100644
--- a/src/main/java/com/zy/asrs/entity/BasJarMast.java
+++ b/src/main/java/com/zy/asrs/entity/BasJarMast.java
@@ -185,9 +185,9 @@
         this.jarRegin = jar.getRegion();
         this.status = 0;
         this.enterSteNo = jar.getEnterSteNo();
-        this.outSteId = jar.getOutSteId();
-        this.enterRgvId = jar.getEnterRgvId();;
-        this.outRgvId = jar.getOutRgvId();;
+        this.outSteId = jar.getOutSteNo();
+        this.enterRgvId = jar.getEnterRgvNo();;
+        this.outRgvId = jar.getOutRgvNo();;
         this.ioTime = wrkMast.getIoTime();
         this.modiTime = now;
         this.appeTime = now;
diff --git a/src/main/java/com/zy/asrs/entity/WrkMastExecute.java b/src/main/java/com/zy/asrs/entity/WrkMastExecute.java
index f099c91..ab3248a 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMastExecute.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMastExecute.java
@@ -140,9 +140,9 @@
     private Integer wrkSts;
 
     /**
-     * 浠诲姟绫诲瀷 0: 鏈煡  1: 寮�闂�  2: 鍏抽棬  3: 鍏ョ~鍖栫綈  4: 鍏ュ喎鍗存Ы  5: 绌挎杞﹁繘鍐峰嵈妲�  6: 绌挎杞︾寮�鍐峰嵈妲�  7: 鍑哄喎鍗存Ы  
+     * 浠诲姟绫诲瀷 0: 鏈煡  1: 寮�杩涙枡闂�  2: 鍏宠繘鏂欓棬  3: 寮�鍑烘枡闂�  4: 鍏冲嚭鏂欓棬  5: 鍏ョ~鍖栫綈  6: 鍏ュ喎鍗存Ы  7: 绌挎杞﹁繘鍐峰嵈妲�  8: 绌挎杞︾寮�鍐峰嵈妲�  9: 鍑哄喎鍗存Ы 10锛欰=>B 11:B=>A
      */
-    @ApiModelProperty(value= "浠诲姟绫诲瀷 0: 鏈煡  1: 寮�杩涙枡闂�  2: 鍏宠繘鏂欓棬  3: 寮�鍑烘枡闂�  4: 鍏冲嚭鏂欓棬  5: 鍏ョ~鍖栫綈  6: 鍏ュ喎鍗存Ы  7: 绌挎杞﹁繘鍐峰嵈妲�  8: 绌挎杞︾寮�鍐峰嵈妲�  9: 鍑哄喎鍗存Ы  ")
+    @ApiModelProperty(value= "浠诲姟绫诲瀷 0: 鏈煡  1: 寮�杩涙枡闂�  2: 鍏宠繘鏂欓棬  3: 寮�鍑烘枡闂�  4: 鍏冲嚭鏂欓棬  5: 鍏ョ~鍖栫綈  6: 鍏ュ喎鍗存Ы  7: 绌挎杞﹁繘鍐峰嵈妲�  8: 绌挎杞︾寮�鍐峰嵈妲�  9: 鍑哄喎鍗存Ы 10锛欰=>B 11:B=>A ")
     @TableField("io_type")
     private Integer ioType;
 
diff --git a/src/main/java/com/zy/asrs/mapper/BasJarMapper.java b/src/main/java/com/zy/asrs/mapper/BasJarMapper.java
index 4c841c4..4d38599 100644
--- a/src/main/java/com/zy/asrs/mapper/BasJarMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/BasJarMapper.java
@@ -3,10 +3,13 @@
 import com.zy.asrs.entity.BasJar;
 import com.baomidou.mybatisplus.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
 @Mapper
 @Repository
 public interface BasJarMapper extends BaseMapper<BasJar> {
 
+    BasJar selectByJarNo(@Param("jarNo") Integer jarNo);
+
 }
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastExecuteMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastExecuteMapper.java
index 810ebd6..ba97d72 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastExecuteMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastExecuteMapper.java
@@ -6,12 +6,21 @@
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 @Mapper
 @Repository
 public interface WrkMastExecuteMapper extends BaseMapper<WrkMastExecute> {
 
     WrkMastExecute getWrkMastByWrkNo(@Param("wrkNo") Long wrkNo);
 
+    List<WrkMastExecute> getWrkMastByJarId(@Param("jarId") Integer jarId);
+
+    List<WrkMastExecute> sselectWrkMastExecuteByType(@Param("type") Integer type);
+
+    List<WrkMastExecute> sselectWrkMastExecuteByTypeAndIoTyper(@Param("type")Integer type,@Param("ioType")Integer ioType);
+
+
     Integer getWrkMastByJarIdCount(@Param("jarId") Integer jarId);
 
 }
diff --git a/src/main/java/com/zy/asrs/service/BasJarService.java b/src/main/java/com/zy/asrs/service/BasJarService.java
index 54a383f..2787a98 100644
--- a/src/main/java/com/zy/asrs/service/BasJarService.java
+++ b/src/main/java/com/zy/asrs/service/BasJarService.java
@@ -3,6 +3,10 @@
 import com.zy.asrs.entity.BasJar;
 import com.baomidou.mybatisplus.service.IService;
 
+import java.util.List;
+
 public interface BasJarService extends IService<BasJar> {
 
+    BasJar selectByJarNo(Integer jarNo);
+
 }
diff --git a/src/main/java/com/zy/asrs/service/WrkMastExecuteService.java b/src/main/java/com/zy/asrs/service/WrkMastExecuteService.java
index 1049822..50bd6ef 100644
--- a/src/main/java/com/zy/asrs/service/WrkMastExecuteService.java
+++ b/src/main/java/com/zy/asrs/service/WrkMastExecuteService.java
@@ -3,10 +3,18 @@
 import com.zy.asrs.entity.WrkMastExecute;
 import com.baomidou.mybatisplus.service.IService;
 
+import java.util.List;
+
 public interface WrkMastExecuteService extends IService<WrkMastExecute> {
 
-    WrkMastExecute getWrkMastByWrkNo(Long wrkNo);
+    WrkMastExecute getWrkMastExecuteByWrkNo(Long wrkNo);
 
-    Integer getWrkMastByJarIdCount(Integer jarId);
+    List<WrkMastExecute> getWrkMastExecuteByJarNo(Integer jarId);
+
+    List<WrkMastExecute> sselectWrkMastExecuteByType(Integer type);
+
+    List<WrkMastExecute> sselectWrkMastExecuteByTypeAndIoTyper(Integer type,Integer ioType);
+
+    Integer getWrkMastExecuteByJarIdCount(Integer jarId);
 
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/BasJarServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasJarServiceImpl.java
index 7be688b..4cc6601 100644
--- a/src/main/java/com/zy/asrs/service/impl/BasJarServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/BasJarServiceImpl.java
@@ -9,4 +9,8 @@
 @Service("basJarService")
 public class BasJarServiceImpl extends ServiceImpl<BasJarMapper, BasJar> implements BasJarService {
 
+    @Override
+    public BasJar selectByJarNo(Integer jarNo){
+        return this.baseMapper.selectByJarNo(jarNo);
+    };
 }
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 c8ff8f9..788004e 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -11,10 +11,7 @@
 import com.zy.asrs.entity.*;
 import com.zy.asrs.mapper.*;
 import com.zy.asrs.service.*;
-import com.zy.asrs.utils.CodeDetectionUtil;
-import com.zy.asrs.utils.RouteUtils;
-import com.zy.asrs.utils.Utils;
-import com.zy.asrs.utils.VersionUtils;
+import com.zy.asrs.utils.*;
 import com.zy.common.model.LocTypeDto;
 import com.zy.common.model.MatDto;
 import com.zy.common.model.SearchLocParam;
@@ -30,9 +27,7 @@
 import com.zy.core.cache.SlaveConnection;
 import com.zy.core.enums.*;
 import com.zy.core.model.*;
-import com.zy.core.model.command.CrnCommand;
-import com.zy.core.model.command.LedCommand;
-import com.zy.core.model.command.RgvCommand;
+import com.zy.core.model.command.*;
 import com.zy.core.model.cpmmandParam.CrnCommandParam;
 import com.zy.core.model.protocol.*;
 import com.zy.core.properties.SlaveProperties;
@@ -1167,6 +1162,7 @@
         }
         return false;
     }
+
     public synchronized boolean crnStnToOutStnTwo(CrnSlave.CrnStn crnStn ,Integer conStation) {
         try{
             Date now = new Date();
@@ -1288,6 +1284,7 @@
         }
         return false;
     }
+
     public synchronized boolean crnStnToOutStnThree(CrnSlave.CrnStn crnStn ) {
         try{
             // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
@@ -2938,6 +2935,7 @@
             }
         }
     }
+
     public synchronized boolean storeFinishedExecuteOne(CrnSlave crn) {
         try{
             // 鑾峰彇鍫嗗灈鏈轰俊鎭�
@@ -3003,6 +3001,7 @@
         }
         return false;
     }
+
     public synchronized boolean storeFinishedExecuteTwo(CrnSlave crn) {
         try{
             // 鑾峰彇鍫嗗灈鏈轰俊鎭�
@@ -3094,6 +3093,7 @@
         }
         return false;
     }
+
     public synchronized boolean storeFinishedExecuteThree(CrnSlave crn) {
         try{
             // 鑾峰彇鍫嗗灈鏈轰俊鎭�
@@ -3613,6 +3613,7 @@
             }
         }
     }
+
     /**
      * 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�
      */
@@ -4418,7 +4419,7 @@
     public synchronized void jarMastGenerate() {
         for (JarSlave jarSlave : slaveProperties.getJar()) {
             try{
-                if (wrkMastExecuteService.getWrkMastByJarIdCount(jarSlave.getId())!=0){
+                if (wrkMastExecuteService.getWrkMastExecuteByJarIdCount(jarSlave.getId())!=0){
                     continue;
                 }
                 for(JarSlave.StaStn staStn : jarSlave.getJarInSta()){
@@ -4473,7 +4474,7 @@
                             if (!Cools.isEmpty(basJarMast)){
                                 continue;
                             }
-                            WrkMastExecute wrkMastExecute = wrkMastExecuteService.getWrkMastByWrkNo(wrkMast.getWrkNo().longValue());
+                            WrkMastExecute wrkMastExecute = wrkMastExecuteService.getWrkMastExecuteByWrkNo(wrkMast.getWrkNo().longValue());
                             if (!Cools.isEmpty(wrkMastExecute)){
                                 continue;
                             }
@@ -4605,7 +4606,7 @@
         for (JarSlave jarSlave : slaveProperties.getJar()) {
             int i = jarSlave.getId()>2? 1:0;
             try{
-                if (wrkMastExecuteService.getWrkMastByJarIdCount(jarSlave.getId())!=0){
+                if (wrkMastExecuteService.getWrkMastExecuteByJarIdCount(jarSlave.getId())!=0){
                     continue;
                 }
 
@@ -4670,11 +4671,14 @@
 
     public synchronized boolean[] jarWrkMastExecuteGenerateBurial(boolean[] signExecute,Integer sign) {
         for (JarSlave jarSlave : slaveProperties.getJar()) {
+            if (jarSlave.getId()<5){
+                continue;
+            }
             try{
                 if (signExecute[jarSlave.getId()-5]){
                     continue;
                 }
-                if (wrkMastExecuteService.getWrkMastByJarIdCount(jarSlave.getId())!=0){
+                if (wrkMastExecuteService.getWrkMastExecuteByJarIdCount(jarSlave.getId())!=0){
                     signExecute[jarSlave.getId()-5] = true;
                     continue;
                 }
@@ -4716,11 +4720,14 @@
 
     public synchronized boolean[] jarWrkMastExecuteGenerateSte(boolean[] signExecute,Integer sign) {
         for (JarSlave jarSlave : slaveProperties.getJar()) {
+            if (jarSlave.getId()<5){
+                continue;
+            }
             try{
                 if (signExecute[jarSlave.getId()-5]){
                     continue;
                 }
-                if (wrkMastExecuteService.getWrkMastByJarIdCount(jarSlave.getId())!=0){
+                if (wrkMastExecuteService.getWrkMastExecuteByJarIdCount(jarSlave.getId())!=0){
                     continue;
                 }
 
@@ -4774,7 +4781,7 @@
      */
     public synchronized boolean jarWrkMastExecuteGenerate1(JarSlave jarSlave,Integer sign) {
         try{
-            if (wrkMastExecuteService.getWrkMastByJarIdCount(jarSlave.getId())!=0){
+            if (wrkMastExecuteService.getWrkMastExecuteByJarIdCount(jarSlave.getId())!=0){
                 return false;
             }
             List<BasJarMast> basJarMastList = basJarMastService.getJarMastByJarIdAndStatusList(jarSlave.getId(), new ArrayList<Integer>() {{
@@ -4847,13 +4854,13 @@
                                 && !jarOtherProtocol.isLeftDoor() && jarOtherProtocol.leftDoorOpen==0  && jarOtherProtocol.leftDoorClose==0){
                             if (!jarProtocol.isLeftDoor() && basJarMast.getStatus()==0){
                                 //鐢熸垚寮�闂ㄤ换鍔� OpenTheDoor
-                                if (!jarWrkMastExecuteGenerateExecute(basJar,basJarMast,basJar.getJarNo(),new int[]{basJar.getEnterSteNo(),basJar.getEnterRgvId(),1,1})){
+                                if (!jarWrkMastExecuteGenerateExecute(basJar,basJarMast,basJar.getJarNo(),new int[]{basJar.getEnterSteNo(),basJar.getEnterRgvNo(),1,1})){
                                     log.error("JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц寮傚父===銆嬪紓甯告暟鎹細BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(basJarMast));
                                 }
                                 return true;
                             } else if (jarProtocol.statusType == JarStatusType.WAITING3 && jarProtocol.isLeftDoor()){
                                 //鐢熸垚鍏ョ~鍖栫綈浠诲姟
-                                if (!jarWrkMastExecuteGenerateExecute(basJar,basJarMast,basJar.getJarNo(),new int[]{basJar.getEnterSteNo(),basJar.getEnterRgvId(),5,1})){
+                                if (!jarWrkMastExecuteGenerateExecute(basJar,basJarMast,basJar.getJarNo(),new int[]{basJar.getEnterSteNo(),basJar.getEnterRgvNo(),5,1})){
                                     log.error("JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц寮傚父===銆嬪紓甯告暟鎹細BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(basJarMast));
                                 }
                                 return true;
@@ -4881,7 +4888,7 @@
      */
     public synchronized boolean jarWrkMastExecuteGenerate2(JarSlave jarSlave,Integer sign) {
         try{
-            if (wrkMastExecuteService.getWrkMastByJarIdCount(jarSlave.getId())!=0){
+            if (wrkMastExecuteService.getWrkMastExecuteByJarIdCount(jarSlave.getId())!=0){
                 return false;
             }
             List<BasJarMast> basJarMastList = basJarMastService.getJarMastByJarIdAndStatusList(jarSlave.getId(), new ArrayList<Integer>() {{
@@ -4928,7 +4935,7 @@
                         && !jarProtocol.isRightDoor() && jarProtocol.isLeftDoor()
                         && jarProtocol.leftDoorOpen==0  && jarProtocol.leftDoorClose==0 && jarProtocol.rightDoorOpen==0  && jarProtocol.rightDoorClose==0){
                     //鍏宠繘鏂欓棬
-                    if (!jarWrkMastExecuteGenerateExecute(basJar,basJarMastSign,basJar.getJarNo(),new int[]{basJar.getEnterSteNo(),basJar.getEnterRgvId(),2,1})){
+                    if (!jarWrkMastExecuteGenerateExecute(basJar,basJarMastSign,basJar.getJarNo(),new int[]{basJar.getEnterSteNo(),basJar.getEnterRgvNo(),2,1})){
                         log.error("JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц寮傚父===銆嬪紓甯告暟鎹細BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(basJarMastSign));
                     }
                     return true;
@@ -4950,7 +4957,7 @@
      */
     public synchronized boolean jarWrkMastExecuteGenerate3(JarSlave jarSlave,Integer sign) {
         try{
-            if (wrkMastExecuteService.getWrkMastByJarIdCount(jarSlave.getId())!=0){
+            if (wrkMastExecuteService.getWrkMastExecuteByJarIdCount(jarSlave.getId())!=0){
                 return false;
             }
             List<BasJarMast> basJarMastList = basJarMastService.getJarMastByJarIdAndStatusList(jarSlave.getId(), new ArrayList<Integer>() {{
@@ -4997,7 +5004,7 @@
                         && !jarProtocol.isLeftDoor() && !jarProtocol.isRightDoor()
                         && jarProtocol.leftDoorOpen==0  && jarProtocol.leftDoorClose==0 && jarProtocol.rightDoorOpen==0  && jarProtocol.rightDoorClose==0){
                     //寮�鍑烘枡闂�
-                    if (!jarWrkMastExecuteGenerateExecute(basJar,basJarMastSign,basJar.getJarNo(),new int[]{basJar.getOutSteId(),basJar.getOutRgvId(),3,1})){
+                    if (!jarWrkMastExecuteGenerateExecute(basJar,basJarMastSign,basJar.getJarNo(),new int[]{basJar.getOutSteNo(),basJar.getOutRgvNo(),3,1})){
                         log.error("JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц寮傚父===銆嬪紓甯告暟鎹細BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(basJarMastSign));
                     }
                     return true;
@@ -5019,7 +5026,7 @@
      */
     public synchronized boolean jarWrkMastExecuteGenerate4(JarSlave jarSlave,Integer sign) {
         try{
-            if (wrkMastExecuteService.getWrkMastByJarIdCount(jarSlave.getId())!=0){
+            if (wrkMastExecuteService.getWrkMastExecuteByJarIdCount(jarSlave.getId())!=0){
                 return false;
             }
             List<BasJarMast> basJarMastList = basJarMastService.getJarMastByJarIdAndStatusList(jarSlave.getId(), new ArrayList<Integer>() {{
@@ -5067,7 +5074,7 @@
                         && !jarProtocol.isLeftDoor() && jarProtocol.isRightDoor()
                         && jarProtocol.leftDoorOpen==0  && jarProtocol.leftDoorClose==0 && jarProtocol.rightDoorOpen==0  && jarProtocol.rightDoorClose==0){
                     //鍏宠繘鏂欓棬
-                    if (!jarWrkMastExecuteGenerateExecute(basJar,jarMastByJarIdMin,basJar.getJarNo(),new int[]{basJar.getOutSteId(),basJar.getOutRgvId(),3,1})){
+                    if (!jarWrkMastExecuteGenerateExecute(basJar,jarMastByJarIdMin,basJar.getJarNo(),new int[]{basJar.getOutSteNo(),basJar.getOutRgvNo(),3,1})){
                         log.error("JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц寮傚父===銆嬪紓甯告暟鎹細BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(jarMastByJarIdMin));
                     }
                     return true;
@@ -5089,7 +5096,7 @@
      */
     public synchronized boolean jarWrkMastExecuteGenerate5(JarSlave jarSlave,Integer sign) {
         try{
-            if (wrkMastExecuteService.getWrkMastByJarIdCount(jarSlave.getId())!=0){
+            if (wrkMastExecuteService.getWrkMastExecuteByJarIdCount(jarSlave.getId())!=0){
                 return false;
             }
             List<BasJarMast> basJarMastList = basJarMastService.getJarMastByJarIdAndStatusList(jarSlave.getId(), new ArrayList<Integer>() {{
@@ -5136,7 +5143,7 @@
                 //闂ㄤ綔涓�  鏃�
                 if (jarProtocol.isAutoing() && jarProtocol.jarErr==0){
                     //鍏宠繘鏂欓棬
-                    if (!jarWrkMastExecuteGenerateExecute(basJar,jarMastByJarIdMin,basJar.getBurial(),new int[]{basJar.getOutSteId(),basJar.getOutRgvId(),3,1})){
+                    if (!jarWrkMastExecuteGenerateExecute(basJar,jarMastByJarIdMin,basJar.getBurial(),new int[]{basJar.getOutSteNo(),basJar.getOutRgvNo(),3,1})){
                         log.error("JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц寮傚父===銆嬪紓甯告暟鎹細BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(jarMastByJarIdMin));
                     }
                     return true;
@@ -5154,6 +5161,9 @@
 
     /**
      *  鍒ゆ柇STE灏忚溅鐘舵��  //瀹屾垚
+     *  1锛欰闈�  杩涙枡闈�
+     *  2锛欱闈� 鍑烘枡闈�
+     *  3锛氬喎鍗存ЫB闈� 涓婅緭閫佺嚎
      */
     public synchronized boolean jarWrkMastExecuteGenerateSteStatus(Integer steNo,Integer type) {
         try{
@@ -5201,9 +5211,17 @@
         }
         return false;
     }
-    /**
-     *  鍒ゆ柇RGV灏忚溅鐘舵��  //瀹屾垚
-     */
+
+    /*
+     * 鍒ゆ柇RGV灏忚溅鐘舵��  //瀹屾垚
+     * RGV1;//灏忚溅鏃犺揣绌洪棽
+     * RGV2;//灏忚溅杈撻�佺嚎鍙栬揣鍒颁綅
+     * RGV3;//灏忚溅杩愯涓�
+     * RGV3;//灏忚溅杩愯涓�
+     * RGV4;//灏忚溅鏀瑰乏渚ц揣鐗╃洰鏍囩珯   鍙�1锛堝乏锛夎揣鐗�
+     * RGV5;//灏忚溅鏀瑰彸渚ц揣鐗╃洰鏍囩珯   鍙�2锛堝彸锛夎揣鐗�
+     * RGV6;//涓婁綅鏈烘竻闄ゅ钩绉昏溅璧勬枡
+     * */
     public synchronized boolean jarWrkMastExecuteGenerateRgvStatus(Integer rgvNo,Integer rgvPlcId,Integer type) {
         try{
             //妫�娴婻GV鐘舵��
@@ -5217,6 +5235,7 @@
             if (staProtocolRGV == null) {
                 return false;
             }
+
             return staProtocolRGV.rgvBoolean(type);
         } catch (Exception e){
             log.error("{}鍙稲GV鐘舵�佸垽鏂姸鎬佸紓甯�,寮傚父鍘熷洜={}",rgvNo,e.getMessage());
@@ -5242,6 +5261,46 @@
         return false;
     }
 
+    /*
+    * JarWrkMastExecute浠诲姟鍒涘缓==>涓嬪彂
+    * Action
+    * */
+    public synchronized void jarWrkMastExecuteAction(Integer sign) {
+        try{
+            List<WrkMastExecute> wrkMastExecuteList = wrkMastExecuteService.sselectWrkMastExecuteByTypeAndIoTyper(0, 0);
+            for (WrkMastExecute wrkMastExecute : wrkMastExecuteList){
+                /*
+                * 浠诲姟绫诲瀷 0: 鏈煡
+                * 1: 寮�杩涙枡闂�  2: 鍏宠繘鏂欓棬  3: 寮�鍑烘枡闂�  4: 鍏冲嚭鏂欓棬
+                * 5: 鍏ョ~鍖栫綈
+                * 6: 鍏ュ喎鍗存Ы
+                * 7: 绌挎杞﹁繘鍐峰嵈妲�  8: 绌挎杞︾寮�鍐峰嵈妲�
+                * 9: 鍑哄喎鍗存Ы
+                * 10锛欰=>B 11:B=>A
+                * */
+                switch (wrkMastExecute.getIoType()){
+                    case 1:
+                        jarWrkMastExecuteActionExecute1(wrkMastExecute,sign);
+                    case 2:
+                    case 3:
+                    case 4:
+                    case 5:
+                    case 6:
+                    case 7:
+                    case 8:
+                    case 9:
+                    case 10:
+                    case 11:
+                    case 12:
+                    case 13:
+                }
+            }
+        } catch (Exception e){
+
+        }
+
+    }
+
     /**
      *  JarWrkMastExecute浠诲姟瀹屾垚   //鏈畬鎴�
      */
@@ -5253,24 +5312,131 @@
         }
     }
 
+    /**
+     *  JarWrkMastExecute浠诲姟鍒涘缓==>涓嬪彂 //鏈畬鎴�
+     *  寮�杩涙枡闂�
+     *  浠诲姟涓嬪彂
+     */
+    public synchronized boolean jarWrkMastExecuteActionExecute1(WrkMastExecute wrkMastExecute,Integer sign) {
+        try{
+            List<WrkMastExecute> wrkMastExecuteByJarNo = wrkMastExecuteService.getWrkMastExecuteByJarNo(wrkMastExecute.getJarId());
+            if (wrkMastExecuteByJarNo.size()!=1 || !wrkMastExecuteByJarNo.get(0).getWrkNo().equals(wrkMastExecute.getWrkNo())){
+                return false;
+            }
+
+            // 鑾峰彇纭寲缃愪俊鎭�
+            JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, wrkMastExecute.getJarId());
+            JarProtocol jarProtocol = jarThread.getJarProtocol();
+            if (jarProtocol == null) {
+                return false;
+            }
+            if (jarProtocol.modeType != JarModeType.AUTO){
+                return false;
+            }
+
+            BasJar basJar = basJarMapper.selectByJarNo(jarProtocol.getJarNo());
+            if (Cools.isEmpty(basJar)){
+                log.error("{}鍙风~鍖栫綈鏌ヨ璁惧妗f鏃犱俊鎭紒锛侊紒",jarProtocol.getJarNo());
+                return false;
+            }
+
+            //鍒ゆ柇灏忚溅鐘舵��
+            if (!jarWrkMastExecuteGenerateSteStatus(basJar.getEnterSteNo(),1)){
+                return false;
+            }
+            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+            StaProtocol staProtocolRGV = devpThread.getStation().get(basJar.getEnterRgvNo());
+            if (staProtocolRGV == null) {
+                return false;
+            } else {
+                staProtocolRGV = staProtocolRGV.clone();
+            }
+            if (staProtocolRGV == null) {
+                return false;
+            }
+            if (staProtocolRGV.rgvBoolean(1)){
+
+                //闂ㄤ綔涓�  鏃�
+                //鑷姩銆佺┖闂层��  杩涙枡浠叧闂渶鎵撳紑
+                if (jarProtocol.isAutoing() && jarProtocol.jarErr==0
+                        && jarProtocol.leftDoorOpen==0  && jarProtocol.leftDoorClose==0 && jarProtocol.rightDoorOpen==0  && jarProtocol.rightDoorClose==0){
+                    if (SteAndJarUtil.steAndJarNowRow(staProtocolRGV.getNowRow() , jarProtocol.getJarNo())){
+                        //绉昏蛋  == > 2
+                    } else {
+                        //鐩存帴寮�闂�
+
+                    }
+                }
+                return false;
+            } else {
+                log.error("jarWrkMastExecuteActionExecute1===>鎵ц寮傚父===銆婻GV涓嶆弧瓒虫潯浠讹紝绛夊緟===銆嬪紓甯告暟鎹細BasJar:"+ JSON.toJSONString(basJar.getEnterRgvNo())+";WrkMastExecute:"+JSON.toJSONString(wrkMastExecute));
+                return false;
+            }
+
+        } catch (Exception e){
+            log.error("jarWrkMastExecuteActionExecute1浠诲姟鎵ц涓嬪彂寮傚父==銆媤rkMastExecute={},寮傚父鍘熷洜={}",wrkMastExecute,e.getMessage());
+        }
+        return false;
+    }
+
     /*
      * Rgv  鍔ㄤ綔
      * */
-    public synchronized boolean jarRgvTake(Integer rgvNo,WrkMastExecute wrkMastExecute,Integer type){
+    public synchronized boolean jarRgvTake(WrkMastExecute wrkMastExecute,Integer endRow){
+        try {
+            StaProtocol staProtocol = new StaProtocol();
+            staProtocol.setSiteId(wrkMastExecute.getRgvId());
+            staProtocol.setEndRow(endRow.shortValue());
+            // 涓嬪彂绔欑偣淇℃伅
+            if (!MessageQueue.offer(SlaveType.Devp, 2, new Task(9, staProtocol))) {
+                log.error("骞宠 杞gv鍛戒护涓嬪彂澶辫触锛屽爢鍨涙満鍙�={},浠诲姟鏁版嵁={},涓嬪彂鏁版嵁={}", wrkMastExecute.getRgvId(), JSON.toJSON(wrkMastExecute), JSON.toJSON(staProtocol));
+                return false;
+            }
+            return true;
+        }catch (Exception e){
+            log.error("骞宠 杞gv鍛戒护涓嬪彂澶辫触锛孯gv鍙�={},浠诲姟鏁版嵁={},endRow={}", wrkMastExecute.getSteId(), JSON.toJSON(wrkMastExecute), JSON.toJSON(endRow));
+        }
         return false;
     }
 
     /*
      * Ste  鍔ㄤ綔
      * */
-    public synchronized boolean jarSteTake(Integer steNo,WrkMastExecute wrkMastExecute,Integer type){
+    public synchronized boolean jarSteTake(WrkMastExecute wrkMastExecute,Integer startLoad,Integer endLoad,SteTaskModeType steTaskModeType,boolean complete){
+        try {
+            SteCommand steCommand = new SteCommand();
+            steCommand.setSteNo(wrkMastExecute.getSteId());
+            steCommand.setStartLoad(startLoad);
+            steCommand.setEndLoad(endLoad);
+            steCommand.setTaskModeType(steTaskModeType);
+            steCommand.setComplete(complete);
+            if (!MessageQueue.offer(SlaveType.Ste, steCommand.getSteNo(), new Task(2, steCommand))) {
+                log.error("绌挎杞te鍛戒护涓嬪彂澶辫触锛屽爢鍨涙満鍙�={},浠诲姟鏁版嵁={},涓嬪彂鏁版嵁={},complete={}", steCommand.getSteNo(), JSON.toJSON(wrkMastExecute), JSON.toJSON(steCommand),complete);
+                return false;
+            }
+            return true;
+        }catch (Exception e){
+            log.error("绌挎杞te鍛戒护涓嬪彂澶辫触锛屽爢鍨涙満鍙�={},浠诲姟鏁版嵁={},complete={}", wrkMastExecute.getSteId(), JSON.toJSON(wrkMastExecute), JSON.toJSON(complete));
+        }
         return false;
     }
 
     /*
      * Jar  鍔ㄤ綔
      * */
-    public synchronized boolean jarDoorTake(Integer jarNo,WrkMastExecute wrkMastExecute,Integer type){
+    public synchronized boolean jarDoorTake(WrkMastExecute wrkMastExecute,JarTaskModeType jarTaskModeType){
+        try{
+            JarCommand jarCommand = new JarCommand();
+            jarCommand.setJarNo(wrkMastExecute.getJarId());
+            jarCommand.setTaskModeType(jarTaskModeType);
+            if (!MessageQueue.offer(SlaveType.Jar, jarCommand.getJarNo(), new Task(2, jarCommand))) {
+                log.error("纭寲缃怞ar鍛戒护涓嬪彂澶辫触锛屽爢鍨涙満鍙�={},浠诲姟鏁版嵁={},涓嬪彂鏁版嵁={}", jarCommand.getJarNo(), JSON.toJSON(wrkMastExecute), JSON.toJSON(jarCommand));
+                return false;
+            }
+            return true;
+        }catch (Exception e){
+            log.error("纭寲缃怞ar鍛戒护涓嬪彂澶辫触锛屽爢鍨涙満鍙�={},浠诲姟鏁版嵁={},涓嬪彂鏁版嵁={}", wrkMastExecute.getJarId(), JSON.toJSON(wrkMastExecute), JSON.toJSON(jarTaskModeType));
+        }
         return false;
     }
 
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkMastExecuteServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkMastExecuteServiceImpl.java
index b502354..072b583 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkMastExecuteServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkMastExecuteServiceImpl.java
@@ -6,16 +6,33 @@
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 @Service("wrkMastExecuteService")
 public class WrkMastExecuteServiceImpl extends ServiceImpl<WrkMastExecuteMapper, WrkMastExecute> implements WrkMastExecuteService {
 
     @Override
-    public WrkMastExecute getWrkMastByWrkNo(Long wrkNo) {
+    public WrkMastExecute getWrkMastExecuteByWrkNo(Long wrkNo) {
         return this.baseMapper.getWrkMastByWrkNo(wrkNo);
     }
 
     @Override
-    public Integer getWrkMastByJarIdCount(Integer jarId) {
+    public List<WrkMastExecute> getWrkMastExecuteByJarNo(Integer jarId) {
+        return this.baseMapper.getWrkMastByJarId(jarId);
+    }
+
+    @Override
+    public List<WrkMastExecute> sselectWrkMastExecuteByType(Integer type) {
+        return this.baseMapper.sselectWrkMastExecuteByType(type);
+    }
+
+    @Override
+    public List<WrkMastExecute> sselectWrkMastExecuteByTypeAndIoTyper(Integer type,Integer ioType) {
+        return this.baseMapper.sselectWrkMastExecuteByTypeAndIoTyper(type,ioType);
+    }
+
+    @Override
+    public Integer getWrkMastExecuteByJarIdCount(Integer jarId) {
         return this.baseMapper.getWrkMastByJarIdCount(jarId);
     }
 }
diff --git a/src/main/java/com/zy/asrs/utils/SteAndJarUtil.java b/src/main/java/com/zy/asrs/utils/SteAndJarUtil.java
new file mode 100644
index 0000000..91eb37b
--- /dev/null
+++ b/src/main/java/com/zy/asrs/utils/SteAndJarUtil.java
@@ -0,0 +1,18 @@
+package com.zy.asrs.utils;
+
+import java.util.regex.Pattern;
+
+public class SteAndJarUtil {
+
+    /**
+     * RGV浣嶇疆鏄惁涓庣~鍖栫綈姝e
+     */
+    public static boolean steAndJarNowRow(short steNowRow , Integer jarNo){
+        return (steNowRow==(short) 1 && (jarNo == 2 || jarNo == 4)) || (steNowRow==(short)3 && (jarNo == 1 || jarNo == 3));
+    }
+
+    public static void main(String[] args) {
+
+    }
+
+}
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index ed1dee1..399f0e7 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -96,6 +96,8 @@
                     /************************************JAR璋冨害************************************/
                     //JarWrkMastExecute浠诲姟鍒涘缓   //纭寲缃�
                     mainService.jarWrkMastExecuteGenerate(k);
+
+                    mainService.jarWrkMastExecuteAction(k);
                     //Jar浠诲姟鍒涘缓  //瀹屾垚
                     mainService.jarMastGenerate();
 
diff --git a/src/main/java/com/zy/core/enums/JarTaskModeType.java b/src/main/java/com/zy/core/enums/JarTaskModeType.java
index a0a324f..55c950f 100644
--- a/src/main/java/com/zy/core/enums/JarTaskModeType.java
+++ b/src/main/java/com/zy/core/enums/JarTaskModeType.java
@@ -4,10 +4,16 @@
 * */
 public enum JarTaskModeType {
 
-    INIT(1, "宸﹂棬寮�"),    // 鍒濆
-    OUT_RIGHT(2, "宸﹂棬鍏�"),    // 鍙冲嚭搴�
-    OUT_LEFT(3, "鍙抽棬寮�"),    // 宸﹀嚭搴�
-    IN_RIGHT(4, "鍙抽棬鍏�"),    // 鍙冲叆搴�
+    IN_OPEN_DOOR(1, "杩涙枡寮�闂�"),    // 杩涙枡寮�闂�
+    IN_CLOSE_DOOR(2, "杩涙枡鍏抽棬"),    // 杩涙枡鍏抽棬
+    OUT_OPEN_DOOR(3, "鍑烘枡寮�闂�"),    // 鍑烘枡寮�闂�
+    OUT_CLOSE_DOOR(4, "鍑烘枡鍏抽棬"),    // 鍑烘枡鍏抽棬
+    OPEN_THE_DOOR(5, "寮�闂�"),    // 寮�闂�
+    CLOSE_THE_DOOR(6, "鍏抽棬"),    // 鍏抽棬
+    IN_DOOR_COMPLETE(7, "杩涙枡瀹屾垚"),    // 杩涙枡瀹屾垚
+    OUT_DOOR_COMPLETE(8, "鍑烘枡瀹屾垚"),    // 鍑烘枡瀹屾垚
+    OPEN_THE_DOOR_COMPLETE(9, "寮�闂ㄥ畬鎴�"),    // 寮�闂ㄥ畬鎴�
+    CLOSE_THE_DOOR_COMPLETE(10, "鍏抽棬瀹屾垚"),    // 鍏抽棬瀹屾垚
     ;
 
     public Integer id;
diff --git a/src/main/java/com/zy/core/enums/SteTaskModeType.java b/src/main/java/com/zy/core/enums/SteTaskModeType.java
index 5bf8d9d..b564564 100644
--- a/src/main/java/com/zy/core/enums/SteTaskModeType.java
+++ b/src/main/java/com/zy/core/enums/SteTaskModeType.java
@@ -8,23 +8,28 @@
 public enum SteTaskModeType {
 
     INIT(0, "鍒濆"),    // 鍒濆
-    OUT_RIGHT(1, "鍙冲嚭搴�"),    // 鍙冲嚭搴�
-    OUT_LEFT(2, "宸﹀嚭搴�"),    // 宸﹀嚭搴�
-    IN_RIGHT(4, "鍙冲叆搴�"),    // 鍙冲叆搴�
-    IN_LEFT(3, "宸﹀叆搴�"),    // 宸﹀叆搴�
-    MOVE_LEFT(5, "宸︾Щ搴�"),    // 宸︾Щ搴�
-    MOVE_RIGHT(6, "鍙崇Щ搴�"),    // 鍙崇Щ搴�
-    GO_ORIGIN(8, "鍘诲彸绔�"),    // 鍥炲弽鍘熺偣
-    BACK_ORIGIN(7, "鍘诲乏绔�"),      // 鍥炲師鐐�
-    WAITING_RIGHT(10, "鍙冲緟鏈�"),        // A鐐�
-    WAITING_LEFT(9, "宸﹀緟鏈�"),       // B鐐�
-//    FIT_LEFT(11, "宸︽惉绉�"),   // 宸︽惉绉�
-//    FIT_RIGHT(12, "鍙虫惉绉�"),      // 鍙虫惉绉�
-    CHARGE_LEFT(13, "宸﹀厖鐢�"),         // 宸﹀厖鐢�
-    CHARGE_RIGHT(14, "鍙冲厖鐢�"),         // 宸﹀厖鐢�
+//    OUT_RIGHT(1, "鍙冲嚭搴�"),    // 鍙冲嚭搴�
+//    OUT_LEFT(2, "宸﹀嚭搴�"),    // 宸﹀嚭搴�
+//    IN_RIGHT(4, "鍙冲叆搴�"),    // 鍙冲叆搴�
+//    IN_LEFT(3, "宸﹀叆搴�"),    // 宸﹀叆搴�
+//    MOVE_LEFT(5, "宸︾Щ搴�"),    // 宸︾Щ搴�
+//    MOVE_RIGHT(6, "鍙崇Щ搴�"),    // 鍙崇Щ搴�
+//    GO_ORIGIN(8, "鍘诲彸绔�"),    // 鍥炲弽鍘熺偣
+//    BACK_ORIGIN(7, "鍘诲乏绔�"),      // 鍥炲師鐐�
+//    WAITING_RIGHT(10, "鍙冲緟鏈�"),        // A鐐�
+//    WAITING_LEFT(9, "宸﹀緟鏈�"),       // B鐐�
+////    FIT_LEFT(11, "宸︽惉绉�"),   // 宸︽惉绉�
+////    FIT_RIGHT(12, "鍙虫惉绉�"),      // 鍙虫惉绉�
+//    CHARGE_LEFT(13, "宸﹀厖鐢�"),         // 宸﹀厖鐢�
+//    CHARGE_RIGHT(14, "鍙冲厖鐢�"),         // 宸﹀厖鐢�
 //    CHECK_LEFT(14, "宸︾洏鐐�"),     // 宸︾洏鐐�
 //    CHECK_RIGHT(15, "鍙崇洏鐐�"),    // 鍙崇洏鐐�
-    CLOSE_CHARGE(17, "鏂紑鍏呯數"),   // 鏂紑鍏呯數
+    STE_YDQH_10(10,"鍘熷湴鍙栬揣"),
+    STE_YDFH_11(11,"鍘熷湴鏀捐揣"),
+    STE_WFQH_12(12,"寰�杩斿彇璐�"),
+    STE_WFFH_13(13,"寰�杩旀斁璐�"),
+    STE_MOVE_14(14,"绉诲姩"),
+//    CLOSE_CHARGE(17, "鏂紑鍏呯數"),   // 鏂紑鍏呯數
     ;
 
     public Integer id;
@@ -56,74 +61,6 @@
             }
         }
         return null;
-    }
-
-    public static SteTaskModeType findInByLoc(String locNo, Integer crnNo) {
-        switch (SteUtils.getGroupRow(locNo, true, crnNo)) {
-            case 2:
-                return SteTaskModeType.IN_RIGHT;   // 鍙�
-            case 12:
-                return SteTaskModeType.IN_LEFT;    // 宸�
-            default:
-                throw new CoolException("瑙f瀽绌挎杞﹀師鐐瑰畾浣嶅け璐�");
-        }
-    }
-
-    public static SteTaskModeType findOutByLoc(String locNo, Integer crnNo) {
-        switch (SteUtils.getGroupRow(locNo, false, crnNo)) {
-            case 2:
-                return SteTaskModeType.OUT_LEFT;   // 鍙�
-            case 12:
-                return SteTaskModeType.OUT_RIGHT;    // 宸�
-            default:
-                throw new CoolException("瑙f瀽绌挎杞﹀師鐐瑰畾浣嶅け璐�");
-        }
-    }
-    public static SteTaskModeType findOutByLoc2(String locNo, Integer crnNo) {
-        switch (SteUtils.getGroupRow(locNo, false, crnNo)) {
-            case 2:
-                return SteTaskModeType.GO_ORIGIN;   // 8
-            case 12:
-                return SteTaskModeType.BACK_ORIGIN;    // 7
-            default:
-                throw new CoolException("瑙f瀽绌挎杞﹀師鐐瑰畾浣嶅け璐�");
-        }
-    }
-
-
-    // -----------------------------------------------
-
-    // 鍘诲緟鎼偣
-    public static SteTaskModeType findOriginByLoc(SteProtocol steProtocol, Integer crnNo) {
-        int row = steProtocol.getRow().intValue();
-        if (SteUtils.SHUTTLE_GROUP_ROW_LIST.contains(row)) {
-            return crnNo == 1 ? SteTaskModeType.BACK_ORIGIN : SteTaskModeType.GO_ORIGIN;
-        } else if (row==13 || row==1){
-            return SteTaskModeType.INIT;
-        } else {
-            throw new CoolException("瑙f瀽绌挎杞﹀師鐐瑰畾浣嶅け璐�");
-        }
-    }
-
-    public static SteTaskModeType findOriginByLoc(Integer row, Integer crnNo) {
-        if (SteUtils.SHUTTLE_GROUP_ROW_LIST.contains(row)) {
-            return crnNo == 1 ? SteTaskModeType.BACK_ORIGIN : SteTaskModeType.GO_ORIGIN;
-        } else if (row==13 || row==1){
-            return SteTaskModeType.INIT;
-        } else {
-            throw new CoolException("瑙f瀽绌挎杞﹀師鐐瑰畾浣嶅け璐�");
-        }
-    }
-
-
-    public static SteTaskModeType findWaiting(Integer row, Integer crnNo) {
-        if (SteUtils.SHUTTLE_GROUP_ROW_LIST.contains(row)) {
-            return crnNo == 1 ? SteTaskModeType.WAITING_LEFT : SteTaskModeType.WAITING_RIGHT;
-        } else if (row==1||row==13){
-            return SteTaskModeType.INIT;
-        } else {
-            throw new CoolException("瑙f瀽绌挎杞﹀師鐐瑰畾浣嶅け璐�");
-        }
     }
 
 }
diff --git a/src/main/java/com/zy/core/model/command/JarCommand.java b/src/main/java/com/zy/core/model/command/JarCommand.java
index 95593db..f617c95 100644
--- a/src/main/java/com/zy/core/model/command/JarCommand.java
+++ b/src/main/java/com/zy/core/model/command/JarCommand.java
@@ -1,7 +1,7 @@
 package com.zy.core.model.command;
 
 import com.alibaba.fastjson.annotation.JSONField;
-import com.zy.core.enums.SteTaskModeType;
+import com.zy.core.enums.JarTaskModeType;
 import lombok.Data;
 
 /**
@@ -20,14 +20,8 @@
     // 浣滀笟绫诲瀷
     private Short taskMode = 0;
 
-    // 姝e湪鎵ц浠诲姟
-    public Boolean execute = Boolean.FALSE;
-
-    // 纭浠诲姟瀹屾垚
-    public Boolean complete = Boolean.FALSE;
-
     @JSONField(serialize = false)
-    private SteTaskModeType taskModeType;
+    private JarTaskModeType taskModeType;
 
     /**
      * 杈撳叆绌挎杞﹁繍琛岀姝� 1杩愯锛�0绂佹
@@ -36,12 +30,12 @@
 
     public void setTaskMode(Short taskMode){
         this.taskMode = taskMode;
-        this.taskModeType = SteTaskModeType.get(taskModeType);
+        this.taskModeType = JarTaskModeType.get(taskModeType);
     }
 
-    public void setTaskMode(SteTaskModeType type) {
+    public void setTaskMode(JarTaskModeType type) {
         this.taskModeType = type;
-        this.taskMode = SteTaskModeType.get(type).id.shortValue();
+        this.taskMode = JarTaskModeType.get(type).id.shortValue();
     }
 
 }
diff --git a/src/main/java/com/zy/core/model/command/SteCommand.java b/src/main/java/com/zy/core/model/command/SteCommand.java
index 08a1ba2..365370e 100644
--- a/src/main/java/com/zy/core/model/command/SteCommand.java
+++ b/src/main/java/com/zy/core/model/command/SteCommand.java
@@ -16,6 +16,10 @@
 
     // 浠诲姟鍙�
     private Integer taskNo = 0;
+    // 璧峰鐐逛綅
+    private Integer startLoad = 0;
+    // 鐩爣鐐逛綅
+    private Integer endLoad = 0;
 
     // 浣滀笟绫诲瀷
     private Short taskMode = 0;
@@ -25,62 +29,53 @@
 
     // 纭浠诲姟瀹屾垚
     public Boolean complete = Boolean.FALSE;
-
+//
     @JSONField(serialize = false)
     private SteTaskModeType taskModeType;
+//
+//    // 璧峰璁惧鍙�
+//    private Short startSsbm;
+//
+//    // 鐩殑璁惧鍙�
+//    private Short endSsbm;
+//
+//    // 鎺у埗妯″紡 0=鑴辨満 1=鑱旀満
+//    private Short controlMode;
+//
+//    // 寮�鍚俊鍙� 1-鍚姩
+//    private Short open;
+//
+//    // 鍒濆鍖�
+//    private Short init;
+//
+//    // 澶嶄綅淇″彿 1=澶嶄綅
+//    private Boolean reset;
+//
+//    // 鍒犻櫎鎸囦护 1=鍒犻櫎
+//    private Boolean delete;
+//
+//    // 鎵樼洏闂磋窛 涓棿鎵樼洏涔嬮棿璺濈 鍗曚綅姣背
+//    private Short space;
+//
+//    // 闂磋窛纭
+//    private Short spaceYes;
+//
+//    // 鎺掍慨鏀�
+//    private Short rowModify;
+//
+//    // 鍒椾慨鏀�
+//    private Short bayModify;
+//
+//    // 灞備慨鏀�
+//    private Short levModify;
+//
+//    // 淇敼纭
+//    private Short modifyYes;
 
-    // 鎺�
-    private Short row;
-
-    // 鍒�
-    private Short bay;
-
-    // 灞�
-    private Short lev;
-
-    // 璧峰璁惧鍙�
-    private Short startSsbm;
-
-    // 鐩殑璁惧鍙�
-    private Short endSsbm;
-
-    // 鎺у埗妯″紡 0=鑴辨満 1=鑱旀満
-    private Short controlMode;
-
-    // 寮�鍚俊鍙� 1-鍚姩
-    private Short open;
-
-    // 鍒濆鍖�
-    private Short init;
-
-    // 澶嶄綅淇″彿 1=澶嶄綅
-    private Boolean reset;
-
-    // 鍒犻櫎鎸囦护 1=鍒犻櫎
-    private Boolean delete;
-
-    // 鎵樼洏闂磋窛 涓棿鎵樼洏涔嬮棿璺濈 鍗曚綅姣背
-    private Short space;
-
-    // 闂磋窛纭
-    private Short spaceYes;
-
-    // 鎺掍慨鏀�
-    private Short rowModify;
-
-    // 鍒椾慨鏀�
-    private Short bayModify;
-
-    // 灞備慨鏀�
-    private Short levModify;
-
-    // 淇敼纭
-    private Short modifyYes;
-
-    /**
-     * 杈撳叆绌挎杞﹁繍琛岀姝� 1杩愯锛�0绂佹
-     */
-    private Short run;
+//    /**
+//     * 杈撳叆绌挎杞﹁繍琛岀姝� 1杩愯锛�0绂佹
+//     */
+//    private Short run;
 
     public void setTaskMode(Short taskMode){
         this.taskMode = taskMode;
diff --git a/src/main/java/com/zy/core/model/protocol/StaProtocol.java b/src/main/java/com/zy/core/model/protocol/StaProtocol.java
index bc4e716..9fd2f8f 100644
--- a/src/main/java/com/zy/core/model/protocol/StaProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -79,7 +79,7 @@
     private boolean barcodeErr;
 
     private short endRow;//灏忚溅鐩爣浣�
-    private short nowRow;//灏忚溅褰撳墠浣�
+    private short nowRow;//灏忚溅褰撳墠浣�   //宸︼細1  涓細 2  鍙筹細3   锛堥潰鏈濆叆鏂欏彛锛�
     private boolean RGV1;//灏忚溅鏃犺揣绌洪棽
     private boolean RGV2;//灏忚溅杈撻�佺嚎鍙栬揣鍒颁綅
     private boolean RGV3;//灏忚溅杩愯涓�
diff --git a/src/main/java/com/zy/core/thread/JarThread.java b/src/main/java/com/zy/core/thread/JarThread.java
index b58c74b..311d53d 100644
--- a/src/main/java/com/zy/core/thread/JarThread.java
+++ b/src/main/java/com/zy/core/thread/JarThread.java
@@ -20,6 +20,7 @@
 import com.zy.core.enums.SlaveType;
 import com.zy.core.model.JarSlave;
 import com.zy.core.model.Task;
+import com.zy.core.model.command.CrnCommand;
 import com.zy.core.model.command.JarCommand;
 import com.zy.core.model.protocol.JarProtocol;
 import lombok.Data;
@@ -150,7 +151,7 @@
                 jarProtocol.setJarErr((int)siemensS7Net.getByteTransform().TransInt16(result.Content, 14));//寮傚父鐮�
                 jarProtocol.setStatus(siemensS7Net.getByteTransform().TransInt16(result.Content, 16));//鐘舵��
 
-                jarProtocol.setAutoing(siemensS7Net.getByteTransform().TransInt16(result.Content, 12) != 2);//鑷姩
+                jarProtocol.setAutoing(siemensS7Net.getByteTransform().TransInt16(result.Content, 12) == 2);//鑷姩
                 // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
                 BasJarService service = SpringUtils.getBean(BasJarService.class);
                 if (null != service) {
@@ -168,6 +169,7 @@
             }
         } catch (Exception e) {
 //            e.printStackTrace();
+            log.error(e.getMessage());
             OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆戣鍙栫~鍖栫綈plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
 //            News.error("璇诲彇绌挎杞lc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
             initSte();
@@ -183,41 +185,129 @@
             News.error("绌挎杞﹀啓鍏ュ懡浠や负绌�");
             return false;
         }
-        command.setJarNo(slave.getId());
-        OperateResult result = null;
-        // 寮�濮嬩换鍔�
-        if (!command.getComplete()) {
-            //缁勭粐浠诲姟鍓嶏紝鍏堟竻绌哄啓浠诲姟纭浣嶏紝浠ュ強浠诲姟瀹屾垚纭浣�
-            OperateResult result01 = siemensS7Net.Write("V2000.0", false);
-            OperateResult result02 = siemensS7Net.Write("V2000.1", false);
-            // 1.浠诲姟鍙�
-            OperateResult result0 = siemensS7Net.Write("V998", command.getTaskNo().shortValue());
-            try {
-                Thread.sleep(200);
-            } catch (InterruptedException e) {
-                e.printStackTrace();
-            }
-            // 浣滀笟
-            if (command.getTaskMode() != 0) {
-                // 2.浣滀笟
-                OperateResult result1 = siemensS7Net.Write("V1000", command.getTaskMode());
-                // 3.纭寮�濮嬩换鍔�
-                if (result0.IsSuccess && result1.IsSuccess) {
-                    result = siemensS7Net.Write("V2000.0", true);
-                }
-            }
 
-            // 浠诲姟瀹屾垚
-        } else {
-            siemensS7Net.Write("V998", (short) 0);
-            siemensS7Net.Write("V1000", (short) 0);
-            siemensS7Net.Write("V2000.0", false);
-            result = siemensS7Net.Write("V2000.1", true);
+        command.setJarNo(slave.getId());
+        OperateResult result1 = null;
+        String resultV1 = "";
+        short resultS1 = 0;
+        OperateResult result2 = null;
+        String resultV2 = null;
+        short resultS2 = 0;
+
+        switch (command.getTaskMode()){
+            case 1:
+            case 2:
+            case 3:
+            case 4:
+                return false;
+            case 5://寮�闂�
+                resultV1 = "V318";
+                resultV2 = "V320";
+                resultS1 = (short)1;
+                resultS2 = (short)1;
+                break;
+            case 6://鍏抽棬
+                resultV1 = "V322";
+                resultV2 = "V324";
+                resultS1 = (short)1;
+                resultS2 = (short)1;
+                break;
+            case 7:
+            case 8:
+                return false;
+            case 9:
+                resultV1 = "V318";
+                resultV2 = "V320";
+                break;
+            case 10:
+                resultV1 = "V322";
+                resultV2 = "V324";
+                break;
+            default:
+                return false;
         }
+
+        result1 = siemensS7Net.Write(resultV1, resultS1);
+        result2 = siemensS7Net.Write(resultV2, resultS2);
+        //纭寲缃愪换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔�
+        try {
+            Thread.sleep(200);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+        int writeCount = 1;
+        do {
+            try{
+                if(!result1.IsSuccess){
+                    log.error("鍐欏叆纭寲缃恜lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔�  鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(command),writeCount);
+                    result1 = siemensS7Net.Write(resultV1, resultS1);
+                    Thread.sleep(100);
+                    writeCount++;
+                    continue;
+                }
+                OperateResultExOne<byte[]> resultRead1 = siemensS7Net.Read(resultV1, (short) 2);
+                if (resultRead1.IsSuccess) {
+                    short transInt16 = siemensS7Net.getByteTransform().TransInt16(resultRead1.Content, 0);
+                    if (transInt16 == resultS1 || transInt16 == (short) 2 || transInt16 == (short) 3){
+                        break;
+                    } else {
+                        log.error("鍐欏叆纭寲缃恜lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔�  鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(command),writeCount);
+                        result1 = siemensS7Net.Write(resultV1, resultS1);
+                        Thread.sleep(100);
+                        writeCount++;
+                        continue;
+                    }
+                } else {
+                    log.error("鍐欏叆纭寲缃恜lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔�  鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(command),writeCount);
+                    result1 = siemensS7Net.Write(resultV1, resultS1);
+                    Thread.sleep(100);
+                    writeCount++;
+                    continue;
+                }
+            }catch (Exception e){
+                log.error("鍐欏叆纭寲缃恜lc鏁版嵁鍚庡洖璇诲嚭閿�,寮傚父锛�"+e);
+            }
+            writeCount++;
+        } while (writeCount<6);
+
+        writeCount = 1;
+        do {
+            try{
+                if(!result2.IsSuccess){
+                    log.error("鍐欏叆纭寲缃恜lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔�  鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(command),writeCount);
+                    result2 = siemensS7Net.Write(resultV2, resultS2);
+                    Thread.sleep(100);
+                    writeCount++;
+                    continue;
+                }
+                OperateResultExOne<byte[]> resultRead2 = siemensS7Net.Read(resultV2, (short) 2);
+                if (resultRead2.IsSuccess) {
+                    short transInt16 = siemensS7Net.getByteTransform().TransInt16(resultRead2.Content, 0);
+                    if (transInt16 == resultS1  || transInt16 == (short) 3){
+                        break;
+                    } else {
+                        log.error("鍐欏叆纭寲缃恜lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔�  鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(command),writeCount);
+                        result2 = siemensS7Net.Write(resultV2, resultS2);
+                        Thread.sleep(100);
+                        writeCount++;
+                        continue;
+                    }
+                } else {
+                    log.error("鍐欏叆纭寲缃恜lc鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔�  鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(command),writeCount);
+                    result2 = siemensS7Net.Write(resultV2, resultS2);
+                    Thread.sleep(100);
+                    writeCount++;
+                    continue;
+                }
+            }catch (Exception e){
+                log.error("鍐欏叆纭寲缃恜lc鏁版嵁鍚庡洖璇诲嚭閿�,寮傚父锛�"+e);
+            }
+            writeCount++;
+        } while (writeCount<6);
 
         try {
             // 鏃ュ織璁板綍
-            if (!command.getComplete() && command.getTaskMode() != 0) {
+            if (command.getTaskMode() != 0) {
                 BasSteOptService bean = SpringUtils.getBean(BasSteOptService.class);
                 if (null != bean) {
                     BasSteOpt basSteOpt = new BasSteOpt(
@@ -241,19 +331,15 @@
                     bean.insert(basSteOpt);
                 }
             }
-
         } catch (Exception ignore) {}
 
-        if (result != null && result.IsSuccess) {
+        if (result1 != null && result1.IsSuccess && result2 != null && result2.IsSuccess ) {
 
             News.info("纭寲缃愬懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSONString(command));
             OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 纭寲缃愬懡浠や笅鍙戯細 {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSONString(command)));
-
             try {
                 Thread.sleep(500);
-            } catch (Exception e){
-
-            }
+            } catch (Exception e){ }
             return true;
         } else {
             OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆戝啓鍏ョ~鍖栫綈plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index 12cc3ad..0929642 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -59,6 +59,7 @@
     @SuppressWarnings("InfiniteLoopStatement")
     public void run() {
         this.connect();
+        sign = System.currentTimeMillis();
         while (isRunning) {
             try {
                 int step = 1;
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index f3acc49..cd891bc 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -197,6 +197,9 @@
                         Thread.sleep(400);
                         write((StaProtocol)task.getData());
                         break;
+                    case 9:
+                        write9((StaProtocol)task.getData());
+                        break;
                     default:
                         break;
                 }
@@ -316,27 +319,6 @@
                 }
             }
         }
-//        Thread.sleep(200);
-//        OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB100.100", (short) (staNoSize * 2));
-//        if (result1.IsSuccess) {
-//            for (int i = 0; i < staNoSize; i++) {
-//                Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
-//                boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, i*2, 1);
-//                StaProtocol staProtocol = station.get(siteId);
-//                staProtocol.setAutoing(status[0]);  // 鑷姩
-//                staProtocol.setLoading(status[1]);  // 鏈夌墿
-//                staProtocol.setInEnable(status[2]); // 鍙叆
-//                staProtocol.setOutEnable(status[3]);// 鍙嚭
-//                staProtocol.setEmptyMk(status[4]);  // 绌烘澘淇″彿
-//                staProtocol.setFullPlt(status[5]);  // 婊℃墭鐩�
-//                staProtocol.setHigh(status[6]);     // 楂樺簱浣�
-//                staProtocol.setLow(status[7]);      // 浣庡簱浣�
-//
-//                if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
-//                    staProtocol.setPakMk(true);
-//                }
-//            }
-//        }
 
         //鏉$爜鎵弿鍣�
         Thread.sleep(200);
@@ -555,6 +537,86 @@
             log.info("杈撻�佺嚎鍛戒护涓嬪彂鐮佸灈瀹屾垚  缁欒緭閫佸浣� [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}",  slave.getId(), JSON.toJSON(staProtocol));
         }
     }
+
+    /**
+     * 鍐欏叆 ID+鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏�
+     */
+    private void write9(StaProtocol staProtocol) throws InterruptedException {
+        if (null == staProtocol) {
+            return;
+        }
+        short resultS1 = staProtocol.getEndRow();
+        OperateResult result1 = null;
+        String resultV1 = "";
+        switch (staProtocol.getSiteId()){
+            case 623:
+                resultV1 = "1800";
+                break;
+            case 624:
+                resultV1 = "1806";
+                break;
+            case 625:
+                resultV1 = "1812";
+                break;
+            case 626:
+                resultV1 = "1818";
+                break;
+            default:
+                return;
+        }
+        result1 = siemensS7Net.Write(resultV1, resultS1);
+        //纭寲缃愪换鍔″啓鍏ュ悗锛屽洖璇讳竴娆★紝鐪嬫槸鍚︽垚鍔�
+        try {
+            Thread.sleep(200);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+
+        int writeCount = 1;
+        do {
+            try{
+                if(!result1.IsSuccess){
+                    log.error("鍐欏叆RGV鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔�  鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount);
+                    result1 = siemensS7Net.Write(resultV1, resultS1);
+                    Thread.sleep(100);
+                    writeCount++;
+                    continue;
+                }
+                OperateResultExOne<byte[]> resultRead1 = siemensS7Net.Read(resultV1, (short) 2);
+                if (resultRead1.IsSuccess) {
+                    short transInt16 = siemensS7Net.getByteTransform().TransInt16(resultRead1.Content, 0);
+                    if (transInt16 == resultS1 || transInt16 == (short) 2 || transInt16 == (short) 3){
+                        break;
+                    } else {
+                        log.error("鍐欏叆RGV鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔�  鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount);
+                        result1 = siemensS7Net.Write(resultV1, resultS1);
+                        Thread.sleep(100);
+                        writeCount++;
+                        continue;
+                    }
+                } else {
+                    log.error("鍐欏叆RGV鏁版嵁澶辫触锛岄噸鏂颁笅鍙戜换鍔�  鍐欏叆鐩存帴澶辫触 ===>> [id:{}],{},[鍐欏叆娆℃暟:{}]", slave.getId(), JSON.toJSON(staProtocol),writeCount);
+                    result1 = siemensS7Net.Write(resultV1, resultS1);
+                    Thread.sleep(100);
+                    writeCount++;
+                    continue;
+                }
+            }catch (Exception e){
+                log.error("鍐欏叆RGV鏁版嵁鍚庡洖璇诲嚭閿�,寮傚父锛�"+e);
+            }
+            writeCount++;
+        } while (writeCount<6);
+
+        if (!result1.IsSuccess) {
+            staProtocol = station.get(staProtocol.getSiteId());
+            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol)));
+            log.error("鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
+        } else {
+            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆� 杈撻�佺嚎鍛戒护涓嬪彂 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol)));
+            log.info("杈撻�佺嚎鍛戒护涓嬪彂鐮佸灈瀹屾垚  缁欒緭閫佸浣� [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}",  slave.getId(), JSON.toJSON(staProtocol));
+        }
+    }
+
     // 鏇存柊鍏ュ嚭搴撴ā寮�
     private void updateIoMode() throws InterruptedException {
         if (this.ioModeOf2F != IoModeType.NONE) {
diff --git a/src/main/java/com/zy/core/thread/SteThread.java b/src/main/java/com/zy/core/thread/SteThread.java
index 22155d8..41ef4d8 100644
--- a/src/main/java/com/zy/core/thread/SteThread.java
+++ b/src/main/java/com/zy/core/thread/SteThread.java
@@ -163,16 +163,16 @@
 
                 OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
 
-                // 澶嶄綅淇″彿
-                if (steProtocol.getWaiting()) {
-                    if (resetFlag) {
-                        SteCommand steCommand = new SteCommand();
-                        steCommand.setComplete(true);
-                        if (write(steCommand) && confirmPos()) {
-                            resetFlag = false;
-                        }
-                    }
-                }
+//                // 澶嶄綅淇″彿
+//                if (steProtocol.getWaiting()) {
+//                    if (resetFlag) {
+//                        SteCommand steCommand = new SteCommand();
+//                        steCommand.setComplete(true);
+//                        if (write(steCommand) && confirmPos()) {
+//                            resetFlag = false;
+//                        }
+//                    }
+//                }
 
                 // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
                 BasSteService service = SpringUtils.getBean(BasSteService.class);
@@ -223,8 +223,10 @@
             //缁勭粐浠诲姟鍓嶏紝鍏堟竻绌哄啓浠诲姟纭浣嶏紝浠ュ強浠诲姟瀹屾垚纭浣�
             siemensS7Net.Write("DB100.0", (short) 0);//璁惧鍙�
             siemensS7Net.Write("DB100.2", (short) 0);//浠诲姟鍙�
-            siemensS7Net.Write("DB100.12.0", false);//浠诲姟寮�濮嬬‘璁や綅
-            siemensS7Net.Write("DB100.12.1", false);//浠诲姟瀹屾垚纭
+            siemensS7Net.Write("DB100.12", (short) 0);//璧峰鐐逛綅
+            siemensS7Net.Write("DB100.14", (short) 0);//鐩殑鐐逛綅
+            siemensS7Net.Write("DB100.16.0", false);//浠诲姟寮�濮嬬‘璁や綅
+            siemensS7Net.Write("DB100.16.1", false);//浠诲姟瀹屾垚纭
             // 1.浠诲姟鍙�
             OperateResult result0 = siemensS7Net.Write("DB100.2", command.getTaskNo().shortValue());
             try {
@@ -236,9 +238,11 @@
             if (command.getTaskMode() != 0) {
                 // 2.浣滀笟
                 OperateResult result1 = siemensS7Net.Write("DB100.4", command.getTaskMode());
+                OperateResult result2 = siemensS7Net.Write("DB100.12", (short) command.getStartLoad().shortValue());//璧峰鐐逛綅
+                OperateResult result3 = siemensS7Net.Write("DB100.14", (short) command.getEndLoad().shortValue());//鐩殑鐐逛綅
                 // 3.纭寮�濮嬩换鍔�
-                if (result0.IsSuccess && result1.IsSuccess) {
-                    result = siemensS7Net.Write("DB100.12.0", true);
+                if (result0.IsSuccess && result1.IsSuccess && result2.IsSuccess && result3.IsSuccess) {
+                    result = siemensS7Net.Write("DB100.16.0", true);
 
                     try {
                         Thread.sleep(300);
@@ -249,11 +253,11 @@
             }
             // 浠诲姟瀹屾垚
         } else {
-            siemensS7Net.Write("DB100.2", (short) 0);//浠诲姟鍙�
-            siemensS7Net.Write("DB100.4.0", (short) 0);//浠诲姟绫诲瀷
-            siemensS7Net.Write("DB100.12.0", false);//浠诲姟寮�濮嬬‘璁や綅
+//            siemensS7Net.Write("DB100.2", (short) 0);//浠诲姟鍙�
+//            siemensS7Net.Write("DB100.4.0", (short) 0);//浠诲姟绫诲瀷
+            siemensS7Net.Write("DB100.16.0", false);//浠诲姟寮�濮嬬‘璁や綅
 
-            result = siemensS7Net.Write("DB100.12.1", true);//浠诲姟瀹屾垚纭
+            result = siemensS7Net.Write("DB100.16.1", true);//浠诲姟瀹屾垚纭
         }
 
         try {
@@ -286,13 +290,6 @@
         } catch (Exception ignore) {}
 
         if (result != null && result.IsSuccess) {
-            // 缁存姢鏁版嵁搴撴帓鍒楀眰
-            if (!steProtocol.getWaiting()) {
-                if (!Cools.isEmpty(command.getRow(), command.getBay(), command.getLev())) {
-                    this.modifyPos(command.getRow().intValue(), command.getBay().intValue(), command.getLev().intValue());
-                }
-            }
-
             News.info("绌挎杞﹀懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
             OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
             return true;
@@ -300,13 +297,6 @@
             OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆戝啓鍏ョ┛姊溅plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
             News.error("鍐欏叆绌挎杞lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
             return false;
-        }
-    }
-
-    public void modifyPos(Integer row, Integer bay, Integer lev) {
-        BasSteService service = SpringUtils.getBean(BasSteService.class);
-        if (!service.updatePos(this.slave.getId(), row, bay, lev)) {
-            News.error("鏇存柊{}鍙风┛姊溅瀹氫綅澶辫触 ===>> 鎺掞細銆恵}銆�, 鍒楋細銆恵}銆戯紝灞傦細銆恵}銆�", this.slave.getId(), row, bay, lev);
         }
     }
 
@@ -367,21 +357,21 @@
     /******************************************************************************************/
     /**************************************** 娴嬭瘯涓撶敤 *****************************************/
     /*****************************************************************************************/
-    public static void main(String[] args) throws InterruptedException {
-        SteSlave slave = new SteSlave();
-        slave.setId(1);
-        slave.setIp("192.168.2.1");
-        slave.setPort(502);
-        SteThread thread = new SteThread(slave);
-        thread.connect();
-        thread.readStatus();
-        System.out.println(JSON.toJSONString(thread.steProtocol));
-
-        // 绌挎杞﹁繍琛岀姝�
-        SteCommand command = new SteCommand();
-        command.setRun((short)0);
-        thread.write(command);
-
-    }
+//    public static void main(String[] args) throws InterruptedException {
+//        SteSlave slave = new SteSlave();
+//        slave.setId(1);
+//        slave.setIp("192.168.2.1");
+//        slave.setPort(502);
+//        SteThread thread = new SteThread(slave);
+//        thread.connect();
+//        thread.readStatus();
+//        System.out.println(JSON.toJSONString(thread.steProtocol));
+//
+//        // 绌挎杞﹁繍琛岀姝�
+//        SteCommand command = new SteCommand();
+////        command.setRun((short)0);
+//        thread.write(command);
+//
+//    }
 
 }
diff --git a/src/main/resources/mapper/BasJarMapper.xml b/src/main/resources/mapper/BasJarMapper.xml
index bb45963..59d31b4 100644
--- a/src/main/resources/mapper/BasJarMapper.xml
+++ b/src/main/resources/mapper/BasJarMapper.xml
@@ -4,7 +4,7 @@
 
     <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
     <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasJar">
-        <result column="jar_no" property="jarNo" />
+        <id column="jar_no" property="jarNo" />
         <result column="region" property="region" />
         <result column="jar_code" property="jarCode" />
         <result column="sta_no" property="staNo" />
@@ -20,11 +20,18 @@
         <result column="right_in_enable" property="rightInEnable" />
         <result column="right_out_enable" property="rightOutEnable" />
         <result column="enter_ste_no" property="enterSteNo" />
-        <result column="out_ste_id" property="outSteId" />
-        <result column="enter_rgv_id" property="enterRgvId" />
-        <result column="out_rgv_id" property="outRgvId" />
+        <result column="out_ste_no" property="outSteNo" />
+        <result column="enter_rgv_no" property="enterRgvNo" />
+        <result column="out_rgv_no" property="outRgvNo" />
         <result column="burial" property="burial" />
 
     </resultMap>
 
+    <select id="selectByJarNo" resultMap="BaseResultMap">
+        select top 1 * from asr_bas_jar
+        where 1=1
+        and jar_no=0
+        order by id
+    </select>
+
 </mapper>
diff --git a/src/main/resources/mapper/WrkMastExecuteMapper.xml b/src/main/resources/mapper/WrkMastExecuteMapper.xml
index 09c7edf..ca69ed5 100644
--- a/src/main/resources/mapper/WrkMastExecuteMapper.xml
+++ b/src/main/resources/mapper/WrkMastExecuteMapper.xml
@@ -25,13 +25,27 @@
 
     </resultMap>
 
-    <select id="getWrkMastByWrkNo" resultMap="BaseResultMap">
+    <select id="getWrkMastExecuteByWrkNo" resultMap="BaseResultMap">
+        select top 1 * from jar_wrk_mast_execute
+        where 1=1
+        and jar_id = #{jarId}
+    </select>
+
+    <select id="getWrkMastExecuteByJarId" resultMap="BaseResultMap">
         select * from jar_wrk_mast_execute
         where 1=1
         and jar_id = #{jarId}
     </select>
 
-    <select id="getWrkMastByJarIdCount" resultType="Integer">
+    <select id="sselectWrkMastExecuteByType" resultMap="BaseResultMap">
+        select * from jar_wrk_mast_execute
+        where 1=1
+        and type = #{type}
+        and io_type = #{iotype}
+        and wrk_type = 0;
+    </select>
+
+    <select id="getWrkMastExecuteByJarIdCount" resultType="Integer">
         select count(1) from jar_wrk_mast_execute
         where 1=1
         and jar_id = #{jarId}

--
Gitblit v1.9.1