From bdf490f12fa38c99593fdace907fa5379cc04413 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期日, 07 一月 2024 15:17:42 +0800
Subject: [PATCH] #输送报警对接+回退

---
 src/main/java/com/zy/core/model/protocol/StaProtocol.java   |   25 ++++++++
 src/main/java/com/zy/core/thread/BarcodeThread.java         |    2 
 src/main/java/com/zy/core/model/DevpSlave.java              |    2 
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   60 +++++++++++++++-----
 src/main/java/com/zy/asrs/mapper/WrkMastMapper.java         |    2 
 src/main/resources/mapper/WrkMastMapper.xml                 |    5 +
 src/main/java/com/zy/common/model/LocTypeDto.java           |   14 +---
 src/main/java/com/zy/core/thread/SiemensDevpThread.java     |   53 ++++++++++++++---
 src/main/resources/application.yml                          |    9 +++
 9 files changed, 135 insertions(+), 37 deletions(-)

diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
index c6318bf..a1277f6 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -109,7 +109,7 @@
 
     Integer selectExistInEmpty();
 
-    @Select("select * from asr_wrk_mast  where crn_no=#{crnNo} and wrk_sts=11 and io_type>100 order by io_pri desc,io_time desc,wrk_no ASC")
+//    @Select("select * from asr_wrk_mast  where crn_no=#{crnNo} and wrk_sts=11 and io_type>100 order by io_pri desc,io_time desc,wrk_no ASC")
     public List<WrkMast> selectWrkIoType(@Param("crnNo") Integer crnNo);
 
     public  List<WrkMast> selectWaitPakIn(@Param("wrkNos")List<Integer> wrkNos);
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 16e6874..4b31eb4 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -90,6 +90,8 @@
     @Value("${wms.url}")
     private String wmsUrl;
 
+    public short wrkNo = 10000;
+
     /**
      * 缁勬墭
      * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2
@@ -116,23 +118,51 @@
                     continue;
                 }
                 String barcode = barcodeThread.getBarcode();
-                //9998閫�鍥烇紝9996绌烘澘
-                if (!Cools.isEmpty(barcode) && (staProtocol.getWorkNo() != 9998 || staProtocol.getWorkNo() != 9996)) {
-//                    log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
-                    if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
-                        String errorMsg = "15绔欐壂鐮佸け璐ワ紝宸查��鍥�14绔�";
-                        staProtocol.setWorkNo((short) 9998);
-                        staProtocol.setStaNo((short) 14);
-                        devpThread.setPakMk(staProtocol.getSiteId(), false);
-                        // led 寮傚父鏄剧ず
-                        if (ledThread != null) {
-                            News.error(methodName + ":鎵爜澶辫触锛岃閲嶈瘯");
-                            MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
-                        }
+                // 灏哄妫�娴嬪紓甯�
+                boolean back = false;
+                String errMsg = "";
+                if (staProtocol.isFrontErr()) {
+                    errMsg = "鍓嶈秴闄�";
+                    back = true;
+                }
+                if (!back && staProtocol.isBackErr()) {
+                    errMsg = "鍚庤秴闄�";
+                    back = true;
+                }
+                if (!back && staProtocol.isHighErr()) {
+                    errMsg = "楂樿秴闄�";
+                    back = true;
+                }
+                if (!back && staProtocol.isLeftErr()) {
+                    errMsg = "宸﹁秴闄�";
+                    back = true;
+                }
+                if (!back && staProtocol.isRightErr()) {
+                    errMsg = "鍙宠秴闄�";
+                    back = true;
+                }
+                if (!back && staProtocol.isWeightErr()) {
+                    errMsg = "瓒呴噸";
+                    back = true;
+                }
+                if (!back && staProtocol.isBarcodeErr()) {
+                    errMsg = "鎵爜澶辫触";
+                    back = true;
+                }
+                // 閫�鍥�
+                if (back) {
+//                        News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg);
+                    if (!staProtocol.isLoading()){
                         continue;
                     }
-                } else {
-                    continue;
+                    if (!staProtocol.isPakMk()) {
+                        continue;
+                    }
+                    staProtocol.setWorkNo(wrkNo);
+                    wrkNo++;
+                    staProtocol.setStaNo(inSta.getBackSta().shortValue());
+                    devpThread.setPakMk(staProtocol.getSiteId(), false);
+                    MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                 }
 
                 // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
diff --git a/src/main/java/com/zy/common/model/LocTypeDto.java b/src/main/java/com/zy/common/model/LocTypeDto.java
index 20382a2..6e4ccff 100644
--- a/src/main/java/com/zy/common/model/LocTypeDto.java
+++ b/src/main/java/com/zy/common/model/LocTypeDto.java
@@ -29,15 +29,11 @@
     }
 
     public LocTypeDto(StaProtocol staProtocol) {
-//        if (staProtocol.isHigh() == staProtocol.isLow()) {
-//            throw new CoolException("plc楂樹綆妫�娴嬪紓甯�");
-//        }
-//        if (staProtocol.isLow()) {
-//            this.locType1 = 1; // 浣庡簱浣�
-//        } else {
-//            this.locType1 = 2; // 楂樺簱浣�
-//        }
-        this.locType1 = 1;
+        if (!staProtocol.isWeight()) {
+            this.locType1 = 1; // 杞昏揣
+        } else {
+            this.locType1 = 2; // 閲嶈揣
+        }
     }
 
     /**
diff --git a/src/main/java/com/zy/core/model/DevpSlave.java b/src/main/java/com/zy/core/model/DevpSlave.java
index 4b78c42..cda7ed3 100644
--- a/src/main/java/com/zy/core/model/DevpSlave.java
+++ b/src/main/java/com/zy/core/model/DevpSlave.java
@@ -36,6 +36,8 @@
 
         private Integer led;
 
+        private Integer backSta;
+
     }
 
 }
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 5699c2a..ccc3096 100644
--- a/src/main/java/com/zy/core/model/protocol/StaProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -46,6 +46,8 @@
     // 浣�
     private boolean low;
 
+    private boolean weight;
+
     // 閿佸畾鏍囪
     private boolean pakMk = true;
 
@@ -58,6 +60,29 @@
     //鍏佽绌烘墭鍑哄簱
     private String allowEmptyOut;
 
+    // 澶栧舰妫�娴� ------------------------------------------------------------------------
+
+    // 鍓嶈秴闄�
+    private boolean frontErr = false;
+
+    // 鍚庤秴闄�
+    private boolean backErr = false;
+
+    // 楂樿秴闄�
+    private boolean highErr = false;
+
+    // 宸﹁秴闄�
+    private boolean leftErr = false;
+
+    // 鍙宠秴闄�
+    private boolean rightErr = false;
+
+    // 瓒呴噸
+    private boolean weightErr = false;
+
+    // 鎵爜澶辫触
+    private boolean barcodeErr = false;
+
     public BasDevp toSqlModel(){
         BasDevp basDevp = new BasDevp();
         basDevp.setDevNo(siteId);
diff --git a/src/main/java/com/zy/core/thread/BarcodeThread.java b/src/main/java/com/zy/core/thread/BarcodeThread.java
index e72bce3..8c633f1 100644
--- a/src/main/java/com/zy/core/thread/BarcodeThread.java
+++ b/src/main/java/com/zy/core/thread/BarcodeThread.java
@@ -37,7 +37,7 @@
         this.barcode.delete(0, this.barcode.length());
         this.barcode.append(barcode);
         if(!Cools.isEmpty(barcode)) {
-            News.info(methodName + ":{}鍙锋潯鐮佸櫒锛屾绱㈡暟鎹細{}", slave.getId(), this.barcode);
+//            News.info(methodName + ":{}鍙锋潯鐮佸櫒锛屾绱㈡暟鎹細{}", slave.getId(), this.barcode);
             JSONObject jsonObject = new JSONObject();
             jsonObject.put("time", DateUtils.convert(new Date(), DateUtils.yyyyMMddHHmmss_F));
             jsonObject.put("barcode", barcode);
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 11e0670..3ef813e 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -63,6 +63,15 @@
         add(308);add(309);add(310);add(311);
         add(312);
     }};
+    public static final ArrayList<Integer> staNosErr1 = new ArrayList<Integer>() {{
+        add(101); add(103); add(105);
+    }};
+    public static final ArrayList<Integer> staNosErr2 = new ArrayList<Integer>() {{
+        add(201); add(203); add(205);
+    }};
+    public static final ArrayList<Integer> staNosErr3 = new ArrayList<Integer>() {{
+        add(301); add(303); add(305);
+    }};
     private ArrayList<Integer> getStaNo() {
         switch (slave.getId()) {
             case 1:
@@ -71,6 +80,18 @@
                 return staNos2;
             case 3:
                 return staNos3;
+            default:
+                throw new CoolException("鑾峰彇绔欑偣澶辫触锛�");
+        }
+    }
+    private ArrayList<Integer> getStaNoErr() {
+        switch (slave.getId()) {
+            case 1:
+                return staNosErr1;
+            case 2:
+                return staNosErr2;
+            case 3:
+                return staNosErr3;
             default:
                 throw new CoolException("鑾峰彇绔欑偣澶辫触锛�");
         }
@@ -173,9 +194,7 @@
 //                    System.out.println(i);
                 }
                 Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
-//                if(siteId==206){
-//                    System.out.println(1);
-//                }
+
                 StaProtocol staProtocol = station.get(siteId);
                 if (null == staProtocol) {
                     staProtocol = new StaProtocol();
@@ -195,10 +214,28 @@
                 staProtocol.setFullPlt(status[5]);  // 婊℃墭鐩�
                 staProtocol.setHigh(status[6]);     // 楂樺簱浣�
                 staProtocol.setLow(status[7]);      // 浣庡簱浣�
-
+                staProtocol.setWeight(status[8]);  //鏄惁涓洪噸璐�
                 if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
                     staProtocol.setPakMk(true);
                 }
+            }
+        }
+        //澶栧舰妫�娴�
+        ArrayList<Integer> staNoErrs = getStaNoErr();
+        int staNoErrsSize = staNoErrs.size();
+        OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.800", (short) (staNoErrsSize*8));
+        if (resultErr.IsSuccess){
+            for (int i = 0;i<3;i++){
+                Integer siteId = staNoErrs.get(i); // 绔欑偣缂栧彿
+                boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, i*4+2, 1);
+                StaProtocol staProtocol = station.get(siteId);
+                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]);
             }
         }
 
@@ -285,16 +322,10 @@
             return;
         }
         int index = staNos.indexOf(staProtocol.getSiteId());
-//        int[] array = new int[2];
-//        array[0] = staProtocol.getWorkNo();
-//        array[1] = staProtocol.getStaNo();
+
         OperateResult write1 = siemensS7Net.Write("DB100." + (index*6+4),staProtocol.getStaNo());
         OperateResult write = siemensS7Net.Write("DB100." + index*6, staProtocol.getWorkNo().intValue());
 
-
-//        OperateResult write = siemensS7Net.Write("DB100." + index*2, staProtocol.getWorkNo());    // 宸ヤ綔鍙�
-//        Thread.sleep(500);
-//        OperateResult write1 = siemensS7Net.Write("DB101." + index*2, staProtocol.getStaNo());    // 鐩爣绔�
 
         if (!write.IsSuccess && !write1.IsSuccess) {
             staProtocol = station.get(staProtocol.getSiteId());
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 9338e0d..8dd92af 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -213,16 +213,19 @@
       staNo: 101
       barcode: ${wcs-slave.barcode[0].id}
       led: ${wcs-slave.led[0].id}
+      backSta: 100
       # 鍏ュ簱鍙�2
     inSta[1]:
       staNo: 103
       barcode: ${wcs-slave.barcode[1].id}
       led: ${wcs-slave.led[1].id}
+      backSta: 102
     # 鍏ュ簱鍙�3
     inSta[2]:
       staNo: 105
       barcode: ${wcs-slave.barcode[2].id}
       led: ${wcs-slave.led[2].id}
+      backSta: 104
     # 绌烘澘鍏ュ簱鍙�1
     emptyInSta[0]:
       staNo: 101
@@ -265,16 +268,19 @@
       staNo: 201
       barcode: ${wcs-slave.barcode[3].id}
       led: ${wcs-slave.led[3].id}
+      backSta: 200
       # 鍏ュ簱鍙�2
     inSta[1]:
       staNo: 203
       barcode: ${wcs-slave.barcode[4].id}
       led: ${wcs-slave.led[4].id}
+      backSta: 202
     # 鍏ュ簱鍙�3
     inSta[2]:
       staNo: 205
       barcode: ${wcs-slave.barcode[5].id}
       led: ${wcs-slave.led[5].id}
+      backSta: 204
     # 绌烘澘鍏ュ簱鍙�1
     emptyInSta[0]:
       staNo: 201
@@ -317,16 +323,19 @@
       staNo: 301
       barcode: ${wcs-slave.barcode[6].id}
       led: ${wcs-slave.led[6].id}
+      backSta: 300
       # 鍏ュ簱鍙�2
     inSta[1]:
       staNo: 303
       barcode: ${wcs-slave.barcode[7].id}
       led: ${wcs-slave.led[7].id}
+      backSta: 302
     # 鍏ュ簱鍙�3
     inSta[2]:
       staNo: 305
       barcode: ${wcs-slave.barcode[8].id}
       led: ${wcs-slave.led[8].id}
+      backSta: 304
     # 绌烘澘鍏ュ簱鍙�1
     emptyInSta[0]:
       staNo: 301
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 0b09bcf..b0a5e47 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -194,4 +194,9 @@
         and wrk_sts = 2 and io_type in (1,10,53,57)
         order by io_pri desc,io_time desc,wrk_no ASC
     </select>
+    <select id="selectWrkIoType" resultMap="BaseResultMap">
+        select * from asr_wrk_mast
+        where crn_no=#{crnNo} and wrk_sts=11 and io_type>100
+        order by io_pri desc,io_time desc,wrk_no ASC
+    </select>
 </mapper>

--
Gitblit v1.9.1