From c25ccc2181c8d47936cf86443359e783eedeb018 Mon Sep 17 00:00:00 2001
From: yxFwq <1>
Date: 星期二, 19 十一月 2024 15:19:57 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/common/utils/RgvUtils.java | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 103 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/zy/common/utils/RgvUtils.java b/src/main/java/com/zy/common/utils/RgvUtils.java
index 8ec45be..972607b 100644
--- a/src/main/java/com/zy/common/utils/RgvUtils.java
+++ b/src/main/java/com/zy/common/utils/RgvUtils.java
@@ -1,11 +1,114 @@
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, Integer wrkNo, boolean lock) {
+ List<RgvNode> pathList = getPathList(startPath, endPath);//閫氳繃璧风偣鍜岀洰鏍囩偣鑾峰彇琛岃蛋璺緞
+ lockPath(pathList, rgvNo, wrkNo, lock);
+ }
+
+ //閿佸畾/瑙i攣璺緞
+ public static void lockPath(List<RgvNode> pathList, Integer rgvNo, Integer wrkNo, 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);//RGV鍙�
+ rgvNode.setWrkNo(wrkNo);//宸ヤ綔鍙�
+ } else {
+ rgvNode.setLock(false);//瑙i攣
+ rgvNode.setRgvNo(0);
+ rgvNode.setRgvNo(0);
+ }
+ }
+ }
+ }
+
+ //瑙i攣璺緞锛岄�氳繃RGV鍙疯繘琛岃В閿併�傛敞鎰忥細璋冪敤姝ゆ柟娉曚細瑙i攣RGV鍙峰搴旇溅杈嗗叏閮ㄨ矾寰�
+ public static void unLockPath(Integer rgvNo) {
+ RedisUtil redisUtil = SpringUtils.getBean(RedisUtil.class);
+ Object data = redisUtil.get("rgv_map");
+ List<RgvNode> rgvNodes = JSON.parseArray(data.toString(), RgvNode.class);//瀹炴椂鍦板浘
+ for (RgvNode rgvNode : rgvNodes) {//閬嶅巻瀹炴椂鍦板浘
+ if (rgvNode.getRgvNo().equals(rgvNo)) {
+ //RGV鍙风浉鍚�
+ 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