Commit 2a41d054 authored by 黄伟铭's avatar 黄伟铭

修正干线路口事件描述列表干线实时告警

parent dfc2871f
......@@ -8,6 +8,7 @@ import net.wanji.opt.po.base.EventStatisticPo;
import net.wanji.opt.servicev2.TrunkLineService;
import net.wanji.opt.servicev2.TrunkLineStatusDisService;
import net.wanji.opt.synthesis.pojo.CrossRealTimeAlarmEntity;
import net.wanji.opt.synthesis.pojo.TrunkLineCrossProblemEntity;
import net.wanji.opt.synthesis.pojo.TrunkLineProblemDescribeEntity;
import net.wanji.opt.vo2.CrossRealTimeAlarmVO;
import net.wanji.opt.vo2.TrunkLineCrossProblemVO;
......@@ -100,23 +101,24 @@ public class TrunkLineController {
}
}
@ApiOperation(value = "干线路口问题", notes = "干线路口问题", response = JsonViewObject.class, httpMethod="GET")
@ApiOperation(value = "干线路口状态", notes = "干线路口状态", response = JsonViewObject.class, httpMethod="GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "greenID", value = "绿波ID", required = true, dataType = "Integer", paramType = "query"),
@ApiImplicitParam(name = "time", value = "时间 格式:yyyy-MM-dd HH:ii:ss", dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "type", value = "类型,0查询当前时间,1查询历史时间",required = true, dataType = "Integer", paramType = "query"),
})
@GetMapping(value = "/getTrunkLineCrossProblem")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = TrunkLineCrossProblemVO.class),
})
public JsonViewObject getTrunkLineCrossProblem(Integer greenID, @RequestParam(defaultValue = "") String time) {
public JsonViewObject getTrunkLineCrossProblem(Integer greenID, String time ,Integer type) {
try {
JsonViewObject object = JsonViewObject.newInstance();
List<TrunkLineCrossProblemVO> list = trunkLineService.getTrunkLineCrossProblem(greenID,time);
List<TrunkLineCrossProblemEntity> list = trunkLineService.getTrunkLineCrossProblem(greenID,time,type);
return object.success(list);
} catch (Exception e) {
log.error("获取干线路口问题失败: ", e);
return JsonViewObject.newInstance().fail("获取干线路口问题失败");
log.error("获取干线路口状态失败: ", e);
return JsonViewObject.newInstance().fail("获取干线路口状态失败");
}
}
}
package net.wanji.opt.dao.mapper;
import net.wanji.opt.synthesis.pojo.CrossRealTimeAlarmEntity;
import net.wanji.opt.synthesis.pojo.TrunLineCrossStatusEntity;
import net.wanji.opt.synthesis.pojo.TrunkLineCrossProblemEntity;
import net.wanji.opt.synthesis.pojo.TrunkLineProblemDescribeEntity;
import net.wanji.opt.synthesis.pojo.vo.CrossOrGreenWaveTypeEntity;
import net.wanji.opt.vo2.CrossRealTimeAlarmVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
......@@ -43,9 +43,14 @@ public interface TrunkLineMapper{
List<TrunkLineCrossProblemEntity> getTrunkLineCrossProblem(@Param("greenID") Integer greenID, @Param("time") String time);
/**
* 获取进出口方向
* 获取干线的路口进出口方向
*/
TrunkLineCrossProblemEntity getIODir(@Param("greenID") Integer greenID);
List<TrunkLineCrossProblemEntity> getIODir(@Param("greenID") Integer greenID);
/**
* 获取干线的路口进出口方向
*/
List<TrunLineCrossStatusEntity> getTrunkLineCrossStatus(@Param("greenID") Integer greenID,@Param("type") Integer type,@Param("time") String time,@Param("inDir") Integer inDir,@Param("outDir") Integer outDir);
/**
* 获取干线类型信息
......
package net.wanji.opt.servicev2;
import net.wanji.opt.synthesis.pojo.CrossRealTimeAlarmEntity;
import net.wanji.opt.synthesis.pojo.TrunkLineCrossProblemEntity;
import net.wanji.opt.synthesis.pojo.TrunkLineProblemDescribeEntity;
import net.wanji.opt.synthesis.pojo.vo.CrossOrGreenWaveTypeEntity;
import net.wanji.opt.vo2.CrossRealTimeAlarmVO;
......@@ -27,7 +28,7 @@ public interface TrunkLineService {
/**
* 干线路口事件描述列表
*/
List<TrunkLineCrossProblemVO> getTrunkLineCrossProblem(Integer greenID, String time);
List<TrunkLineCrossProblemEntity> getTrunkLineCrossProblem(Integer greenID, String time, Integer type);
/**
* 获取路口类型信息
......
package net.wanji.opt.servicev2.implv2;
import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j;
import net.wanji.opt.dao.mapper.TrunkLineMapper;
import net.wanji.opt.servicev2.TrunkLineService;
import net.wanji.opt.synthesis.pojo.CrossRealTimeAlarmEntity;
import net.wanji.opt.synthesis.pojo.TrunLineCrossStatusEntity;
import net.wanji.opt.synthesis.pojo.TrunkLineCrossProblemEntity;
import net.wanji.opt.synthesis.pojo.TrunkLineProblemDescribeEntity;
import net.wanji.opt.synthesis.pojo.vo.CrossOrGreenWaveTypeEntity;
......@@ -45,42 +47,63 @@ public class TrunkLineImpl implements TrunkLineService {
}
@Override
public List<TrunkLineCrossProblemVO> getTrunkLineCrossProblem(Integer greenID, String time) {
List<TrunkLineCrossProblemEntity> list= trunkLineMapper.getTrunkLineCrossProblem(greenID, time);
TrunkLineCrossProblemEntity ioDir = trunkLineMapper.getIODir(greenID);
List<TrunkLineCrossProblemVO> voList = new ArrayList<>();
for (TrunkLineCrossProblemEntity e : list) {
TrunkLineCrossProblemVO vo = new TrunkLineCrossProblemVO();
vo.setCrossID(e.getCrossID());
vo.setName(e.getName());
vo.setWkt(e.getWkt());
if (e.getDirection() != null) {
String temp = e.getDirection().substring(1, e.getDirection().length() - 1);
temp = temp.replace("\"", "");
String[] temp1 = temp.split(",");
String[] dirStatus = getDirStatus(ioDir.getInDir(), ioDir.getOutDir(), temp1, e.getStatus());
vo.setDir_1_name(dirStatus[0]);
vo.setStatus_1_name(dirStatus[1]);
vo.setDir_2_name(dirStatus[2]);
vo.setStatus_2_name(dirStatus[3]);
voList.add(vo);
} else {
Map<String, String> IOdirMap = getDirName(ioDir.getInDir(), ioDir.getOutDir());
vo.setStatus_1_name("正常");
vo.setStatus_2_name("正常");
vo.setDir_1_name(IOdirMap.get("dirName"));
vo.setDir_2_name(IOdirMap.get("dirNameReverse"));
voList.add(vo);
public List<TrunkLineCrossProblemEntity> getTrunkLineCrossProblem(Integer greenID, String time,Integer type) {
//查询干线路口数据
List<TrunkLineCrossProblemEntity> list = trunkLineMapper.getIODir(greenID);
List<TrunkLineCrossProblemEntity> result1 = new ArrayList<>();
List<TrunkLineCrossProblemEntity> result = new ArrayList<>();
Integer inDir = 0;
Integer outDir = 0;
for(TrunkLineCrossProblemEntity temp : list){
inDir = temp.getInDir();
outDir = temp.getOutDir();
}
List<TrunLineCrossStatusEntity> crossStatusList = trunkLineMapper.getTrunkLineCrossStatus(greenID,type,time,inDir,outDir);
for(TrunkLineCrossProblemEntity temp : list){
for(TrunLineCrossStatusEntity temp1 : crossStatusList){
if(temp.getSort().equals(1)){
if(temp.getCrossID().equals(temp1.getCrossID())){
if(temp1.getDirType().equals(temp.getOutDir()) ){
temp.setStatusR(temp1.getStatus());
temp.setDirectionR(temp.getOutDir().toString());
temp.setStartTime(temp1.getStartTime());
}
}
}else if (temp.getSort().equals(list.size())){
if(temp.getCrossID().equals(temp1.getCrossID())){
if(temp1.getDirType().equals(temp.getInDir()) ){
temp.setStatusL(temp1.getStatus());
temp.setDirectionL(temp.getInDir().toString());
temp.setStartTime(temp1.getStartTime());
}
}
}else{
if(temp.getCrossID().equals(temp1.getCrossID())){
if(temp1.getDirType().equals(temp.getOutDir()) ){
temp.setStatusR(temp1.getStatus());
temp.setDirectionR(temp.getOutDir().toString());
}
if(temp1.getDirType().equals(temp.getInDir()) ){
temp.setStatusL(temp1.getStatus());
temp.setDirectionL(temp.getInDir().toString());
}
temp.setStartTime(temp1.getStartTime());
}
}
}
result1.add(temp);
}
for(int i = 0 ; i < result1.size() - 1 ; i ++){
int j = i + 1;
TrunkLineCrossProblemEntity temp = result1.get(i);
TrunkLineCrossProblemEntity temp1 = result1.get(j);
temp.setStatusL(temp1.getStatusL());
temp.setDirectionL(temp1.getDirectionL());
result.add(temp);
}
result.add(result1.get(result1.size() - 1));
return voList;
return result;
}
@Override
......
package net.wanji.opt.synthesis.pojo;
import lombok.Data;
@Data
public class TrunLineCrossStatusEntity {
private String crossID;
private String startTime;
private Integer dirType;
private Integer status;
}
......@@ -4,12 +4,16 @@ import lombok.Data;
@Data
public class TrunkLineCrossProblemEntity {
private String greenID;
private String crossID;
private String name;
private String wkt;
private Integer inDir;
private Integer outDir;
private Integer status;
private String direction;
private Integer sort;
private String startTime;
private String wkt;
private Integer statusL;
private String directionL;
private Integer statusR;
private String directionR;
}
......@@ -14,29 +14,27 @@
</resultMap>
<select id="getTrunkLineProblemDescribe" parameterType="String" resultMap="tlProblemDescribe">
select b.greenID ,b.status ,b.time , (
select a.green_id as greenID, a.start_time as time, a.type as status,
case
b.status
when 1 then '畅通'
when 2 then '缓行'
when 3 then '拥堵'
when 4 then '严重拥堵'
when 5 then '畅通'
end
) status_cn
a.type
when 705 then '干线缓行'
when 706 then '干线拥堵'
end as status_cn
from
(select DISTINCT
a.green_id as greenID,
max(a.start_time) time,
max(a.status) as status
from
t_greenwave_hist a
where a.green_id = #{greenID}
<if test="time != null and time != '' ">
and DATE_FORMAT(start_time,'%Y-%m-%d %H:%i:%s') <![CDATA[ <= ]]> DATE_FORMAT(#{time},'%Y-%m-%d %H:%i:%s')
t_event_info a
where a.green_id = 1
and a.type in (705,706)
<if test="time == '' ">
and a.end_time is null
and dt = DATE_FORMAT(now(),'%Y%m%d')
and DATE_FORMAT(start_time,'%Y-%m-%d %H:%i:%s') <![CDATA[ <= ]]> DATE_FORMAT(now(),'%Y-%m-%d %H:%i:%s')
</if>
<if test="time != '' ">
and dt = DATE_FORMAT(#{time},'%Y%m%d')
and DATE_FORMAT(start_time,'%Y-%m-%d %H:%i:%s') <![CDATA[ <= ]]> DATE_FORMAT(#{time},'%Y-%m-%d %H:%i:%s')
and DATE_FORMAT(end_time,'%Y-%m-%d %H:%i:%s') >= DATE_FORMAT(#{time},'%Y-%m-%d %H:%i:%s')
</if>
) b
</select>
<select id="getTrunkLineRealTimeAlarm" parameterType="map" resultMap="tlRealTimeAlarmsResultMap">
......@@ -78,15 +76,7 @@
</if>
</select>
<select id="getIODir" parameterType="map" resultType="net.wanji.opt.synthesis.pojo.TrunkLineCrossProblemEntity">
select
distinct a.in_dir,
a.out_dir
from
t_greenwave_cross a
where
a.green_id = #{greenID}
</select>
<select id="getGreenWaveTypeList" parameterType="map"
resultType="net.wanji.opt.synthesis.pojo.vo.CrossOrGreenWaveTypeEntity">
select DATE_FORMAT(sub.start_time, '%H:%i') as startTime,
......@@ -108,4 +98,27 @@
order by startTime
</select>
<select id="getIODir" parameterType="map" resultType="net.wanji.opt.synthesis.pojo.TrunkLineCrossProblemEntity">
select a.green_id as greenID,a.cross_id as crossID,b.name, SUBSTR(b.location , 7 , LENGTH(b.location) - 7) as wkt,
a.in_dir as inDir,a.out_dir as outDir,a.sort
from t_greenwave_cross a
left join t_base_cross_info b on a.cross_id = b.id
where a.green_id = #{greenID}
order by a.sort
</select>
<select id="getTrunkLineCrossStatus" parameterType="map" resultType="net.wanji.opt.synthesis.pojo.TrunLineCrossStatusEntity">
select t.cross_id as crossID,t.start_time as startTime,t.dir_type as dirType,t.status
from t_cross_dir_data_hist t
where t.cross_id in (select cross_id from t_greenwave_cross where green_id = #{greenID} )
<if test="type == 1 ">
and t.start_time = DATE_FORMAT(FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(#{time}) / 300 ) * 300), '%Y-%m-%d %H:%i:00')
</if>
<if test="type == 0 ">
and t.start_time = DATE_FORMAT(FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(DATE_SUB(now(),INTERVAL 6 MINUTE)) / 300 ) * 300), '%Y-%m-%d %H:%i:00')
</if>
and t.dir_type in (#{inDir},#{outDir})
</select>
</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