diff --git a/src/main/java/club/joylink/rtss/entity/training2/DraftTraining2.java b/src/main/java/club/joylink/rtss/entity/training2/DraftTraining2.java index 3a4503542..05d931273 100644 --- a/src/main/java/club/joylink/rtss/entity/training2/DraftTraining2.java +++ b/src/main/java/club/joylink/rtss/entity/training2/DraftTraining2.java @@ -48,18 +48,18 @@ public class DraftTraining2 { */ private Long runPlanId; -// /** -// * List的json -// */ -// private String operasJson; + /** + * List的json + */ + private String operaJson; /** * List的json */ - private String stepsJson; + private String stepJson; /** - * List的json + * List的json */ private String scoringRuleJson; diff --git a/src/main/java/club/joylink/rtss/services/training/generatornew/base/StationGeneratorNew.java b/src/main/java/club/joylink/rtss/services/training/generatornew/base/StationGeneratorNew.java index b3ab3b5e1..9d129ad0d 100644 --- a/src/main/java/club/joylink/rtss/services/training/generatornew/base/StationGeneratorNew.java +++ b/src/main/java/club/joylink/rtss/services/training/generatornew/base/StationGeneratorNew.java @@ -313,7 +313,7 @@ public class StationGeneratorNew implements GeneratorNew { // .filter(station -> station.isTurnBack()) // .collect(Collectors.toList()); // tbStationList.forEach(station -> { -// if (Objects.equals(Operation.Type.Station_Set_Turn_Back_Strategy.name(), operateDefinitionVO.getOperateType())) { +// if (Objects.equals(TrainingOperation.Type.Station_Set_Turn_Back_Strategy.name(), operateDefinitionVO.getOperateType())) { // station.setControlMode(Station.ControlMode.Center); // trainingVOList.add(build(config, simulation, station,null, operateDefinitionVO)); // // 仿真重置 diff --git a/src/main/java/club/joylink/rtss/services/training2/Training2Service.java b/src/main/java/club/joylink/rtss/services/training2/Training2Service.java index 3f6fa652e..9d9bf6e54 100644 --- a/src/main/java/club/joylink/rtss/services/training2/Training2Service.java +++ b/src/main/java/club/joylink/rtss/services/training2/Training2Service.java @@ -11,7 +11,7 @@ public class Training2Service { public void run(Simulation simulation) { Training2 training2 = new Training2(null, null); //从仿真里拿到Training2 - for (Step2 step : training2.getStepList()) { + for (Step2 step : training2.getSteps()) { if (!step.isCompletion()) { if (!step.isTrigger()) { if (step.getTriggerCondition().getValue(boolean.class)) { diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/ATS/operation/Operation.java b/src/main/java/club/joylink/rtss/simulation/cbtc/ATS/operation/Operation.java index 2ce999b40..3b5a126df 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/ATS/operation/Operation.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/ATS/operation/Operation.java @@ -53,10 +53,10 @@ public class Operation { */ Switch_Single_Unlock(Operation.CLIENT), // /** 单锁(联动) */ -// Switch_Single_Lock_Chain(Operation.CLIENT +// Switch_Single_Lock_Chain(TrainingOperation.CLIENT // ), // /** 单解(联动) */ -// Switch_Single_Unlock_Chain(Operation.CLIENT +// Switch_Single_Unlock_Chain(TrainingOperation.CLIENT // ), /** * 初始化封锁 @@ -115,10 +115,10 @@ public class Operation { */ Switch_Reverse_Position(Operation.CLIENT), // /** 道岔定操(联动) */ -// Switch_Turn_NP_Chain(Operation.CLIENT +// Switch_Turn_NP_Chain(TrainingOperation.CLIENT // ), // /** 道岔反操(联动) */ -// Switch_Turn_RP_Chain(Operation.CLIENT +// Switch_Turn_RP_Chain(TrainingOperation.CLIENT // ), /** * 确认计轴有效 @@ -254,7 +254,7 @@ public class Operation { */ Signal_Set_Overlap(Operation.CLIENT), // /** 取消进路(强制取消进路,无论接近区段是否占用,如果占用延时取消) */ -// Signal_Force_Cancel_Route(Operation.CLIENT +// Signal_Force_Cancel_Route(TrainingOperation.CLIENT // ), /** * 人解进路 @@ -639,65 +639,65 @@ public class Operation { // /** // * 标记ATP切除 // */ -// Train_Tag_Atp_Cut(Operation.CLIENT +// Train_Tag_Atp_Cut(TrainingOperation.CLIENT // ), // /** // * 标记ATP恢复 // */ -// Train_Tag_Atp_Recover(Operation.CLIENT +// Train_Tag_Atp_Recover(TrainingOperation.CLIENT // ), // /** // * 放行冲突列车 // */ -// Train_Allow_Pass(Operation.CLIENT +// Train_Allow_Pass(TrainingOperation.CLIENT // ), // /** // * 列车信息 // */ -// Train_Info(Operation.CLIENT +// Train_Info(TrainingOperation.CLIENT // ), // /** // * 人工限速行驶 // */ -// Train_Manual_Limit_Drive(Operation.CLIENT +// Train_Manual_Limit_Drive(TrainingOperation.CLIENT // ), // /** // * 按进路闭塞法行车 // */ -// Train_Manual_Route_Blocking_Drive(Operation.CLIENT +// Train_Manual_Route_Blocking_Drive(TrainingOperation.CLIENT // ), // /** // * 越信号机红灯 // */ -// Train_Pass_Red_Signal(Operation.CLIENT +// Train_Pass_Red_Signal(TrainingOperation.CLIENT // ), // /** // * 引导信号行车 // */ -// Train_Drive_By_Guide_Signal(Operation.CLIENT +// Train_Drive_By_Guide_Signal(TrainingOperation.CLIENT // ), // /** 添加列车识别号 */ -// Train_Identify_Add(Operation.CLIENT +// Train_Identify_Add(TrainingOperation.CLIENT // ), // /** 删除列车识别号 */ -// Train_Identify_Del(Operation.CLIENT +// Train_Identify_Del(TrainingOperation.CLIENT // ), // /** 修改列车识别号 */ -// Train_Identify_Modify(Operation.CLIENT +// Train_Identify_Modify(TrainingOperation.CLIENT // ), // /** 修改车组号 */ -// Train_GroupNo_Modify(Operation.CLIENT +// Train_GroupNo_Modify(TrainingOperation.CLIENT // ), // /** 移动列车识别号 */ -// Train_Identify_Move(Operation.CLIENT +// Train_Identify_Move(TrainingOperation.CLIENT // ), // /** 交换列车识别号 */ -// Train_Identify_Exchange(Operation.CLIENT +// Train_Identify_Exchange(TrainingOperation.CLIENT // ), // /** // * 列车惰行 // */ -// Train_Idle(Operation.CLIENT +// Train_Idle(TrainingOperation.CLIENT // ), /** * 扣车 @@ -710,12 +710,12 @@ public class Operation { // /** // * 删除车次号 // */ -// Train_Delete_Service_Number(Operation.CLIENT +// Train_Delete_Service_Number(TrainingOperation.CLIENT // ), // /** // * 更改目的地码 // */ -// Train_Change_Destination_Code(Operation.CLIENT +// Train_Change_Destination_Code(TrainingOperation.CLIENT // ), /** * 更改车次号 @@ -970,17 +970,17 @@ public class Operation { // /** // * 到达 // */ -// CTC_ARRIVE(Operation.CLIENT +// CTC_ARRIVE(TrainingOperation.CLIENT // ), // /** // * 出发 // */ -// CTC_DEPARTURE(Operation.CLIENT +// CTC_DEPARTURE(TrainingOperation.CLIENT // ), // /** // * 通过 // */ -// CTC_PASS(Operation.CLIENT +// CTC_PASS(TrainingOperation.CLIENT // ), /** @@ -1304,7 +1304,7 @@ public class Operation { * 发送会话消息(语音输入) */ Conversation_Chat_Audio_Base64(Operation.CLIENT), - + /** * 发送会话消息(文字输入) */ diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/ATS/operation/handler/SignalOperateHandler.java b/src/main/java/club/joylink/rtss/simulation/cbtc/ATS/operation/handler/SignalOperateHandler.java index 186547d9a..7eb44848a 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/ATS/operation/handler/SignalOperateHandler.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/ATS/operation/handler/SignalOperateHandler.java @@ -78,7 +78,7 @@ public class SignalOperateHandler { // * @param simulation // * @param signalCode // */ -// @OperateHandlerMapping(type = Operation.Type.Signal_Force_Cancel_Route) +// @OperateHandlerMapping(type = TrainingOperation.Type.Signal_Force_Cancel_Route) // public void forceCancelRoute(Simulation simulation, String signalCode) { // Route route = this.ciApiService.findLockedRouteByStartSignal(simulation, signalCode); // if (Objects.nonNull(route)) { @@ -185,7 +185,7 @@ public class SignalOperateHandler { // * @param simulation // * @param routeCode // */ -// @OperateHandlerMapping(type = Operation.Type.Signal_Route_Guide) +// @OperateHandlerMapping(type = TrainingOperation.Type.Signal_Route_Guide) // public void settingGuideRoute(Simulation simulation, String routeCode) { // iciSubsystem.settingGuideRoute(simulation, routeCode); // } @@ -253,7 +253,7 @@ public class SignalOperateHandler { // * @param simulation // * @param signalCode // */ -// @OperateHandlerMapping(type = Operation.Type.Signal_Open_Guide_Check_Switch) +// @OperateHandlerMapping(type = TrainingOperation.Type.Signal_Open_Guide_Check_Switch) // public void openGuideCheckSwitch(Simulation simulation, String signalCode) { // this.iciSubsystem.openGuideSignalCheckSwitch(simulation, signalCode); // } @@ -263,7 +263,7 @@ public class SignalOperateHandler { // * @param simulation // * @param signalCode // */ -// @OperateHandlerMapping(type = Operation.Type.Signal_Open_Guide_Check_Route) +// @OperateHandlerMapping(type = TrainingOperation.Type.Signal_Open_Guide_Check_Route) // public void openGuideCheckRoute(Simulation simulation, String signalCode) { // this.iciSubsystem.openGuideSignalCheckRoute(simulation, signalCode); // } diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/ATS/operation/handler/SwitchOperateHandler.java b/src/main/java/club/joylink/rtss/simulation/cbtc/ATS/operation/handler/SwitchOperateHandler.java index 3adb99070..7e9137f60 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/ATS/operation/handler/SwitchOperateHandler.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/ATS/operation/handler/SwitchOperateHandler.java @@ -96,7 +96,7 @@ public class SwitchOperateHandler { } // /**道岔定操(联动)*/ -// @OperateHandlerMapping(type = Operation.Type.Switch_Turn_NP_Chain) +// @OperateHandlerMapping(type = TrainingOperation.Type.Switch_Turn_NP_Chain) // public void chainTurn2Normal(Simulation simulation, String switchCode) { // this.turn2Normal(simulation, switchCode); // SimulationDataRepository repository = simulation.getRepository(); @@ -108,7 +108,7 @@ public class SwitchOperateHandler { // } // /**道岔反操(联动)*/ -// @OperateHandlerMapping(type = Operation.Type.Switch_Turn_RP_Chain) +// @OperateHandlerMapping(type = TrainingOperation.Type.Switch_Turn_RP_Chain) // public void chainTurn2Reverse(Simulation simulation, String switchCode) { // this.turn2Reverse(simulation, switchCode); // SimulationDataRepository repository = simulation.getRepository(); @@ -153,7 +153,7 @@ public class SwitchOperateHandler { } // /**道岔单锁(联动)*/ -// @OperateHandlerMapping(type =Operation.Type.Switch_Single_Lock_Chain) +// @OperateHandlerMapping(type =TrainingOperation.Type.Switch_Single_Lock_Chain) // public void chainSingleLockSwitch(Simulation simulation, String switchCode) { // SimulationDataRepository repository = simulation.getRepository(); // Switch aSwitch = repository.getByCode(switchCode, Switch.class); @@ -165,7 +165,7 @@ public class SwitchOperateHandler { // } // /**道岔单解(联动)*/ -// @OperateHandlerMapping(type =Operation.Type.Switch_Single_Unlock_Chain) +// @OperateHandlerMapping(type =TrainingOperation.Type.Switch_Single_Unlock_Chain) // public void chainSingleUnlockSwitch(Simulation simulation, String switchCode) { // SimulationDataRepository repository = simulation.getRepository(); // Switch aSwitch = repository.getByCode(switchCode, Switch.class); diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/ATS/operation/handler/TrainOperateHandler.java b/src/main/java/club/joylink/rtss/simulation/cbtc/ATS/operation/handler/TrainOperateHandler.java index 78d3650fa..be39af400 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/ATS/operation/handler/TrainOperateHandler.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/ATS/operation/handler/TrainOperateHandler.java @@ -237,7 +237,7 @@ public class TrainOperateHandler { // /** // * 删除ID // */ -// @OperateHandlerMapping(type = Operation.Type.Train_Delete_Service_Number) +// @OperateHandlerMapping(type = TrainingOperation.Type.Train_Delete_Service_Number) // public void deleteServiceNumber(Simulation simulation, String groupNumber) { // atsTrainService.deleteServiceNumber(simulation, groupNumber); // } @@ -245,7 +245,7 @@ public class TrainOperateHandler { // /** // * 修改目的地码 // */ -// @OperateHandlerMapping(type = Operation.Type.Train_Change_Destination_Code) +// @OperateHandlerMapping(type = TrainingOperation.Type.Train_Change_Destination_Code) // public void changeDestinationCode(Simulation simulation, String groupNumber, String destinationCode) { // atsTrainService.changeDestinationCode(simulation, groupNumber, destinationCode); // } diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/ATS/service/AtsStationService.java b/src/main/java/club/joylink/rtss/simulation/cbtc/ATS/service/AtsStationService.java index 37224fe81..c033b84d2 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/ATS/service/AtsStationService.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/ATS/service/AtsStationService.java @@ -97,7 +97,7 @@ public class AtsStationService { log.debug("行调请求站控"); targetMembers = simulation.findMemberListByRole(SimulationMember.Type.STATION_SUPERVISOR); } - transferControl(simulation, fromMember, stationCodes, targetMembers, Operation.Type.CM_Apply_For_Station_Control);*/ + transferControl(simulation, fromMember, stationCodes, targetMembers, TrainingOperation.Type.CM_Apply_For_Station_Control);*/ } @@ -121,7 +121,7 @@ public class AtsStationService { log.debug("行调请求中控"); targetMembers = simulation.findMemberListByRole(SimulationMember.Type.STATION_SUPERVISOR); } - transferControl(simulation, fromMember, stationCodes, targetMembers, Operation.Type.CM_Apply_For_Center_Control);*/ + transferControl(simulation, fromMember, stationCodes, targetMembers, TrainingOperation.Type.CM_Apply_For_Center_Control);*/ } diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/communication/Joylink3DMessageService.java b/src/main/java/club/joylink/rtss/simulation/cbtc/communication/Joylink3DMessageService.java index efbf175c2..dfc5c9737 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/communication/Joylink3DMessageService.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/communication/Joylink3DMessageService.java @@ -234,7 +234,7 @@ public class Joylink3DMessageService { // vrSwitchList.forEach(vrSwitch -> { // boolean normal; // if (vrSwitch.isTurning()) { -// normal = vrSwitch.getCommand().equals(VirtualRealitySwitch.Operation.NP); +// normal = vrSwitch.getCommand().equals(VirtualRealitySwitch.TrainingOperation.NP); // } else if (vrSwitch.isPosN()) { // normal = true; // } else { @@ -247,7 +247,7 @@ public class Joylink3DMessageService { // vrPsdList.forEach(vrPsd -> { // boolean open; // if (vrPsd.isTurning()) { -// open = vrPsd.getCommand().equals(VirtualRealityScreenDoor.Operation.K); +// open = vrPsd.getCommand().equals(VirtualRealityScreenDoor.TrainingOperation.K); // } else if (vrPsd.isClose()) { // open = false; // } else { diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/competition/CompetitionAndScriptManager.java b/src/main/java/club/joylink/rtss/simulation/cbtc/competition/CompetitionAndScriptManager.java index 6f73898e5..5f3b06c55 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/competition/CompetitionAndScriptManager.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/competition/CompetitionAndScriptManager.java @@ -107,7 +107,7 @@ public class CompetitionAndScriptManager { } // //本地测试用 // if (Objects.equals(unfinishedAction.getType(), ScriptActionBO.ActionType.Conversation) -// || Objects.equals(unfinishedAction.getType(), ScriptActionBO.ActionType.Operation)) { +// || Objects.equals(unfinishedAction.getType(), ScriptActionBO.ActionType.TrainingOperation)) { // scriptExecuteService.executeAction(simulation, unfinishedAction, correctSystemTime); // } return; diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/training2/Expression.java b/src/main/java/club/joylink/rtss/simulation/cbtc/training2/Expression.java index 6289b1343..57ec75b40 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/training2/Expression.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/training2/Expression.java @@ -22,13 +22,21 @@ public class Expression implements Valuable { */ Valuable[] valuables; - public Expression(String OperatorName, Valuable... valuables) { - this.operator = Operator.valueOf(OperatorName); + public Expression(String operatorName, Valuable... valuables) { + this(Operator.valueOf(operatorName), valuables); + } + + public Expression(Operator operator, Valuable... valuables) { + this.operator = operator; this.valuables = valuables; } @Override public T getValue(Class cls) { + return calValue(cls); + } + + public T calValue(Class cls) { return operator.handle(cls, valuables); } diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/training2/Step2.java b/src/main/java/club/joylink/rtss/simulation/cbtc/training2/Step2.java index 15417edbe..2116479dd 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/training2/Step2.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/training2/Step2.java @@ -1,5 +1,6 @@ package club.joylink.rtss.simulation.cbtc.training2; +import club.joylink.rtss.simulation.cbtc.data.SimulationDataRepository; import club.joylink.rtss.vo.client.training2.Step2VO; import lombok.Getter; import lombok.Setter; @@ -23,4 +24,12 @@ public class Step2 { this.id = vo.getId(); this.description = vo.getDescription(); } + + public Step2(Step2VO vo, SimulationDataRepository repository) { + this(vo); + Valuable triggerCondition = vo.getTriggerCondition().convert2BO(repository); + Valuable completionCondition = vo.getCompletionCondition().convert2BO(repository); + this.triggerCondition = triggerCondition; + this.completionCondition = completionCondition; + } } diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/training2/Training2.java b/src/main/java/club/joylink/rtss/simulation/cbtc/training2/Training2.java index 416949037..6e25edf4f 100644 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/training2/Training2.java +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/training2/Training2.java @@ -3,6 +3,7 @@ package club.joylink.rtss.simulation.cbtc.training2; import club.joylink.rtss.entity.training2.DraftTraining2; import club.joylink.rtss.simulation.cbtc.Simulation; import club.joylink.rtss.util.JsonUtils; +import club.joylink.rtss.vo.client.training2.OperaVO; import club.joylink.rtss.vo.client.training2.ScoringRuleVO; import club.joylink.rtss.vo.client.training2.Step2VO; import lombok.Getter; @@ -33,7 +34,9 @@ public class Training2 { private Long runPlanId; - private List stepList; + private List operations; + + private List steps; private List scoringRules; @@ -51,15 +54,14 @@ public class Training2 { public Training2(DraftTraining2 draftTraining2, Simulation simulation) { labels = JsonUtils.readCollection(draftTraining2.getLabelJson(), List.class, String.class); - List step2VOS = JsonUtils.readCollection(draftTraining2.getStepsJson(), List.class, Step2VO.class); - stepList = step2VOS.stream().map(vo -> { - Step2 step2 = new Step2(vo); - Valuable triggerCondition = vo.getTriggerCondition().convert2BO(simulation.getRepository()); - Valuable completionCondition = vo.getCompletionCondition().convert2BO(simulation.getRepository()); - step2.setTriggerCondition(triggerCondition); - step2.setCompletionCondition(completionCondition); - return step2; - }).collect(Collectors.toList()); + List operaVOS = JsonUtils.readCollection(draftTraining2.getOperaJson(), List.class, OperaVO.class); + operations = operaVOS.stream() + .map(vo -> vo.convert2BO(simulation)) + .collect(Collectors.toList()); + List step2VOS = JsonUtils.readCollection(draftTraining2.getStepJson(), List.class, Step2VO.class); + steps = step2VOS.stream() + .map(vo -> new Step2(vo, simulation.getRepository())) + .collect(Collectors.toList()); } public enum Type { diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/training2/TrainingOperation.java b/src/main/java/club/joylink/rtss/simulation/cbtc/training2/TrainingOperation.java new file mode 100644 index 000000000..3f551958f --- /dev/null +++ b/src/main/java/club/joylink/rtss/simulation/cbtc/training2/TrainingOperation.java @@ -0,0 +1,57 @@ +package club.joylink.rtss.simulation.cbtc.training2; + +import club.joylink.rtss.simulation.cbtc.ATS.operation.Operation; +import club.joylink.rtss.simulation.cbtc.member.SimulationMember; +import lombok.Getter; + +import java.util.Map; + +/** + * 实训操作 + */ +@Getter +public abstract class TrainingOperation { + private Integer id; + + private Type type; + + private SimulationMember member; + + public enum Type { + /** + * 元操作,最小操作单位 + */ + META, + /** + * 仿真操作 + */ + SIM, + } + + public TrainingOperation(Integer id, Type type, SimulationMember member) { + this.id = id; + this.type = type; + this.member = member; + } + + @Getter + public static class SimOperation extends TrainingOperation{ + private club.joylink.rtss.simulation.cbtc.ATS.operation.Operation.Type operationType; + + private Map params; + + public SimOperation(Integer id, TrainingOperation.Type type, SimulationMember member, + Operation.Type operationType, Map params) { + super(id, type, member); + this.operationType = operationType; + this.params = params; + } + } + + @Getter + public static class MetaOperation extends TrainingOperation{ + public MetaOperation(Integer id, Type type, SimulationMember member) { + super(id, type, member); + } + } +} diff --git a/src/main/java/club/joylink/rtss/simulation/cbtc/training2/Value.java b/src/main/java/club/joylink/rtss/simulation/cbtc/training2/Value.java deleted file mode 100644 index 5ad5cca41..000000000 --- a/src/main/java/club/joylink/rtss/simulation/cbtc/training2/Value.java +++ /dev/null @@ -1,20 +0,0 @@ -package club.joylink.rtss.simulation.cbtc.training2; - -import club.joylink.rtss.exception.BusinessExceptionAssertEnum; - -public class Value implements Valuable { - private Object v; - - public Value(Object v) { - this.v = v; - } - - @Override - public T getValue(Class cls) { - try { - return (T) this.v; - } catch (Exception e) { - throw BusinessExceptionAssertEnum.SYSTEM_EXCEPTION.exception(e); - } - } -} diff --git a/src/main/java/club/joylink/rtss/vo/client/training2/OperaVO.java b/src/main/java/club/joylink/rtss/vo/client/training2/OperaVO.java index 1dca2716a..49416a787 100644 --- a/src/main/java/club/joylink/rtss/vo/client/training2/OperaVO.java +++ b/src/main/java/club/joylink/rtss/vo/client/training2/OperaVO.java @@ -1,15 +1,15 @@ package club.joylink.rtss.vo.client.training2; import club.joylink.rtss.simulation.cbtc.ATS.operation.Operation; -import club.joylink.rtss.simulation.cbtc.training2.Expression; -import club.joylink.rtss.util.JsonUtils; -import club.joylink.rtss.vo.map.graph.Point; -import com.fasterxml.jackson.annotation.JsonIgnore; +import club.joylink.rtss.simulation.cbtc.Simulation; +import club.joylink.rtss.simulation.cbtc.member.SimulationMember; +import club.joylink.rtss.simulation.cbtc.training2.TrainingOperation; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; -import java.util.List; import java.util.Map; /** @@ -18,83 +18,111 @@ import java.util.Map; @Getter @Setter @NoArgsConstructor -public class OperaVO { - private String id = "1"; +@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "type") +@JsonSubTypes({ + //注意name的值和Operation.Type枚举的name一致 + @JsonSubTypes.Type(value = OperaVO.SimOperaVO.class, name = "SIM"), + @JsonSubTypes.Type(value = OperaVO.MetaOperaVO.class, name = "META"), +}) +public abstract class OperaVO { + Integer id; - private Type type = Type.META; + TrainingOperation.Type type; - public enum Type { - /** - * 元操作,最小操作单位 - */ - META, - ATS, - CONVERSATION, - } - - @JsonIgnore - private OperaDetail detail; + String memberId; /** * 操作的触发条件 */ - private Expression triggerCondition; + ValuableVO triggerCondition; /** * 操作的完成判定条件 */ - private Expression completionCondition; + ValuableVO completionCondition; - public String getDetailJson() { - if (detail != null) { - return JsonUtils.writeValueAsString(detail); - } - return null; - } + public abstract TrainingOperation convert2BO(Simulation simulation); - public void setDetailJson(String detailJson) { - if (detailJson != null) { - switch (type) { - case META: - this.detail = JsonUtils.read(detailJson, MetaOperaDetail.class); - break; - case ATS: - this.detail = JsonUtils.read(detailJson, AtsOperaDetail.class); - break; - case CONVERSATION: - this.detail = JsonUtils.read(detailJson, ConversationOperaDetail.class); - break; - } + public static class MetaOperaVO extends OperaVO { + @Override + public TrainingOperation convert2BO(Simulation simulation) { + SimulationMember member = simulation.getSimulationMemberById(memberId); + return new TrainingOperation.MetaOperation(id, type, member); } } - public static abstract class OperaDetail { - } - - @Getter - @Setter - @NoArgsConstructor - public static class MetaOperaDetail extends OperaDetail{ - private String elementCode = "Signal_X1254"; - - private Point point; - } - - @Getter - @Setter - @NoArgsConstructor - public static class AtsOperaDetail extends OperaDetail{ + public static class SimOperaVO extends OperaVO{ private Operation.Type operationType; private Map params; + + @Override + public TrainingOperation convert2BO(Simulation simulation) { + SimulationMember member = simulation.getSimulationMemberById(memberId); + return new TrainingOperation.SimOperation(id, type, member, operationType, params); + } } - @Getter - @Setter - @NoArgsConstructor - public static class ConversationOperaDetail extends OperaDetail{ - private String conversationId; +// @JsonIgnore +// private OperaDetail detail; - private List memberIds; - } +// /** +// * 操作的触发条件 +// */ +// private Expression triggerCondition; +// +// /** +// * 操作的完成判定条件 +// */ +// private Expression completionCondition; + +// /** +// * 勿删,用于序列化 +// */ +// public String getDetailJson() { +// if (detail != null) { +// return JsonUtils.writeValueAsString(detail); +// } +// return null; +// } +// +// /** +// * 勿删,用于反序列化 +// */ +// public void setDetailJson(String detailJson) { +// if (detailJson != null) { +// switch (type) { +// case META: +// this.detail = JsonUtils.read(detailJson, MetaOperaDetail.class); +// break; +// case SIM: +// this.detail = JsonUtils.read(detailJson, SimOperaDetail.class); +// break; +// } +// } +// } +// +// public static abstract class OperaDetail { +// } +// +// /** +// * 数据待定 +// */ +// @Getter +// @Setter +// @NoArgsConstructor +// public static class MetaOperaDetail extends OperaDetail{ +// private String elementCode = "Signal_X1254"; +// +// private Point point; +// } +// +// @Getter +// @Setter +// @NoArgsConstructor +// public static class SimOperaDetail extends OperaDetail{ +// private TrainingOperation.Type operationType; +// +// private Map params; +// } }