From 314729da5f6f84a6112344a2210aadfeeb2bac0c Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期一, 21 四月 2025 10:35:43 +0800
Subject: [PATCH] #出库找待机位优化
---
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/model/protocol/ShuttleProtocol.java | 112 +++++++++++++++++++++++++++++++++++--------------------
1 files changed, 71 insertions(+), 41 deletions(-)
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/model/protocol/ShuttleProtocol.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/model/protocol/ShuttleProtocol.java
index ad5496b..9925d1e 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/model/protocol/ShuttleProtocol.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/model/protocol/ShuttleProtocol.java
@@ -3,33 +3,37 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.asrs.framework.common.Cools;
import com.zy.asrs.framework.common.SpringUtils;
+import com.zy.asrs.wcs.core.entity.BasLift;
import com.zy.asrs.wcs.core.entity.Loc;
+import com.zy.asrs.wcs.core.service.BasLiftService;
import com.zy.asrs.wcs.core.service.LocService;
import com.zy.asrs.wcs.core.utils.RedisUtil;
+import com.zy.asrs.wcs.core.utils.Utils;
+import com.zy.asrs.wcs.rcs.cache.SlaveConnection;
import com.zy.asrs.wcs.rcs.constant.DeviceRedisConstant;
-import com.zy.asrs.wcs.rcs.model.enums.ShuttleDeviceStatusType;
+import com.zy.asrs.wcs.rcs.entity.BasShuttleErr;
import com.zy.asrs.wcs.rcs.model.enums.ShuttleProtocolStatusType;
import com.zy.asrs.wcs.rcs.entity.Device;
import com.zy.asrs.wcs.rcs.entity.ShuttleDeviceStatus;
import com.zy.asrs.wcs.rcs.model.enums.SlaveType;
+import com.zy.asrs.wcs.rcs.service.BasShuttleErrService;
import com.zy.asrs.wcs.rcs.service.ShuttleDeviceStatusService;
+import com.zy.asrs.wcs.rcs.thread.LiftThread;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
-
-import java.util.HashMap;
/**
* 鍥涘悜绌挎杞�
*/
@Slf4j
@Data
-public class ShuttleProtocol {
+public class ShuttleProtocol implements Cloneable{
//**********************蹇呴』瀛樺湪灞炴��**********************
/**
* 鍥涘悜绌挎杞﹀彿
*/
- private String shuttleNo;
+ private Integer shuttleNo;
/**
* 浠诲姟鍙�
@@ -62,6 +66,11 @@
private Integer deviceStatus;
/**
+ * 灏忚溅妯″紡锛�0锛氭墜鍔� 1锛氳嚜鍔�
+ */
+ private Integer mode;
+
+ /**
* 褰撳墠浜岀淮鐮�
* 0涓虹┖
*/
@@ -89,6 +98,11 @@
* 鏄惁椤跺崌
*/
private Boolean hasLift;
+
+ /**
+ * 鏄惁鏈夋墭鐩�
+ */
+ private Boolean hasPallet;
/**
* 琛岄┒鏂瑰悜
@@ -158,9 +172,24 @@
private Long deviceDataLog = System.currentTimeMillis();
/**
+ * 鎸囦护涓嬪彂鏃堕棿
+ */
+ private Long sendTime = 0L;
+
+ /**
+ * 鏈�杩戜竴娆″湪绾挎椂闂�
+ */
+ private Long lastOnlineTime = System.currentTimeMillis();
+
+ /**
* 璁惧淇℃伅
*/
private Device device;
+
+ /**
+ * 鎵╁睍瀛楁
+ */
+ private Object extend;
/**
* 璁剧疆灏忚溅鐘舵��
@@ -197,26 +226,19 @@
return "";
}
- /**
- * 鑾峰彇灏忚溅绌洪棽鐘舵��
- */
- public Boolean getIdle() {
- if (this.deviceStatus == null) {
- return false;
+ public String getErrorCode$() {
+ if (this.errorCode == null) {
+ return "";
}
-
- ShuttleDeviceStatusService shuttleDeviceStatusService = SpringUtils.getBean(ShuttleDeviceStatusService.class);
- ShuttleDeviceStatus status = shuttleDeviceStatusService.getOne(new LambdaQueryWrapper<ShuttleDeviceStatus>()
- .eq(ShuttleDeviceStatus::getHostId, this.device.getHostId())
- .eq(ShuttleDeviceStatus::getDevicePlc, this.device.getDevicePlc())
- .eq(ShuttleDeviceStatus::getStatus, 1)
- .eq(ShuttleDeviceStatus::getDeviceStatus, this.deviceStatus));
- if (status != null) {
- if (status.getFlag() != null && status.getFlag().equals(String.valueOf(ShuttleDeviceStatusType.IDLE))) {
- return true;//绌洪棽涓�
- }
+ BasShuttleErrService basShuttleErrService = SpringUtils.getBean(BasShuttleErrService.class);
+ BasShuttleErr shuttleErr = basShuttleErrService.getOne(new LambdaQueryWrapper<BasShuttleErr>()
+ .eq(BasShuttleErr::getErrorCode, this.errorCode)
+ .eq(BasShuttleErr::getHostId, this.device.getHostId())
+ .eq(BasShuttleErr::getDevicePlc, this.device.getDevicePlc()));
+ if (shuttleErr != null) {
+ return this.errorCode + "-" + shuttleErr.getErrName();
}
- return false;//榛樿涓嶇┖闂�
+ return errorCode;
}
public Integer getTaskNo() {
@@ -230,10 +252,19 @@
return this.taskNo == null ? 0 : this.taskNo;
}
+ public synchronized void setSyncTaskNo(Integer taskNo) {
+ RedisUtil redisUtil = SpringUtils.getBean(RedisUtil.class);
+ if (null != redisUtil) {
+ redisUtil.set(DeviceRedisConstant.SHUTTLE_FLAG + this.shuttleNo, taskNo);
+ this.taskNo = taskNo;
+ }
+ }
+
//閫氳繃褰撳墠浜岀淮鐮佽幏鍙栧綋鍓嶅簱浣嶅彿
public String getCurrentLocNo() {
LocService locService = SpringUtils.getBean(LocService.class);
- if (locService == null) {
+ BasLiftService basLiftService = SpringUtils.getBean(BasLiftService.class);
+ if (locService == null || basLiftService == null) {
return null;
}
if (this.currentCode == null) {
@@ -246,29 +277,28 @@
.eq(Loc::getHostId, this.device.getHostId());
Loc currentLoc = locService.getOne(wrapper);
if (currentLoc == null) {
+ //鍙兘鏄彁鍗囨満鏉$爜
+ BasLift basLift = basLiftService.getOne(new LambdaQueryWrapper<BasLift>().eq(BasLift::getCode, this.currentCode).eq(BasLift::getStatus, 1));
+ if(basLift != null) {
+ LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, basLift.getDeviceId().intValue());
+ if (liftThread != null) {
+ LiftProtocol liftProtocol = liftThread.getStatus();
+ return Utils.getLocNo(basLift.getRow(), basLift.getBay(), liftProtocol.getLev());
+ }
+ }
return null;
}
-
return currentLoc.getLocNo();
}
- // 鏄惁澶勪簬绌洪棽寰呭懡鐘舵��
- public Boolean isIdle() {
- if (this.deviceStatus == null
- || this.pakMk == null
- || this.errorCode == null
- || this.protocolStatus == null
- ) {
- return false;
+ @Override
+ public ShuttleProtocol clone() {
+ try {
+ return (ShuttleProtocol) super.clone();
+ } catch (CloneNotSupportedException e) {
+ e.printStackTrace();
}
-
- boolean res = this.deviceStatus.equals(ShuttleDeviceStatusType.IDLE)
- && this.pakMk
- && !this.errorCode.equals("0")
- && this.getTaskNo() == 0
- && this.protocolStatus.intValue() == ShuttleProtocolStatusType.IDLE.id
- ;
- return res;
+ return null;
}
}
--
Gitblit v1.9.1