列车停站时间计算修改,不再缩减停站时间
仿真数据构建添加运行等级、停站时间、站台区段可到达的临近站台区段等数据构建(未完) 配置:ATS是否自动处理人工设置的站前折返自动更新车次构建未添加bug修改
This commit is contained in:
parent
c31d38dc66
commit
9cb57676b0
@ -244,17 +244,16 @@ public class MapService implements IMapService {
|
|||||||
MapDataVO mapDataVO = this.getMapData(mapVO.getId(), mapVO.getVersion());
|
MapDataVO mapDataVO = this.getMapData(mapVO.getId(), mapVO.getVersion());
|
||||||
mapVO.setMapData(mapDataVO);
|
mapVO.setMapData(mapDataVO);
|
||||||
// mapVO.setMap3dData(this.findMap3dDataByMapId(mapVO.getId()));
|
// mapVO.setMap3dData(this.findMap3dDataByMapId(mapVO.getId()));
|
||||||
// todo 后面可以设置为永不过期缓存
|
|
||||||
this.iCacheService.put(BusinessConsts.CachePrefix.Map + mapVO.getId(), mapVO);
|
this.iCacheService.put(BusinessConsts.CachePrefix.Map + mapVO.getId(), mapVO);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (Objects.nonNull(mapVO)) {
|
BusinessExceptionAssertEnum.DATA_NOT_EXIST.assertNotNull(mapVO,
|
||||||
// 查询线路数据,保证每次都获取最新的线路配置
|
String.format("不存在id为[%s]的地图数据", id));
|
||||||
RealLineVO realLineVO = this.iRealLineService.getLineDetailByCode(mapVO.getLineCode());
|
// 查询线路数据,保证每次都获取最新的线路配置
|
||||||
mapVO.setConfigVO(realLineVO.getConfigVO());
|
RealLineVO realLineVO = this.iRealLineService.getLineDetailByCode(mapVO.getLineCode());
|
||||||
realLineVO.setConfigVO(null);
|
mapVO.setConfigVO(realLineVO.getConfigVO());
|
||||||
mapVO.getGraphDataNew().setSkinVO(realLineVO);
|
realLineVO.setConfigVO(null);
|
||||||
}
|
mapVO.getGraphDataNew().setSkinVO(realLineVO);
|
||||||
return mapVO;
|
return mapVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ import java.util.stream.Collectors;
|
|||||||
public class RoutingGenerator {
|
public class RoutingGenerator {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生成所有交路(此处生成的交流为一个方向能到达的,且路径中只包含同向站台,不能包含反向站台或其他非正常站台轨)
|
* 生成所有交路(此处生成的交路为一个方向能到达的,且路径中只包含同向站台,不能包含反向站台或其他非正常站台轨)
|
||||||
* 生成逻辑:
|
* 生成逻辑:
|
||||||
* 1,首先构建每一个站台轨、折返轨、转换轨能到达的最近的站台轨、折返轨、转换轨(站台轨和转换轨为查找的终点)
|
* 1,首先构建每一个站台轨、折返轨、转换轨能到达的最近的站台轨、折返轨、转换轨(站台轨和转换轨为查找的终点)
|
||||||
* 2,遍历车站,取折返轨、转换轨开始生成(外循环从前往后遍历车站,内循环从后往前遍历车站)
|
* 2,遍历车站,取折返轨、转换轨开始生成(外循环从前往后遍历车站,内循环从后往前遍历车站)
|
||||||
|
@ -663,29 +663,34 @@ public class AtsPlanService {
|
|||||||
LocalTime systemTime = simulation.getSystemTime().toLocalTime();
|
LocalTime systemTime = simulation.getSystemTime().toLocalTime();
|
||||||
int parkTime = this.atsStandService.trainParkingAndGetParkTime(simulation, section);
|
int parkTime = this.atsStandService.trainParkingAndGetParkTime(simulation, section);
|
||||||
train.updateArriveInfo(systemTime, station, section);
|
train.updateArriveInfo(systemTime, station, section);
|
||||||
if (train.isPlanTrain()) {
|
if (parkTime < 0) {
|
||||||
SimulationDataRepository repository = simulation.getRepository();
|
if (train.isPlanTrain()) {
|
||||||
TripPlan tripPlan = repository.getTripPlan(train.getServiceNumber(), train.getTripNumber());
|
SimulationDataRepository repository = simulation.getRepository();
|
||||||
// 更新追踪列车到站状态
|
TripPlan tripPlan = repository.getTripPlan(train.getServiceNumber(), train.getTripNumber());
|
||||||
StationPlan stationPlan = tripPlan.queryStationPlanByStation(station);
|
// 更新追踪列车到站状态
|
||||||
if (parkTime < 0) {
|
StationPlan stationPlan = tripPlan.queryStationPlanByStation(station);
|
||||||
parkTime = stationPlan.getParkTime();
|
parkTime = stationPlan.getParkTime();
|
||||||
if (tripPlan.isFirstPlan(stationPlan)) { // 第一个计划
|
if (tripPlan.isFirstPlan(stationPlan)) { // 第一个计划
|
||||||
parkTime = stationPlan.getLeaveTime().toSecondOfDay() - systemTime.toSecondOfDay();
|
int actualParkTime = stationPlan.getLeaveTime().toSecondOfDay() - systemTime.toSecondOfDay();
|
||||||
|
if (actualParkTime > parkTime) {
|
||||||
|
parkTime = actualParkTime;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (this.checkIfFrontTurnBack(simulation, train, section, tripPlan, stationPlan)) {
|
if (this.checkIfFrontTurnBack(simulation, train, section, tripPlan, stationPlan)) {
|
||||||
//是站台折返车
|
//是站台折返车
|
||||||
//如果停车时间为0 ,则取后一个车次计划的首站发车时间
|
//如果停车时间为0 ,则取后一个车次计划的首站发车时间
|
||||||
TripPlan nextTripPlan = repository.queryServiceNextTripPlan(tripPlan.getServiceNumber(), tripPlan.getTripNumber());
|
TripPlan nextTripPlan = repository.queryServiceNextTripPlan(tripPlan.getServiceNumber(), tripPlan.getTripNumber());
|
||||||
StationPlan nextFirstStationPlan = nextTripPlan.queryStationPlanByStation(station);
|
StationPlan nextFirstStationPlan = nextTripPlan.queryStationPlanByStation(station);
|
||||||
parkTime = nextFirstStationPlan.getLeaveTime().toSecondOfDay() - systemTime.toSecondOfDay();
|
int actual = nextFirstStationPlan.getLeaveTime().toSecondOfDay() - systemTime.toSecondOfDay();
|
||||||
|
if (actual > parkTime) {
|
||||||
|
parkTime = actual;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// 头码车和人工车,取默认站台停站时间
|
||||||
|
parkTime = 30;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (parkTime < 10) {
|
|
||||||
// 头码车和人工车默认给25s
|
|
||||||
parkTime = 25;
|
|
||||||
}
|
|
||||||
LocalTime leaveTime = systemTime.plusSeconds(parkTime);
|
LocalTime leaveTime = systemTime.plusSeconds(parkTime);
|
||||||
train.updateEstimatedLeaveInfo(section, leaveTime);
|
train.updateEstimatedLeaveInfo(section, leaveTime);
|
||||||
this.atsStandService.updateStandParkTime(section, parkTime);
|
this.atsStandService.updateStandParkTime(section, parkTime);
|
||||||
|
@ -10,6 +10,8 @@ import club.joylink.rtss.exception.BusinessExceptionAssertEnum;
|
|||||||
import club.joylink.rtss.services.*;
|
import club.joylink.rtss.services.*;
|
||||||
import club.joylink.rtss.services.org.IOrgService;
|
import club.joylink.rtss.services.org.IOrgService;
|
||||||
import club.joylink.rtss.services.org.IOrgUserService;
|
import club.joylink.rtss.services.org.IOrgUserService;
|
||||||
|
import club.joylink.rtss.services.runplan.IRunPlanParktimeService;
|
||||||
|
import club.joylink.rtss.services.runplan.IRunPlanRunlevelService;
|
||||||
import club.joylink.rtss.services.script.IScriptService;
|
import club.joylink.rtss.services.script.IScriptService;
|
||||||
import club.joylink.rtss.services.script.IScriptSimulationService;
|
import club.joylink.rtss.services.script.IScriptSimulationService;
|
||||||
import club.joylink.rtss.services.simulation.SchedulingService;
|
import club.joylink.rtss.services.simulation.SchedulingService;
|
||||||
@ -54,6 +56,8 @@ import club.joylink.rtss.vo.client.map.MapVO;
|
|||||||
import club.joylink.rtss.vo.client.map.newmap.MapStationNewVO;
|
import club.joylink.rtss.vo.client.map.newmap.MapStationNewVO;
|
||||||
import club.joylink.rtss.vo.client.project.ProjectDeviceVO;
|
import club.joylink.rtss.vo.client.project.ProjectDeviceVO;
|
||||||
import club.joylink.rtss.vo.client.runplan.*;
|
import club.joylink.rtss.vo.client.runplan.*;
|
||||||
|
import club.joylink.rtss.vo.client.runplan.user.RunPlanParkingTimeVO;
|
||||||
|
import club.joylink.rtss.vo.client.runplan.user.RunPlanRunlevelVO;
|
||||||
import club.joylink.rtss.vo.client.schedulingNew.SchedulingPlanNewVO;
|
import club.joylink.rtss.vo.client.schedulingNew.SchedulingPlanNewVO;
|
||||||
import club.joylink.rtss.vo.client.script.ScriptVO;
|
import club.joylink.rtss.vo.client.script.ScriptVO;
|
||||||
import club.joylink.rtss.vo.client.simulationv1.*;
|
import club.joylink.rtss.vo.client.simulationv1.*;
|
||||||
@ -80,82 +84,60 @@ public class GroupSimulationServiceImpl implements GroupSimulationService {
|
|||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ApplicationContext applicationContext;
|
private ApplicationContext applicationContext;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IMapService iMapService;
|
private IMapService iMapService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ICommandService iCommandService;
|
private ICommandService iCommandService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ILoadPlanService iLoadPlanService;
|
private ILoadPlanService iLoadPlanService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IRunPlanTemplateService iRunPlanTemplateService;
|
private IRunPlanTemplateService iRunPlanTemplateService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private SchedulingService schedulingService;
|
private SchedulingService schedulingService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private GroupSimulationCache groupSimulationCache;
|
private GroupSimulationCache groupSimulationCache;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private SimulationLifeCycleService simulationLifeCycleService;
|
private SimulationLifeCycleService simulationLifeCycleService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private AtsOperationDispatcher atsOperationDispatcher;
|
private AtsOperationDispatcher atsOperationDispatcher;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private AtsTrainLoadService atsTrainLoadService;
|
private AtsTrainLoadService atsTrainLoadService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ATSMessageCollectAndDispatcher atsMessageCollectAndDispatcher;
|
private ATSMessageCollectAndDispatcher atsMessageCollectAndDispatcher;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private MemberManager memberManager;
|
private MemberManager memberManager;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ITrainingV1Service iTrainingV1Service;
|
private ITrainingV1Service iTrainingV1Service;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IExamService iExamService;
|
private IExamService iExamService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ILessonService iLessonService;
|
private ILessonService iLessonService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private StompMessageService stompMessageService;
|
private StompMessageService stompMessageService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IScriptService iScriptService;
|
private IScriptService iScriptService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private OtherConfig otherConfig;
|
private OtherConfig otherConfig;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private WeChatConfig weChatConfig;
|
private WeChatConfig weChatConfig;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IScriptSimulationService iScriptSimulationService;
|
private IScriptSimulationService iScriptSimulationService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private SimulationRealDeviceConnectManager simulationRealDeviceConnectManager;
|
private SimulationRealDeviceConnectManager simulationRealDeviceConnectManager;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private PassengerFlowSimulateService passengerFlowSimulateService;
|
private PassengerFlowSimulateService passengerFlowSimulateService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IOrgUserService iOrgUserService;
|
private IOrgUserService iOrgUserService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IUserPermissionService iUserPermissionService;
|
private IUserPermissionService iUserPermissionService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IOrgService iOrgService;
|
private IOrgService iOrgService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private SimulationManager simulationManager;
|
private SimulationManager simulationManager;
|
||||||
|
@Autowired
|
||||||
|
private IRunPlanRunlevelService iRunPlanRunlevelService;
|
||||||
|
@Autowired
|
||||||
|
private IRunPlanParktimeService iRunPlanParktimeService;
|
||||||
// /**
|
// /**
|
||||||
// * 创建仿真并进行缓存
|
// * 创建仿真并进行缓存
|
||||||
// *
|
// *
|
||||||
@ -223,8 +205,26 @@ public class GroupSimulationServiceImpl implements GroupSimulationService {
|
|||||||
Simulation.FunctionalType functionalType) {
|
Simulation.FunctionalType functionalType) {
|
||||||
Objects.requireNonNull(mapId, "地图id不能为空");
|
Objects.requireNonNull(mapId, "地图id不能为空");
|
||||||
Objects.requireNonNull(functionalType, "仿真功能类型不能为空");
|
Objects.requireNonNull(functionalType, "仿真功能类型不能为空");
|
||||||
|
SimulationBuildParams params = this.prepareSimulationParams(loginUserInfoVO, mapId,
|
||||||
|
prdType, functionalType);
|
||||||
|
String group = SimulationIdGenerator.generateGroup(loginUserInfoVO.getUserVO().getId(), mapId);
|
||||||
|
Simulation simulation = this.simulationLifeCycleService.create(params, group);
|
||||||
|
// 添加仿真成员
|
||||||
|
SimulationUser simulationUser = new SimulationUser(simulation, loginUserInfoVO);
|
||||||
|
simulation.addSimulationUser(simulationUser);
|
||||||
|
// 根据仿真产品类型,设置用户扮演角色
|
||||||
|
memberManager.playRoleBySimulationType(simulation, loginUserInfoVO.getUserVO().getId());
|
||||||
|
// 仿真开始运行
|
||||||
|
this.simulationManager.start(simulation.getId());
|
||||||
|
return simulation;
|
||||||
|
}
|
||||||
|
|
||||||
|
private SimulationBuildParams prepareSimulationParams(LoginUserInfoVO loginUserInfoVO, Long mapId,
|
||||||
|
MapPrdTypeEnum prdType, Simulation.FunctionalType functionalType) {
|
||||||
// 获取地图数据
|
// 获取地图数据
|
||||||
MapVO mapVO = this.iMapService.getMapDetail(mapId);
|
MapVO mapVO = this.iMapService.getMapDetail(mapId);
|
||||||
|
List<RunPlanRunlevelVO> runLevelList = this.prepareRunLevelData(mapVO, loginUserInfoVO, mapId);
|
||||||
|
List<RunPlanParkingTimeVO> parkTimeList = this.prepareParkTimeData(mapVO, loginUserInfoVO, mapId);
|
||||||
// 获取操作定义数据
|
// 获取操作定义数据
|
||||||
List<CommandDefinitionVO> operationDefinitionList = this.iCommandService
|
List<CommandDefinitionVO> operationDefinitionList = this.iCommandService
|
||||||
.queryDefinitionsByLineCode(mapVO.getLineCode());
|
.queryDefinitionsByLineCode(mapVO.getLineCode());
|
||||||
@ -233,6 +233,8 @@ public class GroupSimulationServiceImpl implements GroupSimulationService {
|
|||||||
builder.loginUserInfo(loginUserInfoVO)
|
builder.loginUserInfo(loginUserInfoVO)
|
||||||
.createTime(LocalDateTime.now())
|
.createTime(LocalDateTime.now())
|
||||||
.map(mapVO)
|
.map(mapVO)
|
||||||
|
.userRunLevelList(runLevelList)
|
||||||
|
.userParkTimeList(parkTimeList)
|
||||||
.operationDefinitionList(operationDefinitionList)
|
.operationDefinitionList(operationDefinitionList)
|
||||||
.prodType(prdType)
|
.prodType(prdType)
|
||||||
.functionalType(functionalType);
|
.functionalType(functionalType);
|
||||||
@ -252,16 +254,27 @@ public class GroupSimulationServiceImpl implements GroupSimulationService {
|
|||||||
builder.schedulingPlan(schedulingPlanNewVO);
|
builder.schedulingPlan(schedulingPlanNewVO);
|
||||||
}
|
}
|
||||||
SimulationBuildParams params = builder.build();
|
SimulationBuildParams params = builder.build();
|
||||||
String group = SimulationIdGenerator.generateGroup(loginUserInfoVO.getUserVO().getId(), mapId);
|
return params;
|
||||||
Simulation simulation = this.simulationLifeCycleService.create(params, group);
|
}
|
||||||
// 添加仿真成员
|
|
||||||
SimulationUser simulationUser = new SimulationUser(simulation, loginUserInfoVO);
|
private List<RunPlanParkingTimeVO> prepareParkTimeData(MapVO mapVO, LoginUserInfoVO loginUserInfoVO, Long mapId) {
|
||||||
simulation.addSimulationUser(simulationUser);
|
List<RunPlanParkingTimeVO> runPlanParkingTimeVOList = this.iRunPlanParktimeService.queryUserParktimes(loginUserInfoVO.getUserVO().getId(), mapId);
|
||||||
// 根据仿真产品类型,设置用户扮演角色
|
return runPlanParkingTimeVOList;
|
||||||
memberManager.playRoleBySimulationType(simulation, loginUserInfoVO.getUserVO().getId());
|
}
|
||||||
// 仿真开始运行
|
|
||||||
this.simulationManager.start(simulation.getId());
|
private List<RunPlanRunlevelVO> prepareRunLevelData(MapVO mapVO, LoginUserInfoVO loginUserInfoVO, Long mapId) {
|
||||||
return simulation;
|
List<RunPlanRunlevelVO> runLevelList = this.iRunPlanRunlevelService.queryUserRunLevels(loginUserInfoVO.getUserVO().getId(), mapId);
|
||||||
|
return runLevelList;
|
||||||
|
// List<MapStationRunLevelVO> stationRunLevelVOList = RunPlanRunlevelVO.convert2StationRunPlanVOList(runLevelList);
|
||||||
|
// List<MapStationRunLevelVO> defaultRunLevelList = mapVO.getLogicDataNew().getRunLevelList();
|
||||||
|
// Map<String, MapStationRunLevelVO> runLevelVOMap = new HashMap<>();
|
||||||
|
// for (MapStationRunLevelVO vo : stationRunLevelVOList) {
|
||||||
|
// runLevelVOMap.put(vo.buildCode(), vo);
|
||||||
|
// }
|
||||||
|
// for (MapStationRunLevelVO vo : defaultRunLevelList) {
|
||||||
|
// runLevelVOMap.putIfAbsent(vo.buildCode(), vo);
|
||||||
|
// }
|
||||||
|
// mapVO.getLogicDataNew().setRunLevelList(new ArrayList<>(runLevelVOMap.values()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -10,6 +10,7 @@ import club.joylink.rtss.vo.client.map.MapTrainModelVO;
|
|||||||
import club.joylink.rtss.vo.client.map.MapTrainVO;
|
import club.joylink.rtss.vo.client.map.MapTrainVO;
|
||||||
import club.joylink.rtss.vo.client.map.MapZcVO;
|
import club.joylink.rtss.vo.client.map.MapZcVO;
|
||||||
import club.joylink.rtss.vo.client.map.newmap.*;
|
import club.joylink.rtss.vo.client.map.newmap.*;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
@ -20,6 +21,7 @@ import java.util.stream.Collectors;
|
|||||||
/**
|
/**
|
||||||
* 地图设备校验/构建器
|
* 地图设备校验/构建器
|
||||||
*/
|
*/
|
||||||
|
@Slf4j
|
||||||
public class MapDeviceBuilder {
|
public class MapDeviceBuilder {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -744,6 +746,119 @@ public class MapDeviceBuilder {
|
|||||||
buildCatenary(graphData, elementMap, errMsgList, mapDataBuildResult.getCatenaryMap());
|
buildCatenary(graphData, elementMap, errMsgList, mapDataBuildResult.getCatenaryMap());
|
||||||
//应答器
|
//应答器
|
||||||
buildResponderDataRef(graphData, elementMap, errMsgList, mapDataBuildResult.getSectionRespondersMap());
|
buildResponderDataRef(graphData, elementMap, errMsgList, mapDataBuildResult.getSectionRespondersMap());
|
||||||
|
if (mapDataBuildResult.getErrMsgList().isEmpty()) {
|
||||||
|
Map<String, Set<Section>> sectionArriveMap = buildNormalStandTrackAdjoinSections(mapDataBuildResult.getDeviceMap());
|
||||||
|
mapDataBuildResult.setSectionArriveNearMap(sectionArriveMap);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Map<String, Set<Section>> buildNormalStandTrackAdjoinSections(Map<String, MapElement> deviceMap) {
|
||||||
|
List<Section> standTrackList = deviceMap.values().stream()
|
||||||
|
.filter(mapElement -> mapElement.getDeviceType().equals(MapElement.DeviceType.SECTION))
|
||||||
|
.map(mapElement -> ((Section) mapElement))
|
||||||
|
.filter(section -> section.isNormalStandTrack() || section.isTransferTrack() || section.isTurnBackTrack())
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
Map<String, Set<Section>> sectionDirectionSectionsMap = new HashMap<>();
|
||||||
|
for (Section section : standTrackList) {
|
||||||
|
Set<Section> rightDirectionList = new HashSet<>();
|
||||||
|
sectionDirectionSectionsMap.put(buildSectionDirectionKey(section, true), rightDirectionList);
|
||||||
|
queryAdjoinSections(section, true, rightDirectionList);
|
||||||
|
Set<Section> leftDirectionList = new HashSet<>();
|
||||||
|
sectionDirectionSectionsMap.put(buildSectionDirectionKey(section, false), leftDirectionList);
|
||||||
|
queryAdjoinSections(section, false, leftDirectionList);
|
||||||
|
log.debug(String.format("区段[%s][右向]邻接区段为[%s],[左向]邻接区段为[%s]",
|
||||||
|
section.debugStr(),
|
||||||
|
String.join(",",rightDirectionList.stream().map(Section::debugStr).collect(Collectors.toList())),
|
||||||
|
String.join(",", leftDirectionList.stream().map(Section::debugStr).collect(Collectors.toList()))));
|
||||||
|
}
|
||||||
|
return sectionDirectionSectionsMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String buildSectionDirectionKey(Section section, boolean right) {
|
||||||
|
return String.format("%s-%s", section.getCode(), right?"R":"L");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查找区段临近的功能区段(站台轨、转换轨、折返轨)
|
||||||
|
* @param section
|
||||||
|
* @param right
|
||||||
|
* @param rightDirectionList
|
||||||
|
*/
|
||||||
|
private static void queryAdjoinSections(Section section, boolean right, Set<Section> rightDirectionList) {
|
||||||
|
Signal signal = section.getSignalOf(right);
|
||||||
|
if (signal == null) {
|
||||||
|
Section base = section;
|
||||||
|
for (int i = 0; i < 10; i++) {
|
||||||
|
Section next = base.getSectionOf(right);
|
||||||
|
if (next == null) { // 可能到尽头了
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (checkAdjoinSectionAndAdd(next, rightDirectionList)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
signal = next.getSignalOf(right);
|
||||||
|
if (signal != null) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
base = next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (signal == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
queryAdjoinSections(signal, rightDirectionList);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void queryAdjoinSections(Signal signal, Set<Section> rightDirectionList) {
|
||||||
|
boolean right = signal.isRight();
|
||||||
|
List<Route> routeList = signal.getRouteList();
|
||||||
|
if (CollectionUtils.isEmpty(routeList)) { // 没有进路,找自动信号
|
||||||
|
AutoSignal autoSignal = signal.getAutoSignal();
|
||||||
|
if (autoSignal == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<Section> sectionList = autoSignal.getSectionList();
|
||||||
|
for (Section temp : sectionList) {
|
||||||
|
if (checkAdjoinSectionAndAdd(temp, rightDirectionList)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
signal = temp.getSignalOf(right);
|
||||||
|
if (signal != null) {
|
||||||
|
queryAdjoinSections(signal, rightDirectionList);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Set<Signal> queryList = new HashSet<>();
|
||||||
|
for (Route route : routeList) {
|
||||||
|
if (route.isAtp() || route.isGuide()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
List<Section> sectionList = route.getSectionList();
|
||||||
|
boolean finish = false;
|
||||||
|
for (Section section : sectionList) {
|
||||||
|
if (checkAdjoinSectionAndAdd(section, rightDirectionList)) {
|
||||||
|
finish = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!finish) {
|
||||||
|
queryList.add(route.getDestination());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (Signal next : queryList) {
|
||||||
|
queryAdjoinSections(next, rightDirectionList);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean checkAdjoinSectionAndAdd(Section temp, Set<Section> rightDirectionList) {
|
||||||
|
if (temp.isStandTrack() || temp.isTransferTrack()) {
|
||||||
|
rightDirectionList.add(temp);
|
||||||
|
return true;
|
||||||
|
} else if (temp.isTurnBackTrack()) {
|
||||||
|
rightDirectionList.add(temp);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void checkSectionFunctionType(Map<String, MapElement> deviceMap, List<String> errMsgList) {
|
private static void checkSectionFunctionType(Map<String, MapElement> deviceMap, List<String> errMsgList) {
|
||||||
|
@ -1,15 +1,17 @@
|
|||||||
package club.joylink.rtss.simulation.cbtc.build;
|
package club.joylink.rtss.simulation.cbtc.build;
|
||||||
|
|
||||||
|
import club.joylink.rtss.constants.MapPrdTypeEnum;
|
||||||
import club.joylink.rtss.simulation.cbtc.Simulation;
|
import club.joylink.rtss.simulation.cbtc.Simulation;
|
||||||
import club.joylink.rtss.simulation.cbtc.exception.SimulationException;
|
import club.joylink.rtss.simulation.cbtc.exception.SimulationException;
|
||||||
import club.joylink.rtss.simulation.cbtc.exception.SimulationExceptionType;
|
import club.joylink.rtss.simulation.cbtc.exception.SimulationExceptionType;
|
||||||
import club.joylink.rtss.constants.MapPrdTypeEnum;
|
|
||||||
import club.joylink.rtss.vo.LoginUserInfoVO;
|
import club.joylink.rtss.vo.LoginUserInfoVO;
|
||||||
import club.joylink.rtss.vo.UserVO;
|
import club.joylink.rtss.vo.UserVO;
|
||||||
import club.joylink.rtss.vo.client.CommandDefinitionVO;
|
import club.joylink.rtss.vo.client.CommandDefinitionVO;
|
||||||
import club.joylink.rtss.vo.client.LessonVO;
|
import club.joylink.rtss.vo.client.LessonVO;
|
||||||
import club.joylink.rtss.vo.client.map.MapVO;
|
import club.joylink.rtss.vo.client.map.MapVO;
|
||||||
import club.joylink.rtss.vo.client.runplan.RunPlanVO;
|
import club.joylink.rtss.vo.client.runplan.RunPlanVO;
|
||||||
|
import club.joylink.rtss.vo.client.runplan.user.RunPlanParkingTimeVO;
|
||||||
|
import club.joylink.rtss.vo.client.runplan.user.RunPlanRunlevelVO;
|
||||||
import club.joylink.rtss.vo.client.schedulingNew.SchedulingPlanNewVO;
|
import club.joylink.rtss.vo.client.schedulingNew.SchedulingPlanNewVO;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@ -34,7 +36,8 @@ public class SimulationBuildParams {
|
|||||||
|
|
||||||
/** 地图数据 */
|
/** 地图数据 */
|
||||||
private MapVO map;
|
private MapVO map;
|
||||||
|
private List<RunPlanRunlevelVO> userRunLevelList;
|
||||||
|
private List<RunPlanParkingTimeVO> userParkTimeList;
|
||||||
/** 仿真产品类型 */
|
/** 仿真产品类型 */
|
||||||
private MapPrdTypeEnum prodType;
|
private MapPrdTypeEnum prodType;
|
||||||
|
|
||||||
|
@ -52,14 +52,17 @@ public class SimulationBuilder {
|
|||||||
simulation.addDataErrMsgs(mapDataBuildResult.getErrMsgList());
|
simulation.addDataErrMsgs(mapDataBuildResult.getErrMsgList());
|
||||||
}
|
}
|
||||||
simulation.getRepository().setDeviceMap(mapDataBuildResult.getDeviceMap());
|
simulation.getRepository().setDeviceMap(mapDataBuildResult.getDeviceMap());
|
||||||
|
simulation.getRepository().setSectionArriveNearMap(mapDataBuildResult.sectionArriveNearMap);
|
||||||
simulation.getRepository().setVrDeviceMap(mapDataBuildResult.getVrDeviceMap());
|
simulation.getRepository().setVrDeviceMap(mapDataBuildResult.getVrDeviceMap());
|
||||||
// simulation.getRepository().setRouteUnitMap(mapDataBuildResult.getRouteUnitMap());
|
// simulation.getRepository().setRouteUnitMap(mapDataBuildResult.getRouteUnitMap());
|
||||||
simulation.getRepository().setRoutePathMap(mapDataBuildResult.getRoutePathMap());
|
simulation.getRepository().setRoutePathMap(mapDataBuildResult.getRoutePathMap());
|
||||||
simulation.getRepository().setDestinationMap(mapDataBuildResult.getDestinationMap());
|
simulation.getRepository().setDestinationMap(mapDataBuildResult.getDestinationMap());
|
||||||
simulation.getRepository().setRoutingList(mapDataBuildResult.getRoutingList());
|
simulation.getRepository().setRoutingList(mapDataBuildResult.getRoutingList());
|
||||||
simulation.getRepository().setRunLevelList(mapDataBuildResult.getRunLevelList());
|
// simulation.getRepository().setRunLevelList(mapDataBuildResult.getRunLevelList());
|
||||||
simulation.getRepository().getCatenaryMap().putAll(mapDataBuildResult.getCatenaryMap());
|
simulation.getRepository().getCatenaryMap().putAll(mapDataBuildResult.getCatenaryMap());
|
||||||
simulation.getRepository().getSectionRespondersMap().putAll(mapDataBuildResult.getSectionRespondersMap());
|
simulation.getRepository().getSectionRespondersMap().putAll(mapDataBuildResult.getSectionRespondersMap());
|
||||||
|
UserConfigDataBuilder.buildUserRunLevel(simulation.getRepository(), buildParams.getUserRunLevelList());
|
||||||
|
UserConfigDataBuilder.buildUserParkTime(simulation.getRepository(), buildParams.getUserParkTimeList());
|
||||||
// 加载运行图
|
// 加载运行图
|
||||||
checkAndLoadRunPlan(simulation, buildParams.getRunPlan());
|
checkAndLoadRunPlan(simulation, buildParams.getRunPlan());
|
||||||
// 加载派班计划
|
// 加载派班计划
|
||||||
@ -348,6 +351,8 @@ public class SimulationBuilder {
|
|||||||
|
|
||||||
private Map<Section,List<Responder>> sectionRespondersMap;
|
private Map<Section,List<Responder>> sectionRespondersMap;
|
||||||
|
|
||||||
|
@Setter
|
||||||
|
Map<String, Set<Section>> sectionArriveNearMap;
|
||||||
/**
|
/**
|
||||||
* 数据错误信息列表
|
* 数据错误信息列表
|
||||||
*/
|
*/
|
||||||
|
@ -0,0 +1,44 @@
|
|||||||
|
package club.joylink.rtss.simulation.cbtc.build;
|
||||||
|
|
||||||
|
import club.joylink.rtss.simulation.cbtc.data.SimulationDataRepository;
|
||||||
|
import club.joylink.rtss.simulation.cbtc.data.map.Section;
|
||||||
|
import club.joylink.rtss.simulation.cbtc.data.map.Station;
|
||||||
|
import club.joylink.rtss.simulation.cbtc.data.map.StationParkTime;
|
||||||
|
import club.joylink.rtss.simulation.cbtc.data.map.StationRunLevel;
|
||||||
|
import club.joylink.rtss.vo.client.runplan.user.RunPlanParkingTimeVO;
|
||||||
|
import club.joylink.rtss.vo.client.runplan.user.RunPlanRunlevelVO;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class UserConfigDataBuilder {
|
||||||
|
public static void buildUserRunLevel(SimulationDataRepository repository, List<RunPlanRunlevelVO> userRunLevelList) {
|
||||||
|
Map<String, StationRunLevel> runLevelMap = new HashMap<>();
|
||||||
|
for (RunPlanRunlevelVO vo : userRunLevelList) {
|
||||||
|
Station startStation = repository.getByCode(vo.getStartStationCode(), Station.class);
|
||||||
|
Section startSection = repository.getByCode(vo.getStartSectionCode(), Section.class);
|
||||||
|
Station endStation = repository.getByCode(vo.getEndStationCode(), Station.class);
|
||||||
|
Section endSection = repository.getByCode(vo.getEndSectionCode(), Section.class);
|
||||||
|
StationRunLevel stationRunLevel = new StationRunLevel();
|
||||||
|
stationRunLevel.setStartStation(startStation);
|
||||||
|
stationRunLevel.setStartSection(startSection);
|
||||||
|
stationRunLevel.setEndStation(endStation);
|
||||||
|
stationRunLevel.setEndSection(endSection);
|
||||||
|
stationRunLevel.setRight(vo.getRight());
|
||||||
|
stationRunLevel.setDistance(vo.getDistance());
|
||||||
|
stationRunLevel.setL1(vo.getL1());
|
||||||
|
stationRunLevel.setL2(vo.getL2());
|
||||||
|
stationRunLevel.setL3(vo.getL3());
|
||||||
|
stationRunLevel.setL4(vo.getL4());
|
||||||
|
stationRunLevel.setL5(vo.getL5());
|
||||||
|
runLevelMap.putIfAbsent(stationRunLevel.buildKey(), stationRunLevel);
|
||||||
|
}
|
||||||
|
repository.setRunLevelMap(runLevelMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void buildUserParkTime(SimulationDataRepository repository, List<RunPlanParkingTimeVO> userParkTimeList) {
|
||||||
|
Map<String, StationParkTime> parkTimeMap = new HashMap<>();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -139,8 +139,18 @@ public class SimulationDataRepository {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 站间运行等级列表
|
* 站间运行等级列表
|
||||||
|
* key-startSectionCode-endSectionCode
|
||||||
|
* val-runLevel
|
||||||
*/
|
*/
|
||||||
private List<StationRunLevel> runLevelList;
|
private Map<String, StationRunLevel> runLevelMap;
|
||||||
|
/**
|
||||||
|
* key-sectionCode
|
||||||
|
*/
|
||||||
|
private Map<String, StationParkTime> parkTimeMap;
|
||||||
|
/**
|
||||||
|
* key-sectionCode-(R/L) R:右向,L:左向
|
||||||
|
*/
|
||||||
|
Map<String, Set<Section>> sectionArriveNearMap;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 终端/折返车站-终端发车计划map
|
* 终端/折返车站-终端发车计划map
|
||||||
|
@ -231,6 +231,7 @@ public class MapConfig {
|
|||||||
setRouteSettingNoFail(configVO.isRouteSettingNoFail());
|
setRouteSettingNoFail(configVO.isRouteSettingNoFail());
|
||||||
setSignalOpenAfterParking(configVO.isSignalOpenAfterParking());
|
setSignalOpenAfterParking(configVO.isSignalOpenAfterParking());
|
||||||
this.setStandHoldCloseLogicLight(configVO.isStandHoldCloseLogicLight());
|
this.setStandHoldCloseLogicLight(configVO.isStandHoldCloseLogicLight());
|
||||||
|
this.setAtsAutoHandleManualFrontTurnBack(configVO.isAtsAutoHandleManualFrontTurnBack());
|
||||||
setCtcOverlapOnlyTurnBackStationLock(configVO.isCtcOverlapOnlyTurnBackStationLock());
|
setCtcOverlapOnlyTurnBackStationLock(configVO.isCtcOverlapOnlyTurnBackStationLock());
|
||||||
this.setGuideNeedRouteSettingFirst(configVO.isGuideNeedRouteSettingFirst());
|
this.setGuideNeedRouteSettingFirst(configVO.isGuideNeedRouteSettingFirst());
|
||||||
setSwitchSingleHandle(configVO.getSwitchSingleHandle());
|
setSwitchSingleHandle(configVO.getSwitchSingleHandle());
|
||||||
|
@ -0,0 +1,7 @@
|
|||||||
|
package club.joylink.rtss.simulation.cbtc.data.map;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
public class StationParkTime {
|
||||||
|
}
|
@ -50,4 +50,8 @@ public class StationRunLevel {
|
|||||||
startStation.getName(), startSection.getName(),
|
startStation.getName(), startSection.getName(),
|
||||||
endStation.getName(), endSection.getName());
|
endStation.getName(), endSection.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String buildKey() {
|
||||||
|
return String.format("%s-%s", this.startSection.getCode(), this.endSection.getCode());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@ public final class SimulationFixedJob extends SimulationScheduledJob {
|
|||||||
LocalDateTime systemTime = simulation.getSystemTime();
|
LocalDateTime systemTime = simulation.getSystemTime();
|
||||||
// 实际运行间隔,单位ns
|
// 实际运行间隔,单位ns
|
||||||
long runPeriod = TimeUnit.MILLISECONDS.toNanos(this.rate) * simulation.getSpeed();
|
long runPeriod = TimeUnit.MILLISECONDS.toNanos(this.rate) * simulation.getSpeed();
|
||||||
// 弥补非整数倍的情况
|
// 弥补非整数倍的情况.PS:只能弥补运行频率大于仿真基础运行频率的情况
|
||||||
long l = Duration.between(this.runtime, systemTime).toNanos();
|
long l = Duration.between(this.runtime, systemTime).toNanos();
|
||||||
long l1 = l % runPeriod;
|
long l1 = l % runPeriod;
|
||||||
long add = runPeriod - l1;
|
long add = runPeriod - l1;
|
||||||
|
@ -39,7 +39,7 @@ public class SimulationScheduledJob extends SimulationJob {
|
|||||||
LocalDateTime systemTime = simulation.getSystemTime();
|
LocalDateTime systemTime = simulation.getSystemTime();
|
||||||
// 实际运行间隔,单位ns
|
// 实际运行间隔,单位ns
|
||||||
long runPeriod = TimeUnit.MILLISECONDS.toNanos(this.rate);
|
long runPeriod = TimeUnit.MILLISECONDS.toNanos(this.rate);
|
||||||
// 弥补非整数倍的情况
|
// 弥补非整数倍的情况.PS:只能弥补运行频率大于仿真基础运行频率的情况
|
||||||
long l = Duration.between(this.runtime, systemTime).toNanos();
|
long l = Duration.between(this.runtime, systemTime).toNanos();
|
||||||
long l1 = l % runPeriod;
|
long l1 = l % runPeriod;
|
||||||
long add = runPeriod - l1;
|
long add = runPeriod - l1;
|
||||||
|
@ -1,10 +1,15 @@
|
|||||||
package club.joylink.rtss.vo.client.map.newmap;
|
package club.joylink.rtss.vo.client.map.newmap;
|
||||||
|
|
||||||
|
import club.joylink.rtss.exception.BusinessExceptionAssertEnum;
|
||||||
|
import club.joylink.rtss.vo.client.runplan.user.RunPlanParkingTimeVO;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@ -26,6 +31,12 @@ public class MapLogicDataNewVO {
|
|||||||
@ApiModelProperty(value = "站间运行等级列表")
|
@ApiModelProperty(value = "站间运行等级列表")
|
||||||
private List<MapStationRunLevelVO> runLevelList;
|
private List<MapStationRunLevelVO> runLevelList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 停站时间列表
|
||||||
|
*/
|
||||||
|
private List<RunPlanParkingTimeVO> parkTimeList;
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
@ApiModelProperty(value = "车站区段停站时间列表")
|
@ApiModelProperty(value = "车站区段停站时间列表")
|
||||||
private List<MapStationParkingTimeVO> parkingTimeList;
|
private List<MapStationParkingTimeVO> parkingTimeList;
|
||||||
|
|
||||||
@ -53,4 +64,12 @@ public class MapLogicDataNewVO {
|
|||||||
this.overlapList = new ArrayList<>();
|
this.overlapList = new ArrayList<>();
|
||||||
this.autoReentryList = new ArrayList<>();
|
this.autoReentryList = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@JsonIgnore
|
||||||
|
public MapRoutingDataVO getLongestRouting() {
|
||||||
|
BusinessExceptionAssertEnum.DATA_ERROR.assertCollectionNotEmpty(this.routingList);
|
||||||
|
this.routingList.sort(Comparator.comparing(routingVO -> routingVO.getParkSectionCodeList().size()));
|
||||||
|
Collections.reverse(this.routingList);
|
||||||
|
return routingList.get(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
package club.joylink.rtss.vo.client.map.newmap;
|
package club.joylink.rtss.vo.client.map.newmap;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
|
||||||
import club.joylink.rtss.entity.DraftMapRunLevel;
|
import club.joylink.rtss.entity.DraftMapRunLevel;
|
||||||
import club.joylink.rtss.util.JsonUtils;
|
import club.joylink.rtss.util.JsonUtils;
|
||||||
import club.joylink.rtss.vo.client.map.newmap.validate.RunLevelCreateCheck;
|
import club.joylink.rtss.vo.client.map.newmap.validate.RunLevelCreateCheck;
|
||||||
import club.joylink.rtss.vo.client.map.newmap.validate.RunLevelGenerateCheck;
|
import club.joylink.rtss.vo.client.map.newmap.validate.RunLevelGenerateCheck;
|
||||||
import club.joylink.rtss.vo.client.map.newmap.validate.RunLevelUpdateCheck;
|
import club.joylink.rtss.vo.client.map.newmap.validate.RunLevelUpdateCheck;
|
||||||
|
import club.joylink.rtss.vo.client.runplan.user.RunPlanRunlevelVO;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@ -80,6 +81,21 @@ public class MapStationRunLevelVO {
|
|||||||
@PositiveOrZero
|
@PositiveOrZero
|
||||||
private Integer l5;
|
private Integer l5;
|
||||||
|
|
||||||
|
public MapStationRunLevelVO(RunPlanRunlevelVO runPlanRunlevelVO) {
|
||||||
|
this.mapId = runPlanRunlevelVO.getMapId();
|
||||||
|
this.startStationCode = runPlanRunlevelVO.getStartStationCode();
|
||||||
|
this.startSectionCode = runPlanRunlevelVO.getStartSectionCode();
|
||||||
|
this.endStationCode = runPlanRunlevelVO.getEndStationCode();
|
||||||
|
this.endSectionCode = runPlanRunlevelVO.getEndSectionCode();
|
||||||
|
this.right = runPlanRunlevelVO.getRight();
|
||||||
|
this.distance = runPlanRunlevelVO.getDistance();
|
||||||
|
this.l1 = runPlanRunlevelVO.getL1();
|
||||||
|
this.l2 = runPlanRunlevelVO.getL2();
|
||||||
|
this.l3 = runPlanRunlevelVO.getL3();
|
||||||
|
this.l4 = runPlanRunlevelVO.getL4();
|
||||||
|
this.l5 = runPlanRunlevelVO.getL5();
|
||||||
|
}
|
||||||
|
|
||||||
public static List<MapStationRunLevelVO> convert2VOList(List<DraftMapRunLevel> list) {
|
public static List<MapStationRunLevelVO> convert2VOList(List<DraftMapRunLevel> list) {
|
||||||
List<MapStationRunLevelVO> voList = new ArrayList<>();
|
List<MapStationRunLevelVO> voList = new ArrayList<>();
|
||||||
if (!CollectionUtils.isEmpty(list)) {
|
if (!CollectionUtils.isEmpty(list)) {
|
||||||
@ -134,11 +150,11 @@ public class MapStationRunLevelVO {
|
|||||||
|
|
||||||
public void generateDefaultRunLevel() {
|
public void generateDefaultRunLevel() {
|
||||||
Objects.requireNonNull(this.distance, "站间距离不能为空");
|
Objects.requireNonNull(this.distance, "站间距离不能为空");
|
||||||
this.l1 = Math.round(this.distance / 12f);
|
this.l1 = Math.round(this.distance / 18f);
|
||||||
this.l2 = Math.round(this.distance / 10.5f);
|
this.l2 = Math.round(this.distance / 16f);
|
||||||
this.l3 = Math.round(this.distance / 9f);
|
this.l3 = Math.round(this.distance / 13.5f);
|
||||||
this.l4 = Math.round(this.distance / 7.5f);
|
this.l4 = Math.round(this.distance / 12f);
|
||||||
this.l5 = Math.round(this.distance / 6f);
|
this.l5 = Math.round(this.distance / 10f);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,10 +1,7 @@
|
|||||||
package club.joylink.rtss.vo.client.runplan.user;
|
package club.joylink.rtss.vo.client.runplan.user;
|
||||||
|
|
||||||
import club.joylink.rtss.entity.RunPlanRunlevel;
|
import club.joylink.rtss.entity.RunPlanRunlevel;
|
||||||
import club.joylink.rtss.simulation.cbtc.data.map.MapElement;
|
import club.joylink.rtss.vo.client.map.newmap.MapStationRunLevelVO;
|
||||||
import club.joylink.rtss.simulation.cbtc.data.map.Section;
|
|
||||||
import club.joylink.rtss.vo.client.map.newmap.MapRoutingDataVO;
|
|
||||||
import club.joylink.rtss.vo.client.map.newmap.MapRoutingSectionNewVO;
|
|
||||||
import club.joylink.rtss.vo.client.map.newmap.validate.RunLevelCreateCheck;
|
import club.joylink.rtss.vo.client.map.newmap.validate.RunLevelCreateCheck;
|
||||||
import club.joylink.rtss.vo.client.map.newmap.validate.RunLevelGenerateCheck;
|
import club.joylink.rtss.vo.client.map.newmap.validate.RunLevelGenerateCheck;
|
||||||
import club.joylink.rtss.vo.client.map.newmap.validate.RunLevelUpdateCheck;
|
import club.joylink.rtss.vo.client.map.newmap.validate.RunLevelUpdateCheck;
|
||||||
@ -21,7 +18,6 @@ import javax.validation.constraints.NotNull;
|
|||||||
import javax.validation.constraints.PositiveOrZero;
|
import javax.validation.constraints.PositiveOrZero;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@ApiModel(value = "运行计划站间运行等级")
|
@ApiModel(value = "运行计划站间运行等级")
|
||||||
@ -119,6 +115,16 @@ public class RunPlanRunlevelVO {
|
|||||||
return runLevelVO;
|
return runLevelVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static List<MapStationRunLevelVO> convert2StationRunPlanVOList(List<RunPlanRunlevelVO> runLevelList) {
|
||||||
|
List<MapStationRunLevelVO> voList = new ArrayList<>();
|
||||||
|
if (!CollectionUtils.isEmpty(runLevelList)) {
|
||||||
|
for (RunPlanRunlevelVO runPlanRunlevelVO : runLevelList) {
|
||||||
|
voList.add(new MapStationRunLevelVO(runPlanRunlevelVO));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return voList;
|
||||||
|
}
|
||||||
|
|
||||||
public RunPlanRunlevel convert2Entity() {
|
public RunPlanRunlevel convert2Entity() {
|
||||||
RunPlanRunlevel runLevel = new RunPlanRunlevel();
|
RunPlanRunlevel runLevel = new RunPlanRunlevel();
|
||||||
runLevel.setId(id);
|
runLevel.setId(id);
|
||||||
|
Loading…
Reference in New Issue
Block a user