Commit 1d458ba7 authored by duwei's avatar duwei

转向级查询代码优化

parent f0fbb621
//package net.wanji.opt.dto;
//
//import lombok.Data;
//
///**
// * 交通指标车道级查询条件
// */
//@Data
//public class Condition {
// //方向
// private Integer inDir;
// //转向
// private String turnType;
//
// public Condition(Integer inDir, String turnType) {
// this.inDir = inDir;
// this.turnType = turnType;
// }
//}
......@@ -34,10 +34,7 @@ import net.wanji.opt.dao.mapper.strategy.SceneStrategyMapper;
import net.wanji.opt.dao.mapper.strategy.StrategyMapper;
import net.wanji.opt.dao.mapper.trend.AnalysisRidTurnIndicatorsMapper;
import net.wanji.opt.dao.mapper.trend.EventAlarmMapper;
import net.wanji.opt.dto.CrossEventDTO;
import net.wanji.opt.dto.CrossLaneSnapshotDataDTO;
import net.wanji.opt.dto.LineCongestion;
import net.wanji.opt.dto.LineSchemeDTO;
import net.wanji.opt.dto.*;
import net.wanji.opt.dto.export.CrossMapping;
import net.wanji.opt.dto.export.DirMapping;
import net.wanji.opt.dto.export.LaneMapping;
......@@ -2711,6 +2708,11 @@ public class TrendServiceImpl implements TrendService {
if (!StringUtils.isBlank(inDir)) {
inDirList = Arrays.stream(inDir.split(",")).map(Integer::parseInt).collect(Collectors.toList());
}
//方向、转向条件
List<Condition> conditionList = new ArrayList<>();
for (int i = 0; i < turnTypeList.size(); i++) {
conditionList.add(new Condition(inDirList.get(i), turnTypeList.get(i)));
}
//分析粒度【5m:五分钟 10m:10分钟 30m:30分钟 1h:一小时】
String granularity = turnVO.getGranularity();
......@@ -2721,7 +2723,8 @@ public class TrendServiceImpl implements TrendService {
}
// 查询周期数据
List<CrossTurnDataHistVO> vo = crossTurnDataHistMapper.selectByCrossIdTurn(crossId, startTime, endTime, granularity, turnTypeList, inDirList);
List<CrossTurnDataHistVO> vo = crossTurnDataHistMapper.selectByCrossIdTurn(crossId, startTime, endTime
, granularity, turnTypeList, inDirList, conditionList);
return buildCrossingTurnCycleData(crossId, vo);
} catch (Exception e) {
log.error("全是周期车道数据方向转向查询异常:", e);
......@@ -3136,6 +3139,11 @@ public class TrendServiceImpl implements TrendService {
if (!StringUtils.isBlank(inDir)) {
inDirList = Arrays.stream(inDir.split(",")).map(Integer::parseInt).collect(Collectors.toList());
}
//方向、转向条件
List<Condition> conditionList = new ArrayList<>();
for (int i = 0; i < turnTypeList.size(); i++) {
conditionList.add(new Condition(inDirList.get(i), turnTypeList.get(i)));
}
//分析粒度【5m:五分钟 10m:10分钟 30m:30分钟 1h:一小时】
String granularity = turnVO.getGranularity();
......@@ -3146,7 +3154,8 @@ public class TrendServiceImpl implements TrendService {
}
// 查询周期数据
List<CrossTurnDataHistVO> vo = crossTurnDataHistMapper.selectByCrossIdTurn(crossId, startTime, endTime, granularity, turnTypeList, inDirList);
List<CrossTurnDataHistVO> vo = crossTurnDataHistMapper.selectByCrossIdTurn(crossId, startTime, endTime
, granularity, turnTypeList, inDirList, conditionList);
List<CrossingTurnQueryVO.CycleDataElement> result = buildCrossingTurnCycleData(crossId, vo);
// 判断是否需要导出全部字段
......
......@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import net.wanji.databus.dto.MetricHistDTO;
import net.wanji.databus.po.CrossTurnDataHistPO;
import net.wanji.databus.po.CrossTurnDataHistPOExt;
import net.wanji.databus.vo.Condition;
import net.wanji.databus.vo.CrossTurnDataHistVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
......@@ -34,7 +35,8 @@ public interface CrossTurnDataHistMapper extends BaseMapper<CrossTurnDataHistPO>
* @param inDir
* @return
*/
List<CrossTurnDataHistVO> selectByCrossIdTurn(String crossId, String startStamp, String endStamp, String granularity, List<String> turnTypeList , List<Integer> inDirList);
List<CrossTurnDataHistVO> selectByCrossIdTurn(String crossId, String startStamp, String endStamp, String granularity
, List<String> turnTypeList , List<Integer> inDirList, List<Condition> conditionList);
List<MetricHistDTO> selectMetricHistDTO(String crossId, int startStamp, int endStamp, int dir, String turn);
......
package net.wanji.databus.vo;
import lombok.Data;
/**
* 交通指标车道级查询条件
*/
@Data
public class Condition {
//方向
private Integer inDir;
//转向
private String turnType;
public Condition(Integer inDir, String turnType) {
this.inDir = inDir;
this.turnType = turnType;
}
}
......@@ -124,19 +124,13 @@
<if test="crossId != null">
AND t2.cross_id = #{crossId}
</if>
<if test="inDirList != null">
AND t2.in_dir IN
<foreach item="inDir" index="index" collection="inDirList"
open="(" separator="," close=")">
#{inDir}
</foreach>
</if>
<if test="turnTypeList != null">
AND t2.turn_type IN
<foreach item="turnType" index="index" collection="turnTypeList"
open="(" separator="," close=")">
#{turnType}
<if test="conditionList != null and !conditionList.isEmpty()">
AND (
<foreach collection="conditionList" item="cond" separator=" OR ">
(t2.in_dir = #{cond.inDir} AND t2.turn_type = #{cond.turnType})
</foreach>
)
</if>
and t2.start_time <![CDATA[ >= ]]> #{startStamp}
and t2.start_time <![CDATA[ <= ]]> #{endStamp}
......
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