diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/srgv/BaseSRgvThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/srgv/BaseSRgvThread.java index beb9bd7..1f15d00 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/srgv/BaseSRgvThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/srgv/BaseSRgvThread.java @@ -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 wcsSrgvMaps = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMapParam); + List cacheSite = wcsSrgvMaps.stream().map(WcsSrgvMap::getSiteId).collect(Collectors.toList()); + List 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 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 wcsSrgvMaps = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMapParam); + List cacheSite = wcsSrgvMaps.stream().map(WcsSrgvMap::getSiteId).collect(Collectors.toList()); + List 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 wcsSrgvQueues = wcsSagvQueueMapper.selectWcsSrgvQueueList(wcsSrgvQueueParam); + if (CollUtil.isEmpty(wcsSrgvQueues)){ + wcsSrgvQueue.setEndSite(cacheSite.get(0)); + wcsSagvQueueMapper.updateWcsSrgvQueue(wcsSrgvQueue); + break; + } + } + + } + } + + } } //获取拐点路径