From f69bc4779fa1abd564fdfea2c99aced36d90b5f8 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期一, 13 五月 2024 19:54:30 +0800
Subject: [PATCH] #二楼

---
 src/main/java/com/zy/core/enums/RgvStatusType.java               |    6 
 src/main/java/com/zy/asrs/service/impl/MatnrCodeServiceImpl.java |   16 
 src/main/resources/mapper/MatnrCodeMapper.xml                    |   17 
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java      |  464 +++++++++++++++---
 src/main/resources/mapper/WaitPakinMapper.xml                    |   47 +
 src/main/java/com/zy/asrs/service/MatnrCodeService.java          |    9 
 src/main/resources/mapper/WrkMastMapper.xml                      |    2 
 src/main/java/com/zy/asrs/entity/MatnrCode.java                  |   40 +
 src/main/java/com/zy/core/thread/ZyRgvThread.java                |    3 
 src/main/java/com/zy/common/CodeBuilder.java                     |    2 
 src/main/resources/mapper/WrkMastStaMapper.xml                   |    5 
 src/main/java/com/zy/asrs/mapper/MatnrCodeMapper.java            |   13 
 src/main/java/com/zy/core/model/protocol/StaProtocol.java        |    3 
 src/main/java/com/zy/asrs/entity/WrkMastSta.java                 |   20 
 src/main/java/com/zy/asrs/entity/WaitPakin.java                  |  304 +++++++++---
 src/main/java/com/zy/asrs/service/WrkMastService.java            |    1 
 src/main/java/com/zy/asrs/utils/Utils.java                       |   47 +
 src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java   |    4 
 src/main/java/com/zy/asrs/entity/CombParam.java                  |   46 +
 src/main/java/com/zy/core/MainProcess.java                       |    6 
 src/main/java/com/zy/core/model/command/RgvCommand.java          |   14 
 src/main/java/com/zy/core/thread/SiemensDevpThread.java          |  195 ++++++-
 src/main/resources/application.yml                               |  134 +++-
 23 files changed, 1,125 insertions(+), 273 deletions(-)

diff --git a/src/main/java/com/zy/asrs/entity/CombParam.java b/src/main/java/com/zy/asrs/entity/CombParam.java
new file mode 100644
index 0000000..74e7ea9
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/CombParam.java
@@ -0,0 +1,46 @@
+package com.zy.asrs.entity;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Created by vincent on 2020/6/28
+ */
+@Data
+public class CombParam {
+
+    // 鍗曟嵁缂栧彿
+    private String orderNo;
+
+    // 鎵樼洏鏉$爜
+    private String barcode;
+
+    // 搴撲綅缂栧彿
+    private String locno;
+
+//    // 璐т富
+//    private int owner;
+
+    private List<CombMat> combMats;
+
+    @Data
+    public static class CombMat {
+
+        // 鍗曟嵁缂栧彿
+        private String orderNo;
+
+        // 鐗╂枡缂栧彿
+        private String matnr;
+
+        // 搴忓垪鐮�
+        private String batch;
+
+        // 鐗╂枡鏁伴噺
+        private Double anfme;
+
+        private Double weight;
+
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/MatnrCode.java b/src/main/java/com/zy/asrs/entity/MatnrCode.java
new file mode 100644
index 0000000..180ef29
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/MatnrCode.java
@@ -0,0 +1,40 @@
+package com.zy.asrs.entity;
+
+import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.enums.IdType;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+@Data
+@TableName("man_matnr_code")
+public class MatnrCode implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value= "")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value= "")
+    private Integer code;
+
+    @ApiModelProperty(value= "")
+    private String matnr;
+
+    public MatnrCode() {}
+
+    public MatnrCode(Integer code,String matnr) {
+        this.code = code;
+        this.matnr = matnr;
+    }
+
+//    MatnrCode matnrCode = new MatnrCode(
+//            null,    // 
+//            null    // 
+//    );
+
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/WaitPakin.java b/src/main/java/com/zy/asrs/entity/WaitPakin.java
index a18b5bf..77df910 100644
--- a/src/main/java/com/zy/asrs/entity/WaitPakin.java
+++ b/src/main/java/com/zy/asrs/entity/WaitPakin.java
@@ -1,8 +1,13 @@
 package com.zy.asrs.entity;
 
 import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
 import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.enums.IdType;
 import com.core.common.Cools;
+import com.core.common.SpringUtils;
+import com.zy.system.entity.User;
+import com.zy.system.service.UserService;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -16,82 +21,117 @@
 
     private static final long serialVersionUID = 1L;
 
-    /**
-     * 鐗╂枡
-     */
-    @ApiModelProperty(value= "鍟嗗搧缂栧彿")
-    private String matnr;
-
-    /**
-     * 鐗╂枡鎻忚堪
-     */
-    @ApiModelProperty(value= "鍟嗗搧鍚嶇О")
-    private String maktx;
-
-
-    /**
-     * 浠撳簱鍙�
-     */
-    @ApiModelProperty(value= "瑙勬牸")
-    private String lgnum;
-
-    /**
-     * 浠撳簱鍙�
-     */
-    @ApiModelProperty(value= "鍨嬪彿")
-    private String type;
-
-    /**
-     * 浠撳簱鍙�
-     */
-    @ApiModelProperty(value= "鏉$爜")
-    private String color;
-
-    /**
-     * 浠撳簱鍙�
-     */
-    @ApiModelProperty(value= "鎵瑰彿")
-    private String supplier;
-
-    /**
-     * 浠撳簱鍙�
-     */
-    @ApiModelProperty(value= "鍗曟嵁缂栧彿")
-    private String warehouse;
-
-    /**
-     * 浠撳簱鍙�
-     */
-    @ApiModelProperty(value= "鍝侀」鏁�")
-    private String brand;
-
-    /**
-     * 鏁伴噺
-     */
-    @ApiModelProperty(value= "鏁伴噺")
-    private Double anfme;
-
-    /**
-     * 鍗曚綅
-     */
-    @ApiModelProperty(value= "鍗曚綅")
-    private String altme;
-
-    /**
-     * 鎵樼洏鏉$爜
-     */
+    @TableId("zpallet")
     @ApiModelProperty(value= "鎵樼洏鏉$爜")
     private String zpallet;
 
-    /**
-     * 鐢ㄦ埛ID
-     */
-    @ApiModelProperty(value= "瀹㈡埛鍚嶇О")
-    private String bname;
+    @ApiModelProperty(value= "鏁伴噺")
+    private Double anfme;
 
     @ApiModelProperty(value= "搴撲綅鍙�")
     @TableField("loc_no")
-    private Date locNo;
+    private String locNo;
+
+    @TableId("matnr")
+    @ApiModelProperty(value= "鍟嗗搧缂栧彿")
+    private String matnr;
+
+    @ApiModelProperty(value= "鍟嗗搧鍚嶇О")
+    private String maktx;
+
+    @TableId("batch")
+    @ApiModelProperty(value= "鎵瑰彿")
+    private String batch;
+
+    @ApiModelProperty(value= "鍗曟嵁缂栧彿")
+    @TableField("order_no")
+    private String orderNo;
+
+    @ApiModelProperty(value= "瑙勬牸")
+    private String specs;
+
+    @ApiModelProperty(value= "鍨嬪彿")
+    private String model;
+
+    @ApiModelProperty(value= "棰滆壊")
+    private String color;
+
+    @ApiModelProperty(value= "鍝佺墝")
+    private String brand;
+
+    @ApiModelProperty(value= "鍗曚綅")
+    private String unit;
+
+    @ApiModelProperty(value= "鍗曚环")
+    private Double price;
+
+    @ApiModelProperty(value= "sku")
+    private String sku;
+
+    @ApiModelProperty(value= "鍗曚綅閲�")
+    private Double units;
+
+    @ApiModelProperty(value= "鏉$爜")
+    private String barcode;
+
+    @ApiModelProperty(value= "浜у湴")
+    private String origin;
+
+    @ApiModelProperty(value= "鍘傚")
+    private String manu;
+
+    @ApiModelProperty(value= "鐢熶骇鏃ユ湡")
+    @TableField("manu_date")
+    private String manuDate;
+
+    @ApiModelProperty(value= "鍝侀」鏁�")
+    @TableField("item_num")
+    private String itemNum;
+
+    @ApiModelProperty(value= "瀹夊叏搴撳瓨閲�")
+    @TableField("safe_qty")
+    private Double safeQty;
+
+    @ApiModelProperty(value= "閲嶉噺")
+    private Double weight;
+
+    @ApiModelProperty(value= "闀垮害")
+    private Double length;
+
+    @ApiModelProperty(value= "浣撶Н")
+    private Double volume;
+
+    @ApiModelProperty(value= "涓夋柟缂栫爜")
+    @TableField("three_code")
+    private String threeCode;
+
+    @ApiModelProperty(value= "渚涘簲鍟�")
+    private String supp;
+
+    @ApiModelProperty(value= "渚涘簲鍟嗙紪鐮�")
+    @TableField("supp_code")
+    private String suppCode;
+
+    @ApiModelProperty(value= "鏄惁鎵规 1: 鏄�  0: 鍚�  ")
+    @TableField("be_batch")
+    private Integer beBatch;
+
+    @ApiModelProperty(value= "淇濊川鏈�")
+    @TableField("dead_time")
+    private String deadTime;
+
+    @ApiModelProperty(value= "棰勮澶╂暟")
+    @TableField("dead_warn")
+    private Integer deadWarn;
+
+    @ApiModelProperty(value= "鍒惰喘 1: 鍒堕��  2: 閲囪喘  3: 澶栧崗  ")
+    private Integer source;
+
+    @ApiModelProperty(value= "瑕佹眰妫�楠� 1: 鏄�  0: 鍚�  ")
+    private Integer inspect;
+
+    @ApiModelProperty(value= "鍗遍櫓鍝� 1: 鏄�  0: 鍚�  ")
+    private Integer danger;
 
     @ApiModelProperty(value= "鐘舵��")
     private String status;
@@ -100,39 +140,124 @@
     @TableField("io_status")
     private String ioStatus;
 
-    /**
-     * 澶囨敞
-     */
-    @ApiModelProperty(value= "澶囨敞")
-    private String memo;
-
-    /**
-     * 淇敼鏃堕棿
-     */
     @ApiModelProperty(value= "淇敼鏃堕棿")
     @TableField("modi_time")
     private Date modiTime;
 
-    /**
-     * 淇敼浜哄憳
-     */
     @ApiModelProperty(value= "淇敼浜哄憳")
     @TableField("modi_user")
     private Long modiUser;
 
-    /**
-     * 娣诲姞鏃堕棿
-     */
     @ApiModelProperty(value= "娣诲姞鏃堕棿")
     @TableField("appe_time")
     private Date appeTime;
 
-    /**
-     * 鍒涘缓鑰�
-     */
     @ApiModelProperty(value= "鍒涘缓鑰�")
     @TableField("appe_user")
     private Long appeUser;
+
+    @ApiModelProperty(value= "澶囨敞")
+    private String memo;
+
+    /**
+     * 鎷ユ湁鑰�
+     */
+    @ApiModelProperty(value= "鎷ユ湁鑰� 1: 鏉板厠   ")
+    private Integer owner;
+
+    /**
+     * 璐х墿褰㈡��:0锛氫唬閲囥��1锛氫粨鍌�
+     */
+    @ApiModelProperty(value= "璐х墿褰㈡��:0锛氫唬閲囥��1锛氫粨鍌�")
+    private Integer payment;
+
+    /**
+     * uuid鏃堕棿鎴�
+     */
+    @ApiModelProperty(value= "uuid")
+    @TableId(value = "uuid", type = IdType.ID_WORKER_STR)
+    @TableField("uuid")
+    private String uuid;
+
+    public String getUserName$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.modiUser);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getUsername());
+        }
+        return null;
+    }
+
+//    public String getOwner$(){
+//        LocOwnerService service = SpringUtils.getBean(LocOwnerService.class);
+//        LocOwner locOwner = service.selectById(this.owner);
+//        if (!Cools.isEmpty(locOwner)){
+//            return String.valueOf(locOwner.getOwner());
+//        }
+//        return null;
+//    }
+
+    public String getPayment$(){
+        if (null == this.payment){ return null; }
+        switch (this.payment){
+            case 1:
+                return "浠撳偍";
+            case 0:
+                return "浠i噰";
+            default:
+                return String.valueOf(this.payment);
+        }
+    }
+
+    public String getBeBatch$(){
+        if (null == this.beBatch){ return null; }
+        switch (this.beBatch){
+            case 1:
+                return "鏄�";
+            case 0:
+                return "鍚�";
+            default:
+                return String.valueOf(this.beBatch);
+        }
+    }
+
+    public String getSource$(){
+        if (null == this.source){ return null; }
+        switch (this.source){
+            case 1:
+                return "鍒堕��";
+            case 2:
+                return "閲囪喘";
+            case 3:
+                return "澶栧崗";
+            default:
+                return String.valueOf(this.source);
+        }
+    }
+
+    public String getInspect$(){
+        if (null == this.inspect){ return null; }
+        switch (this.inspect){
+            case 1:
+                return "鏄�";
+            case 0:
+                return "鍚�";
+            default:
+                return String.valueOf(this.inspect);
+        }
+    }
+
+    public String getDanger$(){
+        if (null == this.danger){ return null; }
+        switch (this.danger){
+            case 1:
+                return "鏄�";
+            case 0:
+                return "鍚�";
+            default:
+                return String.valueOf(this.danger);
+        }
+    }
 
     public String getModiTime$(){
         if (Cools.isEmpty(this.modiTime)){
@@ -148,4 +273,7 @@
         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
     }
 
+//    public void sync(Object source) {
+//        Synchro.Copy(source, this);
+//    }
 }
diff --git a/src/main/java/com/zy/asrs/entity/WrkMastSta.java b/src/main/java/com/zy/asrs/entity/WrkMastSta.java
index 666144e..e9d9ab5 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMastSta.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMastSta.java
@@ -130,6 +130,26 @@
     @ApiModelProperty(value= "")
     @TableField("matnr2")
     private Integer matnr2;
+
+    @ApiModelProperty(value= "")
+    @TableField("type2")
+    private Integer type2;
+
+    @ApiModelProperty(value= "")
+    @TableField("batch")
+    private String batch;
+
+    @ApiModelProperty(value= "")
+    @TableField("batch2")
+    private String batch2;
+
+    @ApiModelProperty(value= "")
+    @TableField("anfme")
+    private Integer anfme;
+
+    @ApiModelProperty(value= "")
+    @TableField("anfme2")
+    private Integer anfme2;
     public WrkMastSta() {}
 
     public WrkMastSta(Long wrkNo,Integer wrkStart,Integer wrkEnd,Integer staStart,Integer staEnd,Date createTime,Date updateTime,Integer type,Integer wrkSts,Integer lineNumber,Integer wrkType,Date bignTime,Integer wrkCrn) {
diff --git a/src/main/java/com/zy/asrs/mapper/MatnrCodeMapper.java b/src/main/java/com/zy/asrs/mapper/MatnrCodeMapper.java
new file mode 100644
index 0000000..8561080
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/MatnrCodeMapper.java
@@ -0,0 +1,13 @@
+package com.zy.asrs.mapper;
+
+import com.zy.asrs.entity.MatnrCode;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface MatnrCodeMapper extends BaseMapper<MatnrCode> {
+
+    MatnrCode selectByCode(Integer code);
+}
diff --git a/src/main/java/com/zy/asrs/service/MatnrCodeService.java b/src/main/java/com/zy/asrs/service/MatnrCodeService.java
new file mode 100644
index 0000000..c7e05b2
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/MatnrCodeService.java
@@ -0,0 +1,9 @@
+package com.zy.asrs.service;
+
+import com.zy.asrs.entity.MatnrCode;
+import com.baomidou.mybatisplus.service.IService;
+
+public interface MatnrCodeService extends IService<MatnrCode> {
+
+    MatnrCode selectByCode(Integer code);
+}
diff --git a/src/main/java/com/zy/asrs/service/WrkMastService.java b/src/main/java/com/zy/asrs/service/WrkMastService.java
index e0b8f2d..191bbea 100644
--- a/src/main/java/com/zy/asrs/service/WrkMastService.java
+++ b/src/main/java/com/zy/asrs/service/WrkMastService.java
@@ -21,4 +21,5 @@
     List<WrkMast> selectLaneWrkMast(Integer lane, Boolean pakIn);//鏌ヨ鎸囧畾宸烽亾浠诲姟
 
     WrkMast selectByworkNo(Short workNo);
+    WrkMast selectByworkNo(Integer workNo);
 }
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 d33e81d..c8e653d 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -92,6 +92,8 @@
     private EmptyBarrelInService emptyBarrelInService;
     @Autowired
     private WrkMastStaService wrkMastStaService;
+    @Autowired
+    private MatnrCodeService matnrCodeService;
 
     @Value("${wms.url}")
     private String wmsUrl;
@@ -545,7 +547,7 @@
                         }
 
 
-                        if (crnStn.getStaNo() == 1016 || crnStn.getStaNo() == 1019) {
+                        if (crnStn.getStaNo() > 1013) {
                             // 鏇存柊宸ヤ綔妗g姸鎬佷负13.RGV鎼繍涓�
                             wrkMast.setWrkSts(13L);
                         }else {
@@ -1328,8 +1330,9 @@
 
                 // 绔欑偣鏉′欢鍒ゆ柇
                 if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()
-                        && staProtocol.isEmptyMk() && (staProtocol.getWorkNo() >= 9990
-                        && staProtocol.getWorkNo() <= 9999) && staProtocol.isPakMk()) {
+                        && (staProtocol.isEmptyMk() || staProtocol.getStaNo() == 9999)
+//                        && (staProtocol.getWorkNo() >= 9990  && staProtocol.getWorkNo() <= 9999)
+                        && staProtocol.isPakMk()) {
                     List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                             .eq("sta_no", emptyInSta.getStaNo())
                             .eq("io_type", 10)
@@ -2489,7 +2492,7 @@
         }
     }
 
-    public synchronized void RGVTaskPut(){
+    public synchronized void RGVTaskCreate(){
         for (RgvSlave rgvSlave:slaveProperties.getRgv()){
             ZyRgvThread rgvThread = (ZyRgvThread)SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
             RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
@@ -2507,8 +2510,14 @@
                 short sta1 = 0;
                 short souSta2 = 0;
                 short sta2 = 0;
-                short matnr = 0;
-                short matnr2 = 0;
+                Integer matnr = 0;
+                Integer matnr2 = 0;
+                String batch = "";
+                String batch2 = "";
+                short type = 0;
+                short type2 = 0;
+                short anfme = 0;
+                short anfme2 = 0;
 
                 //宸ヤ綅涓�浠诲姟
                 for (RgvSlave.Sta inStn :  rgvSlave.getInStn()){
@@ -2520,78 +2529,57 @@
                     } else {
                         staProtocol = staProtocol.clone();
                     }
-                    if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()){
-                        if (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() <9900){
+                    if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk() && staProtocol.getWorkNo()>0){
+
                             WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo());
                             if (Cools.isEmpty(wrkMast)){
                                 log.error("鏈壘鍒板伐浣滄。");
                                 continue;
                             }
                             workNo1 = wrkMast.getWrkNo();
-                            souSta1 = Utils.getRgvStaNo(rgvSlave.getId(),wrkMast.getSourceStaNo());
+                            souSta1 = Utils.getRgvStaNo(rgvSlave.getId(),staProtocol.getSiteId());
                             sta1 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo());
                             work1 = true;
                             devpThread.setPakMk(inStn.getSourceStaNo(),false);
                             break;
-                        }
-                        workNo1 = workNo++;
-                        souSta1 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getSourceStaNo());
-                        if (inStn.getSourceStaNo() == 4007 && staProtocol.getTongType() == 1){
-                            sta1 = Utils.getRgvStaNo(rgvSlave.getId(),2103);
-                        } else if (inStn.getSourceStaNo() == 4007 && staProtocol.getTongType() == 2) {
-                            sta1 = Utils.getRgvStaNo(rgvSlave.getId(),2002);
-                        }else {
-                            sta1 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getStaNo());
-                        }
-                        work1 = true;
-                        if (inStn.getSourcePlcId() == 4){
-                            matnr = staProtocol.getMatnr();
-                        }
-                        devpThread.setPakMk(inStn.getSourceStaNo(),false);
 
-                        break;
+
                     }
                 }
 
-
-                //宸ヤ綅浜屼换鍔�
-                for (RgvSlave.Sta inStn :  rgvSlave.getInStn()){
-                    if (souSta1 == inStn.getSourceStaNo()){
-                        continue;
-                    }
-                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId());
-                    StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo());
-                    if (staProtocol == null) {
-                        break;
-//                    continue;
-                    } else {
-                        staProtocol = staProtocol.clone();
-                    }
-                    if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()&& staProtocol.isPakMk()){
-                        if (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() <9900){
-                            WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo());
-                            if (Cools.isEmpty(wrkMast)){
-                                log.error("鏈壘鍒板伐浣滄。");
-                                continue;
-                            }
-                            workNo2 = wrkMast.getWrkNo();
-                            souSta2 = inStn.getSourceStaNo().shortValue();
-                            sta2 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo());
-                            work2 = true;
-                            devpThread.setPakMk(inStn.getSourceStaNo(),false);
+                if (rgvSlave.getId() != 3){
+                    //宸ヤ綅浜屼换鍔�
+                    for (RgvSlave.Sta inStn :  rgvSlave.getInStn()){
+                        if (souSta1 == inStn.getSourceStaNo()){
+                            continue;
+                        }
+                        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId());
+                        StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo());
+                        if (staProtocol == null) {
                             break;
+//                    continue;
+                        } else {
+                            staProtocol = staProtocol.clone();
                         }
-                        workNo2 = workNo++;
-                        souSta2 = inStn.getSourceStaNo().shortValue();
-                        sta2 = inStn.getStaNo().shortValue();
-                        work2 = true;
-                        if (inStn.getSourcePlcId() == 4){
-                            matnr2 = staProtocol.getMatnr();
-                        }
-                        devpThread.setPakMk(inStn.getSourceStaNo(),false);
-                        break;
+                        if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()&& staProtocol.isPakMk() && staProtocol.getWorkNo()>0){
+
+                                WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo());
+                                if (Cools.isEmpty(wrkMast)){
+                                    log.error("鏈壘鍒板伐浣滄。");
+                                    continue;
+                                }
+                                workNo2 = wrkMast.getWrkNo();
+                                souSta2 = inStn.getSourceStaNo().shortValue();
+                                sta2 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo());
+                                work2 = true;
+                                devpThread.setPakMk(inStn.getSourceStaNo(),false);
+                                break;
+                            }
+
+
                     }
                 }
+
 
                 if (work1 || work2){
                     //rgv浠诲姟涓嬪彂--------------------------------------------------------------
@@ -2611,6 +2599,13 @@
 
                     command.setMatnr(matnr);
                     command.setMatnr2(matnr2);
+                    command.setBatch(batch);
+                    command.setBatch2(batch2);
+                    command.setAnfme(anfme);
+                    command.setAnfme2(anfme2);
+
+                    command.setType(type);
+                    command.setType2(type2);
 
                     if (workNo1 == 0 && workNo2 !=0){
                         command.setTaskMode(RgvTaskModeType.FETCH_PUT2); // 浠诲姟妯″紡: 2鍙栨斁璐�
@@ -2636,6 +2631,9 @@
 
     public synchronized void RGVTaskOver() {
         for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
+            if (rgvSlave.getId() ==2){
+                continue;
+            }
             ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
             RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
             if (Cools.isEmpty(rgvProtocol)){
@@ -2646,12 +2644,84 @@
 
             //宸ヤ綅涓�浠诲姟瀹屾垚
             if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING && rgvProtocol.getLoaded1() == 0) {
+
+                try {
+                    Wrapper<WrkMastSta> wrkMastStaWrapper = new EntityWrapper<WrkMastSta>().eq("wrk_crn", rgvProtocol.getRgvNo()).eq("wrk_no", rgvProtocol.getTaskNo1());
+                    WrkMastSta wrkMastSta1 = wrkMastStaService.selectOne(wrkMastStaWrapper);
+                    if (Cools.isEmpty(wrkMastSta1)){
+                        log.error("瀹屾垚{}鍙疯溅宸ヤ綅涓�浠诲姟鏈壘鍒板搴攔gv浠诲姟,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1());
+                    }else {
+                        if (wrkMastSta1.getWrkType() == 8 ){
+                            wrkMastSta1.setWrkSts(3);
+                            wrkMastStaService.update(wrkMastSta1,wrkMastStaWrapper);
+                        }
+                    }
+
+                }catch (Exception e){
+                    log.error("瀹屾垚{}鍙疯溅宸ヤ綅涓�浠诲姟鍑洪敊!!!!!!!!!!!!!!!!,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1());
+                    continue;
+                }
+
+
+                MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(3,new RgvCommand()));
+                log.info("{}鍙穜gv宸ヤ綅涓�宸ヤ綔瀹屾垚澶嶄綅,宸ヤ綔鍙�:{}",rgvSlave.getId(),rgvProtocol.getTaskNo1());
+            }
+
+            //宸ヤ綅浜屼换鍔″畬鎴�
+            if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING2 && rgvProtocol.getLoaded2() == 0) {
+                try {
+                    Wrapper<WrkMastSta> wrkMastStaWrapper = new EntityWrapper<WrkMastSta>().eq("wrk_crn", rgvProtocol.getRgvNo()).eq("wrk_no", rgvProtocol.getTaskNo2());
+                    WrkMastSta wrkMastSta1 = wrkMastStaService.selectOne(wrkMastStaWrapper);
+                    if (Cools.isEmpty(wrkMastSta1)){
+                        log.error("瀹屾垚{}鍙疯溅宸ヤ綅浜屼换鍔℃湭鎵惧埌瀵瑰簲宸ヤ綔浠诲姟,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo2());
+                    }else {
+                        if (wrkMastSta1.getWrkType() == 9 ){
+                            wrkMastSta1.setWrkSts(3);
+                            wrkMastStaService.update(wrkMastSta1,wrkMastStaWrapper);
+                        }else if (wrkMastSta1.getWrkType() == 1){
+                            wrkMastSta1.setWrkSts(3);
+                            wrkMastStaService.update(wrkMastSta1,wrkMastStaWrapper);
+                        }
+                    }
+                }catch (Exception e){
+                    log.error("瀹屾垚{}鍙疯溅宸ヤ綅涓�浠诲姟鍑洪敊!!!!!!!!!!!!!!!!,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1());
+                    continue;
+                }
+
+
+
+                MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(4,new RgvCommand()));
+                log.info("{}鍙穜gv宸ヤ綅浜屽伐浣滃畬鎴愬浣�,宸ヤ綔鍙�:{}",rgvSlave.getId(),rgvProtocol.getTaskNo2());
+            }
+        }
+    }
+
+    //浜屽彿rgv杈撻�佺嚎鍛戒护涓嬪彂
+    public synchronized void RGVTaskput() {
+        for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
+            if (rgvSlave.getId() ==2){
+                continue;
+            }
+            ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
+            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+            if (Cools.isEmpty(rgvProtocol)){
+                continue;
+            }else {
+                rgvProtocol = rgvProtocol.clone();
+            }
+
+            //宸ヤ綅涓�浠诲姟瀹屾垚
+            if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.OUTSTN1 && rgvProtocol.getLoaded1() == 1) {
                 WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo1());
+                WrkMast wrkMast = wrkMastService.selectByworkNo(rgvProtocol.getTaskNo1());
                 if (Cools.isEmpty(wrkMastSta)){
                     log.error("鏈煡璇㈠埌rgv宸ヤ綔浠诲姟锛宺gv缂栧彿{},宸ヤ綔鍙穥}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1());
                     continue;
                 }
                 for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){
+                    if (!Objects.equals(Utils.getStaNo(rgvSlave.getId(), wrkMastSta.getWrkEnd()), outStn.getStaNo())){
+                        continue;
+                    }
                     SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getStaPlcId());
                     StaProtocol staProtocol = devpThread.getStation().get(outStn.getStaNo());
                     if (staProtocol == null) {
@@ -2659,29 +2729,26 @@
                     } else {
                         staProtocol = staProtocol.clone();
                     }
-
-                    if (staProtocol.isAutoing() && staProtocol.isLoading()  && staProtocol.isPakMk()){
+                    if (staProtocol.isAutoing() && !staProtocol.isLoading()  && staProtocol.isPakMk()){
                         staProtocol.setWorkNo(wrkMastSta.getWrkNo().shortValue());
-                        staProtocol.setStaNo(wrkMastSta.getWrkEnd().shortValue());
-                        if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) {
-                            continue;
-                        }
+                        staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+                        MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol));
                     }
-
                 }
-
-                MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(3,new RgvCommand()));
-                log.info("{}鍙穜gv宸ヤ綅涓�宸ヤ綔瀹屾垚澶嶄綅,宸ヤ綔鍙�:{}",rgvSlave.getId(),wrkMastSta.getWrkNo());
             }
 
             //宸ヤ綅浜屼换鍔″畬鎴�
-            if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING2 && rgvProtocol.getLoaded1() == 0) {
-                WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo2(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo2());
+            if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.OUTSTN8 && rgvProtocol.getLoaded2() == 1) {
+                WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo2());
+                WrkMast wrkMast = wrkMastService.selectByworkNo(rgvProtocol.getTaskNo2());
                 if (Cools.isEmpty(wrkMastSta)){
                     log.error("鏈煡璇㈠埌rgv宸ヤ綔浠诲姟锛宺gv缂栧彿{},宸ヤ綔鍙穥}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo2());
                     continue;
                 }
                 for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){
+                    if (wrkMastSta.getStaEnd() != outStn.getStaNo()){
+                        continue;
+                    }
                     SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getStaPlcId());
                     StaProtocol staProtocol = devpThread.getStation().get(outStn.getStaNo());
                     if (staProtocol == null) {
@@ -2689,18 +2756,12 @@
                     } else {
                         staProtocol = staProtocol.clone();
                     }
-                    if (staProtocol.isAutoing() && staProtocol.isLoading()  && staProtocol.isPakMk()){
-//                        staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
-////                        staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
-//                        if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) {
-//                            continue;
-//                        }
+                    if (staProtocol.isAutoing() && !staProtocol.isLoading()  && staProtocol.isPakMk()){
+                        staProtocol.setWorkNo(wrkMastSta.getWrkNo2().shortValue());
+                        staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+                        MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol));
                     }
-
                 }
-
-                MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(4,new RgvCommand()));
-                log.info("{}鍙穜gv宸ヤ綅浜屽伐浣滃畬鎴愬浣�,宸ヤ綔鍙�:{}",rgvSlave.getId(),wrkMastSta.getWrkNo2());
             }
         }
     }
@@ -2738,8 +2799,12 @@
                     if (outStn.getStaPlcId() == 2){
                         if (staProtocol.isAutoing() && !staProtocol.isLoading()  && staProtocol.isPakMk()){
                             staProtocol.setWorkNo(wrkMastSta.getWrkNo().shortValue());
-                            staProtocol.setStaNo((short) 2106);
-                            staProtocol.setMatnr(wrkMastSta.getMatnr1().shortValue());
+                            if (wrkMastSta.getType() == 1){
+                                staProtocol.setStaNo((short) 9999);
+                            }else {
+                                staProtocol.setStaNo((short) 2106);
+                            }
+                            staProtocol.setMatnr(wrkMastSta.getMatnr1());
 
                             if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) {
                                 continue;
@@ -2751,8 +2816,8 @@
             }
 
             //宸ヤ綅浜屼换鍔″畬鎴�
-            if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.OUTSTN8 && rgvProtocol.getLoaded1() == 1) {
-                WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo2());
+            if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.OUTSTN8 && rgvProtocol.getLoaded2() == 1) {
+                WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo2(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo2());
                 if (Cools.isEmpty(wrkMastSta)){
                     log.error("鏈煡璇㈠埌rgv宸ヤ綔浠诲姟锛宺gv缂栧彿{},宸ヤ綔鍙穥}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo2());
                     continue;
@@ -2768,8 +2833,13 @@
                     if (outStn.getStaPlcId() == 2){
                         if (staProtocol.isAutoing() && !staProtocol.isLoading()  && staProtocol.isPakMk()){
                             staProtocol.setWorkNo(wrkMastSta.getWrkNo2().shortValue());
-                            staProtocol.setStaNo((short) 2106);
-                            staProtocol.setMatnr(wrkMastSta.getMatnr2().shortValue());
+                            if (wrkMastSta.getType2() == 1){
+                                staProtocol.setStaNo((short) 9999);
+                            }else {
+                                staProtocol.setStaNo((short) 2106);
+                            }
+
+                            staProtocol.setMatnr(wrkMastSta.getMatnr2());
 
                             if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) {
                                 continue;
@@ -2797,12 +2867,50 @@
             //宸ヤ綅涓�浠诲姟瀹屾垚
             if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING && rgvProtocol.getLoaded1() == 0) {
 
+                try {
+                    Wrapper<WrkMastSta> wrkMastStaWrapper = new EntityWrapper<WrkMastSta>().eq("wrk_crn", rgvProtocol.getRgvNo()).eq("wrk_no", rgvProtocol.getTaskNo1());
+                    WrkMastSta wrkMastSta1 = wrkMastStaService.selectOne(wrkMastStaWrapper);
+                    if (Cools.isEmpty(wrkMastSta1)){
+                        log.error("瀹屾垚{}鍙疯溅宸ヤ綅涓�浠诲姟鏈壘鍒板搴攔gv浠诲姟,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1());
+                    }else {
+                        if (wrkMastSta1.getWrkType() == 8 ){
+                            wrkMastSta1.setWrkSts(3);
+                            wrkMastStaService.update(wrkMastSta1,wrkMastStaWrapper);
+                        }
+                    }
+
+                }catch (Exception e){
+                    log.error("瀹屾垚{}鍙疯溅宸ヤ綅涓�浠诲姟鍑洪敊!!!!!!!!!!!!!!!!,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1());
+                    continue;
+                }
+
+
                 MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(3,new RgvCommand()));
                 log.info("{}鍙穜gv宸ヤ綅涓�宸ヤ綔瀹屾垚澶嶄綅,宸ヤ綔鍙�:{}",rgvSlave.getId(),rgvProtocol.getTaskNo1());
             }
 
             //宸ヤ綅浜屼换鍔″畬鎴�
-            if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING2 && rgvProtocol.getLoaded1() == 0) {
+            if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING2 && rgvProtocol.getLoaded2() == 0) {
+                try {
+                    Wrapper<WrkMastSta> wrkMastStaWrapper = new EntityWrapper<WrkMastSta>().eq("wrk_crn", rgvProtocol.getRgvNo()).eq("wrk_no", rgvProtocol.getTaskNo2());
+                    WrkMastSta wrkMastSta1 = wrkMastStaService.selectOne(wrkMastStaWrapper);
+                    if (Cools.isEmpty(wrkMastSta1)){
+                        log.error("瀹屾垚{}鍙疯溅宸ヤ綅浜屼换鍔℃湭鎵惧埌瀵瑰簲宸ヤ綔浠诲姟,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo2());
+                    }else {
+                        if (wrkMastSta1.getWrkType() == 9 ){
+                            wrkMastSta1.setWrkSts(3);
+                            wrkMastStaService.update(wrkMastSta1,wrkMastStaWrapper);
+                        }else if (wrkMastSta1.getWrkType() == 1){
+                            wrkMastSta1.setWrkSts(3);
+                            wrkMastStaService.update(wrkMastSta1,wrkMastStaWrapper);
+                        }
+                    }
+
+                }catch (Exception e){
+                    log.error("瀹屾垚{}鍙疯溅宸ヤ綅涓�浠诲姟鍑洪敊!!!!!!!!!!!!!!!!,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1());
+                    continue;
+                }
+
 
 
                 MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(4,new RgvCommand()));
@@ -2832,7 +2940,185 @@
         wrkMastSta.setWrkType(command.getTaskMode().intValue());
         wrkMastSta.setMatnr1(command.getMatnr().intValue());
         wrkMastSta.setMatnr2(command.getMatnr2().intValue());
+        wrkMastSta.setType(command.getType().intValue());
+        wrkMastSta.setType2(command.getType2().intValue());
+        wrkMastSta.setBatch(command.getBatch());
+        wrkMastSta.setBatch2(command.getBatch2());
+        wrkMastSta.setAnfme(command.getAnfme().intValue());
+        wrkMastSta.setAnfme2(command.getAnfme2().intValue());
         return wrkMastStaService.insert(wrkMastSta);
     }
 
+    //浜屾湡缁勬墭
+    public synchronized void generateStoreWrkFile2() {
+        // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+        for (DevpSlave devp : slaveProperties.getDevp()) {
+            if (devp.getId() != 2){
+                continue;
+            }
+            // 閬嶅巻鍏ュ簱鍙�
+            for (DevpSlave.Sta inSta : devp.getInSta()) {
+                // 鑾峰彇鏉$爜鎵弿浠俊鎭�
+                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
+                if (barcodeThread == null) {
+                    continue;
+                }
+                String barcode = barcodeThread.getBarcode();
+  // 鑾峰彇鍏ュ簱绔欎俊鎭�
+                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+                StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
+                if (staProtocol == null) {
+                    continue;
+                } else {
+                    staProtocol = staProtocol.clone();
+                }
+                if (!Cools.isEmpty(barcode)) {
+                    log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
+                    if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+                        continue;
+                    }
+                } else {
+                    // led 寮傚父鏄剧ず
+//                    LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
+//                    if (ledThread != null) {
+//                        String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
+//                        MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
+//                    }
+                    continue;
+                }
+                // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
+                if (staProtocol.isAutoing()
+                        && staProtocol.isLoading()
+                        && staProtocol.isInEnable()
+                        && !staProtocol.isEmptyMk()
+                        && staProtocol.getStaNo() != 9999
+                        && staProtocol.isPakMk()) {
+
+                    if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode)) {
+                        log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
+                        //鏉$爜涓虹┖鎴栬�呬笉绗﹀悎锛岄��搴撳埌
+                        LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
+                        if (ledThread != null) {
+                            String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯";
+                            MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
+                        }
+                        continue;
+                    }
+
+                    // 鍒ゆ柇閲嶅宸ヤ綔妗�
+                    WrkMast wrkMast = new WrkMast();
+                    if (barcode.length() == 8) {
+                        wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
+                        if (wrkMast != null) {
+                            log.error("宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={}", wrkMast.getWrkNo());
+                            continue;
+                        }
+                    }
+//                     鑾峰彇鍏ュ簱閫氱煡妗�
+                    List<WaitPakin> waitPakins = waitPakinMapper.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", barcode).eq("io_status", "N"));
+                    if (waitPakins.isEmpty()) {
+                        try {
+                            CreateComb(barcode,staProtocol.getMatnr().intValue(),staProtocol.getWorkNo().intValue());
+                        }catch (IOException e) {
+                            throw new CoolException(e);
+                        }
+                    }else {
+                        try {
+                            LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
+                            SearchLocParam param = new SearchLocParam();
+                            param.setBarcode(barcode);
+                            param.setIoType(1);
+                            param.setSourceStaNo(inSta.getStaNo());
+                            param.setLocType1(locTypeDto.getLocType1());
+                            String response = new HttpHandler.Builder()
+                                    .setUri(wmsUrl)
+                                    .setPath("/rpc/pakin/loc/v1")
+                                    .setJson(JSON.toJSONString(param))
+                                    .build()
+                                    .doPost();
+                            JSONObject jsonObject = JSON.parseObject(response);
+                            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
+                            if (jsonObject.getInteger("code").equals(200)) {
+                                StartupDto dto = jsonObject.getObject("data", StartupDto.class);
+
+                                barcodeThread.setBarcode("");
+                                staProtocol.setWorkNo(dto.getWorkNo().shortValue());
+                                staProtocol.setStaNo(dto.getStaNo().shortValue());
+                                devpThread.setPakMk(staProtocol.getSiteId(), false);
+                                ledThread.errorReset();
+                                boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                                if (!result) {
+                                    throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+                                }
+                            } else if(jsonObject.getInteger("code").equals(700)) {
+                                log.error(barcode + "鎵樼洏璇嗗埆寮傚父锛岃鍏堣繘琛岀粍鎵橈紒");
+                                // led 寮傚父鏄剧ず
+                                ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
+                                if (ledThread != null) {
+                                    String errorMsg = barcode + "鎵樼洏璇嗗埆寮傚父锛岃鍏堣繘琛岀粍鎵橈紒";
+                                    MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
+                                }
+                            } else {
+                                log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
+                            }
+
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                        }
+                    }
+
+
+                }
+
+            }
+        }
+
+    }
+
+    public void CreateComb(String barcode,Integer code,Integer wrkNo) throws IOException {
+        String batch = "";
+        Double anfme = 0D;
+
+        WrkMastSta wrkMastSta = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>().eq("wrk_no", wrkNo));
+        if (Cools.isEmpty(wrkMastSta)){
+            wrkMastSta = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>().eq("wrk_no2", wrkNo));
+            if (Cools.isEmpty(wrkMastSta)){
+                throw new  CoolException("鏈壘鍒板搴旂殑浠诲姟淇℃伅");
+            }
+            batch = wrkMastSta.getBatch2();
+            anfme = wrkMastSta.getAnfme2().doubleValue();
+            code = wrkMastSta.getMatnr2();
+        }else {
+            batch = wrkMastSta.getBatch();
+            anfme = wrkMastSta.getAnfme().doubleValue();
+            code = wrkMastSta.getMatnr1();
+        }
+        MatnrCode matnrCode = matnrCodeService.selectByCode(code);
+        if (Cools.isEmpty(matnrCode)){
+            throw new  CoolException("鏈壘鍒板搴旂殑鐗╂枡淇℃伅");
+        }
+        CombParam combParam = new CombParam();
+        ArrayList<CombParam.CombMat> combMats = new ArrayList<>();
+        CombParam.CombMat combMat = new CombParam.CombMat();
+        combParam.setBarcode(barcode);
+        combMat.setMatnr(matnrCode.getMatnr());
+        combMat.setBatch(batch);
+        combMat.setAnfme(anfme);
+
+        combMats.add(combMat);
+        combParam.setCombMats(combMats);
+
+        String response = new HttpHandler.Builder()
+                .setUri(wmsUrl)
+                .setPath("/mobile/comb/auth")
+                .setJson(JSON.toJSONString(combParam))
+                .build()
+                .doPost();
+        JSONObject jsonObject = JSON.parseObject(response);
+        if (jsonObject.getInteger("code").equals(200)) {
+
+        }
+    }
+
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/MatnrCodeServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MatnrCodeServiceImpl.java
new file mode 100644
index 0000000..2e0a67b
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/MatnrCodeServiceImpl.java
@@ -0,0 +1,16 @@
+package com.zy.asrs.service.impl;
+
+import com.zy.asrs.mapper.MatnrCodeMapper;
+import com.zy.asrs.entity.MatnrCode;
+import com.zy.asrs.service.MatnrCodeService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("matnrCodeService")
+public class MatnrCodeServiceImpl extends ServiceImpl<MatnrCodeMapper, MatnrCode> implements MatnrCodeService {
+
+    @Override
+    public MatnrCode selectByCode(Integer code) {
+        return this.baseMapper.selectByCode(code);
+    }
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
index 0791e9b..d0352f3 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
@@ -67,4 +67,8 @@
     public WrkMast selectByworkNo(Short workNo) {
         return this.baseMapper.selectByWrkNo(Integer.valueOf(workNo));
     }
+    @Override
+    public WrkMast selectByworkNo(Integer workNo) {
+        return this.baseMapper.selectByWrkNo(workNo);
+    }
 }
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index a41eae0..3ea9a06 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -9,6 +9,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * Created by vincent on 2020/8/27
@@ -19,13 +20,18 @@
 
     public static short getRgvStaNo(Integer rgvNo,Integer staNo){
         Map<Integer, Short> rgv1Map = new HashMap<>();
+        rgv1Map.put(1014,(short)1);rgv1Map.put(1020,(short)2);
+        rgv1Map.put(1023,(short)3);rgv1Map.put(1017,(short)4);
+        rgv1Map.put(2013,(short)5);rgv1Map.put(2401,(short)6);
+        rgv1Map.put(2114,(short)7);
         Map<Integer, Short> rgv2Map = new HashMap<>();
         rgv2Map.put(4007, (short) 1);rgv2Map.put(4001, (short) 2);
         rgv2Map.put(2003, (short) 3);rgv2Map.put(2103, (short) 4);
-        rgv2Map.put(4016, (short) 5);rgv2Map.put(4010, (short) 6);
-        rgv2Map.put(2301, (short) 7);rgv2Map.put(2002, (short) 8);
-        rgv2Map.put(2001, (short) 9);
+        rgv2Map.put(4016, (short) 6);rgv2Map.put(4010, (short) 7);
+        rgv2Map.put(2301, (short) 5);rgv2Map.put(2002, (short) 8);
+        rgv2Map.put(2102, (short) 9);
         Map<Integer, Short> rgv3Map = new HashMap<>();
+        rgv3Map.put(2402,(short)1);rgv3Map.put(3001,(short)2);
         switch (rgvNo){
             case 1:
                 return rgv1Map.get(staNo);
@@ -37,12 +43,45 @@
         return 0;
     }
 
+    public static Integer getStaNo(Integer rgvNo,Integer staNo){
+        Map<Integer, Short> rgv1Map = new HashMap<>();
+        rgv1Map.put(1014,(short)1);rgv1Map.put(1020,(short)2);
+        rgv1Map.put(1023,(short)3);rgv1Map.put(1017,(short)4);
+        rgv1Map.put(2013,(short)5);rgv1Map.put(2401,(short)6);
+        rgv1Map.put(2114,(short)7);
+        Map<Integer, Short> rgv2Map = new HashMap<>();
+        rgv2Map.put(4007, (short) 1);rgv2Map.put(4001, (short) 2);
+        rgv2Map.put(2003, (short) 3);rgv2Map.put(2103, (short) 4);
+        rgv2Map.put(4016, (short) 6);rgv2Map.put(4010, (short) 7);
+        rgv2Map.put(2301, (short) 5);rgv2Map.put(2002, (short) 8);
+        rgv2Map.put(2102, (short) 9);
+        Map<Integer, Short> rgv3Map = new HashMap<>();
+        rgv3Map.put(2402,(short)1);rgv3Map.put(3001,(short)2);
+        rgv1Map.entrySet().stream().collect(Collectors.toMap(entity ->entity.getValue(),entity-> entity.getKey())).get(staNo);
+        switch (rgvNo){
+            case 1:
+                return rgv1Map.entrySet().stream().collect(Collectors.toMap(entity ->entity.getValue(),entity-> entity.getKey())).get(staNo.shortValue());
+            case 2:
+                return rgv2Map.entrySet().stream().collect(Collectors.toMap(entity ->entity.getValue(),entity-> entity.getKey())).get(staNo.shortValue());
+            case 3:
+                return rgv3Map.entrySet().stream().collect(Collectors.toMap(entity ->entity.getValue(),entity-> entity.getKey())).get(staNo.shortValue());
+        }
+        return 0;
+    }
+
     public static short getRgvEndStaNo(Integer rgvNo,Integer staNo){
         Map<Integer, Integer> rgv1Map = new HashMap<>();
+        rgv1Map.put(3007,2401);rgv1Map.put(3012,2401);
+        rgv1Map.put(4002,2013); rgv1Map.put(4011,2013);
+        rgv1Map.put(2101,2013);rgv1Map.put(2001,2013);
+        rgv1Map.put(1022,1020);rgv1Map.put(1025,1023);
         Map<Integer, Integer> rgv2Map = new HashMap<>();
         rgv2Map.put(4002,4001); rgv2Map.put(4011,4010);
-        rgv2Map.put(2101,2102);
+        rgv2Map.put(2101,2102);rgv2Map.put(2001,2002);
         Map<Integer, Integer> rgv3Map = new HashMap<>();
+        rgv3Map.put(3007,3001);rgv3Map.put(3012,3001);
+        rgv3Map.put(1022,2402);rgv3Map.put(1025,2402);
+        rgv3Map.put(1016,2402);rgv3Map.put(1019,2402);
         switch (rgvNo){
             case 1:
                 return getRgvStaNo(rgvNo,rgv1Map.get(staNo));
diff --git a/src/main/java/com/zy/common/CodeBuilder.java b/src/main/java/com/zy/common/CodeBuilder.java
index a172bd3..151c29d 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="127.0.0.1:1433;databasename=mdqdasrs";
         generator.username="sa";
         generator.password="sa@123";
-        generator.table="man_emptyBarrel_in";
+        generator.table="man_matnr_code";
         generator.packagePath="com.zy.asrs";
         generator.html = false;
         generator.htmlDetail = false;
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index d75b130..ea253b2 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -74,12 +74,16 @@
 //                    //绌烘《鍑哄簱瀹屾垚
 //                    mainService.crn5StnToOutStn();
                     //rgv浠诲姟
-                    mainService.RGVTaskPut();
+                    mainService.RGVTaskCreate();
                     //rgv1,3浠诲姟瀹屾垚
+                    mainService.RGVTaskput();
                     mainService.RGVTaskOver();
+
                     //rgv2浠诲姟瀹屾垚
                     mainService.RGV2Taskput();
                     mainService.RGV2TaskOver();
+                    //浜屾湡缁勬墭
+                    mainService.generateStoreWrkFile2();
 
 
                 } catch (Exception e) {
diff --git a/src/main/java/com/zy/core/enums/RgvStatusType.java b/src/main/java/com/zy/core/enums/RgvStatusType.java
index 6159b49..26c5663 100644
--- a/src/main/java/com/zy/core/enums/RgvStatusType.java
+++ b/src/main/java/com/zy/core/enums/RgvStatusType.java
@@ -14,9 +14,13 @@
 
     OUTSTN1((short)5,"宸ヤ綔浣�1璇锋眰鍑虹珯"),
     OUTSTN8((short)6,"宸ヤ綔浣�2璇锋眰鍑虹珯"),
-    WALKING((short) 9, "璧拌涓�"),
+
+    WALKING((short) 7, "鏀捐揣涓�"),
+    WALKING2((short) 8, "绛夊緟璐т綅2浠诲姟鎵ц"),
     WAITING((short) 90, "宸ヤ綅涓�浠诲姟瀹屾垚绛夊緟WCS纭"),
     WAITING2((short) 91, "宸ヤ綅浜屼换鍔″畬鎴愮瓑寰匴CS纭"),
+
+    WAITING3((short)98,"鑱旀満浠诲姟涓柇"),
     ALARM((short) 99, "鎶ヨ"),
     OTHER((short) 100, "鍏朵粬"),
     ;
diff --git a/src/main/java/com/zy/core/model/command/RgvCommand.java b/src/main/java/com/zy/core/model/command/RgvCommand.java
index ec5ea94..020142b 100644
--- a/src/main/java/com/zy/core/model/command/RgvCommand.java
+++ b/src/main/java/com/zy/core/model/command/RgvCommand.java
@@ -53,9 +53,19 @@
     @JSONField(serialize = false)
     private RgvTaskModeType taskModeType;
 
-    private Short matnr;
+    private Integer matnr;
 
-    private Short matnr2;
+    private Integer matnr2;
+
+    private Short type;
+    private  Short type2;
+
+    private String batch;
+    private String batch2;
+
+    private Short anfme;
+    private Short anfme2;
+
 
 
     //**************宸ヤ綅2**************
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 dc03705..42518f9 100644
--- a/src/main/java/com/zy/core/model/protocol/StaProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -23,7 +23,8 @@
 
     // ----------------------------------------------------------------
     // 鐗╂枡浠g爜
-    private Short matnr;
+    private Integer matnr;
+    private String batch;
 
     // ----------------------------------------------------------------
     // 鑷姩
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 85db633..287bcb4 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -67,11 +67,17 @@
     }};
 
     public static final ArrayList<Integer> staNos5 = new ArrayList<Integer>() {{
-        add(4001);add(4002);add(4003);add(4004);add(4005);add(4006);add(4007);
+        add(4016);
     }};
 
     public static final ArrayList<Integer> staNos6 = new ArrayList<Integer>() {{
-        add(4010);add(4011);add(4012);add(4013);add(4014);add(4015);add(4016);
+        add(2007);add(2008);add(2009);add(2010);add(2011);add(2012);add(2013);
+        add(2108);add(2109);add(2110);add(2111);add(2112);add(2113);add(2114);
+        add(2401);add(2402);add(2403);
+    }};
+    public static final ArrayList<Integer> staNos7 = new ArrayList<Integer>() {{
+        add(3001);add(3002);add(3003);add(3004);add(3005);add(3006);add(3007);
+        add(3008);add(3009);add(3010);add(3011);add(3012);
     }};
 
 
@@ -94,17 +100,21 @@
     }};
 
     public static final ArrayList<Integer> writeStaNos4 = new ArrayList<Integer>() {{
-        add(3001);
-        add(3007);
-        add(3012);
+        add(4007);
     }};
 
     public static final ArrayList<Integer> writeStaNos5 = new ArrayList<Integer>() {{
-        add(4001);add(4007);
+        add(4016);
     }};
 
     public static final ArrayList<Integer> writeStaNos6 = new ArrayList<Integer>() {{
-        add(4010);add(4016);
+        add(2007);add(2008);add(2009);add(2010);add(2011);add(2012);add(2013);
+        add(2108);add(2109);add(2110);add(2111);add(2112);add(2113);add(2114);
+        add(2401);add(2402);add(2403);
+    }};
+    public static final ArrayList<Integer> writeStaNos7 = new ArrayList<Integer>() {{
+        add(3001);add(3002);add(3003);add(3004);add(3005);add(3006);add(3007);
+        add(3008);add(3009);add(3010);add(3011);add(3012);
     }};
 
     public static final ArrayList<Integer> errorStaNos1 = new ArrayList<Integer>() {{
@@ -117,6 +127,10 @@
 
     public static final ArrayList<Integer> errorStaNos4 = new ArrayList<Integer>() {{
         add(3007);add(3012);
+    }};
+
+    public static final ArrayList<Integer> errorStaNos7 = new ArrayList<Integer>() {{
+        add(3006);add(3007);
     }};
 
     /**
@@ -152,6 +166,8 @@
                 return staNos5;
             case 6:
                 return staNos6;
+            case 7:
+                return staNos7;
             default:
                 throw new CoolException("鑾峰彇绔欑偣澶辫触锛�");
         }
@@ -171,6 +187,8 @@
                 return writeStaNos5;
             case 6:
                 return writeStaNos6;
+            case 7:
+                return writeStaNos7;
             default:
                 throw new CoolException("鑾峰彇绔欑偣澶辫触锛�");
         }
@@ -184,6 +202,8 @@
                 return errorStaNos2;
             case 4:
                 return errorStaNos4;
+            case 7:
+                return errorStaNos7;
             default:
                 throw new CoolException("鑾峰彇绔欑偣澶辫触锛�");
         }
@@ -205,6 +225,8 @@
                     case 1:
                         switch (slave.getId()){
                             case 1:
+                            case 6:
+                            case 7:
                                 read();break;
                             case 2:
                                 read10();break;
@@ -212,6 +234,8 @@
                                 read30();break;
                             case 4:
                                 read33();break;
+                            case 5:
+                                read55();break;
                         }
 
                         break;
@@ -220,7 +244,9 @@
                         switch (slave.getId()){
                             case 1:
                             case 3:
-                                write((StaProtocol)task.getData());
+                            case 6:
+                            case 7:
+                                write((StaProtocol)task.getData());break;
                             case 2:
                                 write10((StaProtocol)task.getData());break;
 
@@ -319,25 +345,62 @@
                     }
                 }
             }
+        } else if (slave.getId() == 7) {
+            Thread.sleep(200);
+            OperateResultExOne<byte[]> result2 = null;
+            result2 = siemensS7Net.Read("DB101.104.0", (short) (barcodeSize * 8));
+            if (result2.IsSuccess) {
+                for (int i = 0; i < barcodeSize; i++) {
+                    String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 8, 8, "UTF-8");
+                    BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i + 4);
+                    if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
+                        barcodeThread.setBarcode(barcode);
+                    }
+                }
+            }
         }
 
-        //鎶ヨ淇℃伅
-        Thread.sleep(200);
-        OperateResultExOne<byte[]> result3 = null;
-        result3 = siemensS7Net.Read("DB101.200.0", (short) (getErrorStaNo().size() * 4));
-        if (result3.IsSuccess) {
-            for (int i = 0; i < getErrorStaNo().size(); i++) {
-                Integer siteId = getErrorStaNo().get(i); // 绔欑偣缂栧彿
-                StaProtocol staProtocol = station.get(siteId);
+        if (slave.getId() ==1){
+            //鎶ヨ淇℃伅
+            Thread.sleep(200);
+            OperateResultExOne<byte[]> result3 = null;
+            result3 = siemensS7Net.Read("DB101.200.0", (short) (getErrorStaNo().size() * 4));
+            if (result3.IsSuccess) {
+                for (int i = 0; i < getErrorStaNo().size(); i++) {
+                    Integer siteId = getErrorStaNo().get(i); // 绔欑偣缂栧彿
+                    StaProtocol staProtocol = station.get(siteId);
 //                staProtocol.setLocType1(siemensS7Net.getByteTransform().TransInt16(result.Content, i*4));   // 搴撲綅楂樺害
-                boolean[] status = siemensS7Net.getByteTransform().TransBool(result3.Content, i*4+2, 1);
-                staProtocol.setFrontErr(status[0]);
-                staProtocol.setBackErr(status[1]);
-                staProtocol.setHighErr(status[2]);
-                staProtocol.setLeftErr(status[3]);
-                staProtocol.setRightErr(status[4]);
-                staProtocol.setWeightErr(status[5]);
-                staProtocol.setBarcodeErr(status[6]);
+                    boolean[] status = siemensS7Net.getByteTransform().TransBool(result3.Content, i*4+2, 1);
+                    staProtocol.setFrontErr(status[0]);
+                    staProtocol.setBackErr(status[1]);
+                    staProtocol.setHighErr(status[2]);
+                    staProtocol.setLeftErr(status[3]);
+                    staProtocol.setRightErr(status[4]);
+                    staProtocol.setWeightErr(status[5]);
+                    staProtocol.setBarcodeErr(status[6]);
+                }
+
+            }
+        } else if (slave.getId() == 7) {
+            //鎶ヨ淇℃伅
+            Thread.sleep(200);
+            OperateResultExOne<byte[]> result3 = null;
+            result3 = siemensS7Net.Read("DB101.96.0", (short) (getErrorStaNo().size() * 4));
+            if (result3.IsSuccess) {
+                for (int i = 0; i < getErrorStaNo().size(); i++) {
+                    Integer siteId = getErrorStaNo().get(i); // 绔欑偣缂栧彿
+                    StaProtocol staProtocol = station.get(siteId);
+//                staProtocol.setLocType1(siemensS7Net.getByteTransform().TransInt16(result.Content, i*4));   // 搴撲綅楂樺害
+                    boolean[] status = siemensS7Net.getByteTransform().TransBool(result3.Content, i*4+2, 1);
+                    staProtocol.setFrontErr(status[0]);
+                    staProtocol.setBackErr(status[1]);
+                    staProtocol.setHighErr(status[2]);
+                    staProtocol.setLeftErr(status[3]);
+                    staProtocol.setRightErr(status[4]);
+                    staProtocol.setWeightErr(status[5]);
+                    staProtocol.setBarcodeErr(status[6]);
+                }
+
             }
         }
 
@@ -384,7 +447,7 @@
                 }
                 staProtocol.setWorkNo((short) siemensS7Net.getByteTransform().TransInt32(result.Content, i * 10));     // 宸ヤ綔鍙�
                 staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*10 + 4 ));   // 鐩爣绔�
-                staProtocol.setMatnr(siemensS7Net.getByteTransform().TransInt16(result.Content, i*10 + 6 ));   // 鐩爣绔�
+                staProtocol.setMatnr((int) siemensS7Net.getByteTransform().TransInt16(result.Content, i * 10 + 6));   // 鐩爣绔�
             }
         }
         Thread.sleep(200);
@@ -413,14 +476,14 @@
         }
 
         // 鏉$爜鎵弿鍣�
-        if(slave.getId() == 1) {
+        if(slave.getId() == 2) {
             Thread.sleep(200);
             OperateResultExOne<byte[]> result2 = null;
-            result2 = siemensS7Net.Read("DB101.208.0", (short) (barcodeSize * 8));
+            result2 = siemensS7Net.Read("DB101.194.0", (short) (8));
             if (result2.IsSuccess) {
-                for (int i = 0; i < barcodeSize; i++) {
+                for (int i = 0; i < 1; i++) {
                     String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 8, 8, "UTF-8");
-                    BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i + 1);
+                    BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, 3);
                     if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
                         barcodeThread.setBarcode(barcode);
                     }
@@ -523,13 +586,15 @@
         int staNoSize = staNos.size();
         OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (getStaNo().size() * 8));
 
-        result = siemensS7Net.Read("DB101.0", (short) (getStaNo().size()*6));
+        result = siemensS7Net.Read("DB101.0", (short) (getStaNo().size()*30));
         if (result.IsSuccess) {
             for (int i = 0; i < staNoSize; i++) {
                 Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
                 boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i*4, 1);
                 short tongType = siemensS7Net.getByteTransform().TransInt16(result.Content, i * 4 + 2);
-                short matnr = siemensS7Net.getByteTransform().TransInt16(result.Content, i * 4 + 4);
+                Integer matnr = siemensS7Net.getByteTransform().TransInt32(result.Content, i * 4 + 4);
+                short amount =  siemensS7Net.getByteTransform().TransInt16(result.Content, i * 4 + 8);
+                String batch = siemensS7Net.getByteTransform().TransString(result.Content, i * 4+10, 20, "UTF-8");
                 StaProtocol staProtocol = station.get(siteId);
                 if (null == staProtocol) {
                     staProtocol = new StaProtocol();
@@ -539,8 +604,76 @@
                 staProtocol.setAutoing(status[0]);  // 鑷姩
                 staProtocol.setLoading(status[1]);  // 鏈夌墿
                 staProtocol.setInEnable(status[2]); // 鍙叆
+                staProtocol.setEmptyOutPalletRequire(status[3]);
                 staProtocol.setMatnr(matnr);
                 staProtocol.setTongType(tongType);
+                staProtocol.setBatch(batch);
+                staProtocol.setAmount(amount);
+                staProtocol.setLow(true);
+
+
+
+                if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
+                    staProtocol.setPakMk(true);
+                }
+            }
+        }
+
+        if (result.IsSuccess) {
+
+            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
+
+            // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴�
+            try {
+                List<BasDevp> basDevps = new ArrayList<>();
+                for (Integer siteId : staNos) {
+                    StaProtocol staProtocol = station.get(siteId);
+                    basDevps.add(staProtocol.toSqlModel());
+                }
+
+                BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class);
+                if (null != basDevpService && !basDevpService.updateBatchById(basDevps)) {
+                    throw new Exception("鏇存柊鏁版嵁搴撴暟鎹け璐�");
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+                OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戞洿鏂版暟鎹簱鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
+                log.error("鏇存柊鏁版嵁搴撴暟鎹け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+            }
+
+        } else {
+            OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戣鍙栬緭閫佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
+//            log.error("璇诲彇杈撻�佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+        }
+    }
+
+    private void read55() throws InterruptedException {
+        ArrayList<Integer> staNos = getStaNo();
+        int staNoSize = staNos.size();
+        OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (getStaNo().size() * 8));
+
+        result = siemensS7Net.Read("DB101.0", (short) (getStaNo().size()*28));
+        if (result.IsSuccess) {
+            for (int i = 0; i < staNoSize; i++) {
+                Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+                boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i*4, 1);
+//                short tongType = siemensS7Net.getByteTransform().TransInt16(result.Content, i * 4 + 2);
+                Integer matnr = siemensS7Net.getByteTransform().TransInt32(result.Content, i * 4 + 2);
+                short amount = siemensS7Net.getByteTransform().TransInt16(result.Content, i * 4 + 6);
+                String batch = siemensS7Net.getByteTransform().TransString(result.Content, i * 4+8, 20, "UTF-8");
+                StaProtocol staProtocol = station.get(siteId);
+                if (null == staProtocol) {
+                    staProtocol = new StaProtocol();
+                    staProtocol.setSiteId(siteId);
+                    station.put(siteId, staProtocol);
+                }
+                staProtocol.setAutoing(status[0]);  // 鑷姩
+                staProtocol.setLoading(status[1]);  // 鏈夌墿
+                staProtocol.setInEnable(status[2]); // 鍙叆
+                staProtocol.setEmptyOutPalletRequire(status[3]);
+                staProtocol.setMatnr(matnr);
+                staProtocol.setAmount(amount);
+                staProtocol.setBatch(batch);
                 staProtocol.setLow(true);
 
 
diff --git a/src/main/java/com/zy/core/thread/ZyRgvThread.java b/src/main/java/com/zy/core/thread/ZyRgvThread.java
index 5df1199..10186fa 100644
--- a/src/main/java/com/zy/core/thread/ZyRgvThread.java
+++ b/src/main/java/com/zy/core/thread/ZyRgvThread.java
@@ -108,7 +108,7 @@
      */
     private void readStatus(){
         try {
-            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 34);
+            OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 38);
             if (result.IsSuccess) {
                 if (null == rgvProtocol) {
                     rgvProtocol = new RgvProtocol();
@@ -126,6 +126,7 @@
                 rgvProtocol.setxSpeed(siemensNet.getByteTransform().TransSingle(result.Content, 24));//澶囩敤2
                 rgvProtocol.setxDistance(siemensNet.getByteTransform().TransSingle(result.Content, 28));//澶囩敤3
                 rgvProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 32));//澶囩敤4
+                rgvProtocol.setLoaded2(siemensNet.getByteTransform().TransInt16(result.Content, 36));//宸ヤ綅1鏈夌墿
 
                 OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
 
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index fd78601..47fb6bf 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -147,7 +147,7 @@
   # 杈撻�佺嚎1
   devp[0]:
     id: 1
-    ip: 10.10.10.1
+    ip: 10.10.10.111
     port: 102
     rack: 0
     slot: 0
@@ -225,6 +225,16 @@
     port: 102
     rack: 0
     slot: 0
+    # 鍏ュ簱鍙�1
+    inSta[0]:
+      staNo: 2106
+      barcode: ${wcs-slave.barcode[2].id}
+      backSta: 2105
+      led: ${wcs-slave.led[0].id}
+    # 绌烘澘鍏ュ簱鍙�1
+    emptyInSta[0]:
+      staNo: 2106
+      led: ${wcs-slave.led[0].id}
     # 杈撻�佺嚎3
   devp[2]:
     id: 3
@@ -239,13 +249,40 @@
     port: 102
     rack: 0
     slot: 0
-#  # 杈撻�佺嚎5
-#  devp[4]:
-#    id: 5
-#    ip: 10.10.10.33
-#    port: 102
-#    rack: 0
-#    slot: 0
+  # 杈撻�佺嚎5
+  devp[4]:
+    id: 5
+    ip: 10.10.10.55
+    port: 102
+    rack: 0
+    slot: 0
+  # 杈撻�佺嚎5
+  devp[5]:
+    id: 6
+    ip: 10.10.10.14
+    port: 102
+    rack: 0
+    slot: 0
+  # 杈撻�佺嚎5
+  devp[6]:
+    id: 7
+    ip: 10.10.10.20
+    port: 102
+    rack: 0
+    slot: 0
+    # 鍏ュ簱鍙�1
+    inSta[0]:
+      staNo: 3006
+      barcode: ${wcs-slave.barcode[3].id}
+      backSta: 3007
+      led: ${wcs-slave.led[0].id}
+    # 鍏ュ簱鍙�1
+    inSta[1]:
+      staNo: 3011
+      barcode: ${wcs-slave.barcode[4].id}
+      backSta: 3012
+      led: ${wcs-slave.led[0].id}
+
 #  # RGV1
   rgv[0]:
     id: 2
@@ -260,43 +297,51 @@
       staPlcId: 2
     inStn[1]:
       sourceStaNo: 2003
-      sourcePlcId: 4
-
+      sourcePlcId: 2
+    inStn[2]:
+      sourceStaNo: 2102
+      sourcePlcId: 2
+      staNo: 2103
+      staPlcId: 2
+    inStn[3]:
+      sourceStaNo: 4016
+      sourcePlcId: 5
+      staNo: 2103
+      staPlcId: 2
     outStn[0]:
       staNo: 2103
       staPlcId: 2
-#  # RGV2
-#  rgv[1]:
-#    id: 2
-#    ip: 10.10.10.121
-#    port: 102
-#    rack: 0
-#    slot: 0
-#    inStn[0]:
-#      devpPlcId: ${wcs-slave.devp[0].id}
-#      sourceStaNo: 3001
-#    outStn[0]:
-#      devpPlcId: ${wcs-slave.devp[0].id}
-#      sourceStaNo: 2402
-#  # RGV1
-#  rgv[2]:
-#    id: 3
-#    ip: 10.10.10.122
-#    port: 102
-#    rack: 0
-#    slot: 0
-#    inStn[0]:
-#      devpPlcId: ${wcs-slave.devp[0].id}
-#      sourceStaNo: 2102
-#    inStn[1]:
-#      devpPlcId: ${wcs-slave.devp[0].id}
-#      sourceStaNo: 4007
-#    inStn[2]:
-#      devpPlcId: ${wcs-slave.devp[0].id}
-#      sourceStaNo: 4016
-#    outStn[0]:
-#      devpPlcId: ${wcs-slave.devp[0].id}
-#      sourceStaNo: 2003
+  # RGV2
+  rgv[1]:
+    id: 1
+    ip: 10.10.10.133
+    port: 102
+    rack: 0
+    slot: 0
+  # RGV1
+  rgv[2]:
+    id: 3
+    ip: 10.10.10.135
+    port: 102
+    rack: 0
+    slot: 0
+    inStn[0]:
+      sourceStaNo: 2402
+      sourcePlcId: 6
+      staNo: 3001
+      staPlcId: 7
+    inStn[1]:
+      sourceStaNo: 3001
+      sourcePlcId: 7
+      staNo: 2402
+      staPlcId: 6
+    outStn[0]:
+      staNo: 2402
+      staPlcId: 6
+    outStn[1]:
+      staNo: 3001
+      staPlcId: 7
+
 
   # 鏉$爜鎵弿浠�1
   barcode[0]:
@@ -318,6 +363,11 @@
     id: 4
     ip: 10.10.10.3
     port: 51236
+  # 鏉$爜鎵弿浠�4
+  barcode[4]:
+    id: 5
+    ip: 10.10.10.3
+    port: 51236
 
   # LED1
   led[0]:
diff --git a/src/main/resources/mapper/MatnrCodeMapper.xml b/src/main/resources/mapper/MatnrCodeMapper.xml
new file mode 100644
index 0000000..5ad5a34
--- /dev/null
+++ b/src/main/resources/mapper/MatnrCodeMapper.xml
@@ -0,0 +1,17 @@
+<?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.MatnrCodeMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.zy.asrs.entity.MatnrCode">
+        <id column="id" property="id" />
+        <result column="code" property="code" />
+        <result column="matnr" property="matnr" />
+
+    </resultMap>
+    <select id="selectByCode" resultMap="BaseResultMap">
+        select * from man_matnr_code
+        where code = #{code}
+    </select>
+
+</mapper>
diff --git a/src/main/resources/mapper/WaitPakinMapper.xml b/src/main/resources/mapper/WaitPakinMapper.xml
index 4615185..d666504 100644
--- a/src/main/resources/mapper/WaitPakinMapper.xml
+++ b/src/main/resources/mapper/WaitPakinMapper.xml
@@ -4,27 +4,52 @@
 
     <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
     <resultMap id="BaseResultMap" type="com.zy.asrs.entity.WaitPakin">
+        <result column="zpallet" property="zpallet" />
+        <result column="loc_no" property="locNo" />
+        <result column="anfme" property="anfme" />
         <result column="matnr" property="matnr" />
         <result column="maktx" property="maktx" />
-        <result column="lgnum" property="lgnum" />
-        <result column="type" property="type" />
+        <result column="batch" property="batch" />
+        <result column="order_no" property="orderNo" />
+
+        <result column="specs" property="specs" />
+        <result column="model" property="model" />
         <result column="color" property="color" />
-        <result column="supplier" property="supplier" />
-        <result column="warehouse" property="warehouse" />
         <result column="brand" property="brand" />
-        <result column="anfme" property="anfme" />
-        <result column="altme" property="altme" />
-        <result column="zpallet" property="zpallet" />
-        <result column="bname" property="bname" />
-        <result column="loc_no" property="locNo" />
+        <result column="unit" property="unit" />
+        <result column="price" property="price" />
+        <result column="sku" property="sku" />
+        <result column="units" property="units" />
+        <result column="barcode" property="barcode" />
+        <result column="origin" property="origin" />
+        <result column="manu" property="manu" />
+        <result column="manu_date" property="manuDate" />
+        <result column="item_num" property="itemNum" />
+        <result column="safe_qty" property="safeQty" />
+        <result column="weight" property="weight" />
+        <result column="length" property="length" />
+        <result column="volume" property="volume" />
+        <result column="three_code" property="threeCode" />
+        <result column="supp" property="supp" />
+        <result column="supp_code" property="suppCode" />
+        <result column="be_batch" property="beBatch" />
+        <result column="dead_time" property="deadTime" />
+        <result column="dead_warn" property="deadWarn" />
+        <result column="source" property="source" />
+        <result column="inspect" property="inspect" />
+        <result column="danger" property="danger" />
+
         <result column="status" property="status" />
         <result column="io_status" property="ioStatus" />
-        <result column="memo" property="memo" />
+
         <result column="modi_time" property="modiTime" />
         <result column="modi_user" property="modiUser" />
         <result column="appe_time" property="appeTime" />
         <result column="appe_user" property="appeUser" />
-
+        <result column="memo" property="memo" />
+        <result column="owner" property="owner" />
+        <result column="payment" property="payment" />
+        <result column="uuid" property="uuid" />
     </resultMap>
 
 </mapper>
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index cd06b5a..13479b9 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -205,7 +205,7 @@
     </select>
 
     <select id="selectByWrkNo" resultMap="BaseResultMap">
-        select top 1 * from dbo.asr_wrk_mast where wrk_no = #{wrkNo} order by io_pri desc,io_time,wrk_no asc
+        select top 1 * from dbo.asr_wrk_mast where wrk_no = #{wrkNo} and (wrk_sts = 13 or wrk_sts = 2) order by io_pri desc,io_time,wrk_no asc
     </select>
     <select id="selectCrn5Task2" resultMap="BaseResultMap">
         select * from dbo.asr_wrk_mast where wrk_sts=1 and io_type=1 and crn_no=5 order by io_pri desc,io_time,wrk_no ASC
diff --git a/src/main/resources/mapper/WrkMastStaMapper.xml b/src/main/resources/mapper/WrkMastStaMapper.xml
index 1a5a379..8027a6b 100644
--- a/src/main/resources/mapper/WrkMastStaMapper.xml
+++ b/src/main/resources/mapper/WrkMastStaMapper.xml
@@ -21,6 +21,11 @@
         <result column="wrk_no2" property="wrkNo2"/>
         <result column="matnr1" property="matnr1"/>
         <result column="matnr2" property="matnr2"/>
+        <result column="type2" property="type2"/>
+        <result column="batch" property="batch"/>
+        <result column="batch2" property="batch2"/>
+        <result column="anfme" property="anfme"/>
+        <result column="anfme2" property="anfme2"/>
 
     </resultMap>
     <select id="selectByRgvNoandWrkNo" resultMap="BaseResultMap">

--
Gitblit v1.9.1