From 76d3fff7c27d020fd7110e4a5e84cc87e3fe7e43 Mon Sep 17 00:00:00 2001
From: lsh <lsh123456>
Date: 星期五, 03 三月 2023 15:45:32 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/controller/SiteController.java    |    4 
 src/main/java/com/zy/core/thread/SiemensCrnThread.java      |    4 
 src/main/java/com/zy/core/thread/SteThread.java             |   27 ++++++
 src/main/java/com/zy/core/model/protocol/SteProtocol.java   |    5 +
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  112 +++++++++++++++++++++++++--
 src/main/java/com/zy/asrs/mapper/WrkMastMapper.java         |    2 
 src/main/java/com/zy/core/enums/SteTaskModeType.java        |    4 
 src/main/java/com/zy/core/MainProcess.java                  |    9 ++
 src/main/java/com/zy/core/thread/SiemensDevpThread.java     |   51 +++++++++++-
 src/main/resources/application.yml                          |    6 
 10 files changed, 196 insertions(+), 28 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/SiteController.java b/src/main/java/com/zy/asrs/controller/SiteController.java
index a39ae86..941bc9f 100644
--- a/src/main/java/com/zy/asrs/controller/SiteController.java
+++ b/src/main/java/com/zy/asrs/controller/SiteController.java
@@ -63,8 +63,8 @@
             SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
             Map<String, Object> map1 = new HashMap<>();
             map1.put("floor", 1);
-            map1.put("modeVal", devpThread.charge0);
-            map1.put("modeDesc", devpThread.charge0?"鍏呯數涓�":"鍏抽棴");
+            map1.put("modeVal", !devpThread.charge0);
+            map1.put("modeDesc", !devpThread.charge0?"鍏呯數涓�":"鍏抽棴");
             res.add(map1);
             Map<String, Object> map2 = new HashMap<>();
             map2.put("floor", 2);
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
index 5de2551..08d4b5f 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -91,4 +91,6 @@
 
     WrkMast selectPakoutWorkingByGroupLoc(@Param("locNos")List<String> locNos);
 
+    List<WrkMast> selectAll(@Param("staNo")Integer staNo);
+
 }
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 6407cd7..4008615 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -4,6 +4,7 @@
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
+import com.core.common.SpringUtils;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.mapper.*;
@@ -1835,6 +1836,22 @@
                             }
                         }
                         // 绉诲簱 ===>> 鍫嗗灈鏈烘惉鑷崇洰鏍囧簱浣嶇粍 瀹屾垚
+                    } else if (wrkMast.getWrkSts() == 16) {
+                        // 16.鍚婅溅鍑哄簱涓� ==> 17.鍑哄簱瀹屾垚
+                        wrkMast.setWrkSts(17L);
+                        Date now = new Date();
+                        wrkMast.setCrnEndTime(now);
+                        wrkMast.setModiTime(now);
+                        LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
+                        Integer outCrnNo = locMastService.getOutCrnNo(locMast);
+                        wrkMast.setCrnNo(outCrnNo);
+                        // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
+                        if (wrkMastMapper.updateById(wrkMast) > 0) {
+                            // 鍫嗗灈鏈哄浣�
+                            crnThread.setResetFlag(true);
+                        } else {
+                            News.error("淇敼宸ヤ綔妗g姸鎬� 16.鍚婅溅鍑哄簱涓� ==> 17.鍑哄簱瀹屾垚 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                        }
                     }
                 }
             }
@@ -1879,15 +1896,17 @@
                                 } else {
                                     steThread.setResetFlag(true);
                                 }
-                            } else if (wrkCharge.getWrkSts() == 29) {
-                                // 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數
-                                wrkCharge.setWrkSts(30L);
-                                if (!wrkChargeService.updateById(wrkCharge)) {
-                                    News.error("淇敼鍏呯數浠诲姟鐘舵�� 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
-                                } else {
-                                    steThread.setResetFlag(true);
-                                }
-                            } else if (wrkCharge.getWrkSts() == 32) {
+                            }
+//                            else if (wrkCharge.getWrkSts() == 29) {
+//                                // 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數
+//                                wrkCharge.setWrkSts(30L);
+//                                if (!wrkChargeService.updateById(wrkCharge)) {
+//                                    News.error("淇敼鍏呯數浠诲姟鐘舵�� 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
+//                                } else {
+//                                    steThread.setResetFlag(true);
+//                                }
+//                            }
+                            else if (wrkCharge.getWrkSts() == 32) {
                                 // 32.灏忚溅璧拌 ===>> 33.灏忚溅寰呮惉
                                 wrkCharge.setWrkSts(33L);
                                 if (!wrkChargeService.updateById(wrkCharge)) {
@@ -2486,7 +2505,7 @@
                     SteChargeType steCharge = null;
                     do {
                         String locNo;
-                        if (!devpThread.charge0) {
+                        if (devpThread.charge0) {
                             SteChargeType first = SteChargeType.FIRST;
                             locNo = first.locNo;
                             if (basSteService.hasCarOfLocNo(locNo) == null
@@ -2582,6 +2601,7 @@
             return;
         }
         if (steProtocol.getCharge() > Float.parseFloat(basSte.getChargeLine())) {
+            MessageQueue.offer(SlaveType.Devp, 1, new Task(3, 999));//鍏呯數鏍囪
             wrkCharge.setWrkSts(30L);
             wrkChargeMapper.updateById(wrkCharge);
             return;
@@ -2644,7 +2664,7 @@
                     SteCommand steCommand = new SteCommand();
                     steCommand.setSteNo(wrkCharge.getSteNo()); // 绌挎杞︾紪鍙�
                     steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙�
-                    steCommand.setTaskMode(SteTaskModeType.GO_ORIGIN);  // 鍘诲彸绔�
+                    steCommand.setTaskMode(SteTaskModeType.BACK_ORIGIN);  // 鍘诲彸绔�
 
                     steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue(), false).shortValue());
                     steCommand.setBay(steProtocol.getBay());
@@ -2675,6 +2695,19 @@
                     wrkCharge.setWrkSts(29L);
                     if (!wrkChargeService.updateById(wrkCharge)) {
                         News.error("淇敼鍏呯數浠诲姟鐘舵�� 28.鍏呯數灏辩华 ===>> 29.寮�濮嬪厖鐢� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
+                    }
+                }
+            } else if (wrkCharge.getWrkSts() == 29) {
+                Float idle2 = steProtocol.isIdle2();
+                String chargeLine = SpringUtils.getBean(BasSteService.class).selectById(1).getChargeLine();
+                if (idle2<(Float.parseFloat(chargeLine)+2)){
+                    MessageQueue.offer(SlaveType.Devp, 1, new Task(3, 666));//鍏呯數鏍囪
+                }else if (idle2 > 70f){
+                    MessageQueue.offer(SlaveType.Devp, 1, new Task(3, 999));//鍏呯數鏍囪
+                    // 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數
+                    wrkCharge.setWrkSts(30L);
+                    if (!wrkChargeService.updateById(wrkCharge)) {
+                        News.error("淇敼鍏呯數浠诲姟鐘舵�� 29.寮�濮嬪厖鐢� ===>> 30.瀹屾垚鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo());
                     }
                 }
             }
@@ -3201,6 +3234,63 @@
         }
 
     }
+    /**
+     * 鍑哄叆搴撴ā寮忓垏鎹�
+     */
+    public synchronized void outAndIn() {
+        try {
+            // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+            for (DevpSlave devp : slaveProperties.getDevp()) {
+                for (DevpSlave.Sta inSta : devp.getInSta()) {
+                    Thread.sleep(500);
+                    boolean a=true,b=true;
+                    List<WrkMast> wrkMasts = wrkMastMapper.selectAll(inSta.getStaNo());
+                    if (Cools.isEmpty(wrkMasts)){
+                        b=false;
+                    }else {
+                        for (WrkMast wrkMast:wrkMasts){
+                            if (wrkMast.getSourceStaNo()!=wrkMast.getStaNo()){
+                                a=false;
+                                break;
+                            }
+                        }
+                    }
+                    switch (inSta.getStaNo()) {
+                        case 102://1F
+                            if (a && b){
+                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 11));
+                            }else if (b){
+                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 12));
+                            }else {
+                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 10));
+                            }
+                            break;
+                        case 202://2F
+                            if (a && b){
+                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 21));
+                            }else if (b){
+                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 22));
+                            }else {
+                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 20));
+                            }
+                            break;
+                        case 302://3F
+                            if (a && b){
+                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 31));
+                            }else if (b){
+                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 32));
+                            }else {
+                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, 30));
+                            }
+                            break;
+                    }
+                }
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
 
 
 }
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index a54f050..c5895a9 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -22,6 +22,8 @@
     private MainServiceImpl mainService;
     // 鎵�灞炵嚎绋�
     private Thread thread;
+    // 棰戠巼
+    private int i = 0;
 
     /**
      * =====>>  寮�濮嬪伐浣�
@@ -70,6 +72,13 @@
                     // 绌挎杞� ===>> 灏忚溅鐢甸噺妫�娴嬪厖鐢�
                     mainService.loopSteCharge();
                     mainService.executeSteCharge();
+                    //鍑哄叆搴撴ā寮�
+                    i++;
+                    if (i > 1) {
+                        mainService.outAndIn();
+                        i = 0;
+                    }
+
                     // 闂撮殧
                     Thread.sleep(200);
                     // 绌挎杞� ===>> 灏忚溅澶嶄綅鑷冲緟鏈哄簱浣�
diff --git a/src/main/java/com/zy/core/enums/SteTaskModeType.java b/src/main/java/com/zy/core/enums/SteTaskModeType.java
index b1b9d39..02930f9 100644
--- a/src/main/java/com/zy/core/enums/SteTaskModeType.java
+++ b/src/main/java/com/zy/core/enums/SteTaskModeType.java
@@ -96,9 +96,9 @@
 
     public static SteTaskModeType findOriginByLoc(Integer row) {
         if (Utils.FIRST_GROUP_ROW_LIST.contains(row)) {
-            return SteTaskModeType.BACK_ORIGIN;
-        } else if (Utils.SECOND_GROUP_ROW_LIST.contains(row)) {
             return SteTaskModeType.GO_ORIGIN;
+        } else if (Utils.SECOND_GROUP_ROW_LIST.contains(row)) {
+            return SteTaskModeType.BACK_ORIGIN;
         } else {
             throw new CoolException("瑙f瀽绌挎杞﹀師鐐瑰畾浣嶅け璐�");
         }
diff --git a/src/main/java/com/zy/core/model/protocol/SteProtocol.java b/src/main/java/com/zy/core/model/protocol/SteProtocol.java
index a7e6571..5ed0d12 100644
--- a/src/main/java/com/zy/core/model/protocol/SteProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/SteProtocol.java
@@ -536,6 +536,11 @@
         }
     }
 
+    // 灏忚溅鐢甸噺
+    public Float isIdle2() {
+        return this.charge;
+    }
+
     // 鏄惁澶勪簬鎶ヨ鐘舵��
     public Boolean isAlarm() {
         return this.alarm > 1;
diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index 75e9700..9ce7789 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -226,7 +226,7 @@
             News.error("鍫嗗灈鏈哄啓鍏ュ懡浠や负绌�");
             return false;
         }
-        siemensNet.Write("DB100.18", (short) 0);
+//        siemensNet.Write("DB100.18", (short) 0);
 //        convertRow(command);
         command.setCrnNo(slave.getId());
         short[] array = new short[10];
@@ -258,11 +258,9 @@
         OperateResult result = siemensNet.Write("DB100.0", array);
 
         if (command.getAckFinish() == 0) {
-            if (result.IsSuccess) {
                 short commandFinish = 1;
                 Thread.sleep(300);
                 result = siemensNet.Write("DB100.18", commandFinish);
-            }
         }
 
         try {
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 4fc1742..718f5af 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -8,6 +8,7 @@
 import com.core.common.Cools;
 import com.core.common.DateUtils;
 import com.core.common.SpringUtils;
+import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ;
 import com.zy.asrs.entity.BasDevp;
 import com.zy.asrs.service.BasDevpService;
 import com.zy.core.DevpThread;
@@ -75,6 +76,10 @@
                     // 鍐欐暟鎹� ID+鐩爣绔�
                     case 2:
                         write((StaProtocol)task.getData());
+                        break;
+                    // 鍑哄叆搴撴ā寮�
+                    case 3:
+                        write3((int)task.getData());
                         break;
                     default:
                         break;
@@ -150,10 +155,10 @@
 
         //璇绘潯鐮�
         Thread.sleep(100);
-        OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB100.150",(short)31);
+        OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB100.150",(short)24);
         if (result2.IsSuccess) {
-            for (int i = 0; i < barcodeSize; i++) {
-                String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*16,15, "UTF-8");
+            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 + 1);
                 if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
                     barcodeThread.setBarcode(barcode);
@@ -163,12 +168,17 @@
 
         // 鍏呯數淇″彿浣�
         Thread.sleep(50);
-        OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB102.128", (short)1);
+        OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB102.109", (short)1);
         if (result3.IsSuccess) {
             boolean[] status = siemensS7Net.getByteTransform().TransBool(result3.Content, 0, 1);
             charge0 = status[0];
-            charge1 = status[1];
-            charge2 = status[2];
+        }
+        // 鍏呯數淇″彿浣�
+        Thread.sleep(50);
+        OperateResultExOne<byte[]> result31 = siemensS7Net.Read("DB100.201", (short)1);
+        if (result3.IsSuccess) {
+            boolean[] status = siemensS7Net.getByteTransform().TransBool(result31.Content, 0, 1);
+            charge1 = status[0];
         }
 
         // 澶栧舰妫�娴� - 102
@@ -225,6 +235,35 @@
 //            News.error("璇诲彇杈撻�佺嚎plc鐘舵�佷俊鎭け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
         }
     }
+    /**
+     * 鍐欏叆 ID+鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏�
+     */
+    private void write3(int outAndIn) throws InterruptedException{
+        if (Cools.isEmpty(outAndIn)) {
+            return;
+        }
+        if (outAndIn==666){
+            siemensS7Net.Write("DB100.200", (short) 1);
+        }else if (outAndIn==999){
+            siemensS7Net.Write("DB100.200", (short) 0);
+        }else {
+            String Db=null;
+            if (outAndIn<20){
+                Db="DB100.180";
+            }else if (outAndIn<30){
+                Db="DB100.182";
+            }else {
+                Db="DB100.184";
+            }
+            if (outAndIn == 11 || outAndIn == 21 || outAndIn == 31){
+                siemensS7Net.Write(Db, (byte) 1);    // 鍏ュ簱
+            }else if (outAndIn == 12 || outAndIn == 22 || outAndIn == 32){
+                siemensS7Net.Write(Db, (byte) 2);    // 鍑哄簱
+            }else if (outAndIn == 10 || outAndIn == 20 || outAndIn == 30){
+                siemensS7Net.Write(Db, (byte) 0);    // 鍑哄簱
+            }
+        }
+    }
 
     /**
      * 鍐欏叆 ID+鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏�
diff --git a/src/main/java/com/zy/core/thread/SteThread.java b/src/main/java/com/zy/core/thread/SteThread.java
index 823247a..e6786c8 100644
--- a/src/main/java/com/zy/core/thread/SteThread.java
+++ b/src/main/java/com/zy/core/thread/SteThread.java
@@ -11,12 +11,16 @@
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.BasSte;
 import com.zy.asrs.entity.BasSteOpt;
+import com.zy.asrs.entity.WrkCharge;
 import com.zy.asrs.service.BasSteOptService;
 import com.zy.asrs.service.BasSteService;
+import com.zy.common.model.enums.WrkChargeType;
+import com.zy.core.DevpThread;
 import com.zy.core.News;
 import com.zy.core.ThreadHandler;
 import com.zy.core.cache.MessageQueue;
 import com.zy.core.cache.OutputQueue;
+import com.zy.core.cache.SlaveConnection;
 import com.zy.core.enums.SlaveType;
 import com.zy.core.enums.SteStatusType;
 import com.zy.core.model.SteSlave;
@@ -175,7 +179,13 @@
                 steProtocol.setCrnStopRun(siemensS7Net.getByteTransform().TransInt16(result.Content, 38));
                 steProtocol.setCrnStopFork(siemensS7Net.getByteTransform().TransInt16(result.Content, 40));
                 steProtocol.setCrnAllowRun(siemensS7Net.getByteTransform().TransInt16(result.Content, 42));
-                steProtocol.setChargeStatus(siemensS7Net.getByteTransform().TransInt16(result.Content, 44));
+                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+                if (!devpThread.charge0 || devpThread.charge1){
+                    steProtocol.setChargeStatus((short)1);
+                }else {
+                    steProtocol.setChargeStatus((short)0);
+                }
+
 
                 OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
 
@@ -286,6 +296,21 @@
             News.error("绌挎杞﹀啓鍏ュ懡浠や负绌�");
             return false;
         }
+        //鍒ゆ柇灏忚溅鏄惁鍦ㄥ厖鐢�
+        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+        if (!devpThread.charge0 || devpThread.charge1){
+            // led 寮傚父鏄剧ず
+            LedThread ledThread1 = (LedThread) SlaveConnection.get(SlaveType.Led, 1);
+            LedThread ledThread2 = (LedThread) SlaveConnection.get(SlaveType.Led, 1);
+            LedThread ledThread3 = (LedThread) SlaveConnection.get(SlaveType.Led, 1);
+            if (ledThread1 != null && ledThread2 != null && ledThread3 != null) {
+                MessageQueue.offer(SlaveType.Led, 1, new Task(3, "绌挎杞︽鍦ㄥ厖鐢�"));
+                MessageQueue.offer(SlaveType.Led, 2, new Task(3, "绌挎杞︽鍦ㄥ厖鐢�"));
+                MessageQueue.offer(SlaveType.Led, 3, new Task(3, "绌挎杞︽鍦ㄥ厖鐢�"));
+            }
+            News.error("绌挎杞︽鍦ㄥ厖鐢�");
+            return false;
+        }
         command.setSteNo(slave.getId());
         OperateResult result = null;
         // 寮�濮嬩换鍔�
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index d8701c4..cdfc724 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -183,21 +183,21 @@
    # LED1
   led[0]:
     id: 1
-    ip: 10.10.10.205
+    ip: 10.10.10.231
     port: 5005
     devpPlcId: ${wcs-slave.devp[0].id}
     staArr: 102
   # LED1
   led[1]:
     id: 2
-    ip: 10.10.10.207
+    ip: 10.10.10.232
     port: 5005
     devpPlcId: ${wcs-slave.devp[0].id}
     staArr: 202
   # LED1
   led[2]:
     id: 3
-    ip: 10.10.10.206
+    ip: 10.10.10.233
     port: 5005
     devpPlcId: ${wcs-slave.devp[0].id}
     staArr: 302

--
Gitblit v1.9.1