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;
import net.wanji.opt.bo.CurveChartBO.DirTurn;
import net.wanji.opt.bo.ProblemSchemeBO;
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.SceneStrategyMapper;
import net.wanji.opt.dao.mapper.strategy.StrategyMapper;
......@@ -59,6 +60,7 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
private final BaseCrossDirInfoMapper baseCrossDirInfoMapper;
private final CrossTurnDataHistMapper crossTurnDataHistMapper;
private final BaseCrossTurnInfoMapper baseCrossTurnInfoMapper;
private final HoloEventMapper holoEventMapper;
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat timeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
......@@ -75,7 +77,7 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
CrossDataRealtimeMapper crossDataRealtimeMapper, CrossDirDataHistMapper crossDirDataHistMapper,
@Qualifier("baseCrossDirInfoMapper") BaseCrossDirInfoMapper baseCrossDirInfoMapper,
CrossTurnDataHistMapper crossTurnDataHistMapper,
@Qualifier("baseCrossTurnInfoMapper") BaseCrossTurnInfoMapper baseCrossTurnInfoMapper) {
@Qualifier("baseCrossTurnInfoMapper") BaseCrossTurnInfoMapper baseCrossTurnInfoMapper, @Qualifier("holoEventMapper") HoloEventMapper holoEventMapper) {
this.crossDataHistMapper = crossDataHistMapper;
this.runningEvaluateService = runningEvaluateService;
this.baseCrossSectionMapper = baseCrossSectionMapper;
......@@ -90,6 +92,7 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
this.baseCrossDirInfoMapper = baseCrossDirInfoMapper;
this.crossTurnDataHistMapper = crossTurnDataHistMapper;
this.baseCrossTurnInfoMapper = baseCrossTurnInfoMapper;
this.holoEventMapper = holoEventMapper;
}
@Override
......@@ -360,7 +363,12 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
List<String> laneIds = baseCrossDirInfoMapper.selectLaneIds(crossId, dirInt);
// 查询该方向,该时段内全量数据
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()
......@@ -405,7 +413,12 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
List<String> laneIds = baseCrossTurnInfoMapper.selectLaneIds(crossId, dirInt, intTurnCode);
// 查询该方向,该转向,该时段内全量数据
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()
......@@ -526,8 +539,8 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
// 查询该方向所有的车道ID
List<String> laneIds = baseCrossDirInfoMapper.selectLaneIds(crossId, dirCode);
// 加总该方向的三急一速
Integer emergencyCount = baseCrossDirInfoMapper.selectDirEmergencyCount(
crossId, laneIds, startTimeStamp, endTimeStamp);
Integer emergencyCount = holoEventMapper.selectEmergencyCountWithLaneIds(
crossId, startTimeStamp, endTimeStamp, laneIds);
metricsMap.put(StrategyAndMetricsEnum.Metrics.EMERGENCY_COUNT.getCode(),
emergencyCount + StrategyAndMetricsEnum.Metrics.EMERGENCY_COUNT.getUnit());
......@@ -605,8 +618,8 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
Integer intTurnCode = BaseEnum.TurnTypeEnum.getIntCodeByStrCode(turnType);
List<String> laneIds = baseCrossTurnInfoMapper.selectLaneIds(crossId, dirCode, intTurnCode);
// 加总该转向的三急一速
Integer emergencyCount = baseCrossTurnInfoMapper.selectTurnEmergencyCount(
crossId, laneIds, startTimeStamp, endTimeStamp);
Integer emergencyCount = holoEventMapper.selectEmergencyCountWithLaneIds(
crossId, startTimeStamp, endTimeStamp, laneIds);
metricsMap.put(StrategyAndMetricsEnum.Metrics.EMERGENCY_COUNT.getCode(),
emergencyCount + StrategyAndMetricsEnum.Metrics.EMERGENCY_COUNT.getUnit());
......@@ -984,7 +997,7 @@ public class SchemeEvaluateServiceImpl implements SchemeEvaluateService {
overallMetricsList.add(overallMetrics);
}
// 路口级别三急一速数量
Integer emergencyCount = crossDataHistMapper.selectCrossEmergencyCount(crossId, startTimeStamp, endTimeStamp);
Integer emergencyCount = holoEventMapper.selectCrossEmergencyCount(crossId, startTimeStamp, endTimeStamp);
SchemeEvaluateSchemeDetailOverallVO.OverallMetrics overallMetrics =
buildEmergencyCountOverallMetrics(emergencyCount);
overallMetricsList.add(overallMetrics);
......
......@@ -21,6 +21,12 @@ spring:
username: root
password: Wanji300552
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:
host: 37.12.182.29
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 {
List<String> selectLaneIds(String crossId, Integer dirCode);
Integer selectDirEmergencyCount(String crossId, List<String> laneIds, int startTimeStamp, int endTimeStamp);
List<BaseCrossDirInfoPO> selectByInOutType(Integer code);
}
......@@ -12,5 +12,4 @@ public interface BaseCrossTurnInfoMapper {
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> {
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> selectByStartEnd(int startStamp, int endStamp);
......
......@@ -48,7 +48,7 @@ public interface CrossDirDataHistMapper extends BaseMapper<CrossDirDataHistPO> {
@Param("code")Integer code, @Param("startTimeStamp") int startTimeStamp,
@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);
......
......@@ -25,7 +25,7 @@ public interface CrossTurnDataHistMapper extends BaseMapper<CrossTurnDataHistPO>
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);
}
......@@ -38,28 +38,6 @@
where cross_id = #{crossId} and dir = #{dirCode} and type = 2
</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 <include refid="baseColumnList"></include>
from t_base_cross_dir_info
......
......@@ -18,28 +18,4 @@
where cross_id = #{crossId} and dir = #{dirCode} and turn = #{intTurnCode}
</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>
......@@ -103,15 +103,6 @@
and batch_time <![CDATA[ <= ]]> #{endStamp}
</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 <include refid="Base_Column_List"></include>
from t_cross_data_hist
......
......@@ -162,27 +162,7 @@
</select>
<select id="selectByMetrics" resultType="net.wanji.databus.po.CrossDirDataHistPOExt">
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
SELECT <include refid="Base_Column_List"/>
FROM t_cross_dir_data_hist
WHERE cross_id = #{crossId}
AND in_out_type = 1
......
......@@ -88,27 +88,7 @@
</select>
<select id="selectByMetrics" resultType="net.wanji.databus.po.CrossTurnDataHistPOExt">
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
SELECT <include refid="Base_Column_List"/>
FROM t_cross_turn_data_hist
WHERE cross_id = #{crossId}
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