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

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

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