From 36b753105aa294e6a34fd7acccbd26693b9b93d1 Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期二, 23 四月 2024 13:51:31 +0800
Subject: [PATCH] #
---
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/FlowExecute.java | 88 ++++++++++++++++++++++++++++++++++++++------
1 files changed, 76 insertions(+), 12 deletions(-)
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/FlowExecute.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/FlowExecute.java
index f3ad71a..5ba60e1 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/FlowExecute.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/FlowExecute.java
@@ -5,11 +5,17 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.exception.CoolException;
import com.zy.asrs.wcs.asrs.entity.param.FlowLogicCodeParam;
import com.zy.asrs.wcs.core.entity.Task;
import com.zy.asrs.wcs.core.service.TaskService;
import com.zy.asrs.wcs.core.utils.RedisUtil;
import com.zy.asrs.wcs.core.utils.ShuttleDispatcher;
+import com.zy.asrs.wcs.core.utils.Utils;
+import com.zy.asrs.wcs.rcs.cache.SlaveConnection;
+import com.zy.asrs.wcs.rcs.entity.Device;
+import com.zy.asrs.wcs.rcs.model.enums.SlaveType;
+import com.zy.asrs.wcs.rcs.model.protocol.ShuttleProtocol;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.codec.digest.Md5Crypt;
import org.springframework.beans.factory.annotation.Autowired;
@@ -76,6 +82,8 @@
result = executeDevpFlow(task, data, redisKey);
} else if (type.equals("shuttle")) {
result = executeShuttleFlow(task, data, redisKey);
+ } else if (type.equals("lift")) {
+ result = executeLiftFlow(task, data, redisKey);
}
return result;
}
@@ -99,19 +107,63 @@
private boolean executeShuttleFlow(Task task, JSONObject data, String redisKey) {
JSONObject shuttleType = data.getJSONObject("shuttleType");
- JSONArray shuttleOper = shuttleType.getJSONArray("shuttleOper");
- for (Object object : shuttleOper) {
- String oper = String.valueOf(object);
- if (oper.equals("searchIdleShuttle")) {
- //鎼滅储绌洪棽杞�
- ShuttleThread shuttleThread = shuttleDispatcher.searchIdleShuttle(task);
- if (shuttleThread == null) {
- return false;
- }
- //瀛樺叆缂撳瓨
- redisSet(redisKey, "shuttleDevice", shuttleThread.getDevice());
- return true;
+ String oper = shuttleType.getString("shuttleOper");
+ if (oper.equals("searchIdleShuttle")) {
+ //鎼滅储绌洪棽杞�
+ ShuttleThread shuttleThread = shuttleDispatcher.searchIdleShuttle(task);
+ if (shuttleThread == null) {
+ throw new CoolException("绌挎杞︿笉瀛樺湪");
}
+ //瀛樺叆缂撳瓨
+ redisSet(redisKey, "shuttleDevice", shuttleThread.getDevice());
+ return true;
+ } else if (oper.equals("judgeShuttleCurrentTaskLev")) {
+ //鍒ゆ柇灏忚溅鏄惁鍦ㄤ换鍔℃ゼ灞�
+ //鍙栧嚭缂撳瓨灏忚溅
+ Object shuttleDeviceObj = redisGet(redisKey, "shuttleDevice");
+ if (shuttleDeviceObj == null) {
+ throw new CoolException("绌挎杞︾紦瀛樹负绌�");
+ }
+ Device device = JSON.parseObject(String.valueOf(shuttleDeviceObj), Device.class);
+ if (device == null) {
+ throw new CoolException("绌挎杞﹁澶囦笉瀛樺湪");
+ }
+
+ ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getId().intValue());
+ if (shuttleThread == null) {
+ throw new CoolException("绌挎杞︿笉瀛樺湪");
+ }
+
+ ShuttleProtocol shuttleProtocol = shuttleThread.getStatus();
+ if (shuttleProtocol == null) {
+ throw new CoolException("绌挎杞︿笉瀛樺湪");
+ }
+
+ //灏忚溅鍧愭爣
+ String shuttleLocNo = shuttleProtocol.getCurrentLocNo();
+ String taskLocNo = null;
+ if (task.getTaskSts() < 100) {
+ taskLocNo = task.getDestLoc();
+ } else if (task.getTaskSts() > 100 && task.getTaskSts() < 200) {
+ taskLocNo = task.getOriginLoc();
+ }
+
+ // 灏忚溅鍜屼换鍔℃ゼ灞備竴鑷�
+ if (Utils.getLev(shuttleLocNo) == Utils.getLev(taskLocNo)) {
+ return true;
+ }else {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ private boolean executeLiftFlow(Task task, JSONObject data, String redisKey) {
+ JSONObject liftType = data.getJSONObject("liftType");
+ String oper = liftType.getString("liftOper");
+ if (oper.equals("move")) {
+ //鎻愬崌鏈哄崌闄�
}
return true;
@@ -131,6 +183,18 @@
return true;
}
+ private Object redisGet(String redisKey, String key) {
+ if (redisUtil.hasKey(redisKey)) {
+ Object obj = redisUtil.get(redisKey);
+ JSONObject object = JSON.parseObject(String.valueOf(obj));
+ if (!object.containsKey(key)) {
+ return null;
+ }
+ return object.get(key);
+ }
+ return null;
+ }
+
// private boolean executeFlow(List<Map<String, Object>> list) {
// for (Map<String, Object> map : list) {
// JSONObject data = (JSONObject) map.get("data");
--
Gitblit v1.9.1