Commit 40b7c809 authored by Zheng Yi Fan's avatar Zheng Yi Fan

feat(signal-optimize-service):增加路口基础信息接口和相关实体类

- 新增 CrossBaseInfoVO 类用于封装路口基础信息
- 添加方向、转向、车道信息的实体类和数据库映射
- 实现获取路口基础信息的接口和方法
- 优化路口状态分布查询接口,支持全选方向
parent eecedc55
......@@ -3,10 +3,9 @@ package net.wanji.opt.controllerv2;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.opt.po.base.CrossLaneDataHistPoExtend;
import net.wanji.opt.servicev2.CrossService;
import net.wanji.opt.synthesis.pojo.CrossRealTimeAlarmEntity;
import net.wanji.opt.synthesis.pojo.CrossStatusDisOptTimeEntity;
import net.wanji.opt.vo2.CrossBaseInfoVO;
import net.wanji.opt.vo2.CrossRealTimeAlarmVO;
import net.wanji.opt.vo2.CrossStatusDistributionVO;
import org.springframework.web.bind.annotation.GetMapping;
......@@ -15,7 +14,9 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author zhengyifan
......@@ -29,7 +30,6 @@ public class CrossController {
@Resource
private CrossService crossService;
//@ApiOperation(value = "路口状态分布", notes = "路口状态分布", response = JsonViewObject.class, httpMethod="GET")
@GetMapping("/getCrossStatusDistribution")
@ApiOperation(httpMethod="GET",value="路口状态分布", notes="路口状态分布")
@ApiImplicitParams({
......@@ -37,7 +37,7 @@ public class CrossController {
@ApiImplicitParam(name = "groupType", value = "时间粒度 0--5分钟 1--15分钟 2--30分钟 3--60分钟", required = true, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "date", value = "日期 格式:yyyy-MM-dd", required = true, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "objectType", value = "范围 1:方向级指标 2:转向级指标 3:车道级指标 4:路口级指标", required = true, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "directionName", value = "方向 支持 北进口;东进口;南进口;西进口", dataType = "String", defaultValue = "北进口;东进口;南进口;西进口"),
@ApiImplicitParam(name = "directionName", value = "方向 支持 北进口;东进口;南进口;西进口", dataType = "String", defaultValue = ""),
})
@ApiResponses({
......@@ -46,28 +46,38 @@ public class CrossController {
public JsonViewObject getCrossStatusDistribution(String crossID, String date, String groupType, Integer objectType, String directionName) {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
Map<String, Object> map = new HashMap<>();
String[] dirs = directionName.split(";");
for (String dir : dirs) {
String dirName = "";
switch (dir) {
case "北进口":
dirName = "northList";
break;
case "南进口":
dirName = "southList";
break;
case "西进口":
dirName = "westList";
break;
case "东进口":
dirName = "eastList";
break;
if (directionName != null) {
String[] dirs = directionName.split(";");
for (String dir : dirs) {
String dirName = "";
switch (dir) {
case "北进口":
dirName = "northList";
break;
case "南进口":
dirName = "southList";
break;
case "西进口":
dirName = "westList";
break;
case "东进口":
dirName = "eastList";
break;
}
try {
List<CrossStatusDistributionVO> info = crossService.getCrossStatusDistribution(crossID, date, groupType, objectType, dir);
map.put(dirName, info);
} catch (Exception e) {
log.error("监测详情-路口事件详情-路口状态分布: ", e);
return jsonViewObject.fail("路口状态分布查询失败");
}
}
} else {
try {
List<CrossStatusDistributionVO> info = crossService.getCrossStatusDistribution(crossID, date, groupType, objectType, dir);
map.put(dirName, info);
List<CrossStatusDistributionVO> info = crossService.getCrossStatusDistribution(crossID, date, groupType, objectType, null);
map.put("infoList", info);
} catch (Exception e) {
log.error("监测详情-路口事件详情-路口状态分布: ", e);
return jsonViewObject.fail("路口状态分布查询失败");
......@@ -100,4 +110,23 @@ public class CrossController {
return jsonViewObject.success(result);
}
@ApiOperation(value = "路口基础信息", notes = "路口基础信息", response = JsonViewObject.class, httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "crossID", value = "路口ID", required = true, dataType = "String", paramType = "query"),
})
@GetMapping(value = "/getCrossBaseInfo")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = CrossBaseInfoVO.class)
})
public JsonViewObject getCrossBaseInfo(String crossID) {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
CrossBaseInfoVO result;
try {
result = crossService.getCrossBaseInfos(crossID);
} catch (Exception e) {
log.error("监测详情-路口事件详情-路口基础信息: ", e);
return jsonViewObject.fail("路口基础信息查询失败");
}
return jsonViewObject.success(result);
}
}
package net.wanji.opt.dao.mapper;
import net.wanji.databus.po.CrossDataHistPO;
import net.wanji.opt.synthesis.pojo.CrossRealTimeAlarmEntity;
import net.wanji.opt.synthesis.pojo.CrossStatusDisOptTimeEntity;
import net.wanji.opt.synthesis.pojo.StrategyCrossResultEntity;
import net.wanji.opt.synthesis.pojo.*;
import java.util.List;
import java.util.Map;
/**
* <p>
......@@ -30,4 +26,25 @@ public interface CrossMapper {
* @return
*/
List<CrossRealTimeAlarmEntity> getCrossRealTimeAlarms(String crossID, String time);
/**
* 路口方向信息
*
* @param crossID 路口ID
*/
List<CrossDirectionInfoEntity> getCrossDirectionInfo(String crossID);
/**
* 路口转向信息
*
* @param crossID 路口ID
*/
List<CrossTurnInfoEntity> getCrossTurnInfo(String crossID);
/**
* 路口车道信息
*
* @param crossID 路口ID
*/
List<CrossLaneInfoEntity> getCrossLaneInfo(String crossID);
}
......@@ -2,10 +2,10 @@ package net.wanji.opt.servicev2;
import net.wanji.opt.synthesis.pojo.CrossRealTimeAlarmEntity;
import net.wanji.opt.synthesis.pojo.CrossStatusDisOptTimeEntity;
import net.wanji.opt.vo2.CrossBaseInfoVO;
import net.wanji.opt.vo2.CrossStatusDistributionVO;
import java.util.List;
import java.util.Map;
/**
* <p>
......@@ -40,4 +40,11 @@ public interface CrossService {
* @return
*/
List<CrossStatusDisOptTimeEntity> getOptTimeList(String crossID);
/**
* 获取路口基础信息————方向、转向、车道信息
*/
CrossBaseInfoVO getCrossBaseInfos(String crossID);
}
......@@ -7,8 +7,8 @@ import net.wanji.opt.dao.mapper.CrossMapper;
import net.wanji.opt.dao.mapper.GreenwaveHistoryMapper;
import net.wanji.opt.po.base.CrossLaneDataHistPoExtend;
import net.wanji.opt.servicev2.CrossService;
import net.wanji.opt.synthesis.pojo.CrossRealTimeAlarmEntity;
import net.wanji.opt.synthesis.pojo.CrossStatusDisOptTimeEntity;
import net.wanji.opt.synthesis.pojo.*;
import net.wanji.opt.vo2.CrossBaseInfoVO;
import net.wanji.opt.vo2.CrossStatusDistributionVO;
import org.springframework.stereotype.Service;
......@@ -95,4 +95,26 @@ public class CrossServiceImpl implements CrossService {
public List<CrossStatusDisOptTimeEntity> getOptTimeList(String crossID) {
return crossMapper.getOptTimes(crossID);
}
/**
* 路口基础信息————方向、转向、车道信息
*
* @param crossID 路口ID
*/
@Override
public CrossBaseInfoVO getCrossBaseInfos(String crossID) {
List<CrossBaseInfoVO> crossBaseInfoVOS = new ArrayList<>();
List<CrossDirectionInfoEntity> directionInfoEntities = crossMapper.getCrossDirectionInfo(crossID);
List<CrossTurnInfoEntity> turnInfoEntities = crossMapper.getCrossTurnInfo(crossID);
List<CrossLaneInfoEntity> laneInfoEntities = crossMapper.getCrossLaneInfo(crossID);
CrossBaseInfoVO crossBaseInfoVO = new CrossBaseInfoVO();
crossBaseInfoVO.setCrossID(crossID);
crossBaseInfoVO.setDirectionInfo(directionInfoEntities);
crossBaseInfoVO.setTurnInfo(turnInfoEntities);
crossBaseInfoVO.setLaneInfo(laneInfoEntities);
return crossBaseInfoVO;
}
}
package net.wanji.opt.synthesis.pojo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "CrossDirectionInfoEntity", description = "路口基础信息-方向")
public class CrossDirectionInfoEntity {
@ApiModelProperty(value = "方向")
private Integer dir;
@ApiModelProperty(value = "方向描述")
private String dirName;
}
package net.wanji.opt.synthesis.pojo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "CrossLaneInfoEntity", description = "路口车道信息")
public class CrossLaneInfoEntity {
@ApiModelProperty(value = "车道编号")
private Integer sort;
@ApiModelProperty(value = "车道方向")
private Integer dir;
@ApiModelProperty(value = "车道转向")
private Integer turn;
@ApiModelProperty(value = "车道名称")
private String LaneName;
}
package net.wanji.opt.synthesis.pojo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "CrossTurnInfoEntity", description = "路口转向信息")
public class CrossTurnInfoEntity {
@ApiModelProperty(value = "转向")
private String turn;
@ApiModelProperty(value = "转向描述")
private String turnName;
}
package net.wanji.opt.vo2;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.wanji.opt.synthesis.pojo.CrossDirectionInfoEntity;
import net.wanji.opt.synthesis.pojo.CrossLaneInfoEntity;
import net.wanji.opt.synthesis.pojo.CrossTurnInfoEntity;
import java.util.List;
@Data
@ApiModel(value = "CrossBaseInfoVO", description = "路口基础信息-方向 转向 车道")
public class CrossBaseInfoVO {
@ApiModelProperty(value = "路口编号")
private String crossID;
@ApiModelProperty(value = "方向信息")
private List<CrossDirectionInfoEntity> directionInfo;
@ApiModelProperty(value = "转向信息")
private List<CrossTurnInfoEntity> turnInfo;
@ApiModelProperty(value = "车道信息")
private List<CrossLaneInfoEntity> laneInfo;
}
......@@ -103,4 +103,83 @@
</if>
) b
</select>
<select id="getCrossDirectionInfo" parameterType="String"
resultType="net.wanji.opt.synthesis.pojo.CrossDirectionInfoEntity">
select t.dir_type dir,
(
case t.dir_type
when 1 then '北'
when 2 then '东'
when 3 then '东'
when 4 then '南'
when 5 then '南'
when 6 then '西'
when 7 then '西'
when 8 then '北'
end
) dirName
from t_base_cross_dir_info t
where 1 = 1
and t.cross_id = #{corssID}
and t.in_out_type = 1
</select>
<select id="getCrossTurnInfo" parameterType="String" resultType="net.wanji.opt.synthesis.pojo.CrossTurnInfoEntity">
select distinct t2.turn_type turn,
(
case t2.turn_type
when 'u' then '掉头'
when 'l' then '左转'
when 's' then '直行'
when 'r' then '右转'
end
) turnName
from t_base_cross_turn_info t2
where 1 = 1
and t2.cross_id = #{corssID}
</select>
<select id="getCrossLaneInfo" parameterType="String" resultType="net.wanji.opt.synthesis.pojo.CrossLaneInfoEntity">
select distinct t3.sort,
t3.dir,
t3.turn,
CONCAT(
(
case t3.dir
when 1 then '北'
when 2 then '东'
when 3 then '东'
when 4 then '南'
when 5 then '南'
when 6 then '西'
when 7 then '西'
when 8 then '北'
end
)
,
(
case t3.dir
when 1 then '左转'
when 2 then '直行'
when 3 then '右转'
when 4 then '掉头'
when 5 then '直左'
when 6 then '直右'
when 7 then '左直右'
when 8 then '左右'
when 9 then '左转掉头'
when 10 then '直行掉头'
when 11 then '右转掉头'
when 12 then '左直掉头'
when 13 then '直右掉头'
when 14 then '左直右掉头'
when 15 then '左右掉头'
end
)
, t3.sort) laneName
from t_base_lane_info t3
where 1 = 1
and t3.cross_id = #{crossID}
</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