zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
@@ -90,7 +90,7 @@ @Autowired private SegmentService segmentService; @Autowired private TrafficService trafficService; private LaneService laneService; @Autowired private AgvModelService agvModelService; @Autowired @@ -950,6 +950,22 @@ // 反向角 final double oppLastDir = (lastDirection + 180) % 360; // 巷道逻辑 if (!laneBuilder.isInitialized()) { throw new BusinessException("lanes are not initialized"); } LaneDto lastLaneDto = laneBuilder.search(lastCode.getData()); LaneDto nextLaneDto = laneBuilder.search(nextCode.getData()); // 进入巷道角度 Double laneDir = laneService.getLaneDirection(nextLaneDto); // 第一次进入此巷道 boolean firstEnteringLane = null != laneDir && ( lastLaneDto == null || !Objects.equals(lastLaneDto.getHashCode(), nextLaneDto.getHashCode()) ); // 如果下一个方向正好是作业方向的相反方向,则重置下一个方向为作业方向,标记 reverse = true boolean reverse = false; if (nextDirection.equals(oppWorkDir)) { zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/LaneService.java
@@ -10,4 +10,6 @@ List<Lane> batchSaveByLaneDtoList(Long zonedId, List<LaneDto> laneDtoList); Double getLaneDirection(LaneDto laneDto); } zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/LaneServiceImpl.java
@@ -6,6 +6,7 @@ import com.zy.acs.framework.common.SnowflakeIdWorker; import com.zy.acs.framework.exception.CoolException; import com.zy.acs.manager.core.domain.LaneDto; import com.zy.acs.manager.core.service.MapService; import com.zy.acs.manager.manager.entity.Lane; import com.zy.acs.manager.manager.enums.StatusType; import com.zy.acs.manager.manager.mapper.LaneMapper; @@ -55,4 +56,25 @@ return lanes; } @Override public Double getLaneDirection(LaneDto laneDto) { if (null == laneDto) { return null; } Lane lane = this.getById(laneDto.getLaneId()); if (null == lane) { return null; } Integer entryAngle = lane.getEntryAngle(); if (null == entryAngle) { return null; } if (entryAngle < 0) { return null; } double entryAngleDouble = entryAngle.doubleValue(); return MapService.mapToNearest(entryAngleDouble); // return entryAngleDouble; } }