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/model/protocol/SteProtocol.java |  332 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 330 insertions(+), 2 deletions(-)

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 90f2103..5ed0d12 100644
--- a/src/main/java/com/zy/core/model/protocol/SteProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/SteProtocol.java
@@ -1,14 +1,20 @@
 package com.zy.core.model.protocol;
 
+import com.core.common.Cools;
+import com.core.common.SpringUtils;
 import com.zy.asrs.entity.BasSte;
+import com.zy.asrs.service.BasSteService;
+import com.zy.core.News;
 import com.zy.core.enums.SteHisTaskStatusType;
 import com.zy.core.enums.SteLocaType;
 import com.zy.core.enums.SteStatusType;
 import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
 
 /**
  * Created by vincent on 2020/8/7
  */
+@Slf4j
 @Data
 public class SteProtocol {
 
@@ -36,7 +42,7 @@
     /**
      * 浠诲姟鍙�
      */
-    public Integer taskNo = 0;
+    public Short taskNo = 0;
 
     /**
      * 姝e湪鎵ц浠诲姟
@@ -64,6 +70,12 @@
      * 鐢垫睜鐢甸噺
      */
     public Float charge = 0.0F;
+
+    public void setCharge(Float charge) {
+        if (charge >= 0) {
+            this.charge = charge;
+        }
+    }
 
     /**
      * 婊$數
@@ -180,6 +192,269 @@
      */
     public Short crnAllowRun;
 
+    /**
+     * 鍏呯數鐘舵��  1锛氬湪鍏呯數锛�0锛氫笉鍦ㄥ厖鐢�
+     */
+    private Short chargeStatus;
+
+    // 鍏ュ簱鍙栫┖
+    private Boolean inEmpty;
+
+    // 鍑哄簱鍙栫┖
+    private Boolean outEmpty;
+
+    // 绌挎杞﹀紓甯� ------------------------------------------------------------------------
+
+    /**
+     * 0.鍗囬檷瓒呮椂鎶ヨ
+     */
+    private boolean liftErr;
+
+    /**
+     * 2.鍏ュ簱鍙栫┖鎶ヨ
+     */
+    private boolean inFetchErr;
+
+    /**
+     * 3.鍑哄簱鍙栫┖鎶ヨ
+     */
+    private boolean outFetchErr;
+
+    /**
+     * 4.闃叉挒淇濇姢
+     */
+    private boolean antiErr;
+
+    /**
+     * 5.鍗囬檷鎺ヨ繎寮�鍏虫晠闅�
+     */
+    private boolean liftSwitchErr;
+
+    /**
+     * 6.杞ㄩ亾妫�娴嬫姤璀�
+     */
+    private boolean trackErr;
+
+    /**
+     * 7.璁惧杩愯瓒呮椂鎶ヨ
+     */
+    private boolean timeoutErr;
+
+    /**
+     * 8.閫氫俊閿欒鎶ヨ
+     */
+    private boolean connectErr;
+
+    /**
+     * 9.璁惧鎬ュ仠
+     */
+    private boolean emergencyErr;
+
+    /**
+     * 10.浠诲姟绫诲瀷缂哄け
+     */
+    private boolean taskTypeErr;
+
+    /**
+     * 11.浠诲姟鍙风己澶�
+     */
+    private boolean taskNoErr;
+
+    /**
+     * 12.杩愯涓湁鏂颁换鍔�
+     */
+    private boolean newTaskErr;
+
+    /**
+     * 13.鏁呴殰涓湁浠诲姟
+     */
+    private boolean errTaskErr;
+
+    /**
+     * 14.杩愯涓仠姝�
+     */
+    private boolean stopErr;
+
+    /**
+     * 15.鑴辨満妯″紡涓嬫湁浠诲姟
+     */
+    private boolean offlineTaskErr;
+
+    /**
+     * 16.鏉′欢鏈弧瓒冲惎鍔ㄤ换鍔�
+     */
+    private boolean startTaskErr;
+
+    /**
+     * 17.浣庣數鍘嬫椂鏈変换鍔�
+     */
+    private boolean voltageTaskErr;
+
+    /**
+     * 63.璁惧鏁呴殰鏍囧織浣�
+     */
+    private boolean devpErr;
+    // 绌挎杞﹀紓甯� ------------------------------------------------------------------------
+
+    // 绌挎杞︽彁绀轰俊鎭� ------------------------------------------------------------------------
+    /**
+     * 64.鑱旀満鐘舵��
+     */
+    private boolean online;
+
+    /**
+     * 65.涓嶅湪杞ㄩ亾涓�
+     */
+    private boolean notOnTrack;
+
+    /**
+     * 66.浣庣數閲忔彁閱�
+     */
+    private boolean lowVoltage;
+
+    /**
+     * 67.浜忕數涓�
+     */
+    private boolean electricityLoss;
+
+    /**
+     * 68.寮哄埗琛岃蛋鍚姩
+     */
+    private boolean forcedTravel;
+
+    /**
+     * 69.婕旂ず妯″紡寮�鍚�
+     */
+    private boolean demoMode;
+
+    /**
+     * 70.鍏呯數鍒峰凡鎺ラ��
+     */
+    private boolean brushConnect;
+
+    /**
+     * 71.浠诲姟涓姝㈡墜鍔�
+     */
+    private boolean taskManualForbid;
+
+    /**
+     * 72.鑱旀満涓姝㈡墜鍔�
+     */
+    private boolean onlineManualForbid;
+
+    /**
+     * 73.璁惧鎬ュ仠涓�
+     */
+    private boolean devpEmergency;
+
+    /**
+     * 74.浠诲姟涓柇涓�
+     */
+    private boolean taskInterrupt;
+
+    /**
+     * 75.浠诲姟宸叉竻闄�
+     */
+    private boolean taskClear;
+
+    /**
+     * 76.浠诲姟纭宸茶秴鏃�
+     */
+    private boolean taskConfirmTimeout;
+
+    /**
+     * 77.鍏呯數涓湁浠诲姟
+     */
+    private boolean taskWithCharge;
+
+    // 浠诲姟淇℃伅 ---------------------------------------------------------
+    /**
+     * 96.鍏ュ簱浠诲姟涓�
+     */
+    private boolean pakInTask;
+
+    /**
+     * 97. 鍑哄簱浠诲姟涓�
+     */
+    private boolean pakOutTask;
+
+    /**
+     * 98. 绉诲簱浠诲姟涓�
+     */
+    private boolean pakMoveTask;
+
+    /**
+     * 99. 鍥炲師鐐逛换鍔′腑
+     */
+    private boolean goHpTask;
+
+    /**
+     * 100. 鍘诲弽鍘熺偣浠诲姟涓�
+     */
+    private boolean goOHpTask;
+
+    /**
+     * 101. 鍘诲師鐐归伩璁╀綅
+     */
+    private boolean goHpAvoid;
+
+    /**
+     * 102. 鍘诲弽鍘熺偣閬胯浣�
+     */
+    private boolean goOHpAvoid;
+
+    /**
+     * 104. 鍏ュ簱鍙栫┖缁撴潫
+     */
+    private boolean pakInEmpty;
+
+    /**
+     * 105. 鍏ュ簱姝e父缁撴潫
+     */
+    private boolean pakInFinish;
+
+    /**
+     * 106. 鍑哄簱鍙栫┖缁撴潫
+     */
+    private boolean pakOutEmpty;
+
+    /**
+     * 107. 鍑哄簱姝e父缁撴潫
+     */
+    private boolean pakOutFinish;
+
+    /**
+     * 108. 鍘诲師鐐归伩璁╁畬鎴�
+     */
+    private boolean goHpAvoidFinish;
+
+    /**
+     * 109. 鍘诲弽鍘熺偣閬胯瀹屾垚
+     */
+    private boolean goOHpAvoidFinish;
+
+    /**
+     * 110. 鍘诲師鐐归伩璁╁畬鎴�
+     */
+    private boolean goHpAvoidErr;
+
+    /**
+     * 111. 鍘诲弽鍘熺偣閬胯瀹屾垚
+     */
+    private boolean goOHpAvoidErr;
+
+    // 鐘舵�佷俊鎭� ---------------------------------------------------------
+    /**
+     * 112. 鑱旀満妯″紡
+     */
+    private boolean autoMode;
+
+    /**
+     * 113. 鐢靛帇杩囦綆
+     */
+    private boolean voltageLow;
+
+
     public void setStatus(Short status){
         this.status = status;
         this.statusType = SteStatusType.get(status);
@@ -217,12 +492,65 @@
      */
     private String lastIo = "I";
 
+    private String pakMk = "-";
 
     public BasSte toSqlModel(BasSte basSte){
         if (alarm!=null) {
             basSte.setSteErr(alarm.longValue());
         }
-        basSte.setWrkNo(taskNo);
+        basSte.setWrkNo(taskNo.intValue());
+//        if (basSte.getPakMk().equals("N")) {
+//            if (!Cools.isEmpty(row)) {
+//                basSte.setRow(row.intValue());
+//            }
+//            if (!Cools.isEmpty(bay)) {
+//                basSte.setBay(bay.intValue());
+//            }
+//            if (!Cools.isEmpty(lev)) {
+//                basSte.setLev(lev.intValue());
+//            }
+//        }
         return basSte;
     }
+
+    // 鏄惁澶勪簬绌洪棽寰呭懡鐘舵��
+    public Boolean isIdle() {
+        boolean res = this.statusType.equals(SteStatusType.IDLE)
+                && this.mode == 1
+                && this.pakMk.equals("N")
+                && !isAlarm()
+                && this.chargeStatus == 0
+                && isEnable()
+                ;
+        if (!res) {
+            return res;
+        } else {
+            // 鐢甸噺
+            try {
+                String chargeLine = SpringUtils.getBean(BasSteService.class).selectById(this.steNo).getChargeLine();
+                return charge > Float.parseFloat(chargeLine);
+            } catch (Exception e) {
+                News.error("fail", e);
+                return false;
+            }
+        }
+    }
+
+    // 灏忚溅鐢甸噺
+    public Float isIdle2() {
+        return this.charge;
+    }
+
+    // 鏄惁澶勪簬鎶ヨ鐘舵��
+    public Boolean isAlarm() {
+        return this.alarm > 1;
+    }
+
+    public Boolean isEnable() {
+        if (Cools.isEmpty(row, bay, lev)) {
+            return false;
+        }
+        return row > 0 && bay > 0 && lev > 0;
+    }
+
 }

--
Gitblit v1.9.1