Commit a291ebf2 authored by hanbing's avatar hanbing

[update] 信号优化,态势监测-修改绿波路口指标计算方式

parent 936d3411
...@@ -8,6 +8,7 @@ import net.wanji.common.dto.CrossIdDTO; ...@@ -8,6 +8,7 @@ import net.wanji.common.dto.CrossIdDTO;
import net.wanji.common.enums.CrossStatusEnum; import net.wanji.common.enums.CrossStatusEnum;
import net.wanji.common.enums.EventAlarmEnum; import net.wanji.common.enums.EventAlarmEnum;
import net.wanji.common.enums.EventAlarmSourceEnum; import net.wanji.common.enums.EventAlarmSourceEnum;
import net.wanji.common.enums.TurnConvertEnum;
import net.wanji.common.utils.tool.CrossUtil; import net.wanji.common.utils.tool.CrossUtil;
import net.wanji.databus.dao.entity.*; import net.wanji.databus.dao.entity.*;
import net.wanji.databus.dao.mapper.*; import net.wanji.databus.dao.mapper.*;
...@@ -61,6 +62,10 @@ public class TrendServiceImpl implements TrendService { ...@@ -61,6 +62,10 @@ public class TrendServiceImpl implements TrendService {
private final BaseCrossSectionMapper baseCrossSectionMapper; private final BaseCrossSectionMapper baseCrossSectionMapper;
private final BaseCrossSchemeMapper baseCrossSchemeMapper; private final BaseCrossSchemeMapper baseCrossSchemeMapper;
private final BaseCrossPhaseMapper baseCrossPhaseMapper; private final BaseCrossPhaseMapper baseCrossPhaseMapper;
private final BaseCrossPhaseLightsMapper crossPhaseLightsMapper;
private final BaseCrossLaneLightsMapper baseCrossLaneLightsMapper;
private final CrossBaseLaneInfoMapper crossBaseLaneInfoMapper;
private final CrossTurnDataHistMapper crossTurnDataHistMapper;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
...@@ -69,7 +74,7 @@ public class TrendServiceImpl implements TrendService { ...@@ -69,7 +74,7 @@ public class TrendServiceImpl implements TrendService {
CrossTurnDataRealtimeMapper crossTurnDataRealtimeMapper, CrossTurnDataRealtimeMapper crossTurnDataRealtimeMapper,
CrossDirDataHistMapper crossDirDataHistMapper, EventAlarmMapper eventAlarmMapper, CrossDirDataHistMapper crossDirDataHistMapper, EventAlarmMapper eventAlarmMapper,
RidInfoMapper ridInfoMapper, BaseCrossDirInfoMapper baseCrossDirInfoMapper, RidInfoMapper ridInfoMapper, BaseCrossDirInfoMapper baseCrossDirInfoMapper,
CrossSchemeOptLogMapper crossSchemeOptLogMapper, GreenwaveCrossMapper greenwaveCrossMapper, CrossDirDataRealtimeMapper crossDirDataRealtimeMapper, GreenwaveHistMapper greenwaveHistMapper, GreenwaveRealtimeMapper greenwaveRealtimeMapper, SceneStrategyIdeaMapper strategyIdeaMapper, StrategyMapper strategyMapper, BaseCrossSchedulesMapper baseCrossSchedulesMapper, CrossSchedulesPlanMapper crossSchedulesPlanMapper, BaseCrossSectionMapper baseCrossSectionMapper, BaseCrossSchemeMapper crossSchemeMapper, BaseCrossSchemeMapper baseCrossSchemeMapper, BaseCrossPhaseMapper baseCrossPhaseMapper) { CrossSchemeOptLogMapper crossSchemeOptLogMapper, GreenwaveCrossMapper greenwaveCrossMapper, CrossDirDataRealtimeMapper crossDirDataRealtimeMapper, GreenwaveHistMapper greenwaveHistMapper, GreenwaveRealtimeMapper greenwaveRealtimeMapper, SceneStrategyIdeaMapper strategyIdeaMapper, StrategyMapper strategyMapper, BaseCrossSchedulesMapper baseCrossSchedulesMapper, CrossSchedulesPlanMapper crossSchedulesPlanMapper, BaseCrossSectionMapper baseCrossSectionMapper, BaseCrossSchemeMapper crossSchemeMapper, BaseCrossSchemeMapper baseCrossSchemeMapper, BaseCrossPhaseMapper baseCrossPhaseMapper, BaseCrossPhaseLightsMapper crossPhaseLightsMapper, BaseCrossLaneLightsMapper baseCrossLaneLightsMapper, CrossBaseLaneInfoMapper crossBaseLaneInfoMapper, CrossTurnDataHistMapper crossTurnDataHistMapper) {
this.greenwaveInfoMapper = greenwaveInfoMapper; this.greenwaveInfoMapper = greenwaveInfoMapper;
this.baseCrossInfoMapper = baseCrossInfoMapper; this.baseCrossInfoMapper = baseCrossInfoMapper;
this.crossDataRealtimeMapper = crossDataRealtimeMapper; this.crossDataRealtimeMapper = crossDataRealtimeMapper;
...@@ -89,6 +94,10 @@ public class TrendServiceImpl implements TrendService { ...@@ -89,6 +94,10 @@ public class TrendServiceImpl implements TrendService {
this.baseCrossSectionMapper = baseCrossSectionMapper; this.baseCrossSectionMapper = baseCrossSectionMapper;
this.baseCrossSchemeMapper = baseCrossSchemeMapper; this.baseCrossSchemeMapper = baseCrossSchemeMapper;
this.baseCrossPhaseMapper = baseCrossPhaseMapper; this.baseCrossPhaseMapper = baseCrossPhaseMapper;
this.crossPhaseLightsMapper = crossPhaseLightsMapper;
this.baseCrossLaneLightsMapper = baseCrossLaneLightsMapper;
this.crossBaseLaneInfoMapper = crossBaseLaneInfoMapper;
this.crossTurnDataHistMapper = crossTurnDataHistMapper;
} }
@Override @Override
...@@ -389,33 +398,13 @@ public class TrendServiceImpl implements TrendService { ...@@ -389,33 +398,13 @@ public class TrendServiceImpl implements TrendService {
distanceToNextCross = (int)nextCrossLen; distanceToNextCross = (int)nextCrossLen;
} }
greenwaveCross.setDistanceToNextCross(distanceToNextCross); greenwaveCross.setDistanceToNextCross(distanceToNextCross);
// 查找方向平均速度 // 计算平均速度
Double speed = calcSpeed(greenwaveCrossList, i, crossId); Double speed = calcSpeed(greenwaveCrossPO, crossId);
greenwaveCross.setSpeed(speed); greenwaveCross.setSpeed(speed);
// 获取当前方案
// 根据当前时间获取方案信息 Integer sectionId = greenwaveCrossPO.getSectionId();
Date todayDate = new Date(); CrossSectionPO crossSectionPO = baseCrossSectionMapper.selectById(sectionId);
// 获取当前执行的调度 Integer currentSchemeId = crossSectionPO.getSchemeId();
BaseCrossSchedulesPO baseCrossSchedulesPO = baseCrossSchedulesMapper.selectExecByCrossId(crossId);
Integer schedulesId = baseCrossSchedulesPO.getId();
// 获取日计划
Integer planId = null;
// 判断是否是特殊日期
CrossSchedulesPlanPO crossSchedulesPlanPO =
crossSchedulesPlanMapper.selectBySpecialDate(crossId, schedulesId, todayDate);
if (ObjectUtil.isNotEmpty(crossSchedulesPlanPO)) {
planId = crossSchedulesPlanPO.getPlanId();
} else {
// 判断是星期几
int weekday = convertWeekDay(DateUtil.dayOfWeek(todayDate));
CrossSchedulesPlanPO weekdayPlanPO =
crossSchedulesPlanMapper.selectByWeekday(crossId, schedulesId, weekday);
planId = weekdayPlanPO.getPlanId();
}
// 获取当前执行的方案
List<CrossSectionPO> baseCrossSectionPOList =
baseCrossSectionMapper.selectByCrossAndPlan(crossId, planId);
Integer currentSchemeId = findCurrentScheme(baseCrossSectionPOList, todayDate);
BaseCrossSchemePO baseCrossSchemePO = baseCrossSchemeMapper.selectById(currentSchemeId); BaseCrossSchemePO baseCrossSchemePO = baseCrossSchemeMapper.selectById(currentSchemeId);
greenwaveCross.setOffset(baseCrossSchemePO.getOffset()); greenwaveCross.setOffset(baseCrossSchemePO.getOffset());
// 构造相位时差图 // 构造相位时差图
...@@ -461,27 +450,6 @@ public class TrendServiceImpl implements TrendService { ...@@ -461,27 +450,6 @@ public class TrendServiceImpl implements TrendService {
return res; return res;
} }
private Integer findCurrentScheme(List<CrossSectionPO> baseCrossSectionPOList, Date todayDate) {
Integer schemeId = null;
for (CrossSectionPO crossSectionPO : baseCrossSectionPOList) {
String startTimeRaw = crossSectionPO.getStartTime();
String endTimeRaw = crossSectionPO.getEndTime();
String startTimeStr = startTimeRaw.replace(":", "");
String endTimeStr = endTimeRaw.replace(":", "");
int startTime = Integer.parseInt(startTimeStr);
int endTime = Integer.parseInt(endTimeStr);
String todayRaw = DateUtil.format(todayDate, "HH:mm");
String todayStr = todayRaw.replace(":", "");
int todayTime = Integer.parseInt(todayStr);
if (todayTime >= startTime && todayTime <= endTime) {
schemeId = crossSectionPO.getSchemeId();
}
}
return schemeId;
}
private int convertWeekDay(int i) { private int convertWeekDay(int i) {
if (1 == i) { if (1 == i) {
return 7; return 7;
...@@ -489,26 +457,11 @@ public class TrendServiceImpl implements TrendService { ...@@ -489,26 +457,11 @@ public class TrendServiceImpl implements TrendService {
return i - 1; return i - 1;
} }
private Double calcSpeed(List<GreenwaveCrossPO> greenwaveCrossList, int i, String currentCrossId) { private Double calcSpeed(GreenwaveCrossPO greenwaveCrossPO, String currentCrossId) {
int size = greenwaveCrossList.size(); Integer outDir = greenwaveCrossPO.getOutDir();
int lastCrossIndex = size - 1;
if (i != lastCrossIndex) { // 不是最后一个路口
GreenwaveCrossPO nextCross = greenwaveCrossList.get(i + 1);
String nextCrossId = nextCross.getCrossId();
RidInfoEntity ridInfoEntity = ridInfoMapper.selectByStartEnd(currentCrossId, nextCrossId);
Integer outDir = ridInfoEntity.getOutDir();
CrossDirDataRealtimePO crossDirDataRealtimePO = CrossDirDataRealtimePO crossDirDataRealtimePO =
crossDirDataRealtimeMapper.selectByCrossIdAndDirType(currentCrossId, outDir); crossDirDataRealtimeMapper.selectByCrossIdAndDirType(currentCrossId, outDir);
return crossDirDataRealtimePO.getSpeed(); return crossDirDataRealtimePO.getSpeed();
} else {
GreenwaveCrossPO preCross = greenwaveCrossList.get(i - 1);
String preCrossId = preCross.getCrossId();
RidInfoEntity ridInfoEntity = ridInfoMapper.selectByStartEnd(preCrossId, currentCrossId);
Integer inDir = ridInfoEntity.getInDir();
CrossDirDataRealtimePO crossDirDataRealtimePO =
crossDirDataRealtimeMapper.selectByInDir(currentCrossId, inDir);
return crossDirDataRealtimePO.getSpeed();
}
} }
@Override @Override
...@@ -535,35 +488,69 @@ public class TrendServiceImpl implements TrendService { ...@@ -535,35 +488,69 @@ public class TrendServiceImpl implements TrendService {
String currentCrossId = crossId; String currentCrossId = crossId;
long currentSeconds = timeStamp; long currentSeconds = timeStamp;
long preSeconds = currentSeconds - 60 * 5; long preSeconds = currentSeconds - 60 * 5;
// 如果不是最后一个路口 // 获取当前方案
if (i != lastCrossIndex) { Integer sectionId = greenwaveCrossPO.getSectionId();
GreenwaveCrossPO nextCross = greenwaveCrossList.get(i + 1); CrossSectionPO crossSectionPO = baseCrossSectionMapper.selectById(sectionId);
String nextCrossId = nextCross.getCrossId(); Integer schemeId = crossSectionPO.getSchemeId();
// 当前路口出口方向 // 获取协调相位对应的车道集合
Integer outDir = greenwaveCrossPO.getOutDir(); BaseCrossSchemePO baseCrossSchemePO = baseCrossSchemeMapper.selectById(schemeId);
List<CrossDirDataHistPO> listForNoPark = Integer coordPhaseID = baseCrossSchemePO.getCoordPhase();
crossDirDataHistMapper.selectNoPark(currentCrossId, outDir, currentSeconds, preSeconds); List<CrossPhaseLightsPO> crossPhaseLightsPOList = crossPhaseLightsMapper.selectByPhaseId(coordPhaseID);
List<CrossDirDataHistPO> listForPhaseQueue = List<Integer> lightIds = crossPhaseLightsPOList.stream()
crossDirDataHistMapper.selectPhaseQueue(currentCrossId, outDir, currentSeconds, preSeconds); .map(CrossPhaseLightsPO::getLightsId)
setMetrics(greenwaveCrossMetricsVO, greenwaveCrossPO, listForNoPark, listForPhaseQueue); .collect(Collectors.toList());
} else { List<CrossLaneLightsPO> crossLaneLightsPOList = baseCrossLaneLightsMapper.selectByLightIds(lightIds);
// 最后一个路口 List<String> laneIds = crossLaneLightsPOList.stream()
GreenwaveCrossPO preCross = greenwaveCrossList.get(i - 1); .map(CrossLaneLightsPO::getLaneId)
String preCrossId = preCross.getCrossId(); .collect(Collectors.toList());
// 当前路口入口方向 List<CrossBaseLaneInfoPO> lanePOList = crossBaseLaneInfoMapper.selectBatchIds(laneIds);
Integer inDir = greenwaveCrossPO.getInDir(); // 构造方向+转向列表
List<CrossDirDataHistPO> listForNoPark = List<List<Integer>> dirTurnList = new ArrayList<>();
crossDirDataHistMapper.selectNoParkEnd(currentCrossId, inDir, currentSeconds, preSeconds); for (CrossBaseLaneInfoPO lanePO : lanePOList) {
List<CrossDirDataHistPO> listForPhaseQueue = Integer dir = lanePO.getDir();
crossDirDataHistMapper.selectPhaseQueueEnd(currentCrossId, inDir, currentSeconds, preSeconds); Integer turn = lanePO.getTurn();
List<Integer> dirTurn = new ArrayList<>();
dirTurn.add(dir);
dirTurn.add(turn);
dirTurnList.add(dirTurn);
}
// 计算指标
List<CrossTurnDataHistPO> listForNoPark = new ArrayList<>();
for (List<Integer> dirTurn : dirTurnList) {
Integer dir = dirTurn.get(0);
Integer turnInt = dirTurn.get(1);
String turn = TurnConvertEnum.getCodeByKey(turnInt);
CrossTurnDataHistPO noPark =
crossTurnDataHistMapper.selectNoPark(currentCrossId, dir, turn, currentSeconds, preSeconds);
if (noPark != null) {
listForNoPark.add(noPark);
}
}
List<CrossTurnDataHistPO> allPO =
crossTurnDataHistMapper.selectByCrossId(currentCrossId, currentSeconds, preSeconds);
List<CrossTurnDataHistPO> listForPhaseQueue = getPhaseQueueList(listForNoPark, allPO);
setMetrics(greenwaveCrossMetricsVO, greenwaveCrossPO, listForNoPark, listForPhaseQueue); setMetrics(greenwaveCrossMetricsVO, greenwaveCrossPO, listForNoPark, listForPhaseQueue);
}
res.add(greenwaveCrossMetricsVO); res.add(greenwaveCrossMetricsVO);
} }
return res; return res;
} }
private List<CrossTurnDataHistPO> getPhaseQueueList(
List<CrossTurnDataHistPO> listForNoPark, List<CrossTurnDataHistPO> allPO) {
Iterator<CrossTurnDataHistPO> iterator = allPO.iterator();
while (iterator.hasNext()) {
CrossTurnDataHistPO next = iterator.next();
for (CrossTurnDataHistPO crossTurnDataHistPO : listForNoPark) {
if (Objects.equals(next.getTurnType(), crossTurnDataHistPO.getTurnType())
&& Objects.equals(next.getInDir(), crossTurnDataHistPO.getInDir())) {
iterator.remove();
}
}
}
return allPO;
}
@Override @Override
@Transactional @Transactional
public void saveGreenwaveStrategy(SaveGreenwaveStrategyBO saveGreenwaveStrategyBO) { public void saveGreenwaveStrategy(SaveGreenwaveStrategyBO saveGreenwaveStrategyBO) {
...@@ -580,7 +567,7 @@ public class TrendServiceImpl implements TrendService { ...@@ -580,7 +567,7 @@ public class TrendServiceImpl implements TrendService {
} }
private void setMetrics(GreenwaveCrossMetricsVO greenwaveCrossMetricsVO, GreenwaveCrossPO greenwaveCrossPO, private void setMetrics(GreenwaveCrossMetricsVO greenwaveCrossMetricsVO, GreenwaveCrossPO greenwaveCrossPO,
List<CrossDirDataHistPO> listForNoPark, List<CrossDirDataHistPO> listForPhaseQueue) { List<CrossTurnDataHistPO> listForNoPark, List<CrossTurnDataHistPO> listForPhaseQueue) {
if (CollectionUtil.isNotEmpty(listForNoPark) && CollectionUtil.isNotEmpty(listForPhaseQueue)) { if (CollectionUtil.isNotEmpty(listForNoPark) && CollectionUtil.isNotEmpty(listForPhaseQueue)) {
Integer noparkPassRate = getAveRate(listForNoPark); Integer noparkPassRate = getAveRate(listForNoPark);
greenwaveCrossMetricsVO.setNoparkPassRate(noparkPassRate); greenwaveCrossMetricsVO.setNoparkPassRate(noparkPassRate);
...@@ -593,9 +580,9 @@ public class TrendServiceImpl implements TrendService { ...@@ -593,9 +580,9 @@ public class TrendServiceImpl implements TrendService {
} }
} }
private Double getSpeed(List<CrossDirDataHistPO> listForNoPark) { private Double getSpeed(List<CrossTurnDataHistPO> listForNoPark) {
Double total = 0.0; Double total = 0.0;
for (CrossDirDataHistPO crossDirDataHistPO : listForNoPark) { for (CrossTurnDataHistPO crossDirDataHistPO : listForNoPark) {
Double speed = crossDirDataHistPO.getSpeed(); Double speed = crossDirDataHistPO.getSpeed();
total += speed; total += speed;
} }
...@@ -603,9 +590,9 @@ public class TrendServiceImpl implements TrendService { ...@@ -603,9 +590,9 @@ public class TrendServiceImpl implements TrendService {
return avgSpeed; return avgSpeed;
} }
private Integer getPhaseQueue(List<CrossDirDataHistPO> listForPhaseQueue) { private Integer getPhaseQueue(List<CrossTurnDataHistPO> listForPhaseQueue) {
double maxQueue = 0.0; double maxQueue = 0.0;
for (CrossDirDataHistPO crossDirDataHistPO : listForPhaseQueue) { for (CrossTurnDataHistPO crossDirDataHistPO : listForPhaseQueue) {
double queueLength = crossDirDataHistPO.getQueueLength(); double queueLength = crossDirDataHistPO.getQueueLength();
if (queueLength > maxQueue) { if (queueLength > maxQueue) {
maxQueue = queueLength; maxQueue = queueLength;
...@@ -614,9 +601,9 @@ public class TrendServiceImpl implements TrendService { ...@@ -614,9 +601,9 @@ public class TrendServiceImpl implements TrendService {
return (int)maxQueue; return (int)maxQueue;
} }
private Integer getAveRate(List<CrossDirDataHistPO> crossDirDataHistPOList) { private Integer getAveRate(List<CrossTurnDataHistPO> crossDirDataHistPOList) {
Double total = 0.0; Double total = 0.0;
for (CrossDirDataHistPO crossDirDataHistPO : crossDirDataHistPOList) { for (CrossTurnDataHistPO crossDirDataHistPO : crossDirDataHistPOList) {
Double noStopRate = crossDirDataHistPO.getNoStopRate(); Double noStopRate = crossDirDataHistPO.getNoStopRate();
total += noStopRate; total += noStopRate;
} }
......
...@@ -36,4 +36,5 @@ public interface BaseCrossLaneLightsMapper { ...@@ -36,4 +36,5 @@ public interface BaseCrossLaneLightsMapper {
List<CrossLaneLightsPO> selectByLightsId(@Param("lightsId") Integer lightsId); List<CrossLaneLightsPO> selectByLightsId(@Param("lightsId") Integer lightsId);
List<CrossLaneLightsPO> selectByLightIds(List<Integer> ids);
} }
...@@ -22,4 +22,6 @@ public interface BaseCrossSectionMapper { ...@@ -22,4 +22,6 @@ public interface BaseCrossSectionMapper {
List<CrossSectionPO> listCrossSectionPO(@Param("entity") CrossSectionPO entity); List<CrossSectionPO> listCrossSectionPO(@Param("entity") CrossSectionPO entity);
List<CrossSectionPO> selectByCrossAndPlan(String crossId, Integer planId); List<CrossSectionPO> selectByCrossAndPlan(String crossId, Integer planId);
CrossSectionPO selectById(Integer id);
} }
...@@ -17,4 +17,7 @@ public interface CrossTurnDataHistMapper extends BaseMapper<CrossTurnDataHistPO> ...@@ -17,4 +17,7 @@ public interface CrossTurnDataHistMapper extends BaseMapper<CrossTurnDataHistPO>
void insertBatch(@Param("list") List<CrossTurnDataHistPO> list); void insertBatch(@Param("list") List<CrossTurnDataHistPO> list);
void deleteBatch(@Param("list") Collection<String> crossIds); void deleteBatch(@Param("list") Collection<String> crossIds);
CrossTurnDataHistPO selectNoPark(String crossId, Integer dir, String turn, long currentSeconds, long preSeconds);
List<CrossTurnDataHistPO> selectByCrossId(String crossId, long currentSeconds, long preSeconds);
} }
...@@ -34,8 +34,6 @@ public class CrossBaseLaneInfoPO { ...@@ -34,8 +34,6 @@ public class CrossBaseLaneInfoPO {
@ApiModelProperty(name = "路段编号",notes = "") @ApiModelProperty(name = "路段编号",notes = "")
private String rid; private String rid;
@ApiModelProperty(name = "渠化编号",notes = "") @ApiModelProperty(name = "渠化编号",notes = "")
private String segmentId;
@ApiModelProperty(name = "车道长度",notes = "")
private Double length; private Double length;
@ApiModelProperty(name = "车道宽度",notes = "") @ApiModelProperty(name = "车道宽度",notes = "")
private Double width; private Double width;
......
...@@ -68,6 +68,16 @@ public class CrossTurnDataRealtimePO { ...@@ -68,6 +68,16 @@ public class CrossTurnDataRealtimePO {
/** 可信度:0~1 */ /** 可信度:0~1 */
@ApiModelProperty(name = "可信度:0~1",notes = "") @ApiModelProperty(name = "可信度:0~1",notes = "")
private Double quality ; private Double quality ;
@ApiModelProperty(name = "不停车率",notes = "")
private Double noStopRate;
@ApiModelProperty(name = "一次停车率",notes = "")
private Double oneStopRate;
@ApiModelProperty(name = "二次停车率",notes = "")
private Double twoStopRate;
@ApiModelProperty(name = "三次停车率",notes = "")
private Double threeStopRate;
/** 采集时间(10位时间戳) */ /** 采集时间(10位时间戳) */
@ApiModelProperty(name = "采集时间(10位时间戳)",notes = "") @ApiModelProperty(name = "采集时间(10位时间戳)",notes = "")
private Integer batchTime ; private Integer batchTime ;
......
...@@ -81,5 +81,15 @@ ...@@ -81,5 +81,15 @@
where lights_id = #{lightsId} where lights_id = #{lightsId}
</select> </select>
<select id="selectByLightIds" resultType="net.wanji.databus.po.CrossLaneLightsPO">
select
id,lights_id,lane_id,cross_id,gmt_create,gmt_modified
from t_base_cross_lane_lights
where lights_id in
<foreach collection="ids" item="id" separator="," open="(" close=")">
#{id}
</foreach>
</select>
</mapper> </mapper>
...@@ -57,5 +57,11 @@ ...@@ -57,5 +57,11 @@
where cross_id = #{crossId} and plan_id = #{planId} where cross_id = #{crossId} and plan_id = #{planId}
</select> </select>
<select id="selectById" resultType="net.wanji.databus.dao.entity.CrossSectionPO">
select <include refid="Base_Column_list"/>
from t_base_cross_section
where id = #{id}
</select>
</mapper> </mapper>
...@@ -28,7 +28,8 @@ ...@@ -28,7 +28,8 @@
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, turn_type, in_dir, out_dir, cross_id, flow, status, traffic_index, speed, in_speed, out_speed, queue_length, id, turn_type, in_dir, out_dir, cross_id, flow, status, traffic_index, speed, in_speed, out_speed, queue_length,
stop_times, delay_time, sturation, vehhead_dist, vehhead_time, quality, batch_time, gmt_create, gmt_modified stop_times, delay_time, sturation, vehhead_dist, vehhead_time, quality,no_stop_rate,one_stop_rate,two_stop_rate,
three_stop_rate, batch_time, gmt_create, gmt_modified
</sql> </sql>
<insert id="insertBatch" parameterType="net.wanji.databus.po.CrossTurnDataRealtimePO"> <insert id="insertBatch" parameterType="net.wanji.databus.po.CrossTurnDataRealtimePO">
...@@ -49,4 +50,20 @@ ...@@ -49,4 +50,20 @@
</foreach> </foreach>
</delete> </delete>
<select id="selectNoPark" resultType="net.wanji.databus.po.CrossTurnDataHistPO">
select <include refid="Base_Column_List"/>
from t_cross_turn_data_hist
where cross_id = #{crossId} and in_dir = #{dir} and turn_type = #{turn}
and batch_time <![CDATA[ <= ]]> #{currentSeconds}
and batch_time <![CDATA[ >= ]]> #{preSeconds}
</select>
<select id="selectByCrossId" resultType="net.wanji.databus.po.CrossTurnDataHistPO">
select <include refid="Base_Column_List"/>
from t_cross_turn_data_hist
where cross_id = #{crossId}
and batch_time <![CDATA[ <= ]]> #{currentSeconds}
and batch_time <![CDATA[ >= ]]> #{preSeconds}
</select>
</mapper> </mapper>
\ No newline at end of file
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