From d9cea3d7757a8d580bb0574d419ba6dd9c2478e7 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期五, 13 十二月 2024 15:11:50 +0800
Subject: [PATCH] #search shuttle
---
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java | 127 +++++++++++++++++++----------------------
1 files changed, 59 insertions(+), 68 deletions(-)
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java
index d484864..ad64f8b 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java
@@ -16,6 +16,7 @@
import com.zy.asrs.wcs.core.utils.*;
import com.zy.asrs.wcs.rcs.News;
import com.zy.asrs.wcs.rcs.cache.SlaveConnection;
+import com.zy.asrs.wcs.rcs.constant.DeviceRedisConstant;
import com.zy.asrs.wcs.rcs.entity.Device;
import com.zy.asrs.wcs.rcs.model.enums.ShuttleProtocolStatusType;
import com.zy.asrs.wcs.rcs.model.enums.SlaveType;
@@ -109,14 +110,6 @@
return false;
}
- Double similarityRef = 0.9D;
- Dict similarityRefDict = dictService.getOne(new LambdaQueryWrapper<Dict>()
- .eq(Dict::getFlag, "similarityRef")
- .eq(Dict::getStatus, 1));
- if (similarityRefDict != null) {
- similarityRef = Double.parseDouble(similarityRefDict.getValue());
- }
-
ShuttleAssignCommand assignCommand = new ShuttleAssignCommand();
assignCommand.setShuttleNo(deviceNo);
assignCommand.setTaskNo(motion.getTaskNo());
@@ -130,10 +123,6 @@
LiftThread liftThread = null;
LiftProtocol liftProtocol = null;
- String movePath = null;
- List<NavigateNode> originPath = null;
- List<NavigateNode> finalPath = null;
- Double similarity = null;
switch (Objects.requireNonNull(MotionCtgType.get(motion.getMotionCtgEl()))){
case SHUTTLE_MOVE:
@@ -146,15 +135,8 @@
shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
shuttleTaskModeType = ShuttleTaskModeType.SHUTTLE_MOVE;
- movePath = motion.getMovePath();
- if (!Cools.isEmpty(movePath)) {
- originPath = JSON.parseArray(movePath, NavigateNode.class);
- finalPath = assignCommand.getNodes();
- similarity = navigateUtils.similarityPath(originPath, finalPath);
- if(similarity <= similarityRef) {
- News.error("{} dash {} path similarity mismatch!", motion.getOrigin(), motion.getTarget());
- return false;
- }
+ if (!checkSimilarityPath(motion, assignCommand)) {
+ return false;
}
break;
@@ -168,15 +150,8 @@
shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.DFX.id, assignCommand, shuttleThread);
shuttleTaskModeType = ShuttleTaskModeType.TRANSPORT;
- movePath = motion.getMovePath();
- if (!Cools.isEmpty(movePath)) {
- originPath = JSON.parseArray(movePath, NavigateNode.class);
- finalPath = assignCommand.getNodes();
- similarity = navigateUtils.similarityPath(originPath, finalPath);
- if(similarity <= similarityRef) {
- News.error("{} dash {} path similarity mismatch!", motion.getOrigin(), motion.getTarget());
- return false;
- }
+ if (!checkSimilarityPath(motion, assignCommand)) {
+ return false;
}
if (motion.getReleaseLift() == 2) {//鎵ц涓噴鏀炬彁鍗囨満
@@ -220,15 +195,8 @@
shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.DFX.id, assignCommand, shuttleThread);
shuttleTaskModeType = ShuttleTaskModeType.TRANSPORT_TO_CONVEYOR;
- movePath = motion.getMovePath();
- if (!Cools.isEmpty(movePath)) {
- originPath = JSON.parseArray(movePath, NavigateNode.class);
- finalPath = assignCommand.getNodes();
- similarity = navigateUtils.similarityPath(originPath, finalPath);
- if(similarity <= similarityRef) {
- News.error("{} dash {} path similarity mismatch!", motion.getOrigin(), motion.getTarget());
- return false;
- }
+ if (!checkSimilarityPath(motion, assignCommand)) {
+ return false;
}
break;
@@ -236,15 +204,8 @@
shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.DFX.id, assignCommand, shuttleThread);
shuttleTaskModeType = ShuttleTaskModeType.MOVE_PALLET_LIFT;
- movePath = motion.getMovePath();
- if (!Cools.isEmpty(movePath)) {
- originPath = JSON.parseArray(movePath, NavigateNode.class);
- finalPath = assignCommand.getNodes();
- similarity = navigateUtils.similarityPath(originPath, finalPath);
- if(similarity <= similarityRef) {
- News.error("{} dash {} path similarity mismatch!", motion.getOrigin(), motion.getTarget());
- return false;
- }
+ if (!checkSimilarityPath(motion, assignCommand)) {
+ return false;
}
shuttleCommands.add(0, shuttleThread.getLiftCommand(motion.getTaskNo(), true));
@@ -253,15 +214,8 @@
shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), motion.getTarget(), NavigationMapType.DFX.id, assignCommand, shuttleThread);
shuttleTaskModeType = ShuttleTaskModeType.MOVE_PALLET_DOWN;
- movePath = motion.getMovePath();
- if (!Cools.isEmpty(movePath)) {
- originPath = JSON.parseArray(movePath, NavigateNode.class);
- finalPath = assignCommand.getNodes();
- similarity = navigateUtils.similarityPath(originPath, finalPath);
- if(similarity <= similarityRef) {
- News.error("{} dash {} path similarity mismatch!", motion.getOrigin(), motion.getTarget());
- return false;
- }
+ if (!checkSimilarityPath(motion, assignCommand)) {
+ return false;
}
shuttleCommands.add(shuttleCommands.size(), shuttleThread.getLiftCommand(motion.getTaskNo(), false));
@@ -372,17 +326,6 @@
//鑾峰彇鍙敤寰呮満浣�
String shuttleFromLiftStandbyLoc = shuttleDispatcher.searchAvailableLocNo(Integer.valueOf(shuttleDevice.getDeviceNo()), shuttleDevice.getHostId(), shuttleThread.getStatus().getCurrentLocNo(), standbyLocs);
shuttleCommands = this.shuttleAssignCommand(motion.getOrigin(), shuttleFromLiftStandbyLoc, NavigationMapType.NORMAL.id, assignCommand, shuttleThread);
-
- movePath = motion.getMovePath();
- if (!Cools.isEmpty(movePath)) {
- originPath = JSON.parseArray(movePath, NavigateNode.class);
- finalPath = assignCommand.getNodes();
- similarity = navigateUtils.similarityPath(originPath, finalPath);
- if(similarity <= similarityRef) {
- News.error("{} dash {} path similarity mismatch!", motion.getOrigin(), motion.getTarget());
- return false;
- }
- }
//鏇存柊鍔ㄤ綔鍙敤寰呮満浣�
motion.setTarget(shuttleFromLiftStandbyLoc);
@@ -701,5 +644,53 @@
return commands;
}
+ private boolean checkSimilarityPath(Motion motion, ShuttleAssignCommand assignCommand) {
+ String movePath = motion.getMovePath();
+ if (Cools.isEmpty(movePath)) {
+ return false;
+ }
+
+ Double similarityRef = 0.9D;
+ Dict similarityRefDict = dictService.getOne(new LambdaQueryWrapper<Dict>()
+ .eq(Dict::getFlag, "similarityRef")
+ .eq(Dict::getStatus, 1));
+ if (similarityRefDict != null) {
+ similarityRef = Double.parseDouble(similarityRefDict.getValue());
+ }
+
+ List<NavigateNode> originPath = JSON.parseArray(movePath, NavigateNode.class);
+ List<NavigateNode> finalPath = assignCommand.getNodes();
+
+ if (finalPath == null) {
+ return false;
+ }
+
+ Double similarity = navigateUtils.similarityPath(originPath, finalPath);
+ if (similarity <= similarityRef) {
+ Object object = redisUtil.get(DeviceRedisConstant.SIMILARITY_TIMES + motion.getTaskNo());
+ if (object == null) {
+ redisUtil.set(DeviceRedisConstant.SIMILARITY_TIMES + motion.getTaskNo(), System.currentTimeMillis(), 60 * 60 * 24);
+ }else {
+ long similarityTimeoutRef = 20L;//榛樿瓒呮椂20s
+ Dict similarityTimeoutDict = dictService.getOne(new LambdaQueryWrapper<Dict>()
+ .eq(Dict::getFlag, "similarityTimeout")
+ .eq(Dict::getStatus, 1));
+ if (similarityTimeoutDict != null) {
+ similarityTimeoutRef = Long.parseLong(similarityTimeoutDict.getValue());
+ }
+
+ long recordTime = Long.parseLong(object.toString());
+ if (System.currentTimeMillis() - recordTime > (60 * similarityTimeoutRef)) {
+ //瓒呮椂锛岀洿鎺ユ斁琛�
+ return true;
+ }
+ }
+ News.error("{} dash {} path similarity mismatch!", motion.getOrigin(), motion.getTarget());
+ return false;
+ }
+
+ return true;
+ }
+
}
--
Gitblit v1.9.1