From 80d97d40c44165674ee0168be5f08c8ca52d3c06 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期一, 09 六月 2025 09:36:43 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/jxgtwcs' into jxgtwcs
---
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java | 33 ++++++++--------
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java | 7 ++-
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/NavigateUtils.java | 36 +++++++++++++++++
3 files changed, 56 insertions(+), 20 deletions(-)
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
index fd3328b..e263be0 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
@@ -984,6 +984,9 @@
//绌挎杞﹀嚭鎻愬崌鏈哄簱浣嶅彿
String liftLocNoFrom = shuttleStandbyFrom.getDeviceLoc();
+ //绌挎杞︽崲灞傛椂寰呮満浣嶇疆 浣跨敤琛ㄥ垪 memo鏁版嵁
+ String standbyLocNoMemo = shuttleStandbyTo.getMemo();
+
//绌挎杞﹁繘鎻愬崌鏈哄緟鏈轰綅搴撲綅鍙�
String standbyLocNoTo = shuttleStandbyTo.getDeviceStandbyLoc();
@@ -1018,7 +1021,7 @@
MotionDto.build((dto -> {
dto.setShuttleNo(shuttleDevice.getId().intValue());
dto.setShuttleDevice(shuttleDevice);
- dto.setLocNo(standbyLocNoTo);
+ dto.setLocNo(standbyLocNoMemo);
})),
MotionCtgType.SHUTTLE_MOVE
));
@@ -1044,7 +1047,7 @@
motionList.addAll(kernelService.shuttleMove(
MotionDto.build((dto -> {
dto.setShuttleNo(shuttleDevice.getId().intValue());
- dto.setLocNo(standbyLocNoTo);
+ dto.setLocNo(standbyLocNoMemo);
})),
MotionDto.build((dto -> {
dto.setShuttleNo(shuttleDevice.getId().intValue());
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java
index 0582f3e..e29ee8c 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/service/impl/MainServiceImpl.java
@@ -23,10 +23,7 @@
import com.zy.asrs.wcs.core.model.command.LiftCommand;
import com.zy.asrs.wcs.core.model.enums.*;
import com.zy.asrs.wcs.core.service.*;
-import com.zy.asrs.wcs.core.utils.OpenUtils;
-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.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;
@@ -95,6 +92,8 @@
private OpenUtils openUtils;
@Autowired
private LiftAction liftAction;
+ @Autowired
+ private NavigateUtils navigateUtils;
/**
* 缁勬墭
@@ -780,10 +779,6 @@
* 鍑哄簱 ====>> 鍚屼竴鏃堕棿涓�鍙扮┛姊溅鍙兘鏈変竴涓嚭搴撲换鍔�
*/
public synchronized void analyzeOutBoundTask() {
- List<Task> moveTask = taskService.selectWaitAnalyzeMoveTask();
- if (!moveTask.isEmpty()) {
- return;
- }
List<Task> tasks = taskService.selectPakOut();
if (tasks.isEmpty()) {
return;
@@ -816,15 +811,13 @@
// continue;
// }
-// //鍚屽簱浣嶇粍鏍¢獙
-// List<String> outerLoc = Utils.getGroupOuterLoc(wrkMast.getSourceLocNo());
-// List<LocMast> outerLocMasts = locMastService.selectNotEmptyLocNos(outerLoc);
-// if (!outerLocMasts.isEmpty()) {
-// News.info("{}浠诲姟锛屾祬搴撲綅瀛樺湪璐х墿锛岀郴缁熺瓑寰呬腑", wrkMast.getWrkNo());
-// continue;//娴呭簱浣嶅瓨鍦ㄦ湭鎵ц浠诲姟
-// }
+ //妫�娴嬭揣鐗╂槸鍚﹀彲鍑�
+ boolean checkLocPathIsAvailable = navigateUtils.checkLocPathIsAvailable(task.getOriginLoc(), task.getHostId());
+ if(!checkLocPathIsAvailable) {
+ continue;
+ }
- if (Cools.isEmpty(task.getShuttleNo())) {
+ if (Cools.isEmpty(task.getShuttleNo()) || task.getShuttleNo() ==0) {
//鍒嗛厤灏忚溅
//鎼滅储绌洪棽杞�
ShuttleThread shuttleThread = shuttleDispatcher.searchIdleShuttle(task);
@@ -844,7 +837,7 @@
// generate motion list
List<Motion> motionList = analyzeService.generateMotion(task);
if (Cools.isEmpty(motionList)) {
- task.setShuttleNo(null);//淇濆瓨绌挎杞﹀彿
+ task.setShuttleNo(0);//淇濆瓨绌挎杞﹀彿
task.setUpdateTime(new Date());
if (!taskService.updateById(task)) {
News.info("{}浠诲姟鏇存柊绌挎杞﹀彿澶辫触", task.getTaskNo());
@@ -1313,6 +1306,12 @@
// 瑙f瀽灏忚溅杞借揣绉诲姩宸ヤ綔妗�
public synchronized void analyzeLadenMoveTask() {
for (Task task : taskService.selectWaitAnalyzeLadenMoveTask()) {
+ //妫�娴嬭揣鐗╂槸鍚﹀彲鍑�
+ boolean checkLocPathIsAvailable = navigateUtils.checkLocPathIsAvailable(task.getOriginLoc(), task.getHostId());
+ if(!checkLocPathIsAvailable) {
+ continue;
+ }
+
if (Cools.isEmpty(task.getShuttleNo())) {
//鍒嗛厤灏忚溅
//鎼滅储绌洪棽杞�
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/NavigateUtils.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/NavigateUtils.java
index 4d998c0..a79de4f 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/NavigateUtils.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/NavigateUtils.java
@@ -2,13 +2,19 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.asrs.framework.common.SpringUtils;
+import com.zy.asrs.wcs.core.entity.ShuttleStandby;
import com.zy.asrs.wcs.core.model.MapNode;
import com.zy.asrs.wcs.core.model.NavigateNode;
import com.zy.asrs.wcs.core.model.PythonSimilarityResult;
import com.zy.asrs.wcs.core.model.enums.MapNodeType;
import com.zy.asrs.wcs.core.model.enums.NavigationMapType;
+import com.zy.asrs.wcs.core.service.ShuttleStandbyService;
import com.zy.asrs.wcs.rcs.News;
+import com.zy.asrs.wcs.rcs.entity.Device;
+import com.zy.asrs.wcs.rcs.thread.LiftThread;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@@ -26,9 +32,12 @@
@Value("${pythonCalcPath}")
private String pythonCalcPath;
-
@Value("${pythonCalcSimilarity}")
private String pythonCalcSimilarity;
+ @Autowired
+ private LiftDispatcher liftDispatcher;
+ @Autowired
+ private ShuttleStandbyService shuttleStandbyService;
public List<NavigateNode> calcWhiteList(String startPoint, String endPoint, Integer mapType, List<int[]> shuttlePoints) {
//閫氳繃寮�濮嬬紪鍙峰拰缁撴潫缂栧彿鑾峰彇瀵瑰簲鐨剎y杞村潗鏍�
@@ -418,6 +427,31 @@
return 0D;
}
+ //妫�娴嬪簱浣嶈矾寰勬槸鍚﹀彲鐢�(鐢ㄤ簬搴撲綅鏄惁鍙Щ鍔ㄦ娴�)
+ public boolean checkLocPathIsAvailable(String startLocNo, Long hostId) {
+ //鑾峰彇璺濈鐩爣浣嶇疆鏈�杩戠殑鍙崲灞傛彁鍗囨満(鍙兘涓嶇┖闂�)
+ LiftThread liftThread = liftDispatcher.searchLift(startLocNo, hostId, true);
+ if (liftThread == null) {
+ return false;
+ }
+ Device transferLiftDevice = liftThread.getDevice();
+
+ ShuttleStandby shuttleStandbyTo = shuttleStandbyService.getOne(new LambdaQueryWrapper<ShuttleStandby>()
+ .eq(ShuttleStandby::getDeviceId, transferLiftDevice.getId())
+ .eq(ShuttleStandby::getDeviceLev, Utils.getLev(startLocNo))
+ .eq(ShuttleStandby::getStatus, 1));
+
+ //鎻愬崌鏈哄簱浣嶅彿
+ String liftLocNo = shuttleStandbyTo.getDeviceLoc();
+
+ //璁$畻搴撲綅鍒版彁鍗囨満搴撲綅锛岃矾寰勬槸鍚﹀彲鐢�
+ List<NavigateNode> nodeList = this.calc(startLocNo, liftLocNo, NavigationMapType.DFX.id, null);
+ if (nodeList == null) {
+ return false;
+ }
+ return true;
+ }
+
public static void main(String[] args) {
// //璁$畻璺緞
// List<NavigateNode> calc = calc("1000901", "1800201", NavigationMapType.NONE.id, null);
--
Gitblit v1.9.1