Merge remote-tracking branch 'origin/test-training2' into test-training2
This commit is contained in:
commit
4d58238cfa
@ -11,13 +11,9 @@ import club.joylink.rtss.simulation.cbtc.data.map.*;
|
||||
import club.joylink.rtss.simulation.cbtc.data.status.StationStatus;
|
||||
import club.joylink.rtss.simulation.cbtc.data.support.StationTurnBackStrategyOption;
|
||||
import club.joylink.rtss.simulation.cbtc.data.vo.ControlTransferReplyVO;
|
||||
import club.joylink.rtss.simulation.cbtc.data.vo.ControlTransferResultVO;
|
||||
import club.joylink.rtss.simulation.cbtc.exception.SimulationException;
|
||||
import club.joylink.rtss.simulation.cbtc.exception.SimulationExceptionType;
|
||||
import club.joylink.rtss.simulation.cbtc.member.SimulationMember;
|
||||
import club.joylink.rtss.vo.client.SocketMessageVO;
|
||||
import club.joylink.rtss.vo.client.WebSocketMessageType;
|
||||
import club.joylink.rtss.vo.client.factory.SocketMessageFactory;
|
||||
import club.joylink.rtss.websocket.StompMessageService;
|
||||
import lombok.NonNull;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -186,19 +182,27 @@ public class AtsStationService {
|
||||
if (CollectionUtils.isEmpty(replyVOList)) {
|
||||
throw new SimulationException(SimulationExceptionType.Invalid_Operation, "回复结果列表不能为空");
|
||||
}
|
||||
List<ControlTransferResultVO> resultVOList = new ArrayList<>(replyVOList.size());
|
||||
List<String> stationCodes = new ArrayList<>(replyVOList.size());
|
||||
SimulationMember simulationMember = null;
|
||||
boolean replyResult = false;
|
||||
for (ControlTransferReplyVO reply : replyVOList) {
|
||||
Station station = simulation.getRepository().getByCode(reply.getStationCode(), Station.class);
|
||||
if (station.isControlTransferApplying()) {
|
||||
if (reply.isAgree()) {
|
||||
station.setControlMode(controlMode);
|
||||
}
|
||||
resultVOList.add(new ControlTransferResultVO(station, reply.isAgree()));
|
||||
if (!Station.ControlMode.Center.equals(controlMode)) {
|
||||
simulationMember = station.getApplicant();
|
||||
replyResult = reply.isAgree();
|
||||
stationCodes.add(station.getCode());
|
||||
}
|
||||
station.cancelControlTransferApplication();
|
||||
}
|
||||
}
|
||||
if (!CollectionUtils.isEmpty(resultVOList)) {
|
||||
resultVOList.forEach(vo -> sendHandlerMessage(simulation.getId(), vo));
|
||||
if (!CollectionUtils.isEmpty(stationCodes)) {
|
||||
atsMessageCollectAndDispatcher.handlerOperateMessage(simulation,
|
||||
new OperationMessage(simulationMember.getId(), new HashSet<>(Collections.singleton(simulationMember)),
|
||||
Operation.Type.CM_Reply_Station_Control, null, replyResult, stationCodes));
|
||||
}
|
||||
}
|
||||
|
||||
@ -560,16 +564,4 @@ public class AtsStationService {
|
||||
new OperationMessage(fromMember.getId(), new HashSet<>(Collections.singleton(fromMember)),
|
||||
operationType, null, true, Arrays.asList(stationCode)));
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送车站转换结果
|
||||
*
|
||||
* @param group 仿真
|
||||
* @param vo 转换结果
|
||||
*/
|
||||
private void sendHandlerMessage(String group, ControlTransferResultVO vo) {
|
||||
SocketMessageVO<Map<String, Object>> messageVO =
|
||||
SocketMessageFactory.build(WebSocketMessageType.Simulation_Control_Transfer_Result, group, vo.getData());
|
||||
stompMessageService.sendToUser(Set.of(vo.getUserId()), messageVO);
|
||||
}
|
||||
}
|
||||
|
@ -543,7 +543,7 @@ public class CiApiServiceImpl2 implements CiApiService {
|
||||
station = station.getDeviceStation();
|
||||
}
|
||||
Station deviceStation = station;
|
||||
boolean restartFlag = Objects.nonNull(deviceStation.getRestartTime()) && deviceStation.getRestartTime().isBefore(LocalTime.now());
|
||||
boolean restartFlag = Objects.nonNull(deviceStation.getRestartTime()) && deviceStation.getRestartTime().isBefore(simulation.getCorrectSystemTime().toLocalTime());
|
||||
// 是否大铁设备
|
||||
boolean hasCTCFlag = simulation.getRepository().getConfig().isRailway();
|
||||
// 大铁异常提示语
|
||||
|
@ -5,6 +5,8 @@ import club.joylink.rtss.simulation.cbtc.data.SimulationDataRepository;
|
||||
import club.joylink.rtss.simulation.cbtc.data.map.MapNamedElement;
|
||||
import club.joylink.rtss.simulation.cbtc.data.storage.ato.StorageSpeedCurve;
|
||||
import club.joylink.rtss.simulation.cbtc.data.vr.VirtualRealityTrain;
|
||||
import club.joylink.rtss.simulation.cbtc.exception.SimulationException;
|
||||
import club.joylink.rtss.simulation.cbtc.exception.SimulationExceptionType;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.NonNull;
|
||||
@ -44,7 +46,15 @@ public class StorageMa {
|
||||
|
||||
public MaService.Ma convert2SimulationObj(SimulationDataRepository repository) {
|
||||
VirtualRealityTrain train = repository.getVRByCode(trainCode, VirtualRealityTrain.class);
|
||||
MapNamedElement device = repository.getByCode(deviceCode, MapNamedElement.class);
|
||||
MapNamedElement device = null;
|
||||
if (repository.getDeviceMap().containsKey(deviceCode)) {
|
||||
device = repository.getByCode(deviceCode, MapNamedElement.class);
|
||||
} else if (repository.getVrDeviceMap().containsKey(deviceCode)) {
|
||||
device = repository.getVrDeviceMap().get(deviceCode);
|
||||
} else {
|
||||
throw new SimulationException(SimulationExceptionType.System_Fault,
|
||||
String.format("地图数据异常:不存在code为[%s]的数据", deviceCode));
|
||||
}
|
||||
MaService.Ma ma = new MaService.Ma(train, device, type);
|
||||
if (eoaPosition != null) {
|
||||
ma.setEoaPosition(eoaPosition.convert2SimulationObj(repository));
|
||||
|
@ -1,46 +0,0 @@
|
||||
package club.joylink.rtss.simulation.cbtc.data.vo;
|
||||
|
||||
import club.joylink.rtss.simulation.cbtc.data.map.Station;
|
||||
import club.joylink.rtss.simulation.cbtc.member.SimulationMember;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 控制权转换结果信息
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@NoArgsConstructor
|
||||
public class ControlTransferResultVO {
|
||||
|
||||
private String stationCode;
|
||||
|
||||
private String applicantId;
|
||||
|
||||
private String userId;
|
||||
|
||||
private Station.ControlMode apply2TheControlMode;
|
||||
|
||||
private boolean status;
|
||||
|
||||
public ControlTransferResultVO(Station station, boolean agree) {
|
||||
this.status = agree;
|
||||
this.stationCode = station.getCode();
|
||||
this.applicantId = station.getApplicantId();
|
||||
this.userId = station.getApplicant().getUserId();
|
||||
this.apply2TheControlMode = station.getApply2TheControlMode();
|
||||
}
|
||||
|
||||
public Map<String, Object> getData() {
|
||||
Map<String,Object> resultMap = new HashMap<>();
|
||||
resultMap.put("stationCode", stationCode);
|
||||
resultMap.put("applicantId", applicantId);
|
||||
resultMap.put("apply2TheControlMode", apply2TheControlMode);
|
||||
resultMap.put("status", status);
|
||||
return resultMap;
|
||||
}
|
||||
}
|
@ -162,10 +162,6 @@ public enum WebSocketMessageType {
|
||||
* 仿真-报警
|
||||
*/
|
||||
Simulation_Alarm,
|
||||
/**
|
||||
* 仿真-控制模式转换结果
|
||||
*/
|
||||
Simulation_Control_Transfer_Result,
|
||||
|
||||
//------------------ 仿真剧本 ------------------
|
||||
/**
|
||||
|
@ -102,7 +102,6 @@ public class SocketMessageFactory {
|
||||
topicList.add(SimulationSubscribeTopic.Main.buildDestination(group));
|
||||
break;
|
||||
}
|
||||
case Simulation_Control_Transfer_Result:
|
||||
case Simulation_DeviceStatus: {
|
||||
topicList.add(SimulationSubscribeTopic.DeviceStatus.buildDestination(group));
|
||||
break;
|
||||
|
@ -314,6 +314,17 @@ public enum BgSceneStatusRule {
|
||||
return getBgScene(simulation);
|
||||
}
|
||||
},
|
||||
SIGNAL_HUMAN_RELEASE_NB_BG_SCENE("宁波信号机总人解背景"){
|
||||
@Override
|
||||
public String doHandle(Simulation simulation, MapElement mapElement) {
|
||||
Signal signal = (Signal) mapElement;
|
||||
Route route = signal.getRouteList().get(0);
|
||||
openRouteDirect(simulation, route);
|
||||
closeSignalDirectly(route.getStart());
|
||||
Section.AxleFault.FAULT.apply(route.getStart().getSection());
|
||||
return getBgScene(simulation);
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 区段区故解背景
|
||||
*/
|
||||
@ -694,7 +705,7 @@ public enum BgSceneStatusRule {
|
||||
station = station.getDeviceStation();
|
||||
}
|
||||
station.setInterlockMachineStarting(true);
|
||||
station.setRestartTime(LocalTime.now());
|
||||
station.setRestartTime(simulation.getCorrectSystemTime().toLocalTime());
|
||||
Station.Fault.INTERLOCK_FAULT.fix(station); //恢复联锁机故障
|
||||
SimulationDataRepository repository = simulation.getRepository();
|
||||
//该站范围内区段故障锁闭
|
||||
|
@ -2,6 +2,7 @@ package club.joylink.rtss.vo.training2.rule;
|
||||
|
||||
import club.joylink.rtss.constants.BusinessConsts;
|
||||
import club.joylink.rtss.exception.BusinessExceptionAssertEnum;
|
||||
import club.joylink.rtss.simulation.cbtc.CI.data.StationDirection;
|
||||
import club.joylink.rtss.simulation.cbtc.Simulation;
|
||||
import club.joylink.rtss.simulation.cbtc.data.map.*;
|
||||
import club.joylink.rtss.simulation.cbtc.exception.SimulationException;
|
||||
@ -393,7 +394,7 @@ public enum MapDeviceRule {
|
||||
SECTION_SWITCH_AXLE_TRACK_LIST("道岔计轴区段列表") {
|
||||
@Override
|
||||
public List<Section> filterMapDeviceList(Simulation simulation) {
|
||||
return generateRandomElement(querySectionListByFunction(simulation,s -> s.isAxleCounter() && !s.isSwitchAxleCounterSection()), NUMBER);
|
||||
return generateRandomElement(querySectionListByFunction(simulation,s -> s.isAxleCounter() && s.isSwitchAxleCounterSection()), NUMBER);
|
||||
}
|
||||
},
|
||||
SECTION_CROSS_LIST("岔心区段列表") {
|
||||
@ -423,7 +424,28 @@ public enum MapDeviceRule {
|
||||
if (section.isSwitchTrack() || section.isSwitchAxleCounterSection() || section.isLogicSection() || section.isCross()) {
|
||||
return false;
|
||||
}
|
||||
return section.getDeviceStation().isCentralized();
|
||||
if (section.getStation() != null) {
|
||||
return section.getStation().isCentralized();
|
||||
} else {
|
||||
return section.getDeviceStation().isCentralized();
|
||||
}
|
||||
});
|
||||
return generateRandomElement(sectionList, NUMBER);
|
||||
}
|
||||
},
|
||||
SECTION_CONTROL_LIST("控制模式车站区段列表") {
|
||||
@Override
|
||||
public List<Section> filterMapDeviceList(Simulation simulation) {
|
||||
List<Section> sectionList = queryNormalSectionList(simulation, section -> {
|
||||
// 普通区段排除道岔区段
|
||||
if (section.isSwitchTrack() || section.isSwitchAxleCounterSection() || section.isLogicSection() || section.isCross()) {
|
||||
return false;
|
||||
}
|
||||
if (section.getStation() != null) {
|
||||
return section.getStation().isHasControlMode();
|
||||
} else {
|
||||
return section.getDeviceStation().isHasControlMode();
|
||||
}
|
||||
});
|
||||
return generateRandomElement(sectionList, NUMBER);
|
||||
}
|
||||
@ -564,11 +586,22 @@ public enum MapDeviceRule {
|
||||
}), NUMBER);
|
||||
}
|
||||
},
|
||||
ROUTE_CENTRALIZED_LIST("集中站本站进路列表"){
|
||||
@Override
|
||||
public List<Route> filterMapDeviceList(Simulation simulation) {
|
||||
return generateRandomElement(queryNormalRouteList(simulation, route -> {
|
||||
if (!route.getInterlockStation().isCentralized()) {
|
||||
return false;
|
||||
}
|
||||
return Objects.equals( route.getStart().getDeviceStation(), route.getDestination().getDeviceStation());
|
||||
}), NUMBER);
|
||||
}
|
||||
},
|
||||
ROUTE_CONTROL_LIST("控制模式车站进路列表") {
|
||||
@Override
|
||||
public List<Route> filterMapDeviceList(Simulation simulation) {
|
||||
return generateRandomElement(queryNormalRouteList(simulation, route ->{
|
||||
return route.getInterlockStation().isHasControlMode() && !route.isGuide();
|
||||
return route.getInterlockStation().isHasControlMode() && !route.isGuide() && !route.isTurnBack();
|
||||
}), NUMBER);
|
||||
}
|
||||
},
|
||||
@ -583,7 +616,20 @@ public enum MapDeviceRule {
|
||||
ROUTE_DEPARTURE_LIST("发车进路列表") {
|
||||
@Override
|
||||
public List<Route> filterMapDeviceList(Simulation simulation) {
|
||||
return generateRandomElement(queryNormalRouteList(simulation, route -> Objects.equals(Route.Type.DEPARTURE, route.getType())), NUMBER);
|
||||
List<Route> routeList = new ArrayList<>();
|
||||
simulation.getRepository().getStationList().forEach(station -> {
|
||||
station.getStationDirectionMap().forEach((k, v) -> {
|
||||
if (StationDirection.DirectionRunModel.A.equals(v.getRunModel())) {
|
||||
if (StationDirection.ReceiveAndDeliverModel.D.equals(v.getDefaultRunStatus())) {
|
||||
List<Route> list = v.getDeliverRouteList().stream()
|
||||
.filter(route -> !CollectionUtils.isEmpty(route.getSectionList()))
|
||||
.collect(Collectors.toList());
|
||||
routeList.addAll(list);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
return generateRandomElement(routeList, NUMBER);
|
||||
}
|
||||
},
|
||||
ROUTE_FIRST_STATION_LIST("获取第一个站进路列表") {
|
||||
|
@ -1,9 +1,12 @@
|
||||
package club.joylink.rtss.vo.training2.rule;
|
||||
|
||||
import club.joylink.rtss.simulation.cbtc.Simulation;
|
||||
import club.joylink.rtss.simulation.cbtc.data.map.*;
|
||||
import club.joylink.rtss.simulation.cbtc.exception.SimulationException;
|
||||
import club.joylink.rtss.simulation.cbtc.exception.SimulationExceptionType;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 实训获取元素属性的公共代码,生成实训时使用
|
||||
*/
|
||||
@ -33,7 +36,12 @@ public abstract class MapElementRule {
|
||||
} else if (mapElement instanceof Switch) {
|
||||
return ((Switch) mapElement).getDeviceStation();
|
||||
} else if (mapElement instanceof Route) {
|
||||
return ((Route) mapElement).getInterlockStation();
|
||||
Route route = ((Route) mapElement);
|
||||
if (route.getInterlockStation() != null) {
|
||||
return route.getInterlockStation();
|
||||
} else {
|
||||
return route.getStart().getStation() != null ? route.getStart().getStation() : route.getStart().getDeviceStation();
|
||||
}
|
||||
}
|
||||
throw new SimulationException(SimulationExceptionType.Simulation_Map_Data_Error);
|
||||
}
|
||||
@ -56,6 +64,32 @@ public abstract class MapElementRule {
|
||||
throw new SimulationException(SimulationExceptionType.Simulation_Map_Data_Error);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取终端信号机
|
||||
*
|
||||
* @param simulation
|
||||
* @param route
|
||||
* @return
|
||||
*/
|
||||
public static Signal queryEndSignal(Simulation simulation, Route route) {
|
||||
Signal startSignal = route.getStart();
|
||||
Signal endSignal = route.getDestination();
|
||||
Signal resultSignal = null;
|
||||
if (!Objects.equals(startSignal.getDeviceStation(), endSignal.getDeviceStation())) {
|
||||
resultSignal = simulation.getRepository().getSignalList().stream().filter(signal -> Signal.SignalType.TRANSMISSION.equals(signal.getType())
|
||||
&& signal.getLinkSignal() != null && signal.getLinkSignal().getCode().equals(endSignal.getCode()))
|
||||
.findFirst().orElse(null);
|
||||
}
|
||||
if (resultSignal != null) {
|
||||
return resultSignal;
|
||||
}
|
||||
if (route.getDestinationButtonSignal() != null) {
|
||||
return route.getDestinationButtonSignal();
|
||||
} else {
|
||||
return route.getDestination();
|
||||
}
|
||||
}
|
||||
|
||||
private static Signal querySectionSignal(Section section) {
|
||||
boolean flag = true;
|
||||
do {
|
||||
|
@ -1,5 +1,6 @@
|
||||
package club.joylink.rtss.vo.training2.rule;
|
||||
|
||||
import club.joylink.rtss.constants.BusinessConsts;
|
||||
import club.joylink.rtss.simulation.cbtc.Simulation;
|
||||
import club.joylink.rtss.simulation.cbtc.constant.SignalAspect;
|
||||
import club.joylink.rtss.simulation.cbtc.constant.SwitchIndication;
|
||||
@ -69,7 +70,15 @@ public enum MapLocationRule {
|
||||
return calcMapLocation(simulation, () -> {
|
||||
MapGraphDataNewVO mapGraphDataNewVO = simulation.getBuildParams().getMap().getGraphDataNew();
|
||||
MapSectionNewVO sectionNewVO = mapGraphDataNewVO.getSectionList().stream()
|
||||
.filter(s -> s.getCode().equals(mapElement.getCode())).findFirst().get();
|
||||
.filter(s -> Objects.equals(s.getCode(), mapElement.getCode())).findFirst().get();
|
||||
// 道岔区段
|
||||
if (Objects.equals(sectionNewVO.getType(), BusinessConsts.Section.SectionType.Type04)
|
||||
&& !CollectionUtils.isEmpty(sectionNewVO.getRelevanceSectionList())) {
|
||||
String pointCode = sectionNewVO.getRelevanceSectionList().get(0);
|
||||
MapSectionNewVO pointSectionNew = mapGraphDataNewVO.getSectionList().stream()
|
||||
.filter(s -> Objects.equals(s.getCode(), pointCode)).findFirst().get();
|
||||
return pointSectionNew.getPoints().get(0);
|
||||
}
|
||||
return sectionNewVO.getPoints().get(0);
|
||||
});
|
||||
}
|
||||
@ -110,7 +119,7 @@ public enum MapLocationRule {
|
||||
MapStationNewVO stationNewVO = simulation.getBuildParams().getMap().getGraphDataNew().getStationList().stream()
|
||||
.filter(mapStationNewVO -> !mapStationNewVO.isDepot()).findFirst().get();
|
||||
// 横向偏差
|
||||
int x = point.getX() - 960; // 屏幕一般宽度
|
||||
int x = (int) ((point.getX() - 960) * Double.valueOf(s)); // 屏幕一般宽度
|
||||
// 纵向偏差
|
||||
Point origin = simulation.getBuildParams().getMap().getGraphDataNew().getOrigin();
|
||||
int y = (origin == null) ? stationNewVO.getPosition().getY() - 200 : origin.getY();
|
||||
|
@ -5,6 +5,7 @@ import club.joylink.rtss.simulation.cbtc.data.map.*;
|
||||
import club.joylink.rtss.simulation.cbtc.exception.SimulationException;
|
||||
import club.joylink.rtss.simulation.cbtc.exception.SimulationExceptionType;
|
||||
import club.joylink.rtss.vo.map.graph.MapSignalButtonVO;
|
||||
import club.joylink.rtss.vo.map.graph.MapStationNewVO;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.*;
|
||||
@ -48,6 +49,15 @@ public enum PropertyValueRule {
|
||||
return MapElementRule.queryStation(mapElement).getCode();
|
||||
}
|
||||
},
|
||||
STATION_JP("地图设备所属车站简拼"){
|
||||
@Override
|
||||
public Object resolve(Simulation simulation, Object mapElement) {
|
||||
String stationCode = MapElementRule.queryStation(mapElement).getCode();
|
||||
MapStationNewVO stationNewVO = simulation.getBuildParams().getMap().getGraphDataNew().getStationList().stream()
|
||||
.filter(s -> Objects.equals(stationCode, s.getCode())).findFirst().orElse(null);
|
||||
return stationNewVO.getJp();
|
||||
}
|
||||
},
|
||||
ROUTE_START_SIGNAL_NAME("进路起始名称") {
|
||||
@Override
|
||||
public String resolve(Simulation simulation, Object mapElement) {
|
||||
@ -89,23 +99,13 @@ public enum PropertyValueRule {
|
||||
ROUTE_END_SIGNAL_NAME("进路末端名称") {
|
||||
@Override
|
||||
public String resolve(Simulation simulation, Object mapElement) {
|
||||
Route route = (Route) mapElement;
|
||||
if (route.getDestinationButtonSignal() != null) {
|
||||
return route.getDestinationButtonSignal().getShowName();
|
||||
} else {
|
||||
return route.getDestination().getShowName();
|
||||
}
|
||||
return MapElementRule.queryEndSignal(simulation, (Route) mapElement).getShowName();
|
||||
}
|
||||
},
|
||||
ROUTE_END_SIGNAL_CODE("进路末端信号机编码") {
|
||||
@Override
|
||||
public String resolve(Simulation simulation, Object mapElement) {
|
||||
Route route = (Route) mapElement;
|
||||
if (route.getDestinationButtonSignal() != null) {
|
||||
return route.getDestinationButtonSignal().getCode();
|
||||
} else {
|
||||
return route.getDestination().getCode();
|
||||
}
|
||||
return MapElementRule.queryEndSignal(simulation, (Route) mapElement).getCode();
|
||||
}
|
||||
},
|
||||
ROUTE_END_BUTTON_SIGNAL_NAME("进路终端按钮信号机名称") {
|
||||
@ -114,6 +114,25 @@ public enum PropertyValueRule {
|
||||
return ((Route) mapElement).getDestinationButtonSignal().getShowName();
|
||||
}
|
||||
},
|
||||
ROUTE_END_BUTTON_SIGNAL_CODE("进路终端按钮信号机编码") {
|
||||
@Override
|
||||
public Object resolve(Simulation simulation, Object mapElement) {
|
||||
return ((Route) mapElement).getDestinationButtonSignal().getCode();
|
||||
}
|
||||
},
|
||||
ROUTE_END_PICK_BUTTON_CODE("进路终端接车按钮编码") {
|
||||
@Override
|
||||
public String resolve(Simulation simulation, Object mapElement) {
|
||||
Route route = (Route) mapElement;
|
||||
List<MapSignalButtonVO> signalButtonList = simulation.getBuildParams().getMap().getGraphDataNew().getSignalButtonList();
|
||||
MapSignalButtonVO buttonVO = signalButtonList.stream().filter(button -> MapSignalButtonVO.Type.PICK.equals(button.getType())
|
||||
&& Objects.equals(button.getSignalCode(), route.getDestination().getCode())).findFirst().orElse(null);
|
||||
if (buttonVO == null) {
|
||||
throw new SimulationException(SimulationExceptionType.Data_Not_Exist, "错误数据");
|
||||
}
|
||||
return buttonVO.getCode();
|
||||
}
|
||||
},
|
||||
SIGNAL_BUTTON_CODE("信号机按钮编码") {
|
||||
@Override
|
||||
public String resolve(Simulation simulation, Object mapElement) {
|
||||
|
Loading…
Reference in New Issue
Block a user