小车规划路径 如果无最短路径 判断是否是1层去避让点或者出库缓存点

This commit is contained in:
liuhanqing
2025-12-01 10:17:00 +08:00
parent d14b886a7f
commit 137027254b

View File

@@ -411,8 +411,62 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
//判断是否能规划出最短路径
if (shortestPath == null || shortestPath.isEmpty()) {
log.error("无最短路径 taskNo:{}", wcsSrgvQueue.getTaskNo());
return false;
//判断是否是1层 空车取货 或者 满车放货
if (floor==1){
if ("2".equals(wcsSrgvQueue.getDefault02()) && "tsj".equals(wcsSrgvQueue.getStartSite()) && wcsSrgvQueue.getEndSite().equals(wcsSrgvQueue.getCargoPlaceSite())){
//1层满车放货
//修改终点到出库缓存点
WcsSrgvMap wcsSrgvMapParam = new WcsSrgvMap();
wcsSrgvMapParam.setRemark("outCache");
List<WcsSrgvMap> wcsSrgvMaps = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMapParam);
List<String> cacheSite = wcsSrgvMaps.stream().map(WcsSrgvMap::getSiteId).collect(Collectors.toList());
List<String> currentSRgvSite = new ArrayList<>();
for (String srgvCode : PlcSrgvRead.deviceSrgvMap.keySet()) {
currentSRgvSite.add(PlcSrgvRead.deviceSrgvMap.get(srgvCode).getCurrSite());
}
cacheSite.removeAll(currentSRgvSite);
if (CollUtil.isNotEmpty(cacheSite)){
for (String cache : cacheSite) {
WcsSrgvQueue wcsSrgvQueueParam = new WcsSrgvQueue();
wcsSrgvQueueParam.setEndSite(cache);
List<WcsSrgvQueue> wcsSrgvQueues = wcsSagvQueueMapper.selectWcsSrgvQueueList(wcsSrgvQueueParam);
if (CollUtil.isEmpty(wcsSrgvQueues)){
wcsSrgvQueue.setEndSite(cacheSite.get(0));
wcsSagvQueueMapper.updateWcsSrgvQueue(wcsSrgvQueue);
break;
}
}
}
}
if ("4".equals(wcsSrgvQueue.getDefault02()) && "tsj".equals(wcsSrgvQueue.getStartSite()) && wcsSrgvQueue.getEndSite().equals(wcsSrgvQueue.getCargoPickSite())){
//1层空车取货
//修改终点到避让点
WcsSrgvMap wcsSrgvMapParam = new WcsSrgvMap();
wcsSrgvMapParam.setRemark("cache");
List<WcsSrgvMap> wcsSrgvMaps = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMapParam);
List<String> cacheSite = wcsSrgvMaps.stream().map(WcsSrgvMap::getSiteId).collect(Collectors.toList());
List<String> currentSRgvSite = new ArrayList<>();
for (String srgvCode : PlcSrgvRead.deviceSrgvMap.keySet()) {
currentSRgvSite.add(PlcSrgvRead.deviceSrgvMap.get(srgvCode).getCurrSite());
}
cacheSite.removeAll(currentSRgvSite);
if (CollUtil.isNotEmpty(cacheSite)){
for (String cache : cacheSite) {
WcsSrgvQueue wcsSrgvQueueParam = new WcsSrgvQueue();
wcsSrgvQueueParam.setEndSite(cache);
List<WcsSrgvQueue> wcsSrgvQueues = wcsSagvQueueMapper.selectWcsSrgvQueueList(wcsSrgvQueueParam);
if (CollUtil.isEmpty(wcsSrgvQueues)){
wcsSrgvQueue.setEndSite(cacheSite.get(0));
wcsSagvQueueMapper.updateWcsSrgvQueue(wcsSrgvQueue);
break;
}
}
}
}
}
}
//获取拐点路径