From 74e0eb7a7e84b5006903e79554c007d9d5fbbcbc Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期四, 05 十月 2023 17:04:32 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java | 415 ++++++++++++++++++++++++++++++++++------------------------
1 files changed, 243 insertions(+), 172 deletions(-)
diff --git a/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java b/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java
index b82f97b..bcbc38e 100644
--- a/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/ShuttleProtocol.java
@@ -1,6 +1,19 @@
package com.zy.core.model.protocol;
+import com.core.common.SpringUtils;
+import com.zy.asrs.entity.BasDevp;
+import com.zy.asrs.entity.BasShuttle;
+import com.zy.asrs.entity.BasShuttleErr;
+import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.service.BasDevpService;
+import com.zy.asrs.service.BasShuttleErrService;
+import com.zy.asrs.service.BasShuttleService;
+import com.zy.asrs.service.LocMastService;
+import com.zy.core.News;
+import com.zy.core.enums.ShuttleErrorCodeType;
+import com.zy.core.enums.ShuttleProtocolStatusType;
import com.zy.core.enums.ShuttleStatusType;
+import com.zy.core.model.command.ShuttleAssignCommand;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
@@ -19,100 +32,39 @@
/**
* 浠诲姟鍙�
*/
- public Short taskNo = 0;
+ private Short taskNo = 0;
/**
- * 鎺�
+ * 浠诲姟鎸囦护
*/
- public Short row;
+ private ShuttleAssignCommand assignCommand;
/**
- * 鍒�
+ * 褰撳墠灏忚溅鐘舵�侊紙鍐呴儴鑷垜缁存姢锛�
*/
- public Short bay;
+ private Integer protocolStatus;
/**
- * 灞�
+ * 褰撳墠灏忚溅鐘舵�佹灇涓�
*/
- public Short lev;
+ private ShuttleProtocolStatusType protocolStatusType;
/**
- * 鎺у埗鎸囦护瀛�
+ * 婧愬簱浣�
*/
- private Integer commandWord;
+ private String sourceLocNo;
/**
- * 鍚浜岀淮缂栧彿
+ * 鐩爣搴撲綅
*/
- private Integer startCodeNum;
-
- /**
- * 涓棿浜岀淮缂栧彿
- */
- private Integer middleCodeNum;
-
- /**
- * 鐩爣浜岀淮缂栧彿
- */
- private Integer distCodeNum;
-
- /**
- * 璧风偣鍒扮洰鏍囩偣鐨勮窛绂婚暱搴�
- */
- private Integer startToDistDistance;
-
- /**
- * 涓棿鐐瑰埌鐩爣鐐圭殑璺濈闀垮害
- */
- private Integer middleToDistDistance;
-
- /**
- * 灏忚溅杩愯鏂瑰悜
- */
- private Integer runDirection;
-
- /**
- * 鎵樼洏椤跺崌
- */
- private Integer palletLift;
-
- /**
- * 灏忚溅寮哄埗绉诲姩璺濈
- */
- private Integer forceMoveDistance;
-
- /**
- * 鍏呯數寮�鍏�
- */
- private Integer chargeSwitch;
-
- /**
- * 灏忚溅IO鎺у埗
- */
- private Integer IOControl;
-
- /**
- * 灏忚溅杩愯閫熷害
- */
- private Integer runSpeed;
-
- /**
- * 灏忚溅闆疯揪澶囩敤
- */
- private Integer radarTmp;
-
- /**
- * 鎸囦护缁撴潫浣�
- */
- private Integer commandEnd;
-
+ private String locNo;
/**
* 灏忚溅蹇欑姸鎬佷綅
- * true: 蹇�
- * false: 绌洪棽
+ * 1: 蹇�
+ * 0: 绌洪棽
*/
- private Boolean busyStatus;
+ private Short busyStatus;
/**
* 灏忚溅蹇欑姸鎬佷綅鏋氫妇
@@ -123,172 +75,291 @@
* 褰撳墠浜岀淮鐮�
* 0涓虹┖
*/
- private String currentCode;
+ private Short currentCode;
/**
* 鐢垫睜鐢甸噺鐧惧垎姣�
*/
- private Double batteryPower;
+ private Short batteryPower;
/**
* 鐢垫睜娓╁害
*/
- private Double batteryTemp;
+ private Integer batteryTemp;
/**
* 閿欒缂栧彿
*/
- private Integer errorCode;
+ private Short errorCode;
+
+ /**
+ * 閿欒缂栧彿鏋氫妇
+ */
+ private ShuttleErrorCodeType errorCodeType;
/**
* Plc杈撳嚭鐘舵�両O
*/
- private byte plcOutputStatusIO;
+ private Short plcOutputStatusIO;
+
+ /**
+ * Plc杈撳嚭鐘舵�両O-椤跺崌浣�
+ */
+ private Boolean plcOutputLift;
+
+ /**
+ * Plc杈撳嚭鐘舵�両O-鎹㈠悜浣�
+ */
+ private Boolean plcOutputTransfer;
+
+ /**
+ * Plc杈撳嚭鐘舵�両O-鎶遍椄浣�
+ */
+ private Boolean plcOutputBrake;
+
+ /**
+ * Plc杈撳嚭鐘舵�両O-鍏呯數浣�
+ */
+ private Boolean plcOutputCharge;
/**
* 閿欒淇℃伅鐮�
*/
- private Integer statusErrorCode;
+ private Short statusErrorCode;
/**
- * PLC杈撳叆鐘舵��
+ * PLC杈撳叆鐘舵�侊紝鐩墠鍙湁涓�涓姸鎬佹湁鏁堟灉锛屾墭鐩橀浄杈�1鏈夎揣锛�0鏃犺揣
*/
- private byte plcInputStatus;
+ private Short plcInputStatus;
/**
* 褰撳墠鎴栬�呬箣鍓嶈鍒扮殑浜岀淮鐮佸��
*/
- private String currentOrBeforeCode;
+ private Short currentOrBeforeCode;
/**
* 璇诲埌鐨勪簩缁寸爜X鏂瑰悜鍋忕Щ閲�
*/
- private Integer codeOffsetX;
+ private Short codeOffsetX;
/**
* 璇诲埌鐨勪簩缁寸爜Y鏂瑰悜鍋忕Щ閲�
*/
- private Integer codeOffsetY;
+ private Short codeOffsetY;
/**
* 褰撳墠鐨勭數鍘嬪��
*/
- private Double currentVoltage;
+ private Integer currentVoltage;
/**
* 褰撳墠鐨勬ā鎷熼噺鍊�
*/
- private Integer currentAnalogValue;
+ private Short currentAnalogValue;
/**
* 褰撳墠鐨勫崌闄嶄己鏈嶉�熷害
*/
- private Double currentLiftServoSpeed;
+ private Short currentLiftServoSpeed;
/**
* 褰撳墠鐨勮璧颁己鏈嶉�熷害
*/
- private Double currentMoveServoSpeed;
+ private Short currentMoveServoSpeed;
/**
* 褰撳墠鐨勫崌闄嶄己鏈嶈礋杞界巼
*/
- private Double currentLiftServoLoad;
+ private Short currentLiftServoLoad;
/**
* 褰撳墠鐨勮璧颁己鏈嶈礋杞界巼
*/
- private Double currentMoveServoLoad;
+ private Short currentMoveServoLoad;
/**
* 浣滀笟鏍囪
*/
- private String pakMk = "-";
+ private Boolean pakMk = true;
- // 浠诲姟淇℃伅 ---------------------------------------------------------
- /**
- * 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;
-
- public void setBusyStatus(Boolean status) {
+ public void setBusyStatus(Short status) {
this.busyStatus = status;
- this.busyStatusType = ShuttleStatusType.get(status);
+ this.busyStatusType = ShuttleStatusType.get(status.intValue());
}
public void setBusyStatus(ShuttleStatusType type) {
- this.busyStatus = type.id.booleanValue();
+ this.busyStatus = type.id.shortValue();
this.busyStatusType = type;
}
+ //鑾峰彇鐢垫睜鐢甸噺
+ public Short getBatteryPower$() {
+ return (short) (this.batteryPower * 0.1);
+ }
+
+ //鑾峰彇鐢垫睜娓╁害
+ public Short getBatteryTemp$() {
+ return (short) (this.batteryTemp * 0.1);
+ }
+
+ /**
+ * 璁剧疆灏忚溅鐘舵��
+ */
+ public void setProtocolStatus(Integer status) {
+ this.protocolStatus = status;
+ this.protocolStatusType = ShuttleProtocolStatusType.get(status);
+ }
+
+ /**
+ * 璁剧疆灏忚溅鐘舵��
+ */
+ public void setProtocolStatus(ShuttleProtocolStatusType status) {
+ this.protocolStatus = status.id;
+ this.protocolStatusType = status;
+ }
+
+ /**
+ * 璁剧疆閿欒缂栧彿
+ */
+ public void setErrorCode(Short errorCode) {
+ this.errorCode = errorCode;
+ this.errorCodeType = ShuttleErrorCodeType.get(errorCode.intValue());
+ }
+
+ /**
+ * 璁剧疆閿欒缂栧彿
+ */
+ public void setErrorCode(ShuttleErrorCodeType type) {
+ this.errorCode = type.id.shortValue();
+ this.errorCodeType = type;
+ }
+
+ // 鏄惁澶勪簬绌洪棽寰呭懡鐘舵��
+ public Boolean isIdle() {
+ boolean res = this.busyStatusType.equals(ShuttleStatusType.IDLE)
+ && this.pakMk.equals(true)
+ && this.errorCodeType.equals(ShuttleErrorCodeType.NORMAL)
+ && this.taskNo == 0
+ && this.protocolStatus.intValue() == ShuttleProtocolStatusType.IDLE.id
+ ;
+ if (!res) {
+ return res;
+ } else {
+ // 鐢甸噺
+ try {
+ Integer chargeLine = SpringUtils.getBean(BasShuttleService.class).selectById(this.shuttleNo).getChargeLine();
+ if (chargeLine == null) {
+ return false;
+ }
+ return this.getBatteryPower$() >= chargeLine;
+ } catch (Exception e) {
+ News.error("fail", e);
+ return false;
+ }
+ }
+ }
+
+ // 鏄惁澶勪簬绌洪棽寰呭懡鐘舵�侊紝浼犲叆鐨則askNo鍜屽綋鍓峵askNo鐩稿悓鏃跺厑璁告斁琛�
+ public Boolean isIdle(Short taskNo) {
+ boolean res = this.busyStatusType.equals(ShuttleStatusType.IDLE)
+ && this.pakMk.equals(true)
+ && this.errorCodeType.equals(ShuttleErrorCodeType.NORMAL)
+ && (this.taskNo == 0 || this.taskNo.intValue() == taskNo.intValue())
+ && this.protocolStatus.intValue() == ShuttleProtocolStatusType.IDLE.id
+ ;
+ if (!res) {
+ return res;
+ } else {
+ // 鐢甸噺
+ try {
+ Integer chargeLine = SpringUtils.getBean(BasShuttleService.class).selectById(this.shuttleNo).getChargeLine();
+ return this.getBatteryPower$() > chargeLine;
+ } catch (Exception e) {
+ News.error("fail", e);
+ return false;
+ }
+ }
+ }
+
+ // 鏄惁婊¤冻鍏呯數鐘舵��
+ public Boolean isRequireCharge() {
+ if (this.busyStatusType == null || this.pakMk == null || this.errorCodeType == null || this.taskNo == null) {
+ return false;
+ }
+
+ boolean res = this.busyStatusType.id.intValue() == ShuttleStatusType.IDLE.id.intValue()
+ && this.pakMk
+ && this.errorCodeType.id.intValue() == ShuttleErrorCodeType.NORMAL.id.intValue()
+ && this.taskNo == 0
+ && this.protocolStatusType.id == ShuttleProtocolStatusType.IDLE.id
+ ;
+ if (!res) {
+ return res;
+ } else {
+ // 鐢甸噺灏忎簬闃堝�兼垨鐢靛帇灏忎簬48V锛岄渶瑕佽繘琛屽厖鐢�
+ try {
+ BasShuttleService shuttleService = SpringUtils.getBean(BasShuttleService.class);
+ if (shuttleService == null) {
+ return false;
+
+ }
+ BasShuttle basShuttle = shuttleService.selectById(this.shuttleNo);
+ if (basShuttle == null) {
+ return false;
+ }
+ Integer chargeLine = basShuttle.getChargeLine();
+ if (chargeLine == null) {
+ return false;
+ }
+ return this.getBatteryPower$() < chargeLine || this.currentVoltage < 48000;
+ } catch (Exception e) {
+ News.error("fail", e);
+ return false;
+ }
+ }
+ }
+
+ //閫氳繃褰撳墠浜岀淮鐮佽幏鍙栧綋鍓嶅簱浣嶅彿
+ public String getCurrentLocNo() {
+ LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
+ if (locMastService == null) {
+ return null;
+ }
+ //婧愬簱浣�(灏忚溅褰撳墠浣嶇疆)
+ LocMast currentLocMast = locMastService.queryByQrCode(this.currentCode.toString());
+ if (currentLocMast == null) {
+ return null;
+ }
+ return currentLocMast.getLocNo();
+ }
+
+ public String getStatusErrorCode$() {
+ BasShuttleErrService basShuttleErrService = SpringUtils.getBean(BasShuttleErrService.class);
+ BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(this.statusErrorCode.intValue());
+ if (basShuttleErr == null) {
+ return this.statusErrorCode.toString();
+ }
+ return basShuttleErr.getErrName();
+ }
+
+ public void setCurrentCode(Short currentCode) {
+ this.currentCode = currentCode;
+ LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
+ if (locMastService != null) {
+ LocMast locMast = locMastService.queryByQrCode(currentCode.toString());
+ if (locMast == null) {
+ //鏌ヤ笉鍒板簱浣嶅彿锛屾煡璇㈡槸鍚︿负绔欑偣
+ BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class);
+ if (basDevpService != null) {
+ BasDevp basDevp = basDevpService.queryByLocNo(currentCode.toString());
+ if (basDevp != null) {
+ this.locNo = basDevp.getLocNo();
+ }
+ }
+ }else{
+ this.locNo = locMast.getLocNo();
+ }
+ }
+ }
+
}
--
Gitblit v1.9.1