Commit 8ebc081a authored by hanbing's avatar hanbing

[add] 干线评价-新增绿波场景关系表

parent b1f567d3
...@@ -21,4 +21,6 @@ public interface SceneMapper { ...@@ -21,4 +21,6 @@ public interface SceneMapper {
List<ScenePO> selectByNameAndTarget(String sceneName, Integer sceneTarget); List<ScenePO> selectByNameAndTarget(String sceneName, Integer sceneTarget);
ScenePO selectBySceneNum(Integer status); ScenePO selectBySceneNum(Integer status);
ScenePO selectById(Integer sceneId);
} }
...@@ -19,4 +19,6 @@ public interface SceneStrategyMapper { ...@@ -19,4 +19,6 @@ public interface SceneStrategyMapper {
List<SceneStrategyPO> selectBySceneId(Integer sceneId); List<SceneStrategyPO> selectBySceneId(Integer sceneId);
void deleteByStrategyIds(List<Integer> ids); void deleteByStrategyIds(List<Integer> ids);
List<Integer> selectSceneIdsByStrategyId(Integer strategyId);
} }
...@@ -30,7 +30,7 @@ public interface StrategyMapper { ...@@ -30,7 +30,7 @@ public interface StrategyMapper {
List<StrategyPO> selectByGreenwaveId(Integer greenwaveId); List<StrategyPO> selectByGreenwaveId(Integer greenwaveId);
void deleteGreenwave(Integer greenwaveId);
void insertGreenwave(Integer greenwaveId, Integer strategyId); void insertGreenwave(Integer greenwaveId, Integer strategyId);
List<String> selectGreenwaveAllNames();
} }
...@@ -4,11 +4,8 @@ import cn.hutool.core.collection.CollectionUtil; ...@@ -4,11 +4,8 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import net.wanji.common.enums.*;
import net.wanji.databus.bo.CrossIdBO; import net.wanji.databus.bo.CrossIdBO;
import net.wanji.common.enums.CrossStatusEnum;
import net.wanji.common.enums.EventAlarmEnum;
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.*;
...@@ -18,17 +15,21 @@ import net.wanji.opt.bo.GreenwaveIdAndTimeStampBO; ...@@ -18,17 +15,21 @@ import net.wanji.opt.bo.GreenwaveIdAndTimeStampBO;
import net.wanji.opt.bo.GreenwaveIdBO; import net.wanji.opt.bo.GreenwaveIdBO;
import net.wanji.opt.bo.SaveGreenwaveStrategyBO; import net.wanji.opt.bo.SaveGreenwaveStrategyBO;
import net.wanji.opt.dao.mapper.CrossSchemeOptLogMapper; import net.wanji.opt.dao.mapper.CrossSchemeOptLogMapper;
import net.wanji.opt.dao.mapper.strategy.SceneMapper;
import net.wanji.opt.dao.mapper.strategy.SceneStrategyIdeaMapper; import net.wanji.opt.dao.mapper.strategy.SceneStrategyIdeaMapper;
import net.wanji.opt.dao.mapper.strategy.SceneStrategyMapper;
import net.wanji.opt.dao.mapper.strategy.StrategyMapper; import net.wanji.opt.dao.mapper.strategy.StrategyMapper;
import net.wanji.opt.dao.mapper.trend.EventAlarmMapper; import net.wanji.opt.dao.mapper.trend.EventAlarmMapper;
import net.wanji.opt.dao.mapper.trend.GreenwaveInfoMapper; import net.wanji.opt.dao.mapper.trend.GreenwaveInfoMapper;
import net.wanji.opt.dto.trend.AbnormalCrossListDTO; import net.wanji.opt.dto.trend.AbnormalCrossListDTO;
import net.wanji.opt.dto.trend.GreenwaveListDTO; import net.wanji.opt.dto.trend.GreenwaveListDTO;
import net.wanji.opt.po.base.CrossSchemeOptLogPO; import net.wanji.opt.po.base.CrossSchemeOptLogPO;
import net.wanji.opt.po.strategy.ScenePO;
import net.wanji.opt.po.strategy.StrategyPO; import net.wanji.opt.po.strategy.StrategyPO;
import net.wanji.opt.po.trend.EventAlarmPO; import net.wanji.opt.po.trend.EventAlarmPO;
import net.wanji.opt.service.TrendService; import net.wanji.opt.service.TrendService;
import net.wanji.opt.vo.*; import net.wanji.opt.vo.*;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -66,6 +67,9 @@ public class TrendServiceImpl implements TrendService { ...@@ -66,6 +67,9 @@ public class TrendServiceImpl implements TrendService {
private final BaseCrossLaneLightsMapper baseCrossLaneLightsMapper; private final BaseCrossLaneLightsMapper baseCrossLaneLightsMapper;
private final CrossBaseLaneInfoMapper crossBaseLaneInfoMapper; private final CrossBaseLaneInfoMapper crossBaseLaneInfoMapper;
private final CrossTurnDataHistMapper crossTurnDataHistMapper; private final CrossTurnDataHistMapper crossTurnDataHistMapper;
private final GreenwaveSceneMapper greenwaveSceneMapper;
private final SceneStrategyMapper sceneStrategyMapper;
private final SceneMapper sceneMapper;
// 用于计算路口状态,key为方向,value为状态 // 用于计算路口状态,key为方向,value为状态
private Map<Integer, Integer> preStatus = new HashMap<Integer, Integer>() {{ private Map<Integer, Integer> preStatus = new HashMap<Integer, Integer>() {{
...@@ -86,7 +90,7 @@ public class TrendServiceImpl implements TrendService { ...@@ -86,7 +90,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, BaseCrossSchedulesPlanMapper baseCrossSchedulesPlanMapper, BaseCrossSectionMapper baseCrossSectionMapper, BaseCrossSchemeMapper crossSchemeMapper, BaseCrossSchemeMapper baseCrossSchemeMapper, BaseCrossPhaseMapper baseCrossPhaseMapper, BaseCrossPhaseLightsMapper crossPhaseLightsMapper, BaseCrossLaneLightsMapper baseCrossLaneLightsMapper, CrossBaseLaneInfoMapper crossBaseLaneInfoMapper, CrossTurnDataHistMapper crossTurnDataHistMapper) { CrossSchemeOptLogMapper crossSchemeOptLogMapper, GreenwaveCrossMapper greenwaveCrossMapper, CrossDirDataRealtimeMapper crossDirDataRealtimeMapper, GreenwaveHistMapper greenwaveHistMapper, GreenwaveRealtimeMapper greenwaveRealtimeMapper, SceneStrategyIdeaMapper strategyIdeaMapper, StrategyMapper strategyMapper, BaseCrossSchedulesMapper baseCrossSchedulesMapper, BaseCrossSchedulesPlanMapper baseCrossSchedulesPlanMapper, BaseCrossSectionMapper baseCrossSectionMapper, BaseCrossSchemeMapper crossSchemeMapper, BaseCrossSchemeMapper baseCrossSchemeMapper, BaseCrossPhaseMapper baseCrossPhaseMapper, BaseCrossPhaseLightsMapper crossPhaseLightsMapper, BaseCrossLaneLightsMapper baseCrossLaneLightsMapper, CrossBaseLaneInfoMapper crossBaseLaneInfoMapper, CrossTurnDataHistMapper crossTurnDataHistMapper, @Qualifier("greenwaveSceneMapper") GreenwaveSceneMapper greenwaveSceneMapper, @Qualifier("sceneStrategyMapper") SceneStrategyMapper sceneStrategyMapper, @Qualifier("sceneMapper") SceneMapper sceneMapper) {
this.greenwaveInfoMapper = greenwaveInfoMapper; this.greenwaveInfoMapper = greenwaveInfoMapper;
this.baseCrossInfoMapper = baseCrossInfoMapper; this.baseCrossInfoMapper = baseCrossInfoMapper;
this.crossDataRealtimeMapper = crossDataRealtimeMapper; this.crossDataRealtimeMapper = crossDataRealtimeMapper;
...@@ -110,6 +114,9 @@ public class TrendServiceImpl implements TrendService { ...@@ -110,6 +114,9 @@ public class TrendServiceImpl implements TrendService {
this.baseCrossLaneLightsMapper = baseCrossLaneLightsMapper; this.baseCrossLaneLightsMapper = baseCrossLaneLightsMapper;
this.crossBaseLaneInfoMapper = crossBaseLaneInfoMapper; this.crossBaseLaneInfoMapper = crossBaseLaneInfoMapper;
this.crossTurnDataHistMapper = crossTurnDataHistMapper; this.crossTurnDataHistMapper = crossTurnDataHistMapper;
this.greenwaveSceneMapper = greenwaveSceneMapper;
this.sceneStrategyMapper = sceneStrategyMapper;
this.sceneMapper = sceneMapper;
} }
@Override @Override
...@@ -392,7 +399,7 @@ public class TrendServiceImpl implements TrendService { ...@@ -392,7 +399,7 @@ public class TrendServiceImpl implements TrendService {
res.setNoparkPassRate((int) (noparkPassRate * 100)); res.setNoparkPassRate((int) (noparkPassRate * 100));
res.setTrvalTime(greenwaveRealtimePO.getTrvalTime()); res.setTrvalTime(greenwaveRealtimePO.getTrvalTime());
// 获取策略信息 // 获取策略信息
List<String> strategyList = strategyMapper.selectAllNames(); List<String> strategyList = strategyMapper.selectGreenwaveAllNames();
res.setStrategyList(strategyList); res.setStrategyList(strategyList);
List<StrategyPO> strategyPOList = strategyMapper.selectByGreenwaveId(greenwaveId); List<StrategyPO> strategyPOList = strategyMapper.selectByGreenwaveId(greenwaveId);
List<String> collect = strategyPOList.stream() List<String> collect = strategyPOList.stream()
...@@ -794,13 +801,30 @@ public class TrendServiceImpl implements TrendService { ...@@ -794,13 +801,30 @@ public class TrendServiceImpl implements TrendService {
public void saveGreenwaveStrategy(SaveGreenwaveStrategyBO saveGreenwaveStrategyBO) { public void saveGreenwaveStrategy(SaveGreenwaveStrategyBO saveGreenwaveStrategyBO) {
Integer greenwaveId = saveGreenwaveStrategyBO.getGreenwaveId(); Integer greenwaveId = saveGreenwaveStrategyBO.getGreenwaveId();
List<String> strategyNames = saveGreenwaveStrategyBO.getStrategyNames(); List<String> strategyNames = saveGreenwaveStrategyBO.getStrategyNames();
strategyMapper.deleteGreenwave(greenwaveId); GreenwaveInfoPO greenwaveInfoPO = greenwaveInfoMapper.selectById(greenwaveId);
Integer dir = greenwaveInfoPO.getDir();
// 删除旧关联
greenwaveSceneMapper.deleteByGreenwaveId(greenwaveId);
for (String strategyName : strategyNames) { for (String strategyName : strategyNames) {
// 获取策略ID // 获取策略ID
StrategyPO strategyPO = strategyMapper.selectByName(strategyName); StrategyPO strategyPO = strategyMapper.selectByName(strategyName);
Integer strategyId = strategyPO.getId(); Integer strategyId = strategyPO.getId();
// 更新绿波策略关系 // 根据策略ID查询场景IDs
strategyMapper.insertGreenwave(greenwaveId, strategyId); List<Integer> sceneIds = sceneStrategyMapper.selectSceneIdsByStrategyId(strategyId);
// 插入新关联
for (Integer sceneId : sceneIds) {
// 查询场景代码
ScenePO scenePO = sceneMapper.selectById(sceneId);
Integer sceneNum = scenePO.getSceneNum();
Integer sceneCodeByDir = SceneDirEnum.getSceneNumByDir(dir);
if (Objects.equals(sceneNum, sceneCodeByDir)) {
GreenwaveScenePO greenwaveScenePO = new GreenwaveScenePO();
greenwaveScenePO.setGreenwaveId(greenwaveId);
greenwaveScenePO.setSceneId(sceneId);
greenwaveSceneMapper.insertOne(greenwaveScenePO);
break;
}
}
} }
} }
......
...@@ -56,4 +56,10 @@ ...@@ -56,4 +56,10 @@
where scene_num = ${status} where scene_num = ${status}
</select> </select>
<select id="selectById" resultType="net.wanji.opt.po.strategy.ScenePO">
id,scene_code,scene_num,scene_name,scene_target,gmt_create,gmt_modified
from t_strategy_scene
where id = ${sceneId}
</select>
</mapper> </mapper>
...@@ -30,4 +30,9 @@ ...@@ -30,4 +30,9 @@
where scene_id = #{sceneId} where scene_id = #{sceneId}
</select> </select>
<select id="selectSceneIdsByStrategyId" resultType="java.lang.Integer">
select scene_id from t_strategy_scene_strategy
where strategy_id = #{strategyId}
</select>
</mapper> </mapper>
...@@ -43,11 +43,6 @@ ...@@ -43,11 +43,6 @@
</foreach> </foreach>
</delete> </delete>
<delete id="deleteGreenwave">
delete from t_greenwave_strategy
where greenwave_id = ${greenwaveId}
</delete>
<select id="selectByStrategyNameAndTarget" resultType="net.wanji.opt.po.strategy.StrategyPO"> <select id="selectByStrategyNameAndTarget" resultType="net.wanji.opt.po.strategy.StrategyPO">
select select
id,strategy_code,strategy_name,strategy_target,strategy_detail,gmt_create,gmt_modified id,strategy_code,strategy_name,strategy_target,strategy_detail,gmt_create,gmt_modified
...@@ -85,10 +80,19 @@ ...@@ -85,10 +80,19 @@
</select> </select>
<select id="selectByGreenwaveId" resultType="net.wanji.opt.po.strategy.StrategyPO"> <select id="selectByGreenwaveId" resultType="net.wanji.opt.po.strategy.StrategyPO">
select t3.strategy_name as strategyName select t4.strategy_name as strategyName
from t_greenwave_info t1 join t_greenwave_strategy t2 join t_strategy_strategy t3 from t_greenwave_info t1
on t1.id = t2.greenwave_id and t3.id = t2.strategy_id join t_greenwave_scene t2
join t_strategy_scene_strategy t3
join t_strategy_strategy t4
on t1.id = t2.greenwave_id and t2.scene_id = t3.scene_id and t3.strategy_id = t4.id
where t1.id = #{greenwaveId} where t1.id = #{greenwaveId}
</select> </select>
<select id="selectGreenwaveAllNames" resultType="java.lang.String">
SELECT strategy_name
FROM t_strategy_strategy
WHERE strategy_target = 2
</select>
</mapper> </mapper>
package net.wanji.common.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 场景代码与协调方向映射关系
*
* @author Kent HAN
* @date 2022/11/8 17:20
*/
@Getter
@AllArgsConstructor
public enum SceneDirEnum {
ONE(5, 0),
TWO(5, 1),
THREE(6, 2);
private final int sceneNum;
private final int dir;
public static Integer getSceneNumByDir(int dir) {
for (SceneDirEnum value : SceneDirEnum.values()) {
if (value.dir == dir) {
return value.sceneNum;
}
}
return null;
}
}
package net.wanji.databus.dao.mapper;
import net.wanji.databus.po.GreenwaveScenePO;
import org.springframework.stereotype.Repository;
/**
* @author Kent HAN
* @date 2023/2/27 9:33
*/
@Repository
public interface GreenwaveSceneMapper {
void deleteByGreenwaveId(Integer greenwaveId);
void insertOne(GreenwaveScenePO greenwaveScenePO);
}
package net.wanji.databus.po;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author hanbing
* @date 2023/1/10 16:36
*/
@Data
public class GreenwaveScenePO {
/** ID */
@ApiModelProperty(name = "ID",notes = "")
private Integer id ;
@ApiModelProperty(name = "绿波ID",notes = "")
private Integer greenwaveId ;
/** 场景ID */
@ApiModelProperty(name = "场景ID",notes = "")
private Integer sceneId ;
/** 创建时间 */
@ApiModelProperty(name = "创建时间",notes = "")
private Date gmtCreate ;
/** 修改时间 */
@ApiModelProperty(name = "修改时间",notes = "")
private Date gmtModified ;
}
<?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.databus.dao.mapper.GreenwaveSceneMapper">
<insert id="insertOne">
insert into t_greenwave_scene(greenwave_id,scene_id)
values (#{greenwaveId},#{sceneId})
</insert>
<delete id="deleteByGreenwaveId">
delete from t_greenwave_scene
where greenwave_id = ${greenwaveId}
</delete>
</mapper>
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