Commit 0f849f2d authored by hanbing's avatar hanbing

方案管理-方案配置,保存方案配置

parent 525f6018
......@@ -17,95 +17,92 @@ public class SaveSchemeConfigDTO {
private String crossId;
@ApiModelProperty(value = "配时方式 1阶段式 2环式", required = true)
private Integer timeType;
private List<PhaseScheme> phaseSchemeList; // 相位方案列表
private List<TimeScheme> timeSchemeList; // 配时方案列表
private List<PhaseScheme> phaseSchemeList; // 方案列表
@Data
public static class PhaseScheme {
@ApiModelProperty(value = "方案号", required = true)
private String schemeNo;
@ApiModelProperty(value = "方案名称", required = true)
private String name;
@ApiModelProperty(value = "协调相位号", required = true)
private String coordPhaseNo;
@ApiModelProperty(value = "周期", required = true)
private Integer cycle;
@ApiModelProperty(value = "相位差", required = true)
private Integer offset;
private List<RingListElement> ringList; // 环列表
private List<PhaseListElement> specialControlModeList; // 特殊控制相位列表
}
@Data
public static class RingListElement {
@ApiModelProperty(value = "环号", required = true)
private Integer ringNo;
List<GroupListElement> groupList; // 组列表
}
@Data
public static class GroupListElement {
@ApiModelProperty(value = "组号", required = true)
private Integer groupNo;
List<PhaseListElement> phaseList; // 相位列表
}
@Data
public static class PhaseListElement {
@ApiModelProperty(value = "相位序号", required = false)
private Integer sort;
@ApiModelProperty(value = "相位号", required = true)
private String phaseNo;
private List<LaneListElement> laneList; // 车道列表
@Data
public static class LaneListElement {
@ApiModelProperty(value = "车道序号,从左车道开始编号11、12、13...", required = true)
private Integer sort;
@ApiModelProperty(value = "车道方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北", required = true)
private Integer dir;
@ApiModelProperty(value = "车道转向:1左转;2直行;3右转;4掉头;5左直;6直右;7左直右;8左右;9左转掉头;10直行掉头;11右转掉头;12左直掉头;13直右掉头;14左直右掉头;15左右掉头", required = true)
private Integer turn;
@ApiModelProperty(value = "车道类别:1机动车;2非机动车;3公交专用;4可变;5潮汐", required = true)
private Integer category;
}
}
}
}
@Data
public static class TimeScheme {
@ApiModelProperty(value = "方案号", required = true)
private String schemeNo;
@ApiModelProperty(value = "方案名称", required = true)
private String name;
@ApiModelProperty(value = "协调相位号", required = true)
private String coordPhaseNo;
@ApiModelProperty(value = "周期", required = true)
private Integer cycle;
@ApiModelProperty(value = "相位差", required = true)
private Integer offset;
private List<TimeRingListElement> ringList; // 环列表
@Data
public static class TimeRingListElement {
@ApiModelProperty(value = "环号", required = true)
private Integer ringNo;
List<TimePhaseListElement> phaseList; // 相位列表
@Data
public static class TimePhaseListElement {
@ApiModelProperty(value = "相位序号", required = false)
private Integer sort;
@ApiModelProperty(value = "相位号", required = true)
private String phaseNo;
private List<TimeLaneListElement> laneList; // 车道列表
@Data
public static class TimeLaneListElement {
@ApiModelProperty(value = "车道方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北", required = true)
private Integer dir;
@ApiModelProperty(value = "车道转向:1左转;2直行;3右转;4掉头;5左直;6直右;7左直右;8左右;9左转掉头;10直行掉头;11右转掉头;12左直掉头;13直右掉头;14左直右掉头;15左右掉头", required = true)
private Integer turn;
@ApiModelProperty(value = "车道类别:1机动车;2非机动车;3公交专用;4可变;5潮汐", required = true)
private Integer category;
}
@ApiModelProperty(value = "相位类型 1实相位 2虚相位 3伴随相位", required = true)
private Integer phaseType;
@ApiModelProperty(value = "最小绿灯时间", required = true)
private Integer minGreenTime = 0;
private Integer minGreenTime;
@ApiModelProperty(value = "最大绿灯时间", required = true)
private Integer maxGreenTime = 0;
private Integer maxGreenTime;
@ApiModelProperty(value = "绿灯时间", required = true)
private Integer greenTime = 0;
private Integer greenTime;
@ApiModelProperty(value = "绿闪时间", required = true)
private Integer greenFlashTime = 0;
private Integer greenFlashTime;
@ApiModelProperty(value = "黄闪时间", required = true)
private Integer yellowFlashTime;
@ApiModelProperty(value = "红闪时间", required = true)
private Integer redFlashTime;
@ApiModelProperty(value = "黄灯时间", required = true)
private Integer yellowTime = 0;
private Integer yellowTime;
@ApiModelProperty(value = "红灯时间", required = true)
private Integer redTime = 0;
private Integer redTime;
@ApiModelProperty(value = "是否黄闪 0否 1是", required = true)
private Integer yellowFlash = 0;
@ApiModelProperty(value = "是否红闪 0否 1是", required = true)
private Integer redFlash = 0;
private Integer yellowFlash;
@ApiModelProperty(value = "是否红灯 0否 1是", required = true)
private Integer isRed;
@ApiModelProperty(value = "是否绿灯 0否 1是", required = true)
private Integer isGreen;
@ApiModelProperty(value = "是否绿闪 0否 1是", required = true)
private Integer greenFlash;
@ApiModelProperty(value = "被伴随相位号列表", required = true)
List<String> accompanyPhaseNoList;
private List<DirListElement> dirList; // 方向列表
}
@Data
public static class DirListElement {
@ApiModelProperty(value = "车道进口方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北", required = true)
private Integer dir;
@ApiModelProperty(value = "是否有行人过街:0否;1是", required = true)
private Integer isPersonCross;
private List<LaneListElement> laneList; // 车道列表
}
@Data
public static class LaneListElement {
@ApiModelProperty(value = "车道序号,从左车道开始编号11、12、13...", required = true)
private Integer sort;
@ApiModelProperty(value = "车道转向:1左转;2直行;3右转;4掉头;5左直;6直右;7左直右;8左右;9左转掉头;10直行掉头;11右转掉头;12左直掉头;13直右掉头;14左直右掉头;15左右掉头", required = true)
private Integer turn;
@ApiModelProperty(value = "车道类别:1机动车;2非机动车;3公交专用;4可变;5潮汐", required = true)
private Integer category;
}
}
\ No newline at end of file
......@@ -19,4 +19,9 @@ public interface CrossPhaseMapper {
void insertOne(CrossPhasePO crossPhasePO);
void deleteByCrossId(@Param("crossId") String crossId);
void updateAccompanyPhaseNo(@Param("coordPhaseNo") String coordPhaseNo,
@Param("phaseNoReal") String phaseNoReal,
@Param("planId") Integer planId,
@Param("crossId") String crossId);
}
......@@ -16,7 +16,7 @@ public class CrossPhaseLightsPO {
private Integer id ;
/** 灯组ID */
@ApiModelProperty(name = "灯组ID",notes = "")
private Integer lightsId ;
private Integer lightsId = 0 ;
/** 相位ID */
@ApiModelProperty(name = "相位ID",notes = "")
private Integer phaseId ;
......
......@@ -29,39 +29,51 @@ public class CrossPhasePO {
/** 方案ID */
@ApiModelProperty(name = "方案ID",notes = "")
private Integer planId ;
/** 伴随相位ID */
@ApiModelProperty(name = "伴随相位号",notes = "")
private String accompanyPhaseNo = "";
/** 环号 */
@ApiModelProperty(name = "环号",notes = "")
private Integer ringNo ;
private Integer ringNo = 0 ;
/** 组号 */
@ApiModelProperty(name = "组号",notes = "")
private Integer groupNo ;
private Integer groupNo = 0;
/** 控制模式:1定周期;2绿灯;3黄灯;4红灯;5关灯;6绿闪;7黄闪;8红闪 */
@ApiModelProperty(name = "相位类型 1实相位 2虚相位 3伴随相位",notes = "")
private Integer phaseType = 0;
/** 控制模式:1定周期;2绿灯;3黄灯;4红灯;5关灯;6绿闪;7黄闪;8红闪 */
@ApiModelProperty(name = "控制模式:1定周期;2绿灯;3黄灯;4红灯;5关灯;6绿闪;7黄闪;8红闪",notes = "")
private Integer controlMode ;
/** 相位时间 */
@ApiModelProperty(name = "相位时间",notes = "")
private Integer phaseTime ;
private Integer phaseTime= 0 ;
/** 绿灯时间 */
@ApiModelProperty(name = "绿灯时间",notes = "")
private Integer greenTime ;
private Integer greenTime= 0 ;
/** 绿闪时间 */
@ApiModelProperty(name = "绿闪时间",notes = "")
private Integer greenFlashTime ;
private Integer greenFlashTime= 0 ;
/** 黄闪时间 */
@ApiModelProperty(name = "黄闪时间",notes = "")
private Integer yellowFlashTime= 0 ;
/** 红闪时间 */
@ApiModelProperty(name = "红闪时间",notes = "")
private Integer redFlashTime= 0 ;
/** 行闪时间 */
@ApiModelProperty(name = "行闪时间",notes = "")
private Integer pedFlashTime = 0;
/** 黄灯时间 */
@ApiModelProperty(name = "黄灯时间",notes = "")
private Integer yellowTime ;
private Integer yellowTime= 0 ;
/** 红灯时间 */
@ApiModelProperty(name = "红灯时间",notes = "")
private Integer redTime ;
private Integer redTime= 0 ;
/** 最小绿灯时间 */
@ApiModelProperty(name = "最小绿灯时间",notes = "")
private Integer minGreenTime ;
private Integer minGreenTime= 0 ;
/** 最大绿灯时间 */
@ApiModelProperty(name = "最大绿灯时间",notes = "")
private Integer maxGreenTime ;
private Integer maxGreenTime= 0 ;
/** 创建时间 */
@ApiModelProperty(name = "创建时间",notes = "")
private Date gmtCreate ;
......
......@@ -25,13 +25,13 @@ public class CrossSchemePO {
private String crossId ;
/** 周期 */
@ApiModelProperty(name = "周期",notes = "")
private Integer cycle ;
private Integer cycle = 0;
/** 协调相位ID */
@ApiModelProperty(name = "协调相位ID",notes = "")
private Integer coordPhase = 0 ;
/** 相位差 */
@ApiModelProperty(name = "相位差",notes = "")
private Integer offset ;
private Integer offset = 0;
/** 数据来源:1信号机;2平台 */
@ApiModelProperty(name = "数据来源:1信号机;2平台",notes = "")
private Integer source ;
......
......@@ -23,8 +23,10 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
......@@ -103,18 +105,18 @@ public class CrossConfigServiceImpl implements CrossConfigService {
handleLaneData(saveLaneInfoDTO);
} else {
// 前端传过来的所有灯组代码列表
List<String> lightCodeList = new ArrayList<>();
Set<String> lightCodeSet = new HashSet<>();
// 保存灯组设置
handleLightsData(saveLaneInfoDTO, ledConfigList, lightCodeList);
handleLightsData(saveLaneInfoDTO, ledConfigList, lightCodeSet);
// 保存车道配置(灯组-车道关系表)
handleLaneConfig(saveLaneInfoDTO, lightCodeList);
if (lightCodeList.size() != 0) {
handleLaneConfig(saveLaneInfoDTO, lightCodeSet);
if (lightCodeSet.size() != 0) {
throw new RuntimeException("存在未配置的灯组号");
}
}
}
private void handleLaneConfig(SaveLaneInfoDTO saveLaneInfoDTO, List<String> lightCodeList) {
private void handleLaneConfig(SaveLaneInfoDTO saveLaneInfoDTO, Set<String> lightCodeSet) {
String crossId = saveLaneInfoDTO.getCrossId();
List<DirListElement> dirList = saveLaneInfoDTO.getDirList();
List<CrossLaneLightsPO> crossLaneLightsPOList = new ArrayList<>();
......@@ -136,7 +138,7 @@ public class CrossConfigServiceImpl implements CrossConfigService {
Integer lightsId = crossLightsPO.getId();
crossLaneLightsPO.setLightsId(lightsId);
// 用于判断灯组号是否都配置完成
lightCodeList.remove(ledNum);
lightCodeSet.remove(ledNum);
}
crossLaneLightsPOList.add(crossLaneLightsPO);
}
......@@ -146,12 +148,12 @@ public class CrossConfigServiceImpl implements CrossConfigService {
}
private void handleLightsData(SaveLaneInfoDTO saveLaneInfoDTO, List<LedConfigListElement> ledConfigList,
List<String> lightCodeList) {
Set<String> lightCodeSet) {
String crossId = saveLaneInfoDTO.getCrossId();
List<CrossLightsPO> crossLightsPOList = new ArrayList<>();
for (LedConfigListElement ledConfigListElement : ledConfigList) {
String lightCode = ledConfigListElement.getCode();
lightCodeList.add(lightCode);
lightCodeSet.add(lightCode);
CrossLightsPO crossLightsPO = new CrossLightsPO();
crossLightsPO.setLightsNo(lightCode);
// 灯组类型
......
......@@ -20,9 +20,10 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
......@@ -38,7 +39,9 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
private final CrossLaneLightsMapper crossLaneLightsMapper;
private final CrossPhaseLightsMapper crossPhaseLightsMapper;
public SchemeConfigServiceImpl(CrossSchemeMapper crossSchemeMapper, CrossPhaseMapper crossPhaseMapper, LaneInfoMapper laneInfoMapper, CrossLaneLightsMapper crossLaneLightsMapper, CrossPhaseLightsMapper crossPhaseLightsMapper) {
public SchemeConfigServiceImpl(CrossSchemeMapper crossSchemeMapper, CrossPhaseMapper crossPhaseMapper,
LaneInfoMapper laneInfoMapper, CrossLaneLightsMapper crossLaneLightsMapper,
CrossPhaseLightsMapper crossPhaseLightsMapper) {
this.crossSchemeMapper = crossSchemeMapper;
this.crossPhaseMapper = crossPhaseMapper;
this.laneInfoMapper = laneInfoMapper;
......@@ -95,11 +98,11 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
private void updateCoordPhase(SaveSchemeConfigDTO saveSchemeConfigDTO) {
String crossId = saveSchemeConfigDTO.getCrossId();
List<SaveSchemeConfigDTO.TimeScheme> timeSchemeList = saveSchemeConfigDTO.getTimeSchemeList();
for (SaveSchemeConfigDTO.TimeScheme timeScheme : timeSchemeList) {
String schemeNo = timeScheme.getSchemeNo();
List<SaveSchemeConfigDTO.PhaseScheme> phaseSchemeList = saveSchemeConfigDTO.getPhaseSchemeList();
for (SaveSchemeConfigDTO.PhaseScheme phaseScheme : phaseSchemeList) {
String schemeNo = phaseScheme.getSchemeNo();
Integer schemeId = crossSchemeMapper.selectIdByCrossIdAndSchemeNo(crossId, schemeNo);
String coordPhaseNo = timeScheme.getCoordPhaseNo();
String coordPhaseNo = phaseScheme.getCoordPhaseNo();
Integer phaseId = crossPhaseMapper.selectIdByCrossIdAndPhaseNo(crossId, schemeId, coordPhaseNo);
crossSchemeMapper.updateCoordPhase(crossId, schemeNo, phaseId);
}
......@@ -109,46 +112,141 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
String crossId = saveSchemeConfigDTO.getCrossId();
crossPhaseMapper.deleteByCrossId(crossId);
crossPhaseLightsMapper.deleteByCrossId(crossId);
for (SaveSchemeConfigDTO.TimeScheme timeScheme : saveSchemeConfigDTO.getTimeSchemeList()) {
String schemeNo = timeScheme.getSchemeNo();
List<SaveSchemeConfigDTO.TimeScheme.TimeRingListElement> ringList = timeScheme.getRingList();
for (SaveSchemeConfigDTO.TimeScheme.TimeRingListElement ring : ringList) {
Integer ringNo = ring.getRingNo();
List<SaveSchemeConfigDTO.TimeScheme.TimeRingListElement.TimePhaseListElement> phaseList = ring.getPhaseList();
List<SaveSchemeConfigDTO.PhaseScheme> phaseSchemeList = saveSchemeConfigDTO.getPhaseSchemeList();
for (SaveSchemeConfigDTO.PhaseScheme phaseScheme : phaseSchemeList) {
String schemeNo = phaseScheme.getSchemeNo();
// 获取方案ID
Integer schemeId = crossSchemeMapper.selectIdByCrossIdAndSchemeNo(crossId, schemeNo);
List<SaveSchemeConfigDTO.RingListElement> ringList = phaseScheme.getRingList();
// 用于维护伴随相位
Map<String, SaveSchemeConfigDTO.PhaseListElement> phaseNoMap = new HashMap<>();
for (SaveSchemeConfigDTO.RingListElement ringListElement : ringList) {
Integer ringNo = ringListElement.getRingNo();
List<SaveSchemeConfigDTO.GroupListElement> groupList = ringListElement.getGroupList();
for (SaveSchemeConfigDTO.GroupListElement groupListElement : groupList) {
Integer groupNo = groupListElement.getGroupNo();
List<SaveSchemeConfigDTO.PhaseListElement> phaseList = groupListElement.getPhaseList();
for (int i = 0; i < phaseList.size(); i++) {
SaveSchemeConfigDTO.TimeScheme.TimeRingListElement.TimePhaseListElement phase = phaseList.get(i);
SaveSchemeConfigDTO.PhaseListElement phase = phaseList.get(i);
Integer phaseType = phase.getPhaseType();
if (phaseType != 3) { // 非伴随相位
String phaseNo = phase.getPhaseNo();
Integer yellowFlash = phase.getYellowFlash();
Integer redFlash = phase.getRedFlash();
phaseNoMap.put(phaseNo, phase);
Integer yellowFlashTime = phase.getYellowFlashTime();
Integer redFlashTime = phase.getRedFlashTime();
Integer greenTime = phase.getGreenTime();
Integer greenFlashTime = phase.getGreenFlashTime();
Integer yellowTime = phase.getYellowTime();
Integer redTime = phase.getRedTime();
Integer minGreenTime = phase.getMinGreenTime();
Integer maxGreenTime = phase.getMaxGreenTime();
// 获取方案ID
Integer schemeId = crossSchemeMapper.selectIdByCrossIdAndSchemeNo(crossId, schemeNo);
CrossPhasePO crossPhasePO = new CrossPhasePO();
crossPhasePO.setPhaseNo(phaseNo);
crossPhasePO.setPhaseType(phaseType);
crossPhasePO.setSort(i + 1);
crossPhasePO.setCrossId(crossId);
crossPhasePO.setPlanId(schemeId);
crossPhasePO.setRingNo(ringNo);
crossPhasePO.setGroupNo(groupNo);
// 控制模式
if (yellowFlash == 0 && redFlash == 0) {
crossPhasePO.setControlMode(ControlModeConst.FIXED_CYCLE);
} else if (yellowFlash == 1) {
crossPhasePO.setControlMode(ControlModeConst.YELLOW_FLASH);
} else if (redFlash == 1) {
crossPhasePO.setControlMode(ControlModeConst.RED_FLASH);
}
crossPhasePO.setGreenTime(greenTime);
crossPhasePO.setGreenFlashTime(greenFlashTime);
crossPhasePO.setYellowTime(yellowTime);
crossPhasePO.setRedTime(redTime);
crossPhasePO.setYellowFlashTime(yellowFlashTime);
crossPhasePO.setRedFlashTime(redFlashTime);
crossPhasePO.setMinGreenTime(minGreenTime);
crossPhasePO.setMaxGreenTime(maxGreenTime);
crossPhasePO.setPhaseTime(greenTime + greenFlashTime + yellowTime + redTime);
crossPhasePO.setPhaseTime(greenTime + greenFlashTime + yellowTime + redTime
+ yellowFlashTime + redFlashTime);
// 插入相位表记录,获取ID
crossPhaseMapper.insertOne(crossPhasePO);
Integer phaseId = crossPhasePO.getId();
if (phaseType == 1) { // 实相位
// 更新相位灯组关系表
updateCrossPhaseLights(crossId, phase, phaseId);
}
} else { // 伴随相位
CrossPhasePO crossPhasePO = new CrossPhasePO();
String phaseNo = phase.getPhaseNo();
crossPhasePO.setPhaseNo(phaseNo);
crossPhasePO.setPhaseType(phaseType);
crossPhasePO.setSort(i + 1);
crossPhasePO.setCrossId(crossId);
crossPhasePO.setPlanId(schemeId);
crossPhasePO.setRingNo(ringNo);
crossPhasePO.setGroupNo(groupNo);
// 控制模式
crossPhasePO.setControlMode(ControlModeConst.FIXED_CYCLE);
Integer coordGreenTime = 0;
Integer coordGreenFlashTime = 0;
Integer coordYelloFlashTime = 0;
Integer coordRedFlashTime = 0;
Integer coordYellowTime = 0;
Integer coordRedTime = 0;
Integer coordMinGreenTime = 0;
Integer coordMaxGreenTime = 0;
List<String> accompanyPhaseNoList = phase.getAccompanyPhaseNoList();
if (accompanyPhaseNoList != null) {
for (String accompanyPhaseNo : accompanyPhaseNoList) {
SaveSchemeConfigDTO.PhaseListElement phaseListElement = phaseNoMap.get(accompanyPhaseNo);
// 时长加总
coordGreenTime += phaseListElement.getGreenTime();
coordGreenFlashTime += phaseListElement.getGreenFlashTime();
coordYelloFlashTime += phaseListElement.getYellowFlashTime();
coordRedFlashTime += phaseListElement.getRedFlashTime();
coordYellowTime += phaseListElement.getYellowTime();
coordRedTime += phaseListElement.getRedTime();
coordMinGreenTime += phaseListElement.getMinGreenTime();
coordMaxGreenTime += phaseListElement.getMaxGreenTime();
// 实相位号
String phaseNoReal = phaseListElement.getPhaseNo();
// 更新伴随相位号
Integer planId = crossSchemeMapper.selectIdByCrossIdAndSchemeNo(crossId, schemeNo);
crossPhaseMapper.updateAccompanyPhaseNo(accompanyPhaseNo, phaseNoReal, planId, crossId);
}
}
crossPhasePO.setGreenTime(coordGreenTime);
crossPhasePO.setGreenFlashTime(coordGreenFlashTime);
crossPhasePO.setYellowFlashTime(coordYelloFlashTime);
crossPhasePO.setRedFlashTime(coordRedFlashTime);
crossPhasePO.setYellowTime(coordYellowTime);
crossPhasePO.setRedTime(coordRedTime);
crossPhasePO.setMinGreenTime(coordMinGreenTime);
crossPhasePO.setMaxGreenTime(coordMaxGreenTime);
crossPhasePO.setPhaseTime(coordGreenTime + coordGreenFlashTime + coordYelloFlashTime
+ coordRedFlashTime + coordYellowTime + coordRedTime);
// 插入相位表记录
crossPhaseMapper.insertOne(crossPhasePO);
}
}
}
}
// 处理特殊控制
List<SaveSchemeConfigDTO.PhaseListElement> specialControlModeList = phaseScheme.getSpecialControlModeList();
if (specialControlModeList != null) {
for (int i = 0; i < specialControlModeList.size(); i++) {
SaveSchemeConfigDTO.PhaseListElement phase = specialControlModeList.get(i);
CrossPhasePO crossPhasePO = new CrossPhasePO();
crossPhasePO.setPhaseNo(phase.getPhaseNo());
crossPhasePO.setSort(i + 1);
crossPhasePO.setCrossId(crossId);
crossPhasePO.setPlanId(schemeId);
crossPhasePO.setPhaseType(1);
// 控制模式
if (phase.getYellowFlash() == 1) {
crossPhasePO.setControlMode(7);
} else if (phase.getIsRed() == 1) {
crossPhasePO.setControlMode(4);
} else if (phase.getIsGreen() == 1) {
crossPhasePO.setControlMode(2);
} else if (phase.getGreenFlash() == 1) {
crossPhasePO.setControlMode(6);
}
// 插入相位表记录,获取ID
crossPhaseMapper.insertOne(crossPhasePO);
Integer phaseId = crossPhasePO.getId();
......@@ -159,23 +257,31 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
}
}
private void updateCrossPhaseLights(String crossId,
SaveSchemeConfigDTO.TimeScheme.TimeRingListElement.TimePhaseListElement phase,
SaveSchemeConfigDTO.PhaseListElement phase,
Integer phaseId) {
Set<CrossPhaseLightsPO> crossPhaseLightsPOSet = new HashSet<>();
for (SaveSchemeConfigDTO.TimeScheme.TimeRingListElement.TimePhaseListElement.TimeLaneListElement lane : phase.getLaneList()) {
List<SaveSchemeConfigDTO.DirListElement> dirList = phase.getDirList();
for (SaveSchemeConfigDTO.DirListElement dirListElement : dirList) {
Integer dir = dirListElement.getDir();
List<SaveSchemeConfigDTO.LaneListElement> laneList = dirListElement.getLaneList();
for (SaveSchemeConfigDTO.LaneListElement laneListElement : laneList) {
CrossPhaseLightsPO crossPhaseLightsPO = new CrossPhaseLightsPO();
Integer dir = lane.getDir();
Integer turn = lane.getTurn();
Integer category = lane.getCategory();
Integer category = laneListElement.getCategory();
Integer turn = laneListElement.getTurn();
Integer sort = laneListElement.getSort();
// 根据车道获得灯组ID
String laneId = laneInfoMapper.selectIdByCrossIdDirTurn(crossId, dir, turn, category);
Integer lightsId = crossLaneLightsMapper.selectLightsIdByLaneId(crossId, laneId);
if (lightsId != null) {
crossPhaseLightsPO.setLightsId(lightsId);
}
crossPhaseLightsPO.setPhaseId(phaseId);
crossPhaseLightsPO.setCrossId(crossId);
crossPhaseLightsPOSet.add(crossPhaseLightsPO);
}
}
crossPhaseLightsMapper.insertBatchBySet(crossPhaseLightsPOSet);
}
......@@ -191,15 +297,8 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
String name = phaseScheme.getName(); // 方案名称
crossSchemePO.setName(name);
crossSchemePO.setCrossId(crossId);
// 获取方案周期、协调相位ID、相位差
List<SaveSchemeConfigDTO.TimeScheme> timeSchemeList = saveSchemeConfigDTO.getTimeSchemeList();
for (SaveSchemeConfigDTO.TimeScheme timeScheme : timeSchemeList) {
String schemeNoInTime = timeScheme.getSchemeNo();
if (Objects.equals(schemeNo, schemeNoInTime)) {
crossSchemePO.setCycle(timeScheme.getCycle());
crossSchemePO.setOffset(timeScheme.getOffset());
}
}
crossSchemePO.setCycle(phaseScheme.getCycle());
crossSchemePO.setOffset(phaseScheme.getOffset());
crossSchemePO.setSource(2); // 来自平台
crossSchemePO.setIsDeleted(0);
crossSchemePOList.add(crossSchemePO);
......
......@@ -10,8 +10,10 @@
<result property="sort" column="sort"/>
<result property="crossId" column="cross_id"/>
<result property="planId" column="plan_id"/>
<result property="accompanyPhaseNo" column="accompany_phase_no"/>
<result property="ringNo" column="ring_no"/>
<result property="groupNo" column="group_no"/>
<result property="phaseType" column="phase_type"/>
<result property="controlMode" column="control_mode"/>
<result property="phaseTime" column="phase_time"/>
<result property="greenTime" column="green_time"/>
......@@ -26,10 +28,16 @@
</resultMap>
<insert id="insertOne" keyProperty="id" useGeneratedKeys="true">
insert into t_base_cross_phase(phase_no,name,sort,cross_id,plan_id,ring_no,group_no,control_mode,phase_time,green_time,green_flash_time,ped_flash_time,yellow_time,red_time,min_green_time,max_green_time)
values (#{phaseNo},#{name},#{sort},#{crossId},#{planId},#{ringNo},#{groupNo},#{controlMode},#{phaseTime},#{greenTime},#{greenFlashTime},#{pedFlashTime},#{yellowTime},#{redTime},#{minGreenTime},#{maxGreenTime})
insert into t_base_cross_phase(phase_no,name,sort,cross_id,plan_id,accompany_phase_no,ring_no,group_no,phase_type,control_mode,phase_time,green_time,green_flash_time,yellow_flash_time,red_flash_time,ped_flash_time,yellow_time,red_time,min_green_time,max_green_time)
values (#{phaseNo},#{name},#{sort},#{crossId},#{planId},#{accompanyPhaseNo},#{ringNo},#{groupNo},#{phaseType},#{controlMode},#{phaseTime},#{greenTime},#{greenFlashTime},#{yellowFlashTime},#{redFlashTime},#{pedFlashTime},#{yellowTime},#{redTime},#{minGreenTime},#{maxGreenTime})
</insert>
<update id="updateAccompanyPhaseNo">
update t_base_cross_phase
set coord_phase_no = #{coordPhaseNo}
where cross_id = #{crossId} and plan_id = #{planId} and phase_no = #{phaseNoReal}
</update>
<delete id="deleteByCrossId">
delete from t_base_cross_phase
where cross_id = #{crossId}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment