Commit 0f849f2d authored by hanbing's avatar hanbing

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

parent 525f6018
......@@ -17,46 +17,9 @@ 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;
private List<RingListElement> ringList; // 环列表
@Data
public static class RingListElement {
@ApiModelProperty(value = "环号", required = true)
private Integer ringNo;
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)
......@@ -67,45 +30,79 @@ public class SaveSchemeConfigDTO {
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 = "最小绿灯时间", required = true)
private Integer minGreenTime = 0;
@ApiModelProperty(value = "最大绿灯时间", required = true)
private Integer maxGreenTime = 0;
@ApiModelProperty(value = "绿灯时间", required = true)
private Integer greenTime = 0;
@ApiModelProperty(value = "绿闪时间", required = true)
private Integer greenFlashTime = 0;
@ApiModelProperty(value = "黄灯时间", required = true)
private Integer yellowTime = 0;
@ApiModelProperty(value = "红灯时间", required = true)
private Integer redTime = 0;
@ApiModelProperty(value = "是否黄闪 0否 1是", required = true)
private Integer yellowFlash = 0;
@ApiModelProperty(value = "是否红闪 0否 1是", required = true)
private Integer redFlash = 0;
}
}
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 = true)
private String phaseNo;
@ApiModelProperty(value = "相位序号", required = false)
private Integer sort;
@ApiModelProperty(value = "相位类型 1实相位 2虚相位 3伴随相位", required = true)
private Integer phaseType;
@ApiModelProperty(value = "最小绿灯时间", required = true)
private Integer minGreenTime;
@ApiModelProperty(value = "最大绿灯时间", required = true)
private Integer maxGreenTime;
@ApiModelProperty(value = "绿灯时间", required = true)
private Integer greenTime;
@ApiModelProperty(value = "绿闪时间", required = true)
private Integer greenFlashTime;
@ApiModelProperty(value = "黄闪时间", required = true)
private Integer yellowFlashTime;
@ApiModelProperty(value = "红闪时间", required = true)
private Integer redFlashTime;
@ApiModelProperty(value = "黄灯时间", required = true)
private Integer yellowTime;
@ApiModelProperty(value = "红灯时间", required = true)
private Integer redTime;
@ApiModelProperty(value = "是否黄闪 0否 1是", required = true)
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);
// 灯组类型
......
......@@ -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