From 81d537833adcbd5ef5333453e495eae2cac9f496 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期一, 21 七月 2025 15:01:51 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/task/main/ShuttleTaskExecuteScheduler.java | 20 ++++++++++
src/main/java/com/zy/common/model/NavigateNode.java | 1
src/main/java/com/zy/common/utils/ShuttleOperaUtils.java | 8 ++--
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 2
src/main/java/com/zy/common/utils/NavigateUtils.java | 74 ++++++++++++++++++++++++++++--------
src/main/java/com/zy/core/MainProcess.java | 4 +-
src/main/resources/application.yml | 4 ++
7 files changed, 89 insertions(+), 24 deletions(-)
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 68e701d..69a2f13 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1301,7 +1301,7 @@
return false;
}
- if (shuttleProtocol.getCurrentLocNo().equals(wrkMast.getLocNo())) {
+ if (wrkMast.getLocNo().equals(shuttleProtocol.getCurrentLocNo())) {
//灏忚溅鍦ㄥ厖鐢垫々浣嶇疆
wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_RUN_COMPLETE.sts);
wrkMast.setModiTime(new Date());
diff --git a/src/main/java/com/zy/asrs/task/main/ShuttleTaskExecuteScheduler.java b/src/main/java/com/zy/asrs/task/main/ShuttleTaskExecuteScheduler.java
new file mode 100644
index 0000000..121a70c
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/main/ShuttleTaskExecuteScheduler.java
@@ -0,0 +1,20 @@
+package com.zy.asrs.task.main;
+
+import com.zy.asrs.service.impl.MainServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+@Component
+public class ShuttleTaskExecuteScheduler {
+
+ @Autowired
+ private MainServiceImpl mainService;
+
+ @Scheduled(cron = "0/3 * * * * ? ")
+ public void shuttleFinished() {
+ //鍥涘悜绌挎杞︿换鍔″畬鎴�
+ mainService.shuttleFinished();
+ }
+
+}
diff --git a/src/main/java/com/zy/common/model/NavigateNode.java b/src/main/java/com/zy/common/model/NavigateNode.java
index 744fec3..c1e1a70 100644
--- a/src/main/java/com/zy/common/model/NavigateNode.java
+++ b/src/main/java/com/zy/common/model/NavigateNode.java
@@ -21,6 +21,7 @@
private String direction;//琛岃蛋鏂瑰悜
private Integer moveDistance;//琛岃蛋璺濈
private Integer nodeValue;//鑺傜偣鏁版嵁
+ private Boolean linePartAllowGo = false;//鐩寸嚎娈甸儴鍒嗭紝鍏佽鐩存帴琛岃蛋
public NavigateNode(int x, int y) {
this.x = x;
diff --git a/src/main/java/com/zy/common/utils/NavigateUtils.java b/src/main/java/com/zy/common/utils/NavigateUtils.java
index db95875..c6e94ab 100644
--- a/src/main/java/com/zy/common/utils/NavigateUtils.java
+++ b/src/main/java/com/zy/common/utils/NavigateUtils.java
@@ -189,7 +189,7 @@
}
//璁$畻甯︽湯绔钀借矾寰�
- public ArrayList<ArrayList<NavigateNode>> calcEndPath(String startPoint, String endPoint, List<NavigationMapType> mapTypes, List<int[]> shuttlePoints, List<int[]> whites, int lastPathPart) {
+ public List<List<NavigateNode>> calcEndPath(String startPoint, String endPoint, List<NavigationMapType> mapTypes, List<int[]> shuttlePoints, List<int[]> whites, int lastPathPart) {
//璁$畻璺緞
List<NavigateNode> navigateNodes = calc(startPoint, endPoint, mapTypes, shuttlePoints, whites);
if (navigateNodes == null) {
@@ -198,7 +198,7 @@
}
//鑾峰彇鍒嗘璺緞
- ArrayList<ArrayList<NavigateNode>> partList = this.getSectionPath(navigateNodes);
+ List<List<NavigateNode>> partList = this.getSectionPath(navigateNodes);
//鏍规嵁浼犲叆鐨勬湯绔钀借矾寰勶紝鎵惧埌鏈鐐逛綅
int partResult = partList.size() - lastPathPart;
if (partResult == 0) {//璺緞鏁伴噺鐩稿悓鏃犻渶鍒嗗壊
@@ -207,7 +207,7 @@
throw new CoolException("鍒嗘璺緞涓庢湯绔矾寰勬暟閲忚绠楀紓甯�");
}
int pathIdx = partResult - 1;
- ArrayList<ArrayList<NavigateNode>> filterList = new ArrayList<>();
+ List<List<NavigateNode>> filterList = new ArrayList<>();
for (int i = 0; i <= pathIdx; i++) {
filterList.add(partList.get(i));
}
@@ -216,7 +216,7 @@
//璁$畻鏈娈佃惤鍦板潃
public String calcEndLocation(String startPoint, String endPoint, List<NavigationMapType> mapTypes, List<int[]> shuttlePoints, List<int[]> whites, int lastPathPart) {
- ArrayList<ArrayList<NavigateNode>> endPath = calcEndPath(startPoint, endPoint, mapTypes, shuttlePoints, whites, lastPathPart);
+ List<List<NavigateNode>> endPath = calcEndPath(startPoint, endPoint, mapTypes, shuttlePoints, whites, lastPathPart);
if (endPath == null) {
return null;
}
@@ -224,13 +224,8 @@
return findTargetLocation(endPath);
}
- public String findTargetLocation(List<NavigateNode> nodeList) {
- ArrayList<ArrayList<NavigateNode>> sectionPath = this.getSectionPath(nodeList);
- return findTargetLocation(sectionPath);
- }
-
- public String findTargetLocation(ArrayList<ArrayList<NavigateNode>> partList) {
- ArrayList<NavigateNode> nodes = partList.get(partList.size() - 1);
+ public String findTargetLocation(List<List<NavigateNode>> partList) {
+ List<NavigateNode> nodes = partList.get(partList.size() - 1);
NavigateNode targetNode = nodes.get(0);
String locNo = NavigatePositionConvert.nodeToLocNo(targetNode);
return locNo;
@@ -292,10 +287,10 @@
* 鍔犺浆寮妭鐐�
* 鑾峰彇鍒嗘璺緞锛屾瘡褰撴湁涓�涓嫄鐐瑰垯杩涜涓�娆″垎娈碉紝鏈�缁堣繑鍥炴�诲垎娈垫暟鎹�
*/
- public ArrayList<ArrayList<NavigateNode>> getSectionPath(List<NavigateNode> mapList) {
- ArrayList<ArrayList<NavigateNode>> list = new ArrayList<>();
+ public List<List<NavigateNode>> getSectionPath(List<NavigateNode> mapList) {
+ List<List<NavigateNode>> list = new ArrayList<>();
- ArrayList<NavigateNode> data = new ArrayList<>();
+ List<NavigateNode> data = new ArrayList<>();
String direction = mapList.get(0).getDirection();//琛岃蛋鏂瑰悜
for (NavigateNode navigateNode : mapList) {
@@ -318,7 +313,52 @@
//灏嗘渶鍚庝竴娈垫暟鎹坊鍔犺繘鍏�
list.add(data);
- return list;
+ List<List<NavigateNode>> paths = getSectionPathToSplitOverLength(list);
+ return paths;
+ }
+
+ //鍒嗘璺緞-澶勭悊瓒呴暱鐩寸嚎娈佃矾寰�
+ public List<List<NavigateNode>> getSectionPathToSplitOverLength(List<List<NavigateNode>> list) {
+ List<List<NavigateNode>> paths = new ArrayList<>();
+ int overLength = 9;
+ for (List<NavigateNode> nodes : list) {
+ if (nodes.size() > overLength) {
+ List<NavigateNode> copy = JSON.parseArray(JSON.toJSONString(nodes), NavigateNode.class);
+ List<NavigateNode> tmp = new ArrayList<>();
+ int tmpCount = 0;
+ NavigateNode lastNode = null;
+ for (NavigateNode node : copy) {
+ tmp.add(node);
+ tmpCount++;
+
+ if(tmpCount >= overLength) {
+ if (lastNode == null) {
+ NavigateNode startNode = tmp.get(0);
+ startNode.setLinePartAllowGo(true);//鐩寸嚎娈佃秴闀块儴鍒嗗厑璁哥洿鎺ヨ璧�
+ tmp.set(0, startNode);
+ }
+ NavigateNode targetNode = tmp.get(tmp.size() - 1);
+ targetNode.setLinePartAllowGo(true);//鐩寸嚎娈佃秴闀块儴鍒嗗厑璁哥洿鎺ヨ璧�
+ if (lastNode != null) {
+ tmp.add(0, lastNode);
+ }
+
+ paths.add(tmp);
+ tmp = new ArrayList<>();
+ tmpCount = 0;
+ lastNode = targetNode;
+ }
+ }
+
+ if (tmpCount > 0) {
+ tmp.add(0, lastNode);
+ paths.add(tmp);
+ }
+ }else {
+ paths.add(nodes);
+ }
+ }
+ return paths;
}
//鑾峰彇浠巟鐐瑰埌涓嬩竴鐐圭殑琛岃蛋璺濈
@@ -348,9 +388,9 @@
* 鏍规嵁鍘熷鑺傜偣缁撴灉锛岃绠楁�昏璧拌窛绂�
*/
public Integer getOriginPathAllDistance(List<NavigateNode> path) {
- ArrayList<ArrayList<NavigateNode>> sectionPath = getSectionPath(path);
+ List<List<NavigateNode>> sectionPath = getSectionPath(path);
Integer allDistance = 0;
- for (ArrayList<NavigateNode> navigateNodes : sectionPath) {
+ for (List<NavigateNode> navigateNodes : sectionPath) {
Integer distance = getCurrentPathAllDistance(navigateNodes);
allDistance += distance;
}
diff --git a/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java b/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
index 170dc3e..4ad11e8 100644
--- a/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
+++ b/src/main/java/com/zy/common/utils/ShuttleOperaUtils.java
@@ -93,9 +93,9 @@
List<ShuttleCommand> commands = new ArrayList<>();
//鑾峰彇鍒嗘璺緞
- ArrayList<ArrayList<NavigateNode>> data = navigateUtils.getSectionPath(nodeList);
+ List<List<NavigateNode>> data = navigateUtils.getSectionPath(nodeList);
//灏嗘瘡涓�娈佃矾寰勫垎鎴恈ommand鎸囦护
- for (ArrayList<NavigateNode> nodes : data) {
+ for (List<NavigateNode> nodes : data) {
//寮�濮嬭矾寰�
NavigateNode startPath = nodes.get(0);
@@ -160,9 +160,9 @@
List<ShuttleCommand> commands = new ArrayList<>();
//鑾峰彇鍒嗘璺緞
- ArrayList<ArrayList<NavigateNode>> data = navigateUtils.getSectionPath(nodeList);
+ List<List<NavigateNode>> data = navigateUtils.getSectionPath(nodeList);
//灏嗘瘡涓�娈佃矾寰勫垎鎴恈ommand鎸囦护
- for (ArrayList<NavigateNode> nodes : data) {
+ for (List<NavigateNode> nodes : data) {
//寮�濮嬭矾寰�
NavigateNode startPath = nodes.get(0);
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 24c05dd..164f944 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -51,8 +51,8 @@
mainService.shuttleInExecute();
// 鍑哄簱 ===>> 鍥涘悜绌挎杞﹀嚭搴撲綔涓氫笅鍙�
mainService.shuttleOutExecute();
- //鍥涘悜绌挎杞︿换鍔″畬鎴�
- mainService.shuttleFinished();
+// //鍥涘悜绌挎杞︿换鍔″畬鎴�
+// mainService.shuttleFinished();
//鎵ц绉诲簱浠诲姟
mainService.shuttleLocMoveExecute();
//璐у弶鎻愬崌鏈轰换鍔�
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 5e984ee..be50803 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -21,6 +21,10 @@
port: 6379
database: 0
# password: 123456
+ task:
+ scheduling:
+ pool:
+ size: 3
mybatis-plus:
mapper-locations: classpath:mapper/*.xml
--
Gitblit v1.9.1