Commit 771c0a9a authored by hanbing's avatar hanbing

[update] 动态切换全息数据库数据源

parent 7bf33daf
package net.wanji.opt.dao.mapper;
import com.baomidou.dynamic.datasource.annotation.DS;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author duanruiming
* @date 2023/01/31 18:32
*/
@Repository
@DS("holo")
public interface HoloEventMapper {
Integer selectCrossEmergencyCount(String crossId, int startStamp, int endStamp);
Integer selectEmergencyCountWithLaneIds(String crossId, int startStamp, int endStamp, List<String> laneIds);
}
...@@ -19,6 +19,7 @@ import net.wanji.opt.bo.CurveChartBO; ...@@ -19,6 +19,7 @@ import net.wanji.opt.bo.CurveChartBO;
import net.wanji.opt.bo.CurveChartBO.DirTurn; import net.wanji.opt.bo.CurveChartBO.DirTurn;
import net.wanji.opt.bo.ProblemSchemeBO; import net.wanji.opt.bo.ProblemSchemeBO;
import net.wanji.opt.bo.SchemeDetailOverallBO; import net.wanji.opt.bo.SchemeDetailOverallBO;
import net.wanji.opt.dao.mapper.HoloEventMapper;
import net.wanji.opt.dao.mapper.strategy.SceneMapper; import net.wanji.opt.dao.mapper.strategy.SceneMapper;
import net.wanji.opt.dao.mapper.strategy.SceneStrategyMapper; import net.wanji.opt.dao.mapper.strategy.SceneStrategyMapper;
import net.wanji.opt.dao.mapper.strategy.StrategyMapper; import net.wanji.opt.dao.mapper.strategy.StrategyMapper;
...@@ -59,6 +60,7 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService { ...@@ -59,6 +60,7 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
private final BaseCrossDirInfoMapper baseCrossDirInfoMapper; private final BaseCrossDirInfoMapper baseCrossDirInfoMapper;
private final CrossTurnDataHistMapper crossTurnDataHistMapper; private final CrossTurnDataHistMapper crossTurnDataHistMapper;
private final BaseCrossTurnInfoMapper baseCrossTurnInfoMapper; private final BaseCrossTurnInfoMapper baseCrossTurnInfoMapper;
private final HoloEventMapper holoEventMapper;
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat timeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); SimpleDateFormat timeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
...@@ -75,7 +77,7 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService { ...@@ -75,7 +77,7 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
CrossDataRealtimeMapper crossDataRealtimeMapper, CrossDirDataHistMapper crossDirDataHistMapper, CrossDataRealtimeMapper crossDataRealtimeMapper, CrossDirDataHistMapper crossDirDataHistMapper,
@Qualifier("baseCrossDirInfoMapper") BaseCrossDirInfoMapper baseCrossDirInfoMapper, @Qualifier("baseCrossDirInfoMapper") BaseCrossDirInfoMapper baseCrossDirInfoMapper,
CrossTurnDataHistMapper crossTurnDataHistMapper, CrossTurnDataHistMapper crossTurnDataHistMapper,
@Qualifier("baseCrossTurnInfoMapper") BaseCrossTurnInfoMapper baseCrossTurnInfoMapper) { @Qualifier("baseCrossTurnInfoMapper") BaseCrossTurnInfoMapper baseCrossTurnInfoMapper, @Qualifier("holoEventMapper") HoloEventMapper holoEventMapper) {
this.crossDataHistMapper = crossDataHistMapper; this.crossDataHistMapper = crossDataHistMapper;
this.runningEvaluateService = runningEvaluateService; this.runningEvaluateService = runningEvaluateService;
this.baseCrossSectionMapper = baseCrossSectionMapper; this.baseCrossSectionMapper = baseCrossSectionMapper;
...@@ -90,6 +92,7 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService { ...@@ -90,6 +92,7 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
this.baseCrossDirInfoMapper = baseCrossDirInfoMapper; this.baseCrossDirInfoMapper = baseCrossDirInfoMapper;
this.crossTurnDataHistMapper = crossTurnDataHistMapper; this.crossTurnDataHistMapper = crossTurnDataHistMapper;
this.baseCrossTurnInfoMapper = baseCrossTurnInfoMapper; this.baseCrossTurnInfoMapper = baseCrossTurnInfoMapper;
this.holoEventMapper = holoEventMapper;
} }
@Override @Override
...@@ -360,7 +363,12 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService { ...@@ -360,7 +363,12 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
List<String> laneIds = baseCrossDirInfoMapper.selectLaneIds(crossId, dirInt); List<String> laneIds = baseCrossDirInfoMapper.selectLaneIds(crossId, dirInt);
// 查询该方向,该时段内全量数据 // 查询该方向,该时段内全量数据
List<CrossDirDataHistPOExt> crossDirDataHistPOList = crossDirDataHistMapper.selectByMetrics( List<CrossDirDataHistPOExt> crossDirDataHistPOList = crossDirDataHistMapper.selectByMetrics(
crossId, dirInt, startTimeStamp, endTimeStamp, laneIds); crossId, dirInt, startTimeStamp, endTimeStamp);
Integer emergencyCount = holoEventMapper.selectEmergencyCountWithLaneIds(
crossId, startTimeStamp, endTimeStamp, laneIds);
for (CrossDirDataHistPOExt po : crossDirDataHistPOList) {
po.setEmergencyCount(emergencyCount);
}
// 按时间段分组 // 按时间段分组
Map<String, List<CrossDirDataHistPOExt>> groupedByTime = crossDirDataHistPOList.stream() Map<String, List<CrossDirDataHistPOExt>> groupedByTime = crossDirDataHistPOList.stream()
...@@ -405,7 +413,12 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService { ...@@ -405,7 +413,12 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
List<String> laneIds = baseCrossTurnInfoMapper.selectLaneIds(crossId, dirInt, intTurnCode); List<String> laneIds = baseCrossTurnInfoMapper.selectLaneIds(crossId, dirInt, intTurnCode);
// 查询该方向,该转向,该时段内全量数据 // 查询该方向,该转向,该时段内全量数据
List<CrossTurnDataHistPOExt> crossTurnDataHistPOList = crossTurnDataHistMapper.selectByMetrics( List<CrossTurnDataHistPOExt> crossTurnDataHistPOList = crossTurnDataHistMapper.selectByMetrics(
crossId, dirInt, turnType, startTimeStamp, endTimeStamp, laneIds); crossId, dirInt, turnType, startTimeStamp, endTimeStamp);
Integer emergencyCount = holoEventMapper.selectEmergencyCountWithLaneIds(
crossId, startTimeStamp, endTimeStamp, laneIds);
for (CrossTurnDataHistPOExt crossTurnDataHistPOExt : crossTurnDataHistPOList) {
crossTurnDataHistPOExt.setEmergencyCount(emergencyCount);
}
// 按时间段分组 // 按时间段分组
Map<String, List<CrossTurnDataHistPOExt>> groupedByTime = crossTurnDataHistPOList.stream() Map<String, List<CrossTurnDataHistPOExt>> groupedByTime = crossTurnDataHistPOList.stream()
...@@ -526,8 +539,8 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService { ...@@ -526,8 +539,8 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
// 查询该方向所有的车道ID // 查询该方向所有的车道ID
List<String> laneIds = baseCrossDirInfoMapper.selectLaneIds(crossId, dirCode); List<String> laneIds = baseCrossDirInfoMapper.selectLaneIds(crossId, dirCode);
// 加总该方向的三急一速 // 加总该方向的三急一速
Integer emergencyCount = baseCrossDirInfoMapper.selectDirEmergencyCount( Integer emergencyCount = holoEventMapper.selectEmergencyCountWithLaneIds(
crossId, laneIds, startTimeStamp, endTimeStamp); crossId, startTimeStamp, endTimeStamp, laneIds);
metricsMap.put(StrategyAndMetricsEnum.Metrics.EMERGENCY_COUNT.getCode(), metricsMap.put(StrategyAndMetricsEnum.Metrics.EMERGENCY_COUNT.getCode(),
emergencyCount + StrategyAndMetricsEnum.Metrics.EMERGENCY_COUNT.getUnit()); emergencyCount + StrategyAndMetricsEnum.Metrics.EMERGENCY_COUNT.getUnit());
...@@ -605,8 +618,8 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService { ...@@ -605,8 +618,8 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
Integer intTurnCode = BaseEnum.TurnTypeEnum.getIntCodeByStrCode(turnType); Integer intTurnCode = BaseEnum.TurnTypeEnum.getIntCodeByStrCode(turnType);
List<String> laneIds = baseCrossTurnInfoMapper.selectLaneIds(crossId, dirCode, intTurnCode); List<String> laneIds = baseCrossTurnInfoMapper.selectLaneIds(crossId, dirCode, intTurnCode);
// 加总该转向的三急一速 // 加总该转向的三急一速
Integer emergencyCount = baseCrossTurnInfoMapper.selectTurnEmergencyCount( Integer emergencyCount = holoEventMapper.selectEmergencyCountWithLaneIds(
crossId, laneIds, startTimeStamp, endTimeStamp); crossId, startTimeStamp, endTimeStamp, laneIds);
metricsMap.put(StrategyAndMetricsEnum.Metrics.EMERGENCY_COUNT.getCode(), metricsMap.put(StrategyAndMetricsEnum.Metrics.EMERGENCY_COUNT.getCode(),
emergencyCount + StrategyAndMetricsEnum.Metrics.EMERGENCY_COUNT.getUnit()); emergencyCount + StrategyAndMetricsEnum.Metrics.EMERGENCY_COUNT.getUnit());
...@@ -984,7 +997,7 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService { ...@@ -984,7 +997,7 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
overallMetricsList.add(overallMetrics); overallMetricsList.add(overallMetrics);
} }
// 路口级别三急一速数量 // 路口级别三急一速数量
Integer emergencyCount = crossDataHistMapper.selectCrossEmergencyCount(crossId, startTimeStamp, endTimeStamp); Integer emergencyCount = holoEventMapper.selectCrossEmergencyCount(crossId, startTimeStamp, endTimeStamp);
SchemeEvaluateSchemeDetailOverallVO.OverallMetrics overallMetrics = SchemeEvaluateSchemeDetailOverallVO.OverallMetrics overallMetrics =
buildEmergencyCountOverallMetrics(emergencyCount); buildEmergencyCountOverallMetrics(emergencyCount);
overallMetricsList.add(overallMetrics); overallMetricsList.add(overallMetrics);
......
...@@ -21,6 +21,12 @@ spring: ...@@ -21,6 +21,12 @@ spring:
username: root username: root
password: Wanji300552 password: Wanji300552
driverClassName: com.mysql.cj.jdbc.Driver driverClassName: com.mysql.cj.jdbc.Driver
holo:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://37.12.182.29:3306/holo_roadnet?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&sessionVariables=sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'&useSSL=false&useCursorFetch=true
username: root
password: Wanji300552
driverClassName: com.mysql.cj.jdbc.Driver
redis: redis:
host: 37.12.182.29 host: 37.12.182.29
port: 14728 port: 14728
......
<?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.opt.dao.mapper.HoloEventMapper">
<select id="selectCrossEmergencyCount" resultType="java.lang.Integer">
SELECT COUNT(*)
FROM t_event_info
WHERE type IN ('33', '34', '35', '6')
AND UNIX_TIMESTAMP(start_time) <![CDATA[ >= ]]> #{startStamp}
AND UNIX_TIMESTAMP(start_time) <![CDATA[ <= ]]> #{endStamp}
AND cross_id = #{crossId}
</select>
<select id="selectEmergencyCountWithLaneIds" resultType="java.lang.Integer">
<choose>
<when test="laneIds != null and laneIds.size() > 0">
(
SELECT COUNT(*)
FROM t_event_info
WHERE type IN ('33', '34', '35', '6')
AND UNIX_TIMESTAMP(start_time) <![CDATA[ >= ]]> #{startStamp}
AND UNIX_TIMESTAMP(start_time) <![CDATA[ <= ]]> #{endStamp}
AND cross_id = #{crossId}
AND lane_id IN
<foreach collection="laneIds" item="id" separator="," open="(" close=")">
#{id}
</foreach>
)
</when>
<otherwise>
0
</otherwise>
</choose>
</select>
</mapper>
\ No newline at end of file
...@@ -23,7 +23,5 @@ public interface BaseCrossDirInfoMapper { ...@@ -23,7 +23,5 @@ public interface BaseCrossDirInfoMapper {
List<String> selectLaneIds(String crossId, Integer dirCode); List<String> selectLaneIds(String crossId, Integer dirCode);
Integer selectDirEmergencyCount(String crossId, List<String> laneIds, int startTimeStamp, int endTimeStamp);
List<BaseCrossDirInfoPO> selectByInOutType(Integer code); List<BaseCrossDirInfoPO> selectByInOutType(Integer code);
} }
...@@ -12,5 +12,4 @@ public interface BaseCrossTurnInfoMapper { ...@@ -12,5 +12,4 @@ public interface BaseCrossTurnInfoMapper {
List<String> selectLaneIds(String crossId, Integer dirCode, Integer intTurnCode); List<String> selectLaneIds(String crossId, Integer dirCode, Integer intTurnCode);
Integer selectTurnEmergencyCount(String crossId, List<String> laneIds, int startTimeStamp, int endTimeStamp);
} }
...@@ -27,8 +27,6 @@ public interface CrossDataHistMapper extends BaseMapper<CrossDataHistPO> { ...@@ -27,8 +27,6 @@ public interface CrossDataHistMapper extends BaseMapper<CrossDataHistPO> {
Double selectMaxSaturation(String crossId, int startStamp, int endStamp); Double selectMaxSaturation(String crossId, int startStamp, int endStamp);
Integer selectCrossEmergencyCount(String crossId, int startStamp, int endStamp);
List<CrossDataHistPO> selectByCrossIdsAndTimestamp(List<String> crossIdList, int startTimeStamp, int endTimeStamp); List<CrossDataHistPO> selectByCrossIdsAndTimestamp(List<String> crossIdList, int startTimeStamp, int endTimeStamp);
List<CrossDataHistPO> selectByStartEnd(int startStamp, int endStamp); List<CrossDataHistPO> selectByStartEnd(int startStamp, int endStamp);
......
...@@ -48,7 +48,7 @@ public interface CrossDirDataHistMapper extends BaseMapper<CrossDirDataHistPO> { ...@@ -48,7 +48,7 @@ public interface CrossDirDataHistMapper extends BaseMapper<CrossDirDataHistPO> {
@Param("code")Integer code, @Param("startTimeStamp") int startTimeStamp, @Param("code")Integer code, @Param("startTimeStamp") int startTimeStamp,
@Param("endTimeStamp") int endTimeStamp); @Param("endTimeStamp") int endTimeStamp);
List<CrossDirDataHistPOExt> selectByMetrics(String crossId, int dirInt, int startTimeStamp, int endTimeStamp, List<String> laneIds); List<CrossDirDataHistPOExt> selectByMetrics(String crossId, int dirInt, int startTimeStamp, int endTimeStamp);
List<CrossDirDataHistPO> selectByCrossIdsDirsAndTimestamp(List<String> crossIdList, List<Integer> dirCodeList, int startTimeStamp, int endTimeStamp); List<CrossDirDataHistPO> selectByCrossIdsDirsAndTimestamp(List<String> crossIdList, List<Integer> dirCodeList, int startTimeStamp, int endTimeStamp);
......
...@@ -25,7 +25,7 @@ public interface CrossTurnDataHistMapper extends BaseMapper<CrossTurnDataHistPO> ...@@ -25,7 +25,7 @@ public interface CrossTurnDataHistMapper extends BaseMapper<CrossTurnDataHistPO>
List<MetricHistDTO> selectMetricHistDTO(String crossId, int startStamp, int endStamp, int dir, String turn); List<MetricHistDTO> selectMetricHistDTO(String crossId, int startStamp, int endStamp, int dir, String turn);
List<CrossTurnDataHistPOExt> selectByMetrics(String crossId, int dirInt, String turnType, int startTimeStamp, int endTimeStamp, List<String> laneIds); List<CrossTurnDataHistPOExt> selectByMetrics(String crossId, int dirInt, String turnType, int startTimeStamp, int endTimeStamp);
List<CrossTurnDataHistPO> selectByCrossIdAndDir(String crossId, Integer dir, long endTimeStamp, long startTimeStamp); List<CrossTurnDataHistPO> selectByCrossIdAndDir(String crossId, Integer dir, long endTimeStamp, long startTimeStamp);
} }
...@@ -38,28 +38,6 @@ ...@@ -38,28 +38,6 @@
where cross_id = #{crossId} and dir = #{dirCode} and type = 2 where cross_id = #{crossId} and dir = #{dirCode} and type = 2
</select> </select>
<select id="selectDirEmergencyCount" resultType="java.lang.Integer">
<choose>
<when test="laneIds != null and laneIds.size() > 0">
(
SELECT COUNT(*)
FROM holo_roadnet_jinan.t_event_info
WHERE type IN ('33', '34', '35', '6')
AND UNIX_TIMESTAMP(start_time) <![CDATA[ >= ]]> #{startTimeStamp}
AND UNIX_TIMESTAMP(start_time) <![CDATA[ <= ]]> #{endTimeStamp}
AND cross_id = #{crossId}
AND lane_id IN
<foreach collection="laneIds" item="id" separator="," open="(" close=")">
#{id}
</foreach>
)
</when>
<otherwise>
0
</otherwise>
</choose>
</select>
<select id="selectByInOutType" resultType="net.wanji.databus.dao.entity.BaseCrossDirInfoPO"> <select id="selectByInOutType" resultType="net.wanji.databus.dao.entity.BaseCrossDirInfoPO">
select <include refid="baseColumnList"></include> select <include refid="baseColumnList"></include>
from t_base_cross_dir_info from t_base_cross_dir_info
......
...@@ -18,28 +18,4 @@ ...@@ -18,28 +18,4 @@
where cross_id = #{crossId} and dir = #{dirCode} and turn = #{intTurnCode} where cross_id = #{crossId} and dir = #{dirCode} and turn = #{intTurnCode}
</select> </select>
<select id="selectTurnEmergencyCount" resultType="java.lang.Integer">
<choose>
<when test="laneIds != null and laneIds.size() > 0">
(
SELECT COUNT(*)
FROM holo_roadnet_jinan.t_event_info
WHERE type IN ('33', '34', '35', '6')
AND UNIX_TIMESTAMP(start_time) <![CDATA[ >= ]]> #{startTimeStamp}
AND UNIX_TIMESTAMP(start_time) <![CDATA[ <= ]]> #{endTimeStamp}
AND cross_id = #{crossId}
AND lane_id IN
<foreach collection="laneIds" item="id" separator="," open="(" close=")">
#{id}
</foreach>
)
</when>
<otherwise>
0
</otherwise>
</choose>
</select>
</mapper> </mapper>
...@@ -103,15 +103,6 @@ ...@@ -103,15 +103,6 @@
and batch_time <![CDATA[ <= ]]> #{endStamp} and batch_time <![CDATA[ <= ]]> #{endStamp}
</select> </select>
<select id="selectCrossEmergencyCount" resultType="java.lang.Integer">
SELECT COUNT(*)
FROM holo_roadnet_jinan.t_event_info
WHERE type IN ('33', '34', '35', '6')
AND UNIX_TIMESTAMP(start_time) <![CDATA[ >= ]]> #{startStamp}
AND UNIX_TIMESTAMP(start_time) <![CDATA[ <= ]]> #{endStamp}
AND cross_id = #{crossId}
</select>
<select id="selectByCrossIdsAndTimestamp" resultType="net.wanji.databus.po.CrossDataHistPO"> <select id="selectByCrossIdsAndTimestamp" resultType="net.wanji.databus.po.CrossDataHistPO">
select <include refid="Base_Column_List"></include> select <include refid="Base_Column_List"></include>
from t_cross_data_hist from t_cross_data_hist
......
...@@ -162,27 +162,7 @@ ...@@ -162,27 +162,7 @@
</select> </select>
<select id="selectByMetrics" resultType="net.wanji.databus.po.CrossDirDataHistPOExt"> <select id="selectByMetrics" resultType="net.wanji.databus.po.CrossDirDataHistPOExt">
SELECT <include refid="Base_Column_List"/>, SELECT <include refid="Base_Column_List"/>
<choose>
<when test="laneIds != null and laneIds.size() > 0">
(
SELECT COUNT(*)
FROM holo_roadnet_jinan.t_event_info
WHERE type IN ('33', '34', '35', '6')
AND UNIX_TIMESTAMP(start_time) <![CDATA[ >= ]]> #{startTimeStamp}
AND UNIX_TIMESTAMP(start_time) <![CDATA[ <= ]]> #{endTimeStamp}
AND cross_id = #{crossId}
AND lane_id IN
<foreach collection="laneIds" item="id" separator="," open="(" close=")">
#{id}
</foreach>
)
</when>
<otherwise>
0
</otherwise>
</choose>
AS emergencyCount
FROM t_cross_dir_data_hist FROM t_cross_dir_data_hist
WHERE cross_id = #{crossId} WHERE cross_id = #{crossId}
AND in_out_type = 1 AND in_out_type = 1
......
...@@ -88,27 +88,7 @@ ...@@ -88,27 +88,7 @@
</select> </select>
<select id="selectByMetrics" resultType="net.wanji.databus.po.CrossTurnDataHistPOExt"> <select id="selectByMetrics" resultType="net.wanji.databus.po.CrossTurnDataHistPOExt">
SELECT <include refid="Base_Column_List"/>, SELECT <include refid="Base_Column_List"/>
<choose>
<when test="laneIds != null and laneIds.size() > 0">
(
SELECT COUNT(*)
FROM holo_roadnet_jinan.t_event_info
WHERE type IN ('33', '34', '35', '6')
AND UNIX_TIMESTAMP(start_time) <![CDATA[ >= ]]> #{startTimeStamp}
AND UNIX_TIMESTAMP(start_time) <![CDATA[ <= ]]> #{endTimeStamp}
AND cross_id = #{crossId}
AND lane_id IN
<foreach collection="laneIds" item="id" separator="," open="(" close=")">
#{id}
</foreach>
)
</when>
<otherwise>
0
</otherwise>
</choose>
AS emergencyCount
FROM t_cross_turn_data_hist FROM t_cross_turn_data_hist
WHERE cross_id = #{crossId} WHERE cross_id = #{crossId}
AND turn_type = #{turnType} AND turn_type = #{turnType}
......
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