Merge remote-tracking branch 'origin/test-training2' into test-training2

This commit is contained in:
joylink_zhangsai 2022-12-01 10:57:10 +08:00
commit 13a7f01a77
10 changed files with 261 additions and 88 deletions

View File

@ -8,7 +8,7 @@ import java.util.Date;
public class RtsTraining2Rule { public class RtsTraining2Rule {
private Long id; private Long id;
private Long mapId; private String simType;
private String locationRule; private String locationRule;

View File

@ -165,63 +165,63 @@ public class RtsTraining2RuleExample {
return (Criteria) this; return (Criteria) this;
} }
public Criteria andMapIdIsNull() { public Criteria andSimTypeIsNull() {
addCriterion("map_id is null"); addCriterion("sim_type is null");
return (Criteria) this; return (Criteria) this;
} }
public Criteria andMapIdIsNotNull() { public Criteria andSimTypeIsNotNull() {
addCriterion("map_id is not null"); addCriterion("sim_type is not null");
return (Criteria) this; return (Criteria) this;
} }
public Criteria andMapIdEqualTo(Long value) { public Criteria andSimTypeEqualTo(String value) {
addCriterion("map_id =", value, "mapId"); addCriterion("sim_type =", value, "simType");
return (Criteria) this; return (Criteria) this;
} }
public Criteria andMapIdNotEqualTo(Long value) { public Criteria andSimTypeNotEqualTo(String value) {
addCriterion("map_id <>", value, "mapId"); addCriterion("sim_type <>", value, "simType");
return (Criteria) this; return (Criteria) this;
} }
public Criteria andMapIdGreaterThan(Long value) { public Criteria andSimTypeGreaterThan(String value) {
addCriterion("map_id >", value, "mapId"); addCriterion("sim_type >", value, "simType");
return (Criteria) this; return (Criteria) this;
} }
public Criteria andMapIdGreaterThanOrEqualTo(Long value) { public Criteria andSimTypeGreaterThanOrEqualTo(String value) {
addCriterion("map_id >=", value, "mapId"); addCriterion("sim_type >=", value, "simType");
return (Criteria) this; return (Criteria) this;
} }
public Criteria andMapIdLessThan(Long value) { public Criteria andSimTypeLessThan(String value) {
addCriterion("map_id <", value, "mapId"); addCriterion("sim_type <", value, "simType");
return (Criteria) this; return (Criteria) this;
} }
public Criteria andMapIdLessThanOrEqualTo(Long value) { public Criteria andSimTypeLessThanOrEqualTo(String value) {
addCriterion("map_id <=", value, "mapId"); addCriterion("sim_type <=", value, "simType");
return (Criteria) this; return (Criteria) this;
} }
public Criteria andMapIdIn(List<Long> values) { public Criteria andSimTypeIn(List<String> values) {
addCriterion("map_id in", values, "mapId"); addCriterion("sim_type in", values, "simType");
return (Criteria) this; return (Criteria) this;
} }
public Criteria andMapIdNotIn(List<Long> values) { public Criteria andSimTypeNotIn(List<String> values) {
addCriterion("map_id not in", values, "mapId"); addCriterion("sim_type not in", values, "simType");
return (Criteria) this; return (Criteria) this;
} }
public Criteria andMapIdBetween(Long value1, Long value2) { public Criteria andSimTypeBetween(String value1, String value2) {
addCriterion("map_id between", value1, value2, "mapId"); addCriterion("sim_type between", value1, value2, "simType");
return (Criteria) this; return (Criteria) this;
} }
public Criteria andMapIdNotBetween(Long value1, Long value2) { public Criteria andSimTypeNotBetween(String value1, String value2) {
addCriterion("map_id not between", value1, value2, "mapId"); addCriterion("sim_type not between", value1, value2, "simType");
return (Criteria) this; return (Criteria) this;
} }

View File

@ -60,7 +60,7 @@ public class Training2RuleService {
runningMapIdSet.add(mapId); runningMapIdSet.add(mapId);
// 规则列表 // 规则列表
RtsTraining2RuleExample example = new RtsTraining2RuleExample(); RtsTraining2RuleExample example = new RtsTraining2RuleExample();
example.createCriteria().andMapIdEqualTo(mapId); example.createCriteria().andSimTypeEqualTo(simulation.getBuildParams().getWorkParamVO().getType().name());
List<RtsTraining2RuleWithBLOBs> ruleList = rtsTraining2RuleMapper.selectByExampleWithBLOBs(example); List<RtsTraining2RuleWithBLOBs> ruleList = rtsTraining2RuleMapper.selectByExampleWithBLOBs(example);
if (!CollectionUtils.isEmpty(ruleList)) { if (!CollectionUtils.isEmpty(ruleList)) {
// 清除数据库原有数据 // 清除数据库原有数据

View File

@ -19,9 +19,9 @@ import java.util.Objects;
public enum BgSceneStatusRule { public enum BgSceneStatusRule {
/** /**
* 设置进路背景 * 设置进路背景blockade
*/ */
ROUTE_BG_SCENE("进路背景") { ROUTE_CANCEL_BG_SCENE("取消进路背景") {
@Override @Override
public String doHandle(Simulation simulation, MapElement mapElement) { public String doHandle(Simulation simulation, MapElement mapElement) {
openRouteDirect(simulation, (Route) mapElement); openRouteDirect(simulation, (Route) mapElement);
@ -31,14 +31,107 @@ public enum BgSceneStatusRule {
/** /**
* 解封按钮背景 * 解封按钮背景
*/ */
BUTTON_BG_SCENE("解封按钮背景") { BUTTON_BLOCK_BG_SCENE("解封按钮背景") {
@Override @Override
public String doHandle(Simulation simulation, MapElement mapElement) { public String doHandle(Simulation simulation, MapElement mapElement) {
Signal signal = (Signal) mapElement; Signal signal = (Signal) mapElement;
signal.setBlockade(true); signal.setBlockade(true);
return getBgScene(simulation); return getBgScene(simulation);
} }
},
/**
* 道岔定位背景将道岔设置为反位
*/
SWITCH_NP_BG_SCENE("道岔定位背景") {
@Override
public String doHandle(Simulation simulation, MapElement mapElement) {
Switch iSwitch = (Switch) mapElement;
setSingleSwitchPositionDirectly(iSwitch, false);
return getBgScene(simulation);
} }
},
/**
* 道岔反位背景将道岔设置为定位
*/
SWITCH_RP_BG_SCENE("道岔反位背景") {
@Override
public String doHandle(Simulation simulation, MapElement mapElement) {
Switch iSwitch = (Switch) mapElement;
setSingleSwitchPositionDirectly(iSwitch, true);
return getBgScene(simulation);
}
},
/**
* 道岔封锁背景将道岔设置为未封锁
*/
SWITCH_BLOCK_BG_SCENE("道岔封锁背景") {
@Override
public String doHandle(Simulation simulation, MapElement mapElement) {
Switch iSwitch = (Switch) mapElement;
setBlockSwitch(iSwitch, false);
return getBgScene(simulation);
}
},
/**
* 道岔解封背景将道岔设置为封锁
*/
SWITCH_UNBLOCK_BG_SCENE("道岔解封背景") {
@Override
public String doHandle(Simulation simulation, MapElement mapElement) {
Switch iSwitch = (Switch) mapElement;
setBlockSwitch(iSwitch, true);
return getBgScene(simulation);
}
},
/**
* 道岔单锁背景将道岔设置为未封锁
*/
SWITCH_SINGLE_BLOCK_BG_SCENE("道岔单锁背景") {
@Override
public String doHandle(Simulation simulation, MapElement mapElement) {
Switch iSwitch = (Switch) mapElement;
setSingleLockSwitch(iSwitch, false);
return getBgScene(simulation);
}
},
/**
* 道岔单解背景将道岔设置为封锁
*/
SWITCH_SINGLE_UNBLOCK_BG_SCENE("道岔单解背景") {
@Override
public String doHandle(Simulation simulation, MapElement mapElement) {
Switch iSwitch = (Switch) mapElement;
setSingleLockSwitch(iSwitch, true);
return getBgScene(simulation);
}
},
/**
* 信号机点灯背景
*/
SIGNAL_TURN_ON_BG_SCENE("信号机点灯背景") {
@Override
public String doHandle(Simulation simulation, MapElement mapElement) {
Signal signal = (Signal) mapElement;
signal.setAspect(SignalAspect.No);
VirtualRealitySignal vrSignal = signal.getVirtualSignal();
vrSignal.setAspect(SignalAspect.No);
return getBgScene(simulation);
}
},
/**
* 信号机灭灯背景
*/
SIGNAL_TURN_OFF_BG_SCENE("信号机灭灯背景") {
@Override
public String doHandle(Simulation simulation, MapElement mapElement) {
Signal signal = (Signal) mapElement;
VirtualRealitySignal vrSignal = signal.getVirtualSignal();
signal.setAspect(vrSignal.getModel().getDefaultAspect());
vrSignal.setAspect(vrSignal.getModel().getDefaultAspect());
return getBgScene(simulation);
}
}
; ;
/** /**
@ -158,4 +251,25 @@ public enum BgSceneStatusRule {
} }
signal.setAspect(aspect); signal.setAspect(aspect);
} }
/**
* 封锁解封道岔
* @param aSwitch 道岔
*/
private static void setBlockSwitch(Switch aSwitch, boolean block) {
aSwitch.setBlockade(block);
aSwitch.getA().setBlockade(block);
aSwitch.getB().setBlockade(block);
aSwitch.getC().setBlockade(block);
if (block) {
aSwitch.setInit(false);
}
}
/**
* 设置道岔单锁单解
*/
private static void setSingleLockSwitch(Switch aSwitch, boolean block) {
aSwitch.setSingleLock(block);
}
} }

View File

@ -6,23 +6,38 @@ import lombok.Getter;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.function.Predicate;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Getter @Getter
public enum MapDeviceRule { public enum MapDeviceRule {
ROUTE_LIST("进路列表") { RAILWAY_PICK_ROUTE_LIST("大铁接车进路列表") {
@Override @Override
public List<Route> filterMapDeviceList(Simulation simulation) { public List<Route> filterMapDeviceList(Simulation simulation) {
boolean isRailWay = Simulation.Type.RAILWAY.equals(simulation.getBuildParams().getWorkParamVO().getType());
// 只获取一个车站的
List<Station> stationList = simulation.getRepository().getStationList();
if (CollectionUtils.isEmpty(stationList) || !isRailWay) {
return List.of();
}
Station station = stationList.get(0);
// 获取本站的2个进路信息
return simulation.getRepository().getRouteList().stream()
.filter(r -> Objects.equals(r.getType(), Route.Type.RECEIVING) && station.equals(r.getStart().getStation()))
.limit(2).collect(Collectors.toList());
}
},
STATION_LIST("车站列表") {
@Override
public List<Station> filterMapDeviceList(Simulation simulation) {
// 只获取一个车站的 // 只获取一个车站的
List<Station> stationList = simulation.getRepository().getStationList(); List<Station> stationList = simulation.getRepository().getStationList();
if (CollectionUtils.isEmpty(stationList)) { if (CollectionUtils.isEmpty(stationList)) {
return List.of(); return List.of();
} }
Station station = stationList.get(0); return stationList.stream().limit(2).collect(Collectors.toList());
// 获取本站的5个进路信息
return simulation.getRepository().getRouteList().stream()
.filter(r -> station.equals(r.getInterlockStation())).limit(5).collect(Collectors.toList());
} }
}, },
SWITCH_LIST("道岔列表") { SWITCH_LIST("道岔列表") {
@ -35,7 +50,7 @@ public enum MapDeviceRule {
} }
Station station = stationList.get(0); Station station = stationList.get(0);
return simulation.getRepository().getSwitchList().stream() return simulation.getRepository().getSwitchList().stream()
.filter(s -> station.equals(s.getDeviceStation())).limit(5).collect(Collectors.toList()); .filter(s -> station.equals(s.getDeviceStation())).limit(2).collect(Collectors.toList());
} }
}, },
SIGNAL_LIST("信号机列表") { SIGNAL_LIST("信号机列表") {
@ -48,7 +63,21 @@ public enum MapDeviceRule {
} }
Station station = stationList.get(0); Station station = stationList.get(0);
return simulation.getRepository().getSignalList().stream() return simulation.getRepository().getSignalList().stream()
.filter(s -> station.equals(s.getDeviceStation())).limit(5).collect(Collectors.toList()); .filter(s -> station.equals(s.getDeviceStation())).limit(2).collect(Collectors.toList());
}
},
RAILWAY_SIGNAL_LIST("大铁信号机列表") {
@Override
public List<Signal> filterMapDeviceList(Simulation simulation) {
// 只获取一个车站的
List<Station> stationList = simulation.getRepository().getStationList();
if (CollectionUtils.isEmpty(stationList)) {
return List.of();
}
Station station = stationList.get(0);
return simulation.getRepository().getSignalList().stream()
.filter(s -> Signal.SignalType.DEPARTURE.equals(s.getType()) && station.equals(s.getDeviceStation()))
.limit(2).collect(Collectors.toList());
} }
}, },
SIGNAL_BUTTON_LIST("有按钮的信号机列表") { SIGNAL_BUTTON_LIST("有按钮的信号机列表") {
@ -62,7 +91,7 @@ public enum MapDeviceRule {
Station station = stationList.get(0); Station station = stationList.get(0);
return simulation.getRepository().getSignalList().stream() return simulation.getRepository().getSignalList().stream()
.filter(s -> station.equals(s.getDeviceStation()) && Signal.SignalType.RECEIVING.equals(s.getType())) .filter(s -> station.equals(s.getDeviceStation()) && Signal.SignalType.RECEIVING.equals(s.getType()))
.limit(5).collect(Collectors.toList()); .limit(2).collect(Collectors.toList());
} }
}; };

View File

@ -55,13 +55,19 @@ public enum PropertyValueRule {
return null; return null;
} }
}, },
ROUTE_START_NAME("进路起始名称") { ROUTE_START_SIGNAL_NAME("进路起始名称") {
@Override @Override
public String resolve(Simulation simulation, Object mapElement) { public String resolve(Simulation simulation, Object mapElement) {
return ((Route) mapElement).getStart().getShowName(); return ((Route) mapElement).getStart().getShowName();
} }
}, },
BUTTON_START_CODE("进路起始按钮编码") { ROUTE_START_SIGNAL_CODE("进路始端信号机编码") {
@Override
public String resolve(Simulation simulation, Object mapElement) {
return ((Route) mapElement).getStart().getCode();
}
},
ROUTE_START_PICK_BUTTON_CODE("进路始端接车按钮编码") {
@Override @Override
public String resolve(Simulation simulation, Object mapElement) { public String resolve(Simulation simulation, Object mapElement) {
Route route = (Route) mapElement; Route route = (Route) mapElement;
@ -74,13 +80,32 @@ public enum PropertyValueRule {
return buttonVO.getCode(); return buttonVO.getCode();
} }
}, },
ROUTE_END_NAME("进路终端名称") { ROUTE_START_PASS_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.PASS.equals(button.getType())
&& Objects.equals(button.getSignalCode(), route.getStart().getCode())).findFirst().orElse(null);
if (buttonVO == null) {
throw new SimulationException(SimulationExceptionType.Data_Not_Exist, "错误数据");
}
return buttonVO.getCode();
}
},
ROUTE_END_SIGNAL_NAME("进路末端名称") {
@Override @Override
public String resolve(Simulation simulation, Object mapElement) { public String resolve(Simulation simulation, Object mapElement) {
return ((Route) mapElement).getDestination().getShowName(); return ((Route) mapElement).getDestination().getShowName();
} }
}, },
BUTTON_END_CODE("进路终端按钮编码") { ROUTE_END_SIGNAL_CODE("进路末端信号机编码") {
@Override
public String resolve(Simulation simulation, Object mapElement) {
return ((Route) mapElement).getDestination().getCode();
}
},
ROUTE_END_BUTTON_CODE("进路末端按钮编码") {
@Override @Override
public String resolve(Simulation simulation, Object mapElement) { public String resolve(Simulation simulation, Object mapElement) {
Route route = (Route) mapElement; Route route = (Route) mapElement;

View File

@ -21,27 +21,27 @@ public class StepRule {
private Long id; private Long id;
private MemberRule memberRule; private MemberRule memberId;
private String description; private String description;
private List<OperationRule.ClientOperationRule> operationRules; private List<OperationRule.ClientOperationRule> operations;
private List<OperationRule.SimOperationRule> simCommandRules; private List<OperationRule.SimOperationRule> simCommands;
private ValuableRule.ExpressionVORule triggerRule; private ValuableRule.ExpressionVORule trigger;
private ValuableRule.ExpressionVORule completionRule; private ValuableRule.ExpressionVORule completion;
private ValuableRule.ExpressionVORule failureRule; private ValuableRule.ExpressionVORule failure;
private Map<String, Object> tipPositionRule; private Map<String, Object> tipPosition;
public Step2VO convert2BO(Simulation simulation, Object mapElement) { public Step2VO convert2BO(Simulation simulation, Object mapElement) {
Step2VO copyStep2 = new Step2VO(); Step2VO copyStep2 = new Step2VO();
copyStep2.setId(this.id); copyStep2.setId(this.id);
if (memberRule != null) { if (memberId != null) {
SimulationMember member = memberRule.convert2BO(simulation, mapElement); SimulationMember member = memberId.convert2BO(simulation, mapElement);
copyStep2.setMemberId(member.getId()); copyStep2.setMemberId(member.getId());
} else { } else {
throw new SimulationException(SimulationExceptionType.Illegal_Argument, String.format("未找到角色的成员")); throw new SimulationException(SimulationExceptionType.Illegal_Argument, String.format("未找到角色的成员"));
@ -49,32 +49,32 @@ public class StepRule {
if (description != null) { // 描述 if (description != null) { // 描述
copyStep2.setDescription(PropertyValueRule.resolveContentFormat(description, simulation, mapElement)); copyStep2.setDescription(PropertyValueRule.resolveContentFormat(description, simulation, mapElement));
} }
if (!CollectionUtils.isEmpty(operationRules)) { // 操作规则 if (!CollectionUtils.isEmpty(operations)) { // 操作规则
List<Operation2VO.ClientOperation2VO> operationList = operationRules.stream() List<Operation2VO.ClientOperation2VO> operationList = operations.stream()
.map(o -> o.convert2BO(simulation, mapElement)).collect(Collectors.toList()); .map(o -> o.convert2BO(simulation, mapElement)).collect(Collectors.toList());
copyStep2.setOperations(operationList); copyStep2.setOperations(operationList);
} else { } else {
copyStep2.setOperations(List.of()); copyStep2.setOperations(List.of());
} }
if (!CollectionUtils.isEmpty(simCommandRules)) { // 实训操作列表 if (!CollectionUtils.isEmpty(simCommands)) { // 实训操作列表
List<Operation2VO.SimCommand2VO> simCommandList = simCommandRules.stream() List<Operation2VO.SimCommand2VO> simCommandList = simCommands.stream()
.map(o -> o.convert2BO(simulation, mapElement)).collect(Collectors.toList()); .map(o -> o.convert2BO(simulation, mapElement)).collect(Collectors.toList());
copyStep2.setSimCommands(simCommandList); copyStep2.setSimCommands(simCommandList);
} else { } else {
copyStep2.setSimCommands(List.of()); copyStep2.setSimCommands(List.of());
} }
if (triggerRule != null) { // 触发规则 if (trigger != null) { // 触发规则
copyStep2.setTriggerCondition(triggerRule.convert2BO(simulation, mapElement)); copyStep2.setTriggerCondition(trigger.convert2BO(simulation, mapElement));
} }
if (completionRule != null) { // 完成规则 if (completion != null) { // 完成规则
copyStep2.setCompletionCondition(completionRule.convert2BO(simulation, mapElement)); copyStep2.setCompletionCondition(completion.convert2BO(simulation, mapElement));
} }
if (failureRule != null) { // 失败规则 if (failure != null) { // 失败规则
copyStep2.setFailureCondition(failureRule.convert2BO(simulation, mapElement)); copyStep2.setFailureCondition(failure.convert2BO(simulation, mapElement));
} }
copyStep2.setTipPosition(new HashMap<>()); copyStep2.setTipPosition(new HashMap<>());
if (!CollectionUtils.isEmpty(tipPositionRule)) { // 定位信息 if (!CollectionUtils.isEmpty(tipPosition)) { // 定位信息
tipPositionRule.forEach((k, v) -> { tipPosition.forEach((k, v) -> {
String vStr = String.valueOf(v); String vStr = String.valueOf(v);
if (PropertyValueRule.match(vStr)) { if (PropertyValueRule.match(vStr)) {
copyStep2.getTipPosition().put(k, PropertyValueRule.valueOf(vStr).resolve(simulation, mapElement)); copyStep2.getTipPosition().put(k, PropertyValueRule.valueOf(vStr).resolve(simulation, mapElement));

View File

@ -28,8 +28,6 @@ import java.util.stream.Collectors;
public class Training2Rule { public class Training2Rule {
private Long id; private Long id;
private Long mapId;
/** /**
* 地图定位规则 * 地图定位规则
*/ */
@ -82,17 +80,20 @@ public class Training2Rule {
public Training2Rule(RtsTraining2RuleWithBLOBs rule) { public Training2Rule(RtsTraining2RuleWithBLOBs rule) {
this.id = rule.getId(); this.id = rule.getId();
this.mapId = rule.getMapId();
this.deviceRule = MapDeviceRule.valueOf(rule.getDeviceRule()); this.deviceRule = MapDeviceRule.valueOf(rule.getDeviceRule());
this.client = rule.getClient(); this.client = rule.getClient();
this.name = rule.getName(); this.name = rule.getName();
this.description = rule.getDescription(); this.description = rule.getDescription();
this.type = Training2.Type.valueOf(rule.getType()); this.type = Training2.Type.valueOf(rule.getType());
if (StringUtils.hasText(rule.getLocationRule())) {
this.locationRule = MapLocationRule.valueOf(rule.getLocationRule()); this.locationRule = MapLocationRule.valueOf(rule.getLocationRule());
}
if (StringUtils.hasText(rule.getLabels())) { if (StringUtils.hasText(rule.getLabels())) {
this.labels = JsonUtils.readCollection(rule.getLabels(), List.class, String.class); this.labels = JsonUtils.readCollection(rule.getLabels(), List.class, String.class);
} }
if (StringUtils.hasText(rule.getSceneRule())) {
this.sceneRule = BgSceneStatusRule.valueOf(rule.getSceneRule()); this.sceneRule = BgSceneStatusRule.valueOf(rule.getSceneRule());
}
if (StringUtils.hasText(rule.getSteps())) { if (StringUtils.hasText(rule.getSteps())) {
this.steps = JsonUtils.readCollection(rule.getSteps(), List.class, StepRule.class); this.steps = JsonUtils.readCollection(rule.getSteps(), List.class, StepRule.class);
} }
@ -104,7 +105,7 @@ public class Training2Rule {
public PublishedTraining2WithBLOBs convert2BO(Simulation simulation, MapNamedElement mapElement) { public PublishedTraining2WithBLOBs convert2BO(Simulation simulation, MapNamedElement mapElement) {
PublishedTraining2WithBLOBs copyTraining2 = new PublishedTraining2WithBLOBs(); PublishedTraining2WithBLOBs copyTraining2 = new PublishedTraining2WithBLOBs();
// 地图ID // 地图ID
copyTraining2.setMapId(mapId); copyTraining2.setMapId(simulation.getBuildParams().getMap().getId());
// 名称 // 名称
if (name != null) { if (name != null) {
copyTraining2.setName(PropertyValueRule.resolveContentFormat(name, simulation, mapElement)); copyTraining2.setName(PropertyValueRule.resolveContentFormat(name, simulation, mapElement));
@ -120,7 +121,11 @@ public class Training2Rule {
// 实训类型 // 实训类型
copyTraining2.setType(type.name()); copyTraining2.setType(type.name());
// 实训标签 // 实训标签
if (labels != null) {
copyTraining2.setLabelJson(JsonUtils.writeValueAsString(labels)); copyTraining2.setLabelJson(JsonUtils.writeValueAsString(labels));
} else {
copyTraining2.setLabelJson("[]");
}
// 背景设置 // 背景设置
if (sceneRule != null) { if (sceneRule != null) {
copyTraining2.setBgSceneJson(sceneRule.doHandle(simulation, mapElement)); copyTraining2.setBgSceneJson(sceneRule.doHandle(simulation, mapElement));

View File

@ -3,7 +3,7 @@
<mapper namespace="club.joylink.rtss.dao.training.RtsTraining2RuleMapper" > <mapper namespace="club.joylink.rtss.dao.training.RtsTraining2RuleMapper" >
<resultMap id="BaseResultMap" type="club.joylink.rtss.entity.training2.RtsTraining2Rule" > <resultMap id="BaseResultMap" type="club.joylink.rtss.entity.training2.RtsTraining2Rule" >
<id column="id" property="id" jdbcType="BIGINT" /> <id column="id" property="id" jdbcType="BIGINT" />
<result column="map_id" property="mapId" jdbcType="BIGINT" /> <result column="sim_type" property="simType" jdbcType="VARCHAR" />
<result column="device_rule" property="deviceRule" jdbcType="VARCHAR" /> <result column="device_rule" property="deviceRule" jdbcType="VARCHAR" />
<result column="client" property="client" jdbcType="VARCHAR" /> <result column="client" property="client" jdbcType="VARCHAR" />
<result column="name" property="name" jdbcType="VARCHAR" /> <result column="name" property="name" jdbcType="VARCHAR" />
@ -82,7 +82,7 @@
</sql> </sql>
<sql id="Base_Column_List" > <sql id="Base_Column_List" >
id, map_id, device_rule, client, name, description, type, labels, scene_rule, creator_id, create_time, location_rule id, sim_type, device_rule, client, name, description, type, labels, scene_rule, creator_id, create_time, location_rule
</sql> </sql>
<sql id="Blob_Column_List" > <sql id="Blob_Column_List" >
@ -138,11 +138,11 @@
<insert id="insert" parameterType="club.joylink.rtss.entity.training2.RtsTraining2RuleWithBLOBs" > <insert id="insert" parameterType="club.joylink.rtss.entity.training2.RtsTraining2RuleWithBLOBs" >
insert into rts_training2_rule ( insert into rts_training2_rule (
id, map_id, device_rule, client, name, description, type, labels, id, sim_type, device_rule, client, name, description, type, labels,
scene_rule, creator_id, create_time, steps, failure_rule, location_rule scene_rule, creator_id, create_time, steps, failure_rule, location_rule
) )
values ( values (
#{id,jdbcType=BIGINT}, #{mapId,jdbcType=BIGINT}, #{deviceRule,jdbcType=VARCHAR}, #{client,jdbcType=VARCHAR}, #{id,jdbcType=BIGINT}, #{simType,jdbcType=VARCHAR}, #{deviceRule,jdbcType=VARCHAR}, #{client,jdbcType=VARCHAR},
#{name,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR}, #{labels,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR}, #{labels,jdbcType=VARCHAR},
#{sceneRule,jdbcType=VARCHAR}, #{creatorId,jdbcType=BIGINT}, #{createTime,jdbcType=TIMESTAMP}, #{sceneRule,jdbcType=VARCHAR}, #{creatorId,jdbcType=BIGINT}, #{createTime,jdbcType=TIMESTAMP},
#{steps,jdbcType=LONGVARCHAR}, #{failureRule,jdbcType=LONGVARCHAR}, #{locationRule,jdbcType=VARCHAR} #{steps,jdbcType=LONGVARCHAR}, #{failureRule,jdbcType=LONGVARCHAR}, #{locationRule,jdbcType=VARCHAR}
@ -155,8 +155,8 @@
<if test="id != null" > <if test="id != null" >
id, id,
</if> </if>
<if test="mapId != null" > <if test="simType != null" >
map_id, sim_type,
</if> </if>
<if test="deviceRule != null" > <if test="deviceRule != null" >
device_rule, device_rule,
@ -199,8 +199,8 @@
<if test="id != null" > <if test="id != null" >
#{id,jdbcType=BIGINT}, #{id,jdbcType=BIGINT},
</if> </if>
<if test="mapId != null" > <if test="simType != null" >
#{mapId,jdbcType=BIGINT}, #{simType,jdbcType=VARCHAR},
</if> </if>
<if test="deviceRule != null" > <if test="deviceRule != null" >
#{deviceRule,jdbcType=VARCHAR}, #{deviceRule,jdbcType=VARCHAR},
@ -247,8 +247,8 @@
<if test="record.id != null" > <if test="record.id != null" >
id = #{record.id,jdbcType=BIGINT}, id = #{record.id,jdbcType=BIGINT},
</if> </if>
<if test="record.mapId != null" > <if test="record.simType != null" >
map_id = #{record.mapId,jdbcType=BIGINT}, sim_type = #{record.simType,jdbcType=VARCHAR},
</if> </if>
<if test="record.deviceRule != null" > <if test="record.deviceRule != null" >
device_rule = #{record.deviceRule,jdbcType=VARCHAR}, device_rule = #{record.deviceRule,jdbcType=VARCHAR},
@ -295,7 +295,7 @@
<update id="updateByExampleWithBLOBs" parameterType="map" > <update id="updateByExampleWithBLOBs" parameterType="map" >
update rts_training2_rule update rts_training2_rule
set id = #{record.id,jdbcType=BIGINT}, set id = #{record.id,jdbcType=BIGINT},
map_id = #{record.mapId,jdbcType=BIGINT}, sim_type = #{record.simType,jdbcType=VARCHAR},
device_rule = #{record.deviceRule,jdbcType=VARCHAR}, device_rule = #{record.deviceRule,jdbcType=VARCHAR},
client = #{record.client,jdbcType=VARCHAR}, client = #{record.client,jdbcType=VARCHAR},
name = #{record.name,jdbcType=VARCHAR}, name = #{record.name,jdbcType=VARCHAR},
@ -316,7 +316,7 @@
<update id="updateByExample" parameterType="map" > <update id="updateByExample" parameterType="map" >
update rts_training2_rule update rts_training2_rule
set id = #{record.id,jdbcType=BIGINT}, set id = #{record.id,jdbcType=BIGINT},
map_id = #{record.mapId,jdbcType=BIGINT}, sim_type = #{record.simType,jdbcType=VARCHAR},
device_rule = #{record.deviceRule,jdbcType=VARCHAR}, device_rule = #{record.deviceRule,jdbcType=VARCHAR},
client = #{record.client,jdbcType=VARCHAR}, client = #{record.client,jdbcType=VARCHAR},
name = #{record.name,jdbcType=VARCHAR}, name = #{record.name,jdbcType=VARCHAR},
@ -335,8 +335,8 @@
<update id="updateByPrimaryKeySelective" parameterType="club.joylink.rtss.entity.training2.RtsTraining2RuleWithBLOBs" > <update id="updateByPrimaryKeySelective" parameterType="club.joylink.rtss.entity.training2.RtsTraining2RuleWithBLOBs" >
update rts_training2_rule update rts_training2_rule
<set > <set >
<if test="mapId != null" > <if test="simType != null" >
map_id = #{mapId,jdbcType=BIGINT}, sim_type = #{simType,jdbcType=VARCHAR},
</if> </if>
<if test="deviceRule != null" > <if test="deviceRule != null" >
device_rule = #{deviceRule,jdbcType=VARCHAR}, device_rule = #{deviceRule,jdbcType=VARCHAR},
@ -380,7 +380,7 @@
<update id="updateByPrimaryKeyWithBLOBs" parameterType="club.joylink.rtss.entity.training2.RtsTraining2RuleWithBLOBs" > <update id="updateByPrimaryKeyWithBLOBs" parameterType="club.joylink.rtss.entity.training2.RtsTraining2RuleWithBLOBs" >
update rts_training2_rule update rts_training2_rule
set map_id = #{mapId,jdbcType=BIGINT}, set sim_type = #{simType,jdbcType=VARCHAR},
device_rule = #{deviceRule,jdbcType=VARCHAR}, device_rule = #{deviceRule,jdbcType=VARCHAR},
client = #{client,jdbcType=VARCHAR}, client = #{client,jdbcType=VARCHAR},
name = #{name,jdbcType=VARCHAR}, name = #{name,jdbcType=VARCHAR},
@ -398,7 +398,7 @@
<update id="updateByPrimaryKey" parameterType="club.joylink.rtss.entity.training2.RtsTraining2Rule" > <update id="updateByPrimaryKey" parameterType="club.joylink.rtss.entity.training2.RtsTraining2Rule" >
update rts_training2_rule update rts_training2_rule
set map_id = #{mapId,jdbcType=BIGINT}, set sim_type = #{simType,jdbcType=VARCHAR},
device_rule = #{deviceRule,jdbcType=VARCHAR}, device_rule = #{deviceRule,jdbcType=VARCHAR},
client = #{client,jdbcType=VARCHAR}, client = #{client,jdbcType=VARCHAR},
name = #{name,jdbcType=VARCHAR}, name = #{name,jdbcType=VARCHAR},

View File

@ -50,8 +50,8 @@ public class Training2RuleTest {
@Transactional @Transactional
@Test @Test
public void entityTest() { public void entityTest() {
String trainingRuleStr = "{\"id\":1,\"mapId\":154,\"deviceRule\":\"ROUTE_LIST\",\"name\":\"取消{NAME}进路\",\"description\":\"取消{NAME}进路\",\"type\":\"SINGLE\",\"labels\":null,\"sceneRule\":\"ROUTE_BG_SCENE\",\"steps\":[{\"id\":1,\"memberRule\":{\"type\":\"STATION_SUPERVISOR\",\"deviceCodeRule\":\"STATION_CODE\"},\"description\":\"点击总取消\",\"operationRules\":[{\"t\":\"C\",\"id\":0,\"userOperationType\":\"leftClick\",\"domId\":\"2994\",\"operationType\":\"\",\"params\":{}}],\"triggerRule\":null,\"completionRule\":null,\"failureRule\":null,\"tipPosition\":{\"domId\":\"2994\",\"operateIndex\":0}},{\"id\":2,\"memberRule\":{\"type\":\"STATION_SUPERVISOR\",\"deviceCodeRule\":\"STATION_CODE\"},\"description\":\"点击信号机【{ROUTE_START_NAME}】\",\"operationRules\":[{\"t\":\"C\",\"id\":0,\"deviceCode\":\"BUTTON_START_CODE\",\"userOperationType\":\"leftClick\",\"domId\":\"2994\",\"operationType\":\"Signal_Cancel_Route\",\"params\":{}}],\"tipPosition\":{\"domId\":\"2994\",\"deviceCode\":\"BUTTON_START_CODE\",\"operateIndex\":0}}],\"failureRule\":null,\"creatorId\":5710}"; String trainingRuleStr = "{\"id\":1,\"deviceRule\":\"RAILWAY_PICK_ROUTE_LIST\",\"name\":\"取消{NAME}进路\",\"description\":\"取消{NAME}进路\",\"type\":\"SINGLE\",\"labels\":null,\"sceneRule\":\"ROUTE_CANCEL_BG_SCENE\",\"steps\":[{\"id\":1,\"memberRule\":{\"type\":\"STATION_SUPERVISOR\",\"deviceCodeRule\":\"STATION_CODE\"},\"description\":\"点击总取消\",\"operationRules\":[{\"t\":\"C\",\"id\":0,\"userOperationType\":\"leftClick\",\"domId\":\"2994\",\"operationType\":\"\",\"params\":{}}],\"triggerRule\":null,\"completionRule\":null,\"failureRule\":null,\"tipPosition\":{\"domId\":\"2994\",\"operateIndex\":0}},{\"id\":2,\"memberRule\":{\"type\":\"STATION_SUPERVISOR\",\"deviceCodeRule\":\"STATION_CODE\"},\"description\":\"点击信号机【{ROUTE_START_NAME}】\",\"operationRules\":[{\"t\":\"C\",\"id\":0,\"deviceCode\":\"BUTTON_START_CODE\",\"userOperationType\":\"leftClick\",\"domId\":\"2994\",\"operationType\":\"Signal_Cancel_Route\",\"params\":{}}],\"tipPosition\":{\"domId\":\"2994\",\"deviceCode\":\"BUTTON_START_CODE\",\"operateIndex\":0}}],\"failureRule\":null,\"creatorId\":5710}";
String trainingRuleStr2 = "{\"id\":1,\"mapId\":154,\"deviceRule\":\"ROUTE_LIST\",\"name\":\"【{NAME}】办理\",\"description\":\"【{NAME}】办理\",\"type\":\"SINGLE\",\"labels\":null,\"sceneRule\":null,\"steps\":[{\"id\":1,\"memberRule\":{\"type\":\"STATION_SUPERVISOR\",\"deviceCodeRule\":\"STATION_CODE\"},\"description\":\"点击信号机【{ROUTE_START_NAME}】按钮\",\"operationRules\":[{\"t\":\"C\",\"id\":0,\"deviceCode\":\"BUTTON_START_CODE\",\"userOperationType\":\"leftClick\",\"domId\":\"3010\",\"operationType\":\"\",\"params\":{}}],\"triggerRule\":null,\"completionRule\":null,\"failureRule\":null,\"tipPosition\":{\"domId\":\"3010\",\"deviceCode\":\"BUTTON_START_CODE\",\"operateIndex\":0}},{\"id\":2,\"memberRule\":{\"type\":\"STATION_SUPERVISOR\",\"deviceCodeRule\":\"STATION_CODE\"},\"description\":\"点击信号机【{ROUTE_END_NAME}】按钮\",\"operationRules\":[{\"t\":\"C\",\"id\":0,\"deviceCode\":\"BUTTON_END_CODE\",\"userOperationType\":\"leftClick\",\"domId\":\"3010\",\"operationType\":\"Signal_Set_Route\",\"params\":{}}],\"tipPosition\":{\"domId\":\"3010\",\"deviceCode\":\"BUTTON_END_CODE\",\"operateIndex\":0}}],\"failureRule\":null,\"creatorId\":5710}"; String trainingRuleStr2 = "{\"id\":1,\"deviceRule\":\"RAILWAY_PICK_ROUTE_LIST\",\"name\":\"【{NAME}】办理\",\"description\":\"【{NAME}】办理\",\"type\":\"SINGLE\",\"labels\":null,\"sceneRule\":null,\"steps\":[{\"id\":1,\"memberRule\":{\"type\":\"STATION_SUPERVISOR\",\"deviceCodeRule\":\"STATION_CODE\"},\"description\":\"点击信号机【{ROUTE_START_NAME}】按钮\",\"operationRules\":[{\"t\":\"C\",\"id\":0,\"deviceCode\":\"BUTTON_START_CODE\",\"userOperationType\":\"leftClick\",\"domId\":\"3010\",\"operationType\":\"\",\"params\":{}}],\"triggerRule\":null,\"completionRule\":null,\"failureRule\":null,\"tipPosition\":{\"domId\":\"3010\",\"deviceCode\":\"BUTTON_START_CODE\",\"operateIndex\":0}},{\"id\":2,\"memberRule\":{\"type\":\"STATION_SUPERVISOR\",\"deviceCodeRule\":\"STATION_CODE\"},\"description\":\"点击信号机【{ROUTE_END_NAME}】按钮\",\"operationRules\":[{\"t\":\"C\",\"id\":0,\"deviceCode\":\"BUTTON_END_CODE\",\"userOperationType\":\"leftClick\",\"domId\":\"3010\",\"operationType\":\"Signal_Set_Route\",\"params\":{}}],\"tipPosition\":{\"domId\":\"3010\",\"deviceCode\":\"BUTTON_END_CODE\",\"operateIndex\":0}}],\"failureRule\":null,\"creatorId\":5710}";
Training2Rule training2Rule = JsonUtils.read(trainingRuleStr, Training2Rule.class); Training2Rule training2Rule = JsonUtils.read(trainingRuleStr, Training2Rule.class);
Training2Rule training2Rule2 = JsonUtils.read(trainingRuleStr2, Training2Rule.class); Training2Rule training2Rule2 = JsonUtils.read(trainingRuleStr2, Training2Rule.class);
// 生成实训 // 生成实训
@ -61,7 +61,7 @@ public class Training2RuleTest {
accountVO.setId(5710L); accountVO.setId(5710L);
loginUserInfoVO.setAccountVO(accountVO); loginUserInfoVO.setAccountVO(accountVO);
SimulationWorkService initService = simulationWorkServiceManager.getWorkService(workParamVO.getType()); SimulationWorkService initService = simulationWorkServiceManager.getWorkService(workParamVO.getType());
Simulation simulation = initService.create(training2Rule.getMapId(), workParamVO, loginUserInfoVO); Simulation simulation = initService.create(154, workParamVO, loginUserInfoVO);
// 删除旧仿真保存新仿真 // 删除旧仿真保存新仿真
club.joylink.rtss.simulation.Simulation oldSimulation = simulationManager.queryByCreatorId(simulation.getCreatorId()); club.joylink.rtss.simulation.Simulation oldSimulation = simulationManager.queryByCreatorId(simulation.getCreatorId());
if (oldSimulation != null) { if (oldSimulation != null) {