From e0c7be4335fd432e60bfc5cbb81dfd7096589a0b Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 14 七月 2023 10:42:33 +0800
Subject: [PATCH] rgv路径
---
src/main/java/com/zy/common/utils/RgvUtils.java | 87 +++++++++++++++++++++++++++++
src/main/java/com/zy/asrs/entity/RgvNode.java | 2
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 65 ++++++++++++++++++++-
3 files changed, 151 insertions(+), 3 deletions(-)
diff --git a/src/main/java/com/zy/asrs/entity/RgvNode.java b/src/main/java/com/zy/asrs/entity/RgvNode.java
index b5e5efc..644f8ff 100644
--- a/src/main/java/com/zy/asrs/entity/RgvNode.java
+++ b/src/main/java/com/zy/asrs/entity/RgvNode.java
@@ -9,6 +9,8 @@
private Boolean lock = false;//璺緞閿佸畾
+ private Integer rgvNo = 0;//RGV鍙�
+
public RgvNode(Integer path) {
this.path = path;
}
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 08378c0..5be7d4a 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -632,7 +632,7 @@
}
//鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
- Integer staNo = wrkMast.getStaNo();
+ Integer staNo = wrkMast.getSourceStaNo();
BasDevp basDevp = basDevpService.selectById(staNo);
if (basDevp == null) {
continue;//鐩爣绔欎笉瀛樺湪
@@ -641,8 +641,13 @@
int startPath = rgvProtocol.getRgvPos().intValue();
//鐩爣璺緞鍊�
int endPath = basDevp.getLocType3().intValue();
- boolean pathUsed = RgvUtils.isPathUsed(startPath, endPath);
-
+ boolean pathUsed = RgvUtils.isPathUsed(startPath, endPath);//鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+ if (pathUsed) {
+ //琛岃蛋璺緞琚崰鐢紝绂佹涓嬪彂鍛戒护
+ continue;
+ }
+ //琛岃蛋璺緞绌洪棽锛岄攣瀹氳矾寰�
+ RgvUtils.lockPath(startPath, endPath, rgvProtocol.getRgvNo(), true);
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
RgvCommand rgvCommand = new RgvCommand();
@@ -672,6 +677,24 @@
continue;
}
+ //鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+ Integer staNo = wrkMast.getStaNo();
+ BasDevp basDevp = basDevpService.selectById(staNo);
+ if (basDevp == null) {
+ continue;//鐩爣绔欎笉瀛樺湪
+ }
+ //璧峰璺緞
+ int startPath = rgvProtocol.getRgvPos().intValue();
+ //鐩爣璺緞鍊�
+ int endPath = basDevp.getLocType3().intValue();
+ boolean pathUsed = RgvUtils.isPathUsed(startPath, endPath);//鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+ if (pathUsed) {
+ //琛岃蛋璺緞琚崰鐢紝绂佹涓嬪彂鍛戒护
+ continue;
+ }
+ //琛岃蛋璺緞绌洪棽锛岄攣瀹氳矾寰�
+ RgvUtils.lockPath(startPath, endPath, rgvProtocol.getRgvNo(), true);
+
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
RgvCommand rgvCommand = new RgvCommand();
rgvCommand.setRgvNo(wrkMast.getRgvNo()); // RGV缂栧彿
@@ -696,6 +719,24 @@
if (rgvProtocol.getTaskNo1() != 0 || rgvProtocol.getLoaded1() != 0) {//RGV鏄惁鏃犱换鍔°�丷GV鏄惁鏃犺揣
continue;
}
+
+ //鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+ Integer staNo = wrkMast.getSourceStaNo();
+ BasDevp basDevp = basDevpService.selectById(staNo);
+ if (basDevp == null) {
+ continue;//鐩爣绔欎笉瀛樺湪
+ }
+ //璧峰璺緞
+ int startPath = rgvProtocol.getRgvPos().intValue();
+ //鐩爣璺緞鍊�
+ int endPath = basDevp.getLocType3().intValue();
+ boolean pathUsed = RgvUtils.isPathUsed(startPath, endPath);//鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+ if (pathUsed) {
+ //琛岃蛋璺緞琚崰鐢紝绂佹涓嬪彂鍛戒护
+ continue;
+ }
+ //琛岃蛋璺緞绌洪棽锛岄攣瀹氳矾寰�
+ RgvUtils.lockPath(startPath, endPath, rgvProtocol.getRgvNo(), true);
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
RgvCommand rgvCommand = new RgvCommand();
@@ -725,6 +766,24 @@
continue;
}
+ //鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+ Integer staNo = wrkMast.getStaNo();
+ BasDevp basDevp = basDevpService.selectById(staNo);
+ if (basDevp == null) {
+ continue;//鐩爣绔欎笉瀛樺湪
+ }
+ //璧峰璺緞
+ int startPath = rgvProtocol.getRgvPos().intValue();
+ //鐩爣璺緞鍊�
+ int endPath = basDevp.getLocType3().intValue();
+ boolean pathUsed = RgvUtils.isPathUsed(startPath, endPath);//鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
+ if (pathUsed) {
+ //琛岃蛋璺緞琚崰鐢紝绂佹涓嬪彂鍛戒护
+ continue;
+ }
+ //琛岃蛋璺緞绌洪棽锛岄攣瀹氳矾寰�
+ RgvUtils.lockPath(startPath, endPath, rgvProtocol.getRgvNo(), true);
+
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
RgvCommand rgvCommand = new RgvCommand();
rgvCommand.setRgvNo(wrkMast.getRgvNo()); // RGV缂栧彿
diff --git a/src/main/java/com/zy/common/utils/RgvUtils.java b/src/main/java/com/zy/common/utils/RgvUtils.java
index 8ec45be..37766e6 100644
--- a/src/main/java/com/zy/common/utils/RgvUtils.java
+++ b/src/main/java/com/zy/common/utils/RgvUtils.java
@@ -1,11 +1,98 @@
package com.zy.common.utils;
+import com.alibaba.fastjson.JSON;
+import com.core.common.SpringUtils;
+import com.zy.asrs.entity.RgvNode;
+
+import java.util.ArrayList;
+import java.util.List;
+
public class RgvUtils {
//鍒ゆ柇琛岃蛋璺緞鏄惁琚崰鐢�
public static boolean isPathUsed(Integer startPath,Integer endPath) {
+ RedisUtil redisUtil = SpringUtils.getBean(RedisUtil.class);
+ Object data = redisUtil.get("rgv_map");
+ List<RgvNode> rgvNodes = JSON.parseArray(data.toString(), RgvNode.class);//瀹炴椂鍦板浘
+ List<RgvNode> pathList = getPathList(startPath, endPath);//閫氳繃璧风偣鍜岀洰鏍囩偣鑾峰彇琛岃蛋璺緞
+ //鎻愬彇鍙楁帶璺緞
+ ArrayList<Integer> list = new ArrayList<>();
+ for (RgvNode rgvNode : pathList) {
+ //鍒ゆ柇璺緞鏄惁琚崰鐢�
+ if (rgvNode.getPath().equals(startPath)) {
+ //璧风偣璺緞涓嶇撼鍏ヨ绠楄寖鍥�
+ continue;
+ }
+ list.add(rgvNode.getPath());
+ }
+
+ for (RgvNode node : rgvNodes) {//閬嶅巻瀹炴椂鍦板浘
+ if (list.contains(node.getPath())) {
+ //璺緞鐩稿悓锛屽垽鏂槸鍚﹁鍗犵敤
+ if (node.getLock()) {
+ return true;//鍙鏈変竴鏉¤矾寰勮鍗犵敤锛屾暣浣撹矾鍧囦笉鍙敤
+ }
+ }
+ }
return false;
}
+ //閿佸畾/瑙i攣璺緞
+ public static void lockPath(Integer startPath, Integer endPath, Integer rgvNo, boolean lock) {
+ List<RgvNode> pathList = getPathList(startPath, endPath);//閫氳繃璧风偣鍜岀洰鏍囩偣鑾峰彇琛岃蛋璺緞
+ lockPath(pathList, rgvNo, lock);
+ }
+
+ //閿佸畾/瑙i攣璺緞
+ public static void lockPath(List<RgvNode> pathList, Integer rgvNo, boolean lock) {
+ RedisUtil redisUtil = SpringUtils.getBean(RedisUtil.class);
+ Object data = redisUtil.get("rgv_map");
+ List<RgvNode> rgvNodes = JSON.parseArray(data.toString(), RgvNode.class);//瀹炴椂鍦板浘
+ ArrayList<Integer> list = new ArrayList<>();
+ for (RgvNode rgvNode : pathList) {//鎻愬彇鍙楁帶璺緞
+ list.add(rgvNode.getPath());
+ }
+
+ for (RgvNode rgvNode : rgvNodes) {//閬嶅巻瀹炴椂鍦板浘
+ if (list.contains(rgvNode.getPath())) {
+ //璺緞鐩稿悓
+ if (lock) {
+ rgvNode.setLock(true);//閿佸畾
+ rgvNode.setRgvNo(rgvNo);
+ } else {
+ rgvNode.setLock(false);//瑙i攣
+ rgvNode.setRgvNo(0);
+ }
+ }
+ }
+ }
+
+ //閫氳繃璧风偣鍜岀洰鏍囩偣鑾峰彇琛岃蛋璺緞
+ public static List<RgvNode> getPathList(Integer startPath, Integer endPath) {
+ int result = startPath - endPath;
+ ArrayList<RgvNode> list = new ArrayList<>();
+ if (result == 0) {
+ list.add(new RgvNode(startPath));
+ return list;
+ }
+
+ if (result > 0) {
+ //璧风偣 - 鐩爣鐐� > 0 姝f柟鍚�
+ for (int i = startPath; i >= endPath; i--) {
+ list.add(new RgvNode(i));
+ }
+ }else {
+ //璧风偣 = 鐩爣鐐� < 0 璐熸柟鍚�
+ for (int i = startPath; i <= endPath; i++) {
+ list.add(new RgvNode(i));
+ }
+ }
+ return list;
+ }
+
+ public static void main(String[] args) {
+ System.out.println(getPathList(5,5));
+ }
+
}
--
Gitblit v1.9.1