pjb
6 天以前 e3217895e37fdb516bb9c553a57cd70a7ec98381
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -381,11 +381,12 @@
            for (WrkMast wrkMast : wrkMasts) {
                Integer rgvSstaNo = wrkMast.getRgvSstaNo();
                // 1090,1089,1086,1083 按1083站点位置计算,能取1083,就能取1090,1089,1086,避免任务延迟下发方案一直给1083发
                if (rgvSstaNo == 1090 || rgvSstaNo == 1089 || rgvSstaNo == 1086 || rgvSstaNo == 1105) {
                    rgvSstaNo = 1083;
                }
//                if (rgvSstaNo == 1090 || rgvSstaNo == 1089 || rgvSstaNo == 1086 || rgvSstaNo == 1105) {
//                    rgvSstaNo = 1083;
//                }
                BasDevpPosition basDevpPositions = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("dev_no", rgvSstaNo)); // 站点
                long position = basDevpPositions.getPlcPosition(); // 起始站位置
                position += 50; // 小车取货定位精度 +- 50,站点位置10000,小车在10050也是可以取的
                TreeMap<Long, RgvProtocol> map = new TreeMap<>();
                for (RgvProtocol rgvProtocol : rgvProtocolList) {
                    long distance;
@@ -396,13 +397,13 @@
                    }
                    map.put(distance, rgvProtocol);
                }
//                log.info("取货站点:{},后面小车排序", basDevpPositions.getDevNo());
//                StringBuilder sb = new StringBuilder();
//                for (Map.Entry<Long, RgvProtocol> rgvProtocolMap : map.entrySet()) {
//                    RgvProtocol rgvProtocol = rgvProtocolMap.getValue();
//                    sb.append("[").append(rgvProtocol.getRgvNo()).append(",").append(rgvProtocol.getStatusType().desc).append("]");
//                }
//                log.info(sb.toString());
                log.info("取货站点:{},后面小车排序", basDevpPositions.getDevNo());
                StringBuilder sb = new StringBuilder();
                for (Map.Entry<Long, RgvProtocol> rgvProtocolMap : map.entrySet()) {
                    RgvProtocol rgvProtocol = rgvProtocolMap.getValue();
                    sb.append("[").append(rgvProtocol.getRgvNo()).append(",").append(rgvProtocol.getRgvPos()).append(",").append(rgvProtocol.getStatusType().desc).append("]");
                }
                log.info(sb.toString());
                for (Map.Entry<Long, RgvProtocol> rgvProtocolMap : map.entrySet()) {
                    RgvProtocol rgvProtocol = rgvProtocolMap.getValue(); // 最近距离小车
@@ -443,7 +444,7 @@
                                // 当前rgv任务目标站点
                                BasDevpPosition rgvDstaNoDevPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("dev_no", wrkMast1.getRgvDstaNo()));
                                long rgvDstaNoPosition = rgvDstaNoDevPosition.getPlcPosition(); // 当前rgv任务目标站点位置
                                if(rgvProtocol.getRgvPos() < rgvDstaNoPosition) { // 小车当前位置 < rgv目标位置
                                if(rgvProtocol.getRgvPos() < rgvDstaNoPosition  || Math.abs(rgvProtocol.getRgvPos() - rgvDstaNoPosition) <= 50) { // 小车当前位置 < rgv目标位置
                                    if(!(rgvProtocol.getRgvPos() < position && position < rgvDstaNoPosition)) { // 这个任务位置是在当前rgv位置前面并且这个任务起点在当前rgv目标站点之后
                                        break; // 当前rgv放货完成后,可以取当前任务
                                    }
@@ -489,7 +490,7 @@
                                // 当前rgv任务目标站点
                                BasDevpPosition rgvDstaNoDevPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("dev_no", wrkMast1.getRgvDstaNo()));
                                long rgvDstaNoPosition = rgvDstaNoDevPosition.getPlcPosition(); // 当前rgv任务目标站点位置
                                if(rgvProtocol.getRgvPos() < rgvDstaNoPosition) { // 小车当前位置 < rgv目标位置
                                if(rgvProtocol.getRgvPos() <= rgvDstaNoPosition || Math.abs(rgvProtocol.getRgvPos() - rgvDstaNoPosition) <= 50) { // 小车当前位置 < rgv目标位置
                                    if(!(rgvProtocol.getRgvPos() < position && position < rgvDstaNoPosition)) { // 这个任务位置是在当前rgv位置前面并且这个任务起点在当前rgv目标站点之后
                                        break; // 当前rgv放货完成后,可以取当前任务
                                    }