Commit dd852437 authored by duanruiming's avatar duanruiming

Merge remote-tracking branch 'origin/master'

parents c14ad762 8a6fff9f
......@@ -82,7 +82,7 @@ public class SaveSchemeConfigDTO {
private Integer isGreen;
@ApiModelProperty(value = "是否绿闪 0否 1是", required = true)
private Integer greenFlash;
@ApiModelProperty(value = "被伴随相位号列表", required = true)
@ApiModelProperty(value = "相位号列表", required = true)
List<String> accompanyPhaseNoList;
private List<DirListElement> dirList; // 方向列表
}
......@@ -98,11 +98,9 @@ public class SaveSchemeConfigDTO {
@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;
private Integer direction;
@ApiModelProperty(value = "车道类别:1机动车;2非机动车;3公交专用;4可变;5潮汐", required = true)
private Integer category;
private Integer laneType;
}
}
\ No newline at end of file
package net.wanji.web.mapper.scheme;
import io.lettuce.core.dynamic.annotation.Param;
import net.wanji.web.po.scheme.CrossAccompanyPhasePO;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author Kent HAN
* @date 2023/1/11 17:25
*/
@Repository
public interface CrossAccompanyPhaseMapper {
void deleteByCrossId(@Param("crossId") String crossId);
void insertBatch(@Param("entities") List<CrossAccompanyPhasePO> entities);
}
......@@ -19,9 +19,4 @@ 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);
}
package net.wanji.web.po.scheme;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author Kent HAN
* @date 2023/1/11 17:27
*/
@Data
public class CrossAccompanyPhasePO {
/** 主键 */
@ApiModelProperty(name = "主键",notes = "")
private Integer id ;
/** 伴随相位ID */
@ApiModelProperty(name = "伴随相位ID",notes = "")
private Integer phaseId ;
/** 母相位ID */
@ApiModelProperty(name = "母相位ID",notes = "")
private Integer superId ;
/** 路口ID */
@ApiModelProperty(name = "路口ID",notes = "")
private String crossId ;
/** 创建时间 */
@ApiModelProperty(name = "创建时间",notes = "")
private Date gmtCreate ;
/** 修改时间 */
@ApiModelProperty(name = "修改时间",notes = "")
private Date gmtModified ;
}
......@@ -5,12 +5,14 @@ import net.wanji.web.common.exception.PhaseNoNotUniqueException;
import net.wanji.web.dto.LaneIdDTO;
import net.wanji.web.dto.LightIdDTO;
import net.wanji.web.dto.SaveSchemeConfigDTO;
import net.wanji.web.mapper.scheme.CrossAccompanyPhaseMapper;
import net.wanji.web.mapper.scheme.CrossLaneLightsMapper;
import net.wanji.web.mapper.scheme.CrossLightsMapper;
import net.wanji.web.mapper.scheme.CrossPhaseLightsMapper;
import net.wanji.web.mapper.scheme.CrossPhaseMapper;
import net.wanji.web.mapper.scheme.CrossSchemeMapper;
import net.wanji.web.mapper.scheme.LaneInfoMapper;
import net.wanji.web.po.scheme.CrossAccompanyPhasePO;
import net.wanji.web.po.scheme.CrossLaneLightsPO;
import net.wanji.web.po.scheme.CrossLightsPO;
import net.wanji.web.po.scheme.CrossPhaseLightsPO;
......@@ -42,16 +44,18 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
private final CrossLaneLightsMapper crossLaneLightsMapper;
private final CrossPhaseLightsMapper crossPhaseLightsMapper;
private final CrossLightsMapper crossLightsMapper;
private final CrossAccompanyPhaseMapper crossAccompanyPhaseMapper;
public SchemeConfigServiceImpl(CrossSchemeMapper crossSchemeMapper, CrossPhaseMapper crossPhaseMapper,
LaneInfoMapper laneInfoMapper, CrossLaneLightsMapper crossLaneLightsMapper,
CrossPhaseLightsMapper crossPhaseLightsMapper, CrossLightsMapper crossLightsMapper) {
CrossPhaseLightsMapper crossPhaseLightsMapper, CrossLightsMapper crossLightsMapper, CrossAccompanyPhaseMapper crossAccompanyPhaseMapper) {
this.crossSchemeMapper = crossSchemeMapper;
this.crossPhaseMapper = crossPhaseMapper;
this.laneInfoMapper = laneInfoMapper;
this.crossLaneLightsMapper = crossLaneLightsMapper;
this.crossPhaseLightsMapper = crossPhaseLightsMapper;
this.crossLightsMapper = crossLightsMapper;
this.crossAccompanyPhaseMapper = crossAccompanyPhaseMapper;
}
@Override
......@@ -95,7 +99,7 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
private void handleRingTime(SaveSchemeConfigDTO saveSchemeConfigDTO) {
// 更新方案基础信息表
updateCrossScheme(saveSchemeConfigDTO);
// 更新相位基础表、相位灯组关系表
// 更新相位基础表、相位灯组关系表、伴随相位母相位关系
updateCrossPhase(saveSchemeConfigDTO);
// 更新协调相位ID
updateCoordPhase(saveSchemeConfigDTO);
......@@ -117,11 +121,12 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
String crossId = saveSchemeConfigDTO.getCrossId();
crossPhaseMapper.deleteByCrossId(crossId);
crossPhaseLightsMapper.deleteByCrossId(crossId);
// 用于限制相位号不能重复
Set<String> phaseNoSet = new HashSet<>();
crossAccompanyPhaseMapper.deleteByCrossId(crossId);
List<SaveSchemeConfigDTO.PhaseScheme> phaseSchemeList = saveSchemeConfigDTO.getPhaseSchemeList();
for (SaveSchemeConfigDTO.PhaseScheme phaseScheme : phaseSchemeList) {
// 用于限制相位号不能重复
Set<String> phaseNoSet = new HashSet<>();
String schemeNo = phaseScheme.getSchemeNo();
// 获取方案ID
Integer schemeId = crossSchemeMapper.selectIdByCrossIdAndSchemeNo(crossId, schemeNo);
......@@ -139,7 +144,7 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
String phaseNo = phase.getPhaseNo();
testPhaseNo(phaseNoSet, phaseNo);
Integer phaseType = phase.getPhaseType();
if (phaseType != 3) { // 非伴随相位
if (phaseType != 3) { // 实相位或虚相位
phaseNoMap.put(phaseNo, phase);
Integer yellowFlashTime = phase.getYellowFlashTime();
Integer redFlashTime = phase.getRedFlashTime();
......@@ -197,10 +202,10 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
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);
List<String> superPhaseNoList = phase.getAccompanyPhaseNoList();
if (superPhaseNoList != null) {
for (String superPhaseNo : superPhaseNoList) {
SaveSchemeConfigDTO.PhaseListElement phaseListElement = phaseNoMap.get(superPhaseNo);
// 时长加总
coordGreenTime += phaseListElement.getGreenTime();
coordGreenFlashTime += phaseListElement.getGreenFlashTime();
......@@ -210,12 +215,6 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
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);
......@@ -227,8 +226,23 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
crossPhasePO.setMaxGreenTime(coordMaxGreenTime);
crossPhasePO.setPhaseTime(coordGreenTime + coordGreenFlashTime + coordYelloFlashTime
+ coordRedFlashTime + coordYellowTime + coordRedTime);
// 插入相位表记录
// 插入相位表记录获取ID
crossPhaseMapper.insertOne(crossPhasePO);
Integer accompanyPhaseId = crossPhasePO.getId();
// 更新伴随相位母相位关系表
List<CrossAccompanyPhasePO> crossAccompanyPhasePOList = new ArrayList<>();
for (String superPhaseNo : superPhaseNoList) {
CrossAccompanyPhasePO crossAccompanyPhasePO = new CrossAccompanyPhasePO();
crossAccompanyPhasePO.setCrossId(crossId);
crossAccompanyPhasePO.setPhaseId(accompanyPhaseId);
Integer superPhaseId = crossPhaseMapper.selectIdByCrossIdAndPhaseNo(
crossId, schemeId,superPhaseNo);
crossAccompanyPhasePO.setSuperId(superPhaseId);
crossAccompanyPhasePOList.add(crossAccompanyPhasePO);
}
crossAccompanyPhaseMapper.insertBatch(crossAccompanyPhasePOList);
}
}
}
}
......@@ -300,8 +314,8 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
List<SaveSchemeConfigDTO.LaneListElement> laneList = dirListElement.getLaneList();
for (SaveSchemeConfigDTO.LaneListElement laneListElement : laneList) {
CrossPhaseLightsPO crossPhaseLightsPO = new CrossPhaseLightsPO();
Integer category = laneListElement.getCategory();
Integer turn = laneListElement.getTurn();
Integer category = laneListElement.getLaneType();
Integer turn = laneListElement.getDirection();
// 根据车道获得灯组ID
String laneId = laneInfoMapper.selectIdByCrossIdDirTurn(crossId, dir, turn, category);
Integer lightsId = crossLaneLightsMapper.selectLightsIdByLaneId(crossId, laneId);
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="net.wanji.web.mapper.scheme.CrossAccompanyPhaseMapper">
<!-- 通用查询映射结果 -->
<resultMap type="net.wanji.web.po.scheme.CrossAccompanyPhasePO" id="BaseResultMap">
<result property="id" column="id" />
<result property="phaseId" column="phase_id"/>
<result property="superId" column="super_id"/>
<result property="crossId" column="cross_id"/>
<result property="gmtCreate" column="gmt_create"/>
<result property="gmtModified" column="gmt_modified"/>
</resultMap>
<insert id="insertBatch" keyProperty="id" useGeneratedKeys="true">
insert into t_base_cross_accompany_phase(phase_id,super_id,cross_id)
values
<foreach collection="entities" item="entity" separator=",">
(#{entity.phaseId},#{entity.superId},#{entity.crossId})
</foreach>
</insert>
<delete id="deleteByCrossId">
delete from t_base_cross_accompany_phase
where cross_id = #{crossId}
</delete>
</mapper>
......@@ -10,7 +10,6 @@
<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"/>
......@@ -28,16 +27,10 @@
</resultMap>
<insert id="insertOne" keyProperty="id" useGeneratedKeys="true">
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 into t_base_cross_phase(phase_no,name,sort,cross_id,plan_id,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},#{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