From 3fd78eacff528f59e625be99ebadfb7609c8f265 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期五, 21 六月 2024 14:36:35 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/WrkMastExecuteServiceImpl.java |   12 +
 src/main/java/com/zy/core/thread/JarThread.java                       |  132 ++++++++++-
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java           |   56 +++
 src/main/java/com/zy/asrs/mapper/WrkMastExecuteMapper.java            |   12 +
 src/main/java/com/zy/core/model/protocol/JarProtocol.java             |   14 +
 src/main/resources/mapper/BasJarMastMapper.xml                        |   28 ++
 src/main/java/com/zy/asrs/service/impl/BasJarMastServiceImpl.java     |   28 ++
 src/main/java/com/zy/asrs/service/BasJarMastService.java              |   10 
 src/main/resources/mapper/WrkMastExecuteMapper.xml                    |   28 ++
 src/main/java/com/zy/common/CodeBuilder.java                          |    2 
 src/main/java/com/zy/asrs/entity/WrkMastExecute.java                  |  280 +++++++++++++++++++++++
 src/main/java/com/zy/asrs/entity/BasJarMastStatus.java                |    3 
 src/main/java/com/zy/core/enums/JarModeType.java                      |   43 +++
 src/main/java/com/zy/asrs/service/WrkMastExecuteService.java          |    8 
 src/main/java/com/zy/asrs/entity/BasJarMast.java                      |    7 
 src/main/java/com/zy/asrs/mapper/BasJarMastMapper.java                |   11 
 16 files changed, 650 insertions(+), 24 deletions(-)

diff --git a/src/main/java/com/zy/asrs/entity/BasJarMast.java b/src/main/java/com/zy/asrs/entity/BasJarMast.java
index 0780b72..f69f651 100644
--- a/src/main/java/com/zy/asrs/entity/BasJarMast.java
+++ b/src/main/java/com/zy/asrs/entity/BasJarMast.java
@@ -139,6 +139,13 @@
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     private Date appeTime;
 
+    /**
+     * 搴撲綅鍙�
+     */
+    @ApiModelProperty(value= "搴撲綅鍙�")
+    @TableField("jar_loc_digit")
+    private Integer jarLocDigit;
+
     public BasJarMast() {}
 
     public BasJarMast(Long wrkNo,Integer enterStaNo,Integer outStaNo,Integer jarEnterStaNo,Integer jarOutStaNo,Integer jarId,Integer jarRegin,Integer status,Integer enterSteNo,Integer outSteId,Integer enterRgvId,Integer outRgvId,Date ioTime,Date modiTime,Date appeTime) {
diff --git a/src/main/java/com/zy/asrs/entity/BasJarMastStatus.java b/src/main/java/com/zy/asrs/entity/BasJarMastStatus.java
index 3231faf..9ab421c 100644
--- a/src/main/java/com/zy/asrs/entity/BasJarMastStatus.java
+++ b/src/main/java/com/zy/asrs/entity/BasJarMastStatus.java
@@ -1,5 +1,7 @@
 package com.zy.asrs.entity;
 
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
 import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableField;
 
 import io.swagger.annotations.ApiModelProperty;
@@ -17,6 +19,7 @@
      * ID
      */
     @ApiModelProperty(value= "ID")
+    @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
     /**
diff --git a/src/main/java/com/zy/asrs/entity/WrkMastExecute.java b/src/main/java/com/zy/asrs/entity/WrkMastExecute.java
new file mode 100644
index 0000000..246e53b
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/WrkMastExecute.java
@@ -0,0 +1,280 @@
+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 java.text.SimpleDateFormat;
+import java.util.Date;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import com.core.common.SpringUtils;
+import com.zy.asrs.service.BasJarMastStatusService;
+import com.zy.asrs.entity.BasJarMastStatus;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+@Data
+@TableName("jar_wrk_mast_execute")
+public class WrkMastExecute implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @ApiModelProperty(value= "ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 宸ヤ綔鍙�
+     */
+    @ApiModelProperty(value= "宸ヤ綔鍙�")
+    @TableField("wrk_no")
+    private Long wrkNo;
+
+    /**
+     * 鍏ュ簱婧愮珯鐐�
+     */
+    @ApiModelProperty(value= "鍏ュ簱婧愮珯鐐�")
+    @TableField("enter_sta_no")
+    private Integer enterStaNo;
+
+    /**
+     * 鍏ュ簱鐩爣绔欑偣
+     */
+    @ApiModelProperty(value= "鍏ュ簱鐩爣绔欑偣")
+    @TableField("out_sta_no")
+    private Integer outStaNo;
+
+    /**
+     * 鍏ョ~鍖栫綈绔欑偣
+     */
+    @ApiModelProperty(value= "鍏ョ~鍖栫綈绔欑偣")
+    @TableField("jar_enter_sta_no")
+    private Integer jarEnterStaNo;
+
+    /**
+     * 鍑虹~鍖栫綈绔欑偣
+     */
+    @ApiModelProperty(value= "鍑虹~鍖栫綈绔欑偣")
+    @TableField("jar_out_sta_no")
+    private Integer jarOutStaNo;
+
+    /**
+     * 璁惧ID
+     */
+    @ApiModelProperty(value= "璁惧ID")
+    @TableField("jar_id")
+    private Integer jarId;
+
+    /**
+     * 鍖哄煙
+     */
+    @ApiModelProperty(value= "鍖哄煙")
+    @TableField("jar_regin")
+    private Integer jarRegin;
+
+    /**
+     * 鐘舵��
+     */
+    @ApiModelProperty(value= "鐘舵��")
+    private Integer status;
+
+    /**
+     * 绌挎鏉�
+     */
+    @ApiModelProperty(value= "绌挎鏉�")
+    @TableField("ste_id")
+    private Integer steId;
+
+    /**
+     * RGV
+     */
+    @ApiModelProperty(value= "RGV")
+    @TableField("rgv_id")
+    private Integer rgvId;
+
+    /**
+     * 浣滀笟鏃堕棿
+     */
+    @ApiModelProperty(value= "浣滀笟鏃堕棿")
+    @TableField("io_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date ioTime;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    @ApiModelProperty(value= "鍒涘缓鏃堕棿")
+    @TableField("modi_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date modiTime;
+
+    /**
+     * 鏇存柊鏃堕棿
+     */
+    @ApiModelProperty(value= "鏇存柊鏃堕棿")
+    @TableField("appe_time")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date appeTime;
+
+    /**
+     * 浠诲姟鐘舵�� 0: 鍒濆  1: 浣滀笟涓�  2: 瀹屾垚  
+     */
+    @ApiModelProperty(value= "浠诲姟鐘舵�� 0: 鍒濆  1: 浣滀笟涓�  2: 瀹屾垚  ")
+    @TableField("wrk_type")
+    private Integer wrkType;
+
+    /**
+     * 宸ヤ綔鐘舵��
+     */
+    @ApiModelProperty(value= "宸ヤ綔鐘舵��")
+    @TableField("wrk_sts")
+    private Integer wrkSts;
+
+    /**
+     * 浠诲姟绫诲瀷 0: 鏈煡  1: 寮�闂�  2: 鍏抽棬  3: 鍏ョ~鍖栫綈  4: 鍏ュ喎鍗存Ы  5: 绌挎杞﹁繘鍐峰嵈妲�  6: 绌挎杞︾寮�鍐峰嵈妲�  7: 鍑哄喎鍗存Ы  
+     */
+    @ApiModelProperty(value= "浠诲姟绫诲瀷 0: 鏈煡  1: 寮�闂�  2: 鍏抽棬  3: 鍏ョ~鍖栫綈  4: 鍏ュ喎鍗存Ы  5: 绌挎杞﹁繘鍐峰嵈妲�  6: 绌挎杞︾寮�鍐峰嵈妲�  7: 鍑哄喎鍗存Ы  ")
+    @TableField("io_type")
+    private Integer ioType;
+
+    /**
+     * 璁惧 0: 鏈煡  1: 纭寲缃�  2: 鍐峰嵈妲�  
+     */
+    @ApiModelProperty(value= "璁惧 0: 鏈煡  1: 纭寲缃�  2: 鍐峰嵈妲�  ")
+    private Integer type;
+
+    public WrkMastExecute() {}
+
+    public WrkMastExecute(Long wrkNo,Integer enterStaNo,Integer outStaNo,Integer jarEnterStaNo,Integer jarOutStaNo,Integer jarId,Integer jarRegin,Integer status,Integer steId,Integer rgvId,Date ioTime,Date modiTime,Date appeTime,Integer wrkType,Integer wrkSts,Integer ioType,Integer type) {
+        this.wrkNo = wrkNo;
+        this.enterStaNo = enterStaNo;
+        this.outStaNo = outStaNo;
+        this.jarEnterStaNo = jarEnterStaNo;
+        this.jarOutStaNo = jarOutStaNo;
+        this.jarId = jarId;
+        this.jarRegin = jarRegin;
+        this.status = status;
+        this.steId = steId;
+        this.rgvId = rgvId;
+        this.ioTime = ioTime;
+        this.modiTime = modiTime;
+        this.appeTime = appeTime;
+        this.wrkType = wrkType;
+        this.wrkSts = wrkSts;
+        this.ioType = ioType;
+        this.type = type;
+    }
+
+//    WrkMastExecute wrkMastExecute = new WrkMastExecute(
+//            null,    // 宸ヤ綔鍙穂闈炵┖]
+//            null,    // 鍏ュ簱婧愮珯鐐筟闈炵┖]
+//            null,    // 鍏ュ簱鐩爣绔欑偣[闈炵┖]
+//            null,    // 鍏ョ~鍖栫綈绔欑偣[闈炵┖]
+//            null,    // 鍑虹~鍖栫綈绔欑偣[闈炵┖]
+//            null,    // 璁惧ID[闈炵┖]
+//            null,    // 鍖哄煙[闈炵┖]
+//            null,    // 鐘舵�乕闈炵┖]
+//            null,    // 绌挎鏉縖闈炵┖]
+//            null,    // RGV[闈炵┖]
+//            null,    // 浣滀笟鏃堕棿
+//            null,    // 鍒涘缓鏃堕棿
+//            null,    // 鏇存柊鏃堕棿
+//            null,    // 浠诲姟鐘舵�乕闈炵┖]
+//            null,    // 宸ヤ綔鐘舵�乕闈炵┖]
+//            null,    // 浠诲姟绫诲瀷[闈炵┖]
+//            null    // 璁惧[闈炵┖]
+//    );
+
+    public String getIoTime$(){
+        if (Cools.isEmpty(this.ioTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ioTime);
+    }
+
+    public String getModiTime$(){
+        if (Cools.isEmpty(this.modiTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
+    }
+
+    public String getAppeTime$(){
+        if (Cools.isEmpty(this.appeTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
+    }
+
+    public String getWrkType$(){
+        if (null == this.wrkType){ return null; }
+        switch (this.wrkType){
+            case 0:
+                return "鍒濆";
+            case 1:
+                return "浣滀笟涓�";
+            case 2:
+                return "瀹屾垚";
+            default:
+                return String.valueOf(this.wrkType);
+        }
+    }
+
+    public String getWrkSts$(){
+        BasJarMastStatusService service = SpringUtils.getBean(BasJarMastStatusService.class);
+        BasJarMastStatus basJarMastStatus = service.selectById(this.wrkSts);
+        if (!Cools.isEmpty(basJarMastStatus)){
+            return String.valueOf(basJarMastStatus.getId());
+        }
+        return null;
+    }
+
+    public String getIoType$(){
+        if (null == this.ioType){ return null; }
+        switch (this.ioType){
+            case 0:
+                return this.ioType+":鏈煡";
+            case 1:
+                return this.ioType+":寮�闂�";
+            case 2:
+                return this.ioType+":鍏抽棬";
+            case 3:
+                return this.ioType+":鍏ョ~鍖栫綈";
+            case 4:
+                return this.ioType+":鍏ュ喎鍗存Ы";
+            case 5:
+                return this.ioType+":绌挎杞﹁繘鍐峰嵈妲�";
+            case 6:
+                return this.ioType+":绌挎杞︾寮�鍐峰嵈妲�";
+            case 7:
+                return this.ioType+":鍑哄喎鍗存Ы";
+            default:
+                return String.valueOf(this.ioType);
+        }
+    }
+
+    public String getType$(){
+        if (null == this.type){ return null; }
+        switch (this.type){
+            case 0:
+                return "鏈煡";
+            case 1:
+                return "纭寲缃�";
+            case 2:
+                return "鍐峰嵈妲�";
+            default:
+                return String.valueOf(this.type);
+        }
+    }
+
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/BasJarMastMapper.java b/src/main/java/com/zy/asrs/mapper/BasJarMastMapper.java
index 3cb926c..1d4626b 100644
--- a/src/main/java/com/zy/asrs/mapper/BasJarMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/BasJarMastMapper.java
@@ -3,10 +3,21 @@
 import com.zy.asrs.entity.BasJarMast;
 import com.baomidou.mybatisplus.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
+
+import java.util.List;
 
 @Mapper
 @Repository
 public interface BasJarMastMapper extends BaseMapper<BasJarMast> {
 
+    List<BasJarMast> getJarMastByJarId(@Param("jarId") Long jarId);
+
+    BasJarMast getJarMastByJarIdMax(@Param("jarId") Long jarId);
+
+    BasJarMast getJarMastByJarIdMin(@Param("jarId") Long jarId);
+
+    Integer getJarMastByJarIdCount(@Param("jarId") Long jarId);
+
 }
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastExecuteMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastExecuteMapper.java
new file mode 100644
index 0000000..53d39fc
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastExecuteMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.mapper;
+
+import com.zy.asrs.entity.WrkMastExecute;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface WrkMastExecuteMapper extends BaseMapper<WrkMastExecute> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/BasJarMastService.java b/src/main/java/com/zy/asrs/service/BasJarMastService.java
index 1a16f9d..2744d04 100644
--- a/src/main/java/com/zy/asrs/service/BasJarMastService.java
+++ b/src/main/java/com/zy/asrs/service/BasJarMastService.java
@@ -3,6 +3,16 @@
 import com.zy.asrs.entity.BasJarMast;
 import com.baomidou.mybatisplus.service.IService;
 
+import java.util.List;
+
 public interface BasJarMastService extends IService<BasJarMast> {
 
+    List<BasJarMast> getJarMastByJarId(Long jarId);
+
+    BasJarMast getJarMastByJarIdMax(Long jarId);
+
+    BasJarMast getJarMastByJarIdMin(Long jarId);
+
+    Integer getJarMastByJarIdCount(Long jarId);
+
 }
diff --git a/src/main/java/com/zy/asrs/service/WrkMastExecuteService.java b/src/main/java/com/zy/asrs/service/WrkMastExecuteService.java
new file mode 100644
index 0000000..bca4c26
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/WrkMastExecuteService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.service;
+
+import com.zy.asrs.entity.WrkMastExecute;
+import com.baomidou.mybatisplus.service.IService;
+
+public interface WrkMastExecuteService extends IService<WrkMastExecute> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/BasJarMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasJarMastServiceImpl.java
index 93a7343..b4a3364 100644
--- a/src/main/java/com/zy/asrs/service/impl/BasJarMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/BasJarMastServiceImpl.java
@@ -6,7 +6,35 @@
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 @Service("basJarMastService")
 public class BasJarMastServiceImpl extends ServiceImpl<BasJarMastMapper, BasJarMast> implements BasJarMastService {
 
+    @Override
+    public List<BasJarMast> getJarMastByJarId(Long jarId) {
+        return this.baseMapper.getJarMastByJarId(jarId);
+    }
+
+    /*
+    * 鑾峰彇jarLocDigit鏈�澶х殑BasJarMast
+    * */
+    @Override
+    public BasJarMast getJarMastByJarIdMax(Long jarId) {
+        return this.baseMapper.getJarMastByJarIdMax(jarId);
+    }
+
+    /*
+     * 鑾峰彇jarLocDigit鏈�灏忕殑BasJarMast
+     * */
+    @Override
+    public BasJarMast getJarMastByJarIdMin(Long jarId) {
+        return this.baseMapper.getJarMastByJarIdMin(jarId);
+    }
+
+    @Override
+    public Integer getJarMastByJarIdCount(Long jarId) {
+        return this.baseMapper.getJarMastByJarIdCount(jarId);
+    }
+
 }
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 a1284f4..99755c1 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -34,13 +34,11 @@
 import com.zy.core.model.command.RgvCommand;
 import com.zy.core.model.cpmmandParam.CrnCommandParam;
 import com.zy.core.model.protocol.CrnProtocol;
+import com.zy.core.model.protocol.JarProtocol;
 import com.zy.core.model.protocol.RgvProtocol;
 import com.zy.core.model.protocol.StaProtocol;
 import com.zy.core.properties.SlaveProperties;
-import com.zy.core.thread.BarcodeThread;
-import com.zy.core.thread.LedThread;
-import com.zy.core.thread.RgvThread;
-import com.zy.core.thread.SiemensDevpThread;
+import com.zy.core.thread.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -107,11 +105,14 @@
     private WrkMastCrnMapper wrkMastCrnMapper;
     @Autowired
     private WrkMastSplitTwinMapper wrkMastSplitTwinMapper;
+    @Autowired
+    private WrkMastSplitTwinService wrkMastSplitTwinService;
+    @Autowired
+    private BasJarMastService basJarMastService;
 
     @Value("${wms.url}")
     private String wmsUrl;
-    @Autowired
-    private WrkMastSplitTwinService wrkMastSplitTwinService;
+
 
     /**
      * 缁勬墭
@@ -4409,12 +4410,45 @@
      *  Jar浠诲姟鍒涘缓
      */
     public synchronized void jarGenerateWrkMastSta() {
-        try{
-
-        }catch (Exception e){
-            log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�"+e);
+        for (JarSlave jarSlave : slaveProperties.getJar()) {
+            try{
+                Integer count = basJarMastService.getJarMastByJarIdCount(jarSlave.getId().longValue());
+                if (count>=7){
+                    continue;
+                }
+                BasJarMast jarMastByJarIdMax = basJarMastService.getJarMastByJarIdMax(jarSlave.getId().longValue());
+                if (jarMastByJarIdMax.getJarLocDigit()==7){
+                    continue;
+                }
+                jarGenerateWrkMastStaExecute(jarSlave);
+            }catch (Exception e){
+                log.error(jarSlave.getId()+"鍙峰皬杞﹀浣嶇嚎绋嬫姤閿欙紒"+e);
+            }
         }
     }
+
+    /**
+     *  Jar浠诲姟鍒涘缓  鎵ц
+     */
+    public synchronized boolean jarGenerateWrkMastStaExecute(JarSlave jarSlave) {
+        try{
+            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+            JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId());
+            JarProtocol jarProtocol = jarThread.getJarProtocol();
+            if (jarProtocol == null) {
+                return false;
+            }
+            if (jarProtocol.modeType != JarModeType.AUTO){
+                return false;
+            }
+            //  鐘舵�侊細绛夊緟纭 骞朵笖  浠诲姟瀹屾垚浣� = 1
+
+        } catch (Exception e){
+//            log.error("鍫嗗灈鏈哄伐浣嶄簩瀹屾垚绛夊緟纭寮傚父,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={}",crn.getId(),e.getMessage(),2);
+        }
+        return false;
+    }
+
 
     /**
      *  Jar浠诲姟鎵ц
@@ -4499,7 +4533,7 @@
         return false;
     }
     /*
-     * 灏忚溅鍙栫┖鏉胯嚦宸ヤ綅浠诲姟  婊″彇
+     * 绌挎鏉跨Щ鍔�
      * */
     public synchronized boolean jarRgvTake8(Integer rgvId,BasJarMast basJarMast){
         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
new file mode 100644
index 0000000..06f9976
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/WrkMastExecuteServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.service.impl;
+
+import com.zy.asrs.mapper.WrkMastExecuteMapper;
+import com.zy.asrs.entity.WrkMastExecute;
+import com.zy.asrs.service.WrkMastExecuteService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("wrkMastExecuteService")
+public class WrkMastExecuteServiceImpl extends ServiceImpl<WrkMastExecuteMapper, WrkMastExecute> implements WrkMastExecuteService {
+
+}
diff --git a/src/main/java/com/zy/common/CodeBuilder.java b/src/main/java/com/zy/common/CodeBuilder.java
index 05f6638..91f0ec4 100644
--- a/src/main/java/com/zy/common/CodeBuilder.java
+++ b/src/main/java/com/zy/common/CodeBuilder.java
@@ -20,7 +20,7 @@
         generator.url="192.168.4.15:1433;databasename=ahyxasrs";
         generator.username="sa";
         generator.password="sa@123";
-        generator.table="asr_bas_jar_mast";
+        generator.table="jar_wrk_mast_execute";
         generator.packagePath="com.zy.asrs";
 
         generator.controller = false;
diff --git a/src/main/java/com/zy/core/enums/JarModeType.java b/src/main/java/com/zy/core/enums/JarModeType.java
new file mode 100644
index 0000000..6e86ac9
--- /dev/null
+++ b/src/main/java/com/zy/core/enums/JarModeType.java
@@ -0,0 +1,43 @@
+package com.zy.core.enums;
+
+public enum JarModeType {
+
+    NONE(-1, "绂荤嚎"),
+    STOP(0, "缁翠慨"),
+    HAND(1, "鎵嬪姩"),
+    HALF_AUTO(2, "鍗婅嚜鍔�"),
+    AUTO(3, "鑷姩"),
+    AUTO2(100, "鍏跺畠"),
+    ;
+
+    public Integer id;
+    public String desc;
+    JarModeType(Integer id, String desc) {
+        this.id = id;
+        this.desc = desc;
+    }
+
+    public static JarModeType get(Integer id) {
+        if (null == id) {
+            return null;
+        }
+        for (JarModeType type : JarModeType.values()) {
+            if (type.id.equals(id)) {
+                return type;
+            }
+        }
+        return null;
+    }
+
+    public static JarModeType get(JarModeType type) {
+        if (null == type) {
+            return null;
+        }
+        for (JarModeType jarModeType : JarModeType.values()) {
+            if (jarModeType == type) {
+                return jarModeType;
+            }
+        }
+        return null;
+    }
+}
diff --git a/src/main/java/com/zy/core/model/protocol/JarProtocol.java b/src/main/java/com/zy/core/model/protocol/JarProtocol.java
index 0488b50..4bc415b 100644
--- a/src/main/java/com/zy/core/model/protocol/JarProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/JarProtocol.java
@@ -1,6 +1,8 @@
 package com.zy.core.model.protocol;
 
 import com.zy.asrs.entity.BasJar;
+import com.zy.core.enums.CrnModeType;
+import com.zy.core.enums.JarModeType;
 import com.zy.core.enums.JarStatusType;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
@@ -22,6 +24,9 @@
      * 0 = 鑴辨満妯″紡
      */
     public Integer mode;
+
+    public JarModeType modeType;
+
 
     /**
      IDLE(0, "绌洪棽"),
@@ -84,6 +89,15 @@
         this.status = JarStatusType.get(type).id.shortValue();
     }
 
+    public void setMode(Integer mode) {
+        this.mode = mode;
+        this.modeType = JarModeType.get(mode);
+    }
+
+    public void setMode(JarModeType type) {
+        this.modeType = type;
+        this.mode = JarModeType.get(type).id;
+    }
 
     public BasJar toSqlModel(BasJar basJar){
         if (jarErr!=null) {
diff --git a/src/main/java/com/zy/core/thread/JarThread.java b/src/main/java/com/zy/core/thread/JarThread.java
index f185a81..1684250 100644
--- a/src/main/java/com/zy/core/thread/JarThread.java
+++ b/src/main/java/com/zy/core/thread/JarThread.java
@@ -4,11 +4,15 @@
 import HslCommunication.Core.Types.OperateResultExOne;
 import HslCommunication.Profinet.Siemens.SiemensPLCS;
 import HslCommunication.Profinet.Siemens.SiemensS7Net;
+import com.alibaba.fastjson.JSON;
+import com.core.common.Cools;
 import com.core.common.DateUtils;
 import com.core.common.SpringUtils;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.BasJar;
+import com.zy.asrs.entity.BasSteOpt;
 import com.zy.asrs.service.BasJarService;
+import com.zy.asrs.service.BasSteOptService;
 import com.zy.core.News;
 import com.zy.core.ThreadHandler;
 import com.zy.core.cache.MessageQueue;
@@ -17,7 +21,9 @@
 import com.zy.core.enums.SlaveType;
 import com.zy.core.model.JarSlave;
 import com.zy.core.model.Task;
+import com.zy.core.model.command.SteCommand;
 import com.zy.core.model.protocol.JarProtocol;
+import com.zy.core.model.protocol.StaProtocol;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 
@@ -57,6 +63,10 @@
                     // 璇绘暟鎹�
                     case 1:
                         readStatus();
+                        break;
+                    // 鍐欐暟鎹� ID+鐩爣绔�
+                    case 2:
+                        write(null);
                         break;
                     default:
                         break;
@@ -110,23 +120,21 @@
      */
     private void readStatus(){
         try {
-            OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) 10);
+            OperateResultExOne<byte[]> result = siemensS7Net.Read("V300", (short) 26);
             if (result.IsSuccess) {
                 if (null == jarProtocol) {
                     jarProtocol = new JarProtocol();
                     jarProtocol.setJarNo(slave.getId());
                 }
-                jarProtocol.setMode(siemensS7Net.getByteTransform().TransInt32(result.Content, 2));
-                jarProtocol.setLeftDoor(siemensS7Net.getByteTransform().TransBool(result.Content, 4));//宸﹂棬鐘舵��
-                jarProtocol.setRightDoor(siemensS7Net.getByteTransform().TransBool(result.Content, 4));//鍙抽棬鐘舵��
-                jarProtocol.setLeftInEnable(siemensS7Net.getByteTransform().TransBool(result.Content, 4));//宸﹂棬鍙紑
-                jarProtocol.setLeftOutEnable(siemensS7Net.getByteTransform().TransBool(result.Content, 4));//宸﹂棬鍙叧
-                jarProtocol.setRightInEnable(siemensS7Net.getByteTransform().TransBool(result.Content, 4));//鍙抽棬鍙紑
-                jarProtocol.setRightOutEnable(siemensS7Net.getByteTransform().TransBool(result.Content, 4));//鍙抽棬鍙叧
-                jarProtocol.setAutoing(siemensS7Net.getByteTransform().TransBool(result.Content, 4));//鑷�
-                jarProtocol.setJarErr(siemensS7Net.getByteTransform().TransInt32(result.Content, 4));//寮傚父鐮�
-
-
+                jarProtocol.setMode((int)siemensS7Net.getByteTransform().TransInt16(result.Content, 0));
+                jarProtocol.setLeftDoor(siemensS7Net.getByteTransform().TransInt16(result.Content, 2) != 0);//宸﹂棬鐘舵��
+                jarProtocol.setRightDoor(siemensS7Net.getByteTransform().TransInt16(result.Content, 4) != 0);//鍙抽棬鐘舵��
+                jarProtocol.setLeftInEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, 6) != 0);//宸﹂棬鍙紑
+                jarProtocol.setLeftOutEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, 8) != 0);//宸﹂棬鍙叧
+                jarProtocol.setRightInEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, 10) != 0);//鍙抽棬鍙紑
+                jarProtocol.setRightOutEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, 12) != 0);//鍙抽棬鍙叧
+                jarProtocol.setJarErr((int)siemensS7Net.getByteTransform().TransInt16(result.Content, 14));//寮傚父鐮�
+                jarProtocol.setAutoing(siemensS7Net.getByteTransform().TransInt16(result.Content, 16) != 0);//妯″紡
                 // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
                 BasJarService service = SpringUtils.getBean(BasJarService.class);
                 if (null != service) {
@@ -151,6 +159,106 @@
 
     }
 
+    /**
+     * 鍐欏叆鏁版嵁
+     */
+    private synchronized boolean write(SteCommand command){
+        if (null == command) {
+            News.error("绌挎杞﹀啓鍏ュ懡浠や负绌�");
+            return false;
+        }
+        command.setSteNo(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);
+        }
+
+        try {
+            // 鏃ュ織璁板綍
+            if (!command.getComplete() && command.getTaskMode() != 0) {
+                BasSteOptService bean = SpringUtils.getBean(BasSteOptService.class);
+                if (null != bean) {
+                    BasSteOpt basSteOpt = new BasSteOpt(
+                            command.getTaskNo(),    // 浠诲姟鍙�
+                            command.getSteNo(),    // 绌挎杞�
+                            new Date(),    // 涓嬪彂鏃堕棿
+                            command.getTaskModeType().desc,    // 浣滀笟
+                            null,    // 婧愭帓
+                            null,    // 婧愬垪
+                            null,    // 婧愬眰
+                            null,    // 婧愮珯
+                            null,    // 鐩爣鎺�
+                            null,    // 鐩爣鍒�
+                            null,    // 鐩爣灞�
+                            null,    // 鐩爣绔�
+                            null,    // 鍝嶅簲缁撴灉
+                            null,    // 淇敼鏃堕棿
+                            null,    // 淇敼浜哄憳
+                            null    // 澶囨敞
+                    );
+                    bean.insert(basSteOpt);
+                }
+            }
+
+        } catch (Exception ignore) {}
+
+        if (result != null && result.IsSuccess) {
+
+
+            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)));
+
+            try {
+                Thread.sleep(500);
+            } catch (Exception e){
+
+            }
+            OperateResultExOne<byte[]> result1 = siemensS7Net.Read("V998", (short) 4);
+            if (result1.IsSuccess) {
+                short taskNo = siemensS7Net.getByteTransform().TransInt16(result1.Content, 0);
+                short taskType = siemensS7Net.getByteTransform().TransInt16(result1.Content, 2);
+//                readStatus();
+            }
+            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()));
+            News.error("鍐欏叆绌挎杞lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+
+            //鍐欏叆澶辫触鍚庯紝閲嶆柊娣诲姞commanddao 浠诲姟闃熷垪涓�,骞剁珛鍗冲洖璇讳竴娆¤澶囩姸鎬�
+//            MessageQueue.offer(SlaveType.Ste, slave.getId(), new Task(2, command));
+//            readStatus();
+
+            initSte();
+            return false;
+        }
+    }
+
     @Override
     public void close() {
 //        siemensS7Net.ConnectClose();
diff --git a/src/main/resources/mapper/BasJarMastMapper.xml b/src/main/resources/mapper/BasJarMastMapper.xml
index a73dd49..8d7ed8a 100644
--- a/src/main/resources/mapper/BasJarMastMapper.xml
+++ b/src/main/resources/mapper/BasJarMastMapper.xml
@@ -20,7 +20,35 @@
         <result column="io_time" property="ioTime" />
         <result column="modi_time" property="modiTime" />
         <result column="appe_time" property="appeTime" />
+        <result column="jar_loc_digit" property="jarLocDigit" />
 
     </resultMap>
 
+    <select id="getJarMastByJarId" resultMap="BaseResultMap">
+        select * from asr_bas_jar_mast
+        where 1=1
+        and jar_id = #{jarId}
+        order by jar_loc_digit
+    </select>
+
+    <select id="getJarMastByJarIdMax" resultMap="BaseResultMap">
+        select top 1 * from asr_bas_jar_mast
+        where 1=1
+          and jar_id = #{jarId}
+        order by jar_loc_digit desc
+    </select>
+
+    <select id="getJarMastByJarIdMin" resultMap="BaseResultMap">
+        select top 1 * from asr_bas_jar_mast
+        where 1=1
+          and jar_id = #{jarId}
+        order by jar_loc_digit asc
+    </select>
+
+    <select id="getJarMastByJarIdCount" resultType="Integer">
+        select count(1) from asr_bas_jar_mast
+        where 1=1
+        and jar_id = #{jarId}
+    </select>
+
 </mapper>
diff --git a/src/main/resources/mapper/WrkMastExecuteMapper.xml b/src/main/resources/mapper/WrkMastExecuteMapper.xml
new file mode 100644
index 0000000..6e40ecc
--- /dev/null
+++ b/src/main/resources/mapper/WrkMastExecuteMapper.xml
@@ -0,0 +1,28 @@
+<?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.WrkMastExecuteMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.WrkMastExecute">
+        <id column="id" property="id" />
+        <result column="wrk_no" property="wrkNo" />
+        <result column="enter_sta_no" property="enterStaNo" />
+        <result column="out_sta_no" property="outStaNo" />
+        <result column="jar_enter_sta_no" property="jarEnterStaNo" />
+        <result column="jar_out_sta_no" property="jarOutStaNo" />
+        <result column="jar_id" property="jarId" />
+        <result column="jar_regin" property="jarRegin" />
+        <result column="status" property="status" />
+        <result column="ste_id" property="steId" />
+        <result column="rgv_id" property="rgvId" />
+        <result column="io_time" property="ioTime" />
+        <result column="modi_time" property="modiTime" />
+        <result column="appe_time" property="appeTime" />
+        <result column="wrk_type" property="wrkType" />
+        <result column="wrk_sts" property="wrkSts" />
+        <result column="io_type" property="ioType" />
+        <result column="type" property="type" />
+
+    </resultMap>
+
+</mapper>

--
Gitblit v1.9.1