From a54e7457c3ddf1f794f3c5bacb1cc872ba12421d Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期三, 03 四月 2024 13:55:06 +0800
Subject: [PATCH] #
---
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java | 121 +++++++++++++++++++++++++++++++++-------
1 files changed, 100 insertions(+), 21 deletions(-)
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java
index 6f679c5..75dd1fd 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayShuttleThread.java
@@ -16,11 +16,15 @@
import com.zy.asrs.wcs.core.utils.NavigateUtils;
import com.zy.asrs.wcs.rcs.News;
import com.zy.asrs.wcs.rcs.cache.OutputQueue;
+import com.zy.asrs.wcs.rcs.entity.DeviceDataLog;
import com.zy.asrs.wcs.rcs.model.enums.ShuttleProtocolStatusType;
+import com.zy.asrs.wcs.rcs.model.enums.SlaveType;
import com.zy.asrs.wcs.rcs.model.protocol.ShuttleProtocol;
+import com.zy.asrs.wcs.rcs.service.DeviceDataLogService;
import com.zy.asrs.wcs.rcs.thread.ShuttleThread;
import com.zy.asrs.wcs.core.utils.RedisUtil;
import com.zy.asrs.wcs.rcs.entity.Device;
+import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import java.text.MessageFormat;
@@ -87,6 +91,9 @@
shuttleProtocol.setShuttleNo(Integer.valueOf(device.getDeviceNo()));
shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE);
shuttleProtocol.setDevice(device);
+
+ InnerSuhttleExtend extend = new InnerSuhttleExtend();
+ shuttleProtocol.setExtend(extend);
}
//----------璇诲彇鍥涘悜绌挎杞︾姸鎬�-----------
@@ -102,39 +109,46 @@
//鏄惁椤跺崌
shuttleProtocol.setHasLift(data.getInteger("palletStatus") == 1 ? true : false);
//鏄惁鏈夋墭鐩�
- shuttleProtocol.setHasPallet(data.getInteger("hasPallet") != 2 ? true : false);
+ shuttleProtocol.setHasPallet(data.getInteger("hasPallet") == null ? true : data.getInteger("hasPallet") != 2 ? true : false);
//琛岄┒鏂瑰悜
shuttleProtocol.setRunDirection(data.getString("direction") == null ? "none" : data.getString("direction"));
//鏄惁涓哄厖鐢电姸鎬�
shuttleProtocol.setHasCharge((deviceStatus == 5 || deviceStatus == 13) ? true : false);
+ //*********璇诲彇鎵╁睍瀛楁**********
+ InnerSuhttleExtend extend = (InnerSuhttleExtend) shuttleProtocol.getExtend();
+ extend.setMapVersion(data.getString("version"));//鍦板浘鐗堟湰
+ extend.setStatusDescription(data.getString("statusDescription"));//鐘舵�佹弿杩�
+ shuttleProtocol.setExtend(extend);//鎵╁睍瀛楁
+
///璇诲彇鍥涘悜绌挎杞︾姸鎬�-end
-// //灏忚溅澶勪簬蹇欑鐘舵�侊紝灏嗘爣璁扮疆涓簍rue
-// if (shuttleProtocol.getDeviceStatusType() == ShuttleDeviceStatusType.BUSY) {
-// shuttleProtocol.setPakMk(true);
-// }
-//
+ //灏忚溅澶勪簬蹇欑鐘舵�侊紝灏嗘爣璁扮疆涓簍rue
+ if (!shuttleProtocol.getIdle()) {
+ shuttleProtocol.setPakMk(true);
+ }
+
// if (shuttleProtocol.getProtocolStatusType() == null && shuttleProtocol.getDeviceStatus().intValue() == ShuttleDeviceStatusType.IDLE.id) {
// //灏忚溅绌洪棽鐘舵�併�佸皬杞︿换鍔$姸鎬佷负鏈煡锛岃瀹氭浘绂荤嚎杩囷紝闇�瑕佸浣嶆垚绌洪棽
// shuttleProtocol.setProtocolStatusType(ShuttleProtocolStatusType.IDLE);
// }
-// if (System.currentTimeMillis() - shuttleProtocol.getDeviceDataLog() > 1000 * 5) {
-// //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰�
-// //淇濆瓨鏁版嵁璁板綍
-// DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class);
-// DeviceDataLog deviceDataLog = new DeviceDataLog();
-// deviceDataLog.setOriginData(Base64.getEncoder().encodeToString(result.Content));
-// deviceDataLog.setWcsData(JSON.toJSONString(shuttleProtocol));
-// deviceDataLog.setType("shuttle");
-// deviceDataLog.setDeviceNo(shuttleProtocol.getShuttleNo().intValue());
-// deviceDataLog.setCreateTime(new Date());
-// deviceDataLogService.insert(deviceDataLog);
-//
-// //鏇存柊閲囬泦鏃堕棿
-// shuttleProtocol.setDeviceDataLog(System.currentTimeMillis());
-// }
+ if (System.currentTimeMillis() - shuttleProtocol.getDeviceDataLog() > 1000 * 5) {
+ //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰�
+ //淇濆瓨鏁版嵁璁板綍
+ DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class);
+ DeviceDataLog deviceDataLog = new DeviceDataLog();
+ deviceDataLog.setOriginData(JSON.toJSONString(data));
+ deviceDataLog.setWcsData(JSON.toJSONString(shuttleProtocol));
+ deviceDataLog.setType(String.valueOf(SlaveType.Shuttle));
+ deviceDataLog.setDeviceNo(String.valueOf(shuttleProtocol.getShuttleNo()));
+ deviceDataLog.setCreateTime(new Date());
+ deviceDataLog.setHostId(device.getHostId());
+ deviceDataLogService.save(deviceDataLog);
+
+ //鏇存柊閲囬泦鏃堕棿
+ shuttleProtocol.setDeviceDataLog(System.currentTimeMillis());
+ }
} else {
OutputQueue.SHUTTLE.offer(MessageFormat.format("銆恵0}銆憑1}璇诲彇鍥涘悜绌挎杞︾姸鎬佷俊鎭け璐�", DateUtils.convert(new Date()), device.getDeviceNo()));
throw new CoolException(MessageFormat.format("璇诲彇鍥涘悜绌挎杞︾姸鎬佷俊鎭け璐� ===>> [id:{0}] [ip:{1}] [port:{2}]", device.getDeviceNo(), device.getIp(), device.getPort()));
@@ -325,6 +339,24 @@
}
@Override
+ public boolean isIdle() {
+ if (this.shuttleProtocol.getIdle() == null
+ || this.shuttleProtocol.getPakMk() == null
+ || this.shuttleProtocol.getErrorCode() == null
+ || this.shuttleProtocol.getProtocolStatus() == null
+ ) {
+ return false;
+ }
+
+ boolean res = this.shuttleProtocol.getIdle()
+ && this.shuttleProtocol.getPakMk()
+ && this.shuttleProtocol.getErrorCode().equals("0")
+ && this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.IDLE.id
+ ;
+ return res;
+ }
+
+ @Override
public ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed) {
HashMap<String, Object> body = new HashMap<>();
body.put("messageName", "runOrder");
@@ -351,6 +383,37 @@
return command;
}
+ @Override
+ public ShuttleCommand getLiftCommand(Integer taskNo, Boolean lift) {
+ HashMap<String, Object> body = new HashMap<>();
+ body.put("messageName", "actionOrder");
+ body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
+ body.put("deviceNo", Integer.parseInt(this.device.getDeviceNo()));
+ body.put("taskId", taskNo);
+ body.put("action", lift ? 1 : 2);
+
+ ShuttleCommand command = new ShuttleCommand();
+ command.setShuttleNo(Integer.parseInt(this.device.getDeviceNo()));
+ command.setBody(JSON.toJSONString(body));
+ command.setMode(lift ? ShuttleCommandModeType.PALLET_LIFT.id : ShuttleCommandModeType.PALLET_DOWN.id);
+ return command;
+ }
+
+ @Override
+ public ShuttleCommand getChargeCommand(Integer taskNo, Boolean charge) {
+ HashMap<String, Object> body = new HashMap<>();
+ body.put("messageName", "runOrder");
+ body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
+ body.put("deviceNo", Integer.parseInt(this.device.getDeviceNo()));
+ body.put("taskId", taskNo);
+ body.put("action", charge ? 3 : 4);
+
+ ShuttleCommand command = new ShuttleCommand();
+ command.setShuttleNo(Integer.parseInt(this.device.getDeviceNo()));
+ command.setBody(JSON.toJSONString(body));
+ command.setMode(charge ? ShuttleCommandModeType.CHARGE_OPEN.id : ShuttleCommandModeType.CHARGE_CLOSE.id);
+ return command;
+ }
//***************璁惧灞傞�氳-涓嶅悓鍘傚晢璁惧閫氳鏂规涓嶄竴鑷�***************
@@ -410,4 +473,20 @@
}
return null;
}
+
+ @Data
+ private class InnerSuhttleExtend {
+
+ /**
+ * 鍦板浘鐗堟湰
+ */
+ private String mapVersion;
+
+ /**
+ * 鐘舵�佹弿杩�
+ */
+ private String statusDescription;
+
+ }
+
}
--
Gitblit v1.9.1