diff --git a/src/main/java/club/joylink/rtss/entity/training2/RtsTraining2Rule.java b/src/main/java/club/joylink/rtss/entity/training2/RtsTraining2Rule.java index 754e457ff..2e06d145f 100644 --- a/src/main/java/club/joylink/rtss/entity/training2/RtsTraining2Rule.java +++ b/src/main/java/club/joylink/rtss/entity/training2/RtsTraining2Rule.java @@ -10,6 +10,8 @@ public class RtsTraining2Rule { private String simType; + private String lineCode; + private String locationRule; private String deviceRule; diff --git a/src/main/java/club/joylink/rtss/entity/training2/RtsTraining2RuleExample.java b/src/main/java/club/joylink/rtss/entity/training2/RtsTraining2RuleExample.java index 1823181f3..b09a45312 100644 --- a/src/main/java/club/joylink/rtss/entity/training2/RtsTraining2RuleExample.java +++ b/src/main/java/club/joylink/rtss/entity/training2/RtsTraining2RuleExample.java @@ -225,6 +225,66 @@ public class RtsTraining2RuleExample { return (Criteria) this; } + public Criteria andLineCodeIsNull() { + addCriterion("line_code is null"); + return (Criteria) this; + } + + public Criteria andLineCodeIsNotNull() { + addCriterion("line_code is not null"); + return (Criteria) this; + } + + public Criteria andLineCodeEqualTo(String value) { + addCriterion("line_code =", value, "lineCode"); + return (Criteria) this; + } + + public Criteria andLineCodeNotEqualTo(String value) { + addCriterion("line_code <>", value, "lineCode"); + return (Criteria) this; + } + + public Criteria andLineCodeGreaterThan(String value) { + addCriterion("line_code >", value, "lineCode"); + return (Criteria) this; + } + + public Criteria andLineCodeGreaterThanOrEqualTo(String value) { + addCriterion("line_code >=", value, "lineCode"); + return (Criteria) this; + } + + public Criteria andLineCodeLessThan(String value) { + addCriterion("line_code <", value, "lineCode"); + return (Criteria) this; + } + + public Criteria andLineCodeLessThanOrEqualTo(String value) { + addCriterion("line_code <=", value, "lineCode"); + return (Criteria) this; + } + + public Criteria andLineCodeIn(List values) { + addCriterion("line_code in", values, "lineCode"); + return (Criteria) this; + } + + public Criteria andLineCodeNotIn(List values) { + addCriterion("line_code not in", values, "lineCode"); + return (Criteria) this; + } + + public Criteria andLineCodeBetween(String value1, String value2) { + addCriterion("line_code between", value1, value2, "lineCode"); + return (Criteria) this; + } + + public Criteria andLineCodeNotBetween(String value1, String value2) { + addCriterion("line_code not between", value1, value2, "lineCode"); + return (Criteria) this; + } + public Criteria andFunctionIdIsNull() { addCriterion("function_id is null"); return (Criteria) this; diff --git a/src/main/java/club/joylink/rtss/services/training2/Training2RuleService.java b/src/main/java/club/joylink/rtss/services/training2/Training2RuleService.java index ee1bfffcf..349cde26d 100644 --- a/src/main/java/club/joylink/rtss/services/training2/Training2RuleService.java +++ b/src/main/java/club/joylink/rtss/services/training2/Training2RuleService.java @@ -60,7 +60,7 @@ public class Training2RuleService { runningMapIdSet.add(mapId); // 规则列表 RtsTraining2RuleExample example = new RtsTraining2RuleExample(); - example.createCriteria().andSimTypeEqualTo(simulation.getBuildParams().getWorkParamVO().getType().name()); + example.createCriteria().andLineCodeEqualTo(simulation.getBuildParams().getMap().getLineCode()); List ruleList = rtsTraining2RuleMapper.selectByExampleWithBLOBs(example); if (!CollectionUtils.isEmpty(ruleList)) { // 清除数据库原有数据 diff --git a/src/main/java/club/joylink/rtss/vo/training2/rule/BgSceneStatusRule.java b/src/main/java/club/joylink/rtss/vo/training2/rule/BgSceneStatusRule.java index 41126b663..e64049f30 100644 --- a/src/main/java/club/joylink/rtss/vo/training2/rule/BgSceneStatusRule.java +++ b/src/main/java/club/joylink/rtss/vo/training2/rule/BgSceneStatusRule.java @@ -11,9 +11,12 @@ import club.joylink.rtss.simulation.cbtc.data.map.*; import club.joylink.rtss.simulation.cbtc.data.storage.StorageSimulation; import club.joylink.rtss.simulation.cbtc.data.support.SectionPosition; import club.joylink.rtss.simulation.cbtc.data.vo.TrainInfo; +import club.joylink.rtss.simulation.cbtc.data.vr.VirtualRealitySectionAxleCounter; import club.joylink.rtss.simulation.cbtc.data.vr.VirtualRealitySignal; import club.joylink.rtss.simulation.cbtc.data.vr.VirtualRealitySwitch; 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 club.joylink.rtss.util.JsonUtils; import lombok.Getter; import org.springframework.util.CollectionUtils; @@ -69,17 +72,6 @@ public enum BgSceneStatusRule { 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); - } - }, /** * 道岔解封背景:将道岔设置为封锁 */ @@ -87,18 +79,9 @@ public enum BgSceneStatusRule { @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); + iSwitch.setBlockade(true); + iSwitch.getAllSections().stream().forEach(section -> section.setBlockade(true)); + iSwitch.setInit(false); return getBgScene(simulation); } }, @@ -109,7 +92,39 @@ public enum BgSceneStatusRule { @Override public String doHandle(Simulation simulation, MapElement mapElement) { Switch iSwitch = (Switch) mapElement; - setSingleLockSwitch(iSwitch, true); + iSwitch.setSingleLock(true); + return getBgScene(simulation); + } + }, + SWITCH_FAULT_UNLOCK_BG_SCENE("道岔故障解锁背景") { + @Override + public String doHandle(Simulation simulation, MapElement mapElement) { + Switch iSwitch = (Switch) mapElement; + iSwitch.setRouteLock(true); + iSwitch.getAllSections().forEach(section -> section.setRouteLock(true)); + return getBgScene(simulation); + } + }, + SWITCH_AXLE_FAULT_PRE_RESET_BG_SCENE("道岔计轴预复位背景") { + @Override + public String doHandle(Simulation simulation, MapElement mapElement) { + Switch iSwitch = (Switch) mapElement; + Switch.SwitchFault.AXLE_FAULT.apply(iSwitch); + return getBgScene(simulation); + } + }, + SWITCH_SECTION_ACTIVE_BG_SCENE("道岔区段激活背景") { + @Override + public String doHandle(Simulation simulation, MapElement mapElement) { + Switch iSwitch = (Switch) mapElement; + return SECTION_ACTIVE_BG_SCENE.doHandle(simulation, iSwitch.getA()); + } + }, + SWITCH_SECTION_LIMIT_SPEED("道岔区段速度限制背景") { + @Override + public String doHandle(Simulation simulation, MapElement mapElement) { + Switch iSwitch = (Switch) mapElement; + iSwitch.getAllSections().forEach(section -> section.setSpeedUpLimit(5)); return getBgScene(simulation); } }, @@ -231,6 +246,19 @@ public enum BgSceneStatusRule { return getBgScene(simulation); } }, + SECTION_UNLOCK_BG_SCENE("区段解封背景"){ + @Override + public String doHandle(Simulation simulation, MapElement mapElement) { + Section section = (Section) mapElement; + section.setBlockade(true); + if (!CollectionUtils.isEmpty(section.getLogicList())) { + for (Section logic : section.getLogicList()) { + logic.setBlockade(true); + } + } + return getBgScene(simulation); + } + }, /** * 区段激活背景 */ @@ -246,7 +274,7 @@ public enum BgSceneStatusRule { for (Section logic : axleSection.getLogicList()) { logic.setCutOff(true); } - return null; + return getBgScene(simulation); } }, /** @@ -260,7 +288,7 @@ public enum BgSceneStatusRule { return null; } }, - SECTION_CONFIRM_AXIS_VALID_BG_SCENE("") { + SECTION_CONFIRM_AXIS_VALID_BG_SCENE("设置计轴生效背景") { @Override public String doHandle(Simulation simulation, MapElement mapElement) { Section section = (Section) mapElement; @@ -269,6 +297,34 @@ public enum BgSceneStatusRule { } else { section.judgeAsNctOccupied(simulation); } + return getBgScene(simulation); + } + }, + SECTION_AXIS_PRE_RESET_BG_SCENE("计轴预复位背景") { + @Override + public String doHandle(Simulation simulation, MapElement mapElement) { + Section section = (Section) mapElement; + if(!section.isAxleCounter() && !section.isCross()){ + throw new SimulationException(SimulationExceptionType.Simulation_Map_Data_Error); + } + VirtualRealitySectionAxleCounter virtualAxleCounter = section.findAxleCounterSection().getVirtualAxleCounter(); + virtualAxleCounter.setOccupy(true); + virtualAxleCounter.setPreReset(false); + virtualAxleCounter.setLeftCount(2); + virtualAxleCounter.setRightCount(2); + return getBgScene(simulation); + } + }, + SECTION_TURN_BACK_REENTRY_STRATEGY("区段折返策略修改背景"){ + @Override + public String doHandle(Simulation simulation, MapElement mapElement) { + Section section = (Section) mapElement; + Stand stand = section.getStandList().get(0); + stand.setTypeStrategy(Stand.TurnBackType.AUTO); + // 添加信号机 + VirtualRealityTrain train = (VirtualRealityTrain) simulation.getRepository().getVrDeviceMap().values().stream() + .filter(o -> o instanceof VirtualRealityTrain).findFirst().get(); + BgSceneStatusRule.trainOnline(simulation, train, section, stand.isRight()); return null; } }, @@ -282,7 +338,51 @@ public enum BgSceneStatusRule { restartInterlock(simulation, station); return getBgScene(simulation); } + }, + STAND_EARLY_DEPART_BG_SCENE("提前发车背景") { + @Override + public String doHandle(Simulation simulation, MapElement mapElement) { + Stand stand = (Stand) mapElement; + Section section = stand.getSection(); + Route route = stand.getSection().getSignalToRight().getRouteList().stream().filter(r -> + (section.equals(r.getStart().getSection()) || r.containSection(section) && !r.routeLastSection(section)) + && Objects.equals(stand.isRight(), r.getStart().isRight())) + .findAny().orElse(null); + if (Objects.nonNull(route)) { + openRouteDirect(simulation, route); + } + // 添加信号机 + VirtualRealityTrain train = (VirtualRealityTrain) simulation.getRepository().getVrDeviceMap().values().stream() + .filter(o -> o instanceof VirtualRealityTrain).findFirst().get(); + BgSceneStatusRule.trainOnline(simulation,train,section,route.isRight()); + return getBgScene(simulation); + } + }, + STAND_CANCEL_HOLD_TRAIN_BG_SCENE("站台取消扣车背景") { + @Override + public String doHandle(Simulation simulation, MapElement mapElement) { + Stand stand = (Stand) mapElement; + stand.setTrainLimit(3); + return getBgScene(simulation); + } + }, + STAND_FORCE_CANCEL_HOLD_TRAIN_BG_SCENE("强制取消扣车背景") { + @Override + public String doHandle(Simulation simulation, MapElement mapElement) { + Stand stand = (Stand) mapElement; + stand.setCenterHoldTrain(true); + return getBgScene(simulation); + } + }, + STAND_CANCEL_JUMP_STOP_BG_SCENE("站台取消设置跳停") { + @Override + public String doHandle(Simulation simulation, MapElement mapElement) { + Stand stand = (Stand) mapElement; + stand.setAllSkip(true); + return getBgScene(simulation); + } } + ; /** @@ -403,28 +503,6 @@ public enum BgSceneStatusRule { 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); - } - - /** * 重启联锁机 */ @@ -458,6 +536,17 @@ public enum BgSceneStatusRule { SectionPosition headPosition = new SectionPosition(section, section.getStopPointByDirection(right)); train.initManualTrain(headPosition, right); SimulationDataRepository repository = simulation.getRepository(); + //设置列车预选模式、驾驶模式、运行级别 + if (!headPosition.getSection().anyZcWorking()) { + train.initAsRM(); + } else { + MapConfig config = repository.getConfig(); + if (RunLevel.ITC.equals(config.getRunMode())) { + train.initAsAM_I(); + } else if (RunLevel.IL.equals(config.getRunMode())) { + train.initAsRM(); + } + } TrainInfo trainInfo = TrainInfo.constructManualTrain(train); trainInfo.tracking(train); repository.addOnlineTrain(train); diff --git a/src/main/java/club/joylink/rtss/vo/training2/rule/MapDeviceRule.java b/src/main/java/club/joylink/rtss/vo/training2/rule/MapDeviceRule.java index bf57eaeaf..4d87f5f46 100644 --- a/src/main/java/club/joylink/rtss/vo/training2/rule/MapDeviceRule.java +++ b/src/main/java/club/joylink/rtss/vo/training2/rule/MapDeviceRule.java @@ -4,42 +4,14 @@ import club.joylink.rtss.simulation.cbtc.Simulation; import club.joylink.rtss.simulation.cbtc.data.map.*; import club.joylink.rtss.vo.map.graph.MapStationNewVO; import lombok.Getter; -import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.List; -import java.util.Objects; import java.util.Random; -import java.util.function.Predicate; import java.util.stream.Collectors; @Getter public enum MapDeviceRule { - METRO_ROUTE_LIST("地铁进路利列表") { - @Override - public List filterMapDeviceList(Simulation simulation) { - boolean isMETRO = Simulation.Type.METRO.equals(simulation.getBuildParams().getWorkParamVO().getType()); - if (!isMETRO) { - return List.of(); - } - List signalList = METRO_DEPARTURE_SIGNAL_LIST.filterMapDeviceList(simulation); - List routeList = new ArrayList<>(); - signalList.forEach(s -> routeList.addAll(s.getRouteList())); - return generateRandomElement(routeList, 2); - } - }, - RAILWAY_PICK_ROUTE_LIST("大铁接车进路列表") { - @Override - public List filterMapDeviceList(Simulation simulation) { - boolean isRailWay = Simulation.Type.RAILWAY.equals(simulation.getBuildParams().getWorkParamVO().getType()); - if (!isRailWay) { - return List.of(); - } - List routeList = simulation.getRepository().getRouteList().stream() - .filter(r -> Objects.equals(r.getType(), Route.Type.RECEIVING)).collect(Collectors.toList()); - return generateRandomElement(routeList, 2); - } - }, STATION_LIST("车站列表") { @Override public List filterMapDeviceList(Simulation simulation) { @@ -50,62 +22,87 @@ public enum MapDeviceRule { return generateRandomElement(stationList, 1); } }, + STAND_LIST("站台列表"){ + @Override + public List filterMapDeviceList(Simulation simulation) { + List stationList = STATION_LIST.filterMapDeviceList(simulation); + Station station = stationList.get(0); + return MapDeviceRule.generateRandomElement(station.getAllStandList(), 2); + } + }, + ROUTE_LIST("进路列表") { + @Override + public List filterMapDeviceList(Simulation simulation) { + List stationList = STATION_LIST.filterMapDeviceList(simulation); + Station station = stationList.get(0); + List routeList = new ArrayList<>(); + station.getAllStandList().stream().filter(stand -> stand.getSection().getSignalToRight() != null) + .forEach(stand -> routeList.addAll(stand.getSection().getSignalToRight().getRouteList())); + return generateRandomElement(routeList, 2); + } + }, SWITCH_LIST("道岔列表") { @Override public List filterMapDeviceList(Simulation simulation) { - List switchList = simulation.getRepository().getSwitchList(); + List stationList = STATION_LIST.filterMapDeviceList(simulation); + Station station = stationList.get(0); + List switchList = simulation.getRepository().getSwitchList().stream() + .filter(aSwitch -> station.equals(aSwitch.getDeviceStation())).collect(Collectors.toList()); return generateRandomElement(switchList, 2); } }, SIGNAL_LIST("信号机列表") { @Override public List filterMapDeviceList(Simulation simulation) { - List signalList = simulation.getRepository().getSignalList(); + List stationList = STATION_LIST.filterMapDeviceList(simulation); + Station station = stationList.get(0); + List signalList = new ArrayList<>(); + station.getAllStandList().stream().filter(stand -> stand.getSection().getSignalToRight() != null) + .forEach(stand -> signalList.add(stand.getSection().getSignalToRight())); return generateRandomElement(signalList, 2); } }, - METRO_DEPARTURE_SIGNAL_LIST("地铁信号机列表") { - @Override - public List filterMapDeviceList(Simulation simulation) { - List signalList = simulation.getRepository().getStandList().stream().map(s -> s.getSection().getSignalToRight()) - .filter(s -> s != null && !CollectionUtils.isEmpty(s.getRouteList())).collect(Collectors.toList()); - return generateRandomElement(signalList, 2); - } - }, - RAILWAY_DEPARTURE_SIGNAL_LIST("大铁发车信号机列表") { - @Override - public List filterMapDeviceList(Simulation simulation) { - List signalList = simulation.getRepository().getSignalList().stream() - .filter(s -> Signal.SignalType.DEPARTURE.equals(s.getType())).collect(Collectors.toList()); - return generateRandomElement(signalList, 2); - } - }, - SECTION_LIST("普通区段列表") { + SECTION_LIST("区段列表") { @Override public List
filterMapDeviceList(Simulation simulation) { - List signalList = simulation.getRepository().getStandList().stream().map(s -> s.getSection().getSignalToRight()) - .filter(s -> s != null && !CollectionUtils.isEmpty(s.getRouteList())).collect(Collectors.toList()); - signalList = generateRandomElement(signalList, 2); + List routeList = ROUTE_LIST.filterMapDeviceList(simulation); List
sectionList = new ArrayList<>(100); - signalList.forEach(s -> s.getRouteList().forEach(r -> sectionList.addAll(r.getSectionList()))); + routeList.forEach(route -> sectionList.addAll(route.getSectionList())); + return generateRandomElement(sectionList, 2); + } + }, + SECTION_STAND_TURN_BACK_LIST("折返区段列表") { + @Override + public List
filterMapDeviceList(Simulation simulation) { + List
sectionList = simulation.getRepository().getSectionList().stream() + .filter(section -> section.isStandTrack() && section.isTurnBackTrack()) + .collect(Collectors.toList()); + return MapDeviceRule.generateRandomElement(sectionList, 2); + } + }, + SECTION_NO_AXLE_COUNTER_LIST("非计轴区段列表") { + @Override + public List
filterMapDeviceList(Simulation simulation) { + List stationCodeList = simulation.getBuildParams().getMap().getGraphDataNew().getStationList() + .stream().filter(s -> s.isVisible() && s.isCentralized() && s.isCiStation()).map(MapStationNewVO::getCode) + .collect(Collectors.toList()); + List
sectionList = simulation.getRepository().getSectionList().stream() + .filter(section -> stationCodeList.contains(section.getDeviceStation().getCode()) && !section.isAxleCounter()) + .collect(Collectors.toList()); return generateRandomElement(sectionList, 2); } }, SECTION_AXLE_COUNTER_LIST("道岔计轴区段列表") { @Override public List
filterMapDeviceList(Simulation simulation) { + List stationCodeList = simulation.getBuildParams().getMap().getGraphDataNew().getStationList() + .stream().filter(s -> s.isVisible() && s.isCentralized() && s.isCiStation()).map(MapStationNewVO::getCode) + .collect(Collectors.toList()); List
sectionList = simulation.getRepository().getSectionList().stream() - .filter(Section::isSwitchTrack).collect(Collectors.toList()); + .filter(section -> stationCodeList.contains(section.getDeviceStation().getCode()) && section.isAxleCounter()) + .collect(Collectors.toList()); return generateRandomElement(sectionList, 2); } - }, - SECTION_ROUTE_LIST("") { - @Override - public List
filterMapDeviceList(Simulation simulation) { - List signalList = simulation.getRepository().getStandList().stream() - .map(s -> s.getSection().getSignalToRight()).filter(s -> s != null && !CollectionUtils.isEmpty(s.getRouteList())).collect(Collectors.toList()); - return null; - } } ; diff --git a/src/main/java/club/joylink/rtss/vo/training2/rule/MapElementRule.java b/src/main/java/club/joylink/rtss/vo/training2/rule/MapElementRule.java index 95e6811c6..bba1119b6 100644 --- a/src/main/java/club/joylink/rtss/vo/training2/rule/MapElementRule.java +++ b/src/main/java/club/joylink/rtss/vo/training2/rule/MapElementRule.java @@ -36,6 +36,8 @@ public abstract class MapElementRule { return ((Switch) mapElement).getDeviceStation(); } else if (mapElement instanceof Section) { return ((Section) mapElement).getDeviceStation(); + } else if (mapElement instanceof Stand) { + return ((Stand) mapElement).getDeviceStation(); } throw new SimulationException(SimulationExceptionType.Simulation_Map_Data_Error); } diff --git a/src/main/resources/mybatis/mapper/training2/RtsTraining2RuleMapper.xml b/src/main/resources/mybatis/mapper/training2/RtsTraining2RuleMapper.xml index 04b701a66..7b39cf8ab 100644 --- a/src/main/resources/mybatis/mapper/training2/RtsTraining2RuleMapper.xml +++ b/src/main/resources/mybatis/mapper/training2/RtsTraining2RuleMapper.xml @@ -4,6 +4,7 @@ + @@ -82,7 +83,7 @@ - id, sim_type, device_rule, client, name, description, type, labels, scene_rule, creator_id, create_time, location_rule + id, sim_type, line_code, device_rule, client, name, description, type, labels, scene_rule, creator_id, create_time, location_rule @@ -138,11 +139,11 @@ insert into rts_training2_rule ( - id, sim_type, device_rule, client, name, description, type, labels, + id, sim_type, line_code, device_rule, client, name, description, type, labels, scene_rule, creator_id, create_time, steps, failure_rule, location_rule ) values ( - #{id,jdbcType=BIGINT}, #{simType,jdbcType=VARCHAR}, #{deviceRule,jdbcType=VARCHAR}, #{client,jdbcType=VARCHAR}, + #{id,jdbcType=BIGINT}, #{simType,jdbcType=VARCHAR}, #{lineCode,jdbcType=VARCHAR}, #{deviceRule,jdbcType=VARCHAR}, #{client,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR}, #{labels,jdbcType=VARCHAR}, #{sceneRule,jdbcType=VARCHAR}, #{creatorId,jdbcType=BIGINT}, #{createTime,jdbcType=TIMESTAMP}, #{steps,jdbcType=LONGVARCHAR}, #{failureRule,jdbcType=LONGVARCHAR}, #{locationRule,jdbcType=VARCHAR} @@ -158,6 +159,9 @@ sim_type, + + line_code, + device_rule, @@ -202,6 +206,9 @@ #{simType,jdbcType=VARCHAR}, + + #{lineCode,jdbcType=VARCHAR}, + #{deviceRule,jdbcType=VARCHAR}, @@ -250,6 +257,9 @@ sim_type = #{record.simType,jdbcType=VARCHAR}, + + line_code = #{record.lineCode,jdbcType=VARCHAR}, + device_rule = #{record.deviceRule,jdbcType=VARCHAR}, @@ -296,6 +306,7 @@ update rts_training2_rule set id = #{record.id,jdbcType=BIGINT}, sim_type = #{record.simType,jdbcType=VARCHAR}, + line_code = #{record.lineCode,jdbcType=VARCHAR}, device_rule = #{record.deviceRule,jdbcType=VARCHAR}, client = #{record.client,jdbcType=VARCHAR}, name = #{record.name,jdbcType=VARCHAR}, @@ -317,6 +328,7 @@ update rts_training2_rule set id = #{record.id,jdbcType=BIGINT}, sim_type = #{record.simType,jdbcType=VARCHAR}, + line_code = #{record.lineCode,jdbcType=VARCHAR}, device_rule = #{record.deviceRule,jdbcType=VARCHAR}, client = #{record.client,jdbcType=VARCHAR}, name = #{record.name,jdbcType=VARCHAR}, @@ -338,6 +350,9 @@ sim_type = #{simType,jdbcType=VARCHAR}, + + line_code = #{lineCode,jdbcType=VARCHAR}, + device_rule = #{deviceRule,jdbcType=VARCHAR}, @@ -381,6 +396,7 @@ update rts_training2_rule set sim_type = #{simType,jdbcType=VARCHAR}, + line_code = #{lineCode,jdbcType=VARCHAR}, device_rule = #{deviceRule,jdbcType=VARCHAR}, client = #{client,jdbcType=VARCHAR}, name = #{name,jdbcType=VARCHAR}, @@ -399,6 +415,7 @@ update rts_training2_rule set sim_type = #{simType,jdbcType=VARCHAR}, + line_code = #{lineCode,jdbcType=VARCHAR}, device_rule = #{deviceRule,jdbcType=VARCHAR}, client = #{client,jdbcType=VARCHAR}, name = #{name,jdbcType=VARCHAR},