From 191f08b7a74c461d1914652aed737888967a69f1 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期四, 19 十月 2023 16:51:38 +0800
Subject: [PATCH] #地图增加分布式锁

---
 src/main/java/com/zy/core/thread/SteThread.java |   47 +++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 45 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/SteThread.java b/src/main/java/com/zy/core/thread/SteThread.java
index f04cc86..72dbc49 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,14 +179,20 @@
                 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));
+//                steProtocol.setCrnAllowRun(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()));
 
                 //璇诲彇绌挎杞﹁澶囦俊鎭紝鎻愪緵鏌ヨ
                 OperateResultExOne<byte[]> result1 = siemensS7Net.Read("V732", (short) 16);
                 if (result1.IsSuccess) {
-                    boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, 0, 128);
+                    boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, 0, 15);
                     steProtocol.setLiftErr(status[0]);
                     steProtocol.setInFetchErr(status[2]);
                     steProtocol.setOutFetchErr(status[3]);
@@ -210,6 +220,9 @@
                     steProtocol.setForcedTravel(status[68]);
                     steProtocol.setDemoMode(status[69]);
                     steProtocol.setBrushConnect(status[70]);
+//                    if (status[70]){
+//                        steProtocol.setChargeStatus((short)1);
+//                    }
                     steProtocol.setTaskManualForbid(status[71]);
                     steProtocol.setOnlineManualForbid(status[72]);
                     steProtocol.setDevpEmergency(status[73]);
@@ -286,10 +299,40 @@
             News.error("绌挎杞﹀啓鍏ュ懡浠や负绌�");
             return false;
         }
+        //鍒ゆ柇灏忚溅鏄惁鍦ㄥ厖鐢�
+        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
+        if (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;
+        }else if (!devpThread.charge0){
+            // 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;
         // 寮�濮嬩换鍔�
         if (!command.getComplete()) {
+            //缁勭粐浠诲姟鍓嶏紝鍏堟竻绌哄啓浠诲姟纭浣嶏紝浠ュ強浠诲姟瀹屾垚纭浣�
+            siemensS7Net.Write("V2000.0", false);
+            siemensS7Net.Write("V2000.1", false);
             // 1.浠诲姟鍙�
             OperateResult result0 = siemensS7Net.Write("V998", command.getTaskNo().shortValue());
             try {

--
Gitblit v1.9.1