Commit a6c1483b authored by hanbing's avatar hanbing

[add] 新信号评价-运行评价-详细指标查询,车道级指标

parent 11a92de9
...@@ -12,8 +12,8 @@ import java.util.Date; ...@@ -12,8 +12,8 @@ import java.util.Date;
* @date 2023/6/9 13:52 * @date 2023/6/9 13:52
*/ */
@Data @Data
@ApiModel(value = "MetricsTurnBO", description = "转向级指标查询输入参数") @ApiModel(value = "MetricsTurnAndLaneBO", description = "转向级和车道级指标查询输入参数")
public class MetricsTurnBO { public class MetricsTurnAndLaneBO {
@ApiModelProperty(value = "0正常 1失衡 2拥堵 3溢出") @ApiModelProperty(value = "0正常 1失衡 2拥堵 3溢出")
private Integer status; private Integer status;
......
...@@ -7,11 +7,12 @@ import io.swagger.annotations.ApiResponses; ...@@ -7,11 +7,12 @@ import io.swagger.annotations.ApiResponses;
import net.wanji.common.framework.rest.JsonViewObject; import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.databus.bo.CrossIdAndStartEndDateBO; import net.wanji.databus.bo.CrossIdAndStartEndDateBO;
import net.wanji.opt.bo.AbnormalDetailBO; import net.wanji.opt.bo.AbnormalDetailBO;
import net.wanji.opt.bo.MetricsTurnBO; import net.wanji.opt.bo.MetricsTurnAndLaneBO;
import net.wanji.opt.bo.SceneMetricsDetailBO; import net.wanji.opt.bo.SceneMetricsDetailBO;
import net.wanji.opt.service.impl.SceneEvaluateServiceImpl; import net.wanji.opt.service.impl.SceneEvaluateServiceImpl;
import net.wanji.opt.vo.SceneEvaluateAbnormalDetailVO; import net.wanji.opt.vo.SceneEvaluateAbnormalDetailVO;
import net.wanji.opt.vo.SceneEvaluateAbnormalDistributeVO; import net.wanji.opt.vo.SceneEvaluateAbnormalDistributeVO;
import net.wanji.opt.vo.SceneEvaluateMetricsLaneVO;
import net.wanji.opt.vo.SceneEvaluateMetricsTurnVO; import net.wanji.opt.vo.SceneEvaluateMetricsTurnVO;
import net.wanji.opt.vo.SceneMetricsDetailVO; import net.wanji.opt.vo.SceneMetricsDetailVO;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
...@@ -84,8 +85,20 @@ public class SceneEvaluateController { ...@@ -84,8 +85,20 @@ public class SceneEvaluateController {
@ApiResponses({ @ApiResponses({
@ApiResponse(code = 200, message = "OK", response = SceneEvaluateMetricsTurnVO.class), @ApiResponse(code = 200, message = "OK", response = SceneEvaluateMetricsTurnVO.class),
}) })
public JsonViewObject metricsTurn(@RequestBody MetricsTurnBO bo) throws ParseException { public JsonViewObject metricsTurn(@RequestBody MetricsTurnAndLaneBO bo) throws ParseException {
SceneEvaluateMetricsTurnVO res = sceneEvaluateService.metricsTurn(bo); SceneEvaluateMetricsTurnVO res = sceneEvaluateService.metricsTurn(bo);
return JsonViewObject.newInstance().success(res); return JsonViewObject.newInstance().success(res);
} }
@ApiOperation(value = "车道级指标", notes = "车道级指标", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/metricsLane",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = SceneEvaluateMetricsLaneVO.class),
})
public JsonViewObject metricsLane(@RequestBody MetricsTurnAndLaneBO bo) throws ParseException {
SceneEvaluateMetricsLaneVO res = sceneEvaluateService.metricsLane(bo);
return JsonViewObject.newInstance().success(res);
}
} }
\ No newline at end of file
...@@ -2,10 +2,11 @@ package net.wanji.opt.service; ...@@ -2,10 +2,11 @@ package net.wanji.opt.service;
import net.wanji.databus.bo.CrossIdAndStartEndDateBO; import net.wanji.databus.bo.CrossIdAndStartEndDateBO;
import net.wanji.opt.bo.AbnormalDetailBO; import net.wanji.opt.bo.AbnormalDetailBO;
import net.wanji.opt.bo.MetricsTurnBO; import net.wanji.opt.bo.MetricsTurnAndLaneBO;
import net.wanji.opt.bo.SceneMetricsDetailBO; import net.wanji.opt.bo.SceneMetricsDetailBO;
import net.wanji.opt.vo.SceneEvaluateAbnormalDetailVO; import net.wanji.opt.vo.SceneEvaluateAbnormalDetailVO;
import net.wanji.opt.vo.SceneEvaluateAbnormalDistributeVO; import net.wanji.opt.vo.SceneEvaluateAbnormalDistributeVO;
import net.wanji.opt.vo.SceneEvaluateMetricsLaneVO;
import net.wanji.opt.vo.SceneEvaluateMetricsTurnVO; import net.wanji.opt.vo.SceneEvaluateMetricsTurnVO;
import net.wanji.opt.vo.SceneMetricsDetailVO; import net.wanji.opt.vo.SceneMetricsDetailVO;
...@@ -21,5 +22,7 @@ public interface SceneEvaluateService { ...@@ -21,5 +22,7 @@ public interface SceneEvaluateService {
List<SceneMetricsDetailVO> metricsDetail(SceneMetricsDetailBO bo) throws InvocationTargetException, NoSuchMethodException, IllegalAccessException; List<SceneMetricsDetailVO> metricsDetail(SceneMetricsDetailBO bo) throws InvocationTargetException, NoSuchMethodException, IllegalAccessException;
SceneEvaluateMetricsTurnVO metricsTurn(MetricsTurnBO bo) throws ParseException; SceneEvaluateMetricsTurnVO metricsTurn(MetricsTurnAndLaneBO bo) throws ParseException;
SceneEvaluateMetricsLaneVO metricsLane(MetricsTurnAndLaneBO bo) throws ParseException;
} }
package net.wanji.opt.vo;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
import java.util.Map;
/**
* @author Kent HAN
* @date 2023/2/9 8:38
*/
@Data
@NoArgsConstructor
@ApiModel(value = "SceneEvaluateMetricsLaneVO", description = "车道级指标")
public class SceneEvaluateMetricsLaneVO {
// todo 目前只有拥堵,后期扩展考虑增加字段
@ApiModelProperty(value = "等级",notes = "0畅通 1轻度 2中度 3严重")
private Integer level ;
@ApiModelProperty(value = "车道指标")
private List<LaneListElement> laneList;
@NoArgsConstructor
@Data
public static class LaneListElement {
@ApiModelProperty(value = "车道序号")
private Integer sort;
@ApiModelProperty(value = "流量(单位:pcu/5min)")
private Integer flow;
// 可变指标数据
@JsonIgnore
private Map<String, Integer> metricsMap;
@JsonAnyGetter
public Map<String, Integer> any() {
return metricsMap;
}
}
}
...@@ -3,6 +3,7 @@ package net.wanji.databus.dao.mapper; ...@@ -3,6 +3,7 @@ package net.wanji.databus.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import net.wanji.databus.dto.MetricHistDTO; import net.wanji.databus.dto.MetricHistDTO;
import net.wanji.databus.po.CrossLaneDataHistPO; import net.wanji.databus.po.CrossLaneDataHistPO;
import net.wanji.databus.po.CrossLaneDataHistPOExt;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -18,4 +19,5 @@ public interface CrossLaneDataHistMapper extends BaseMapper<CrossLaneDataHistPO> ...@@ -18,4 +19,5 @@ public interface CrossLaneDataHistMapper extends BaseMapper<CrossLaneDataHistPO>
void insertBatch(@Param("list") List<CrossLaneDataHistPO> list); void insertBatch(@Param("list") List<CrossLaneDataHistPO> list);
void deleteBatch(@Param("list") Collection<String> crossIds); void deleteBatch(@Param("list") Collection<String> crossIds);
List<MetricHistDTO> selectMetricHistDTO(String crossId, int startStamp, int endStamp); List<MetricHistDTO> selectMetricHistDTO(String crossId, int startStamp, int endStamp);
List<CrossLaneDataHistPOExt> selectByCrossIdAndDir(String crossId, Integer dir, int endTimeStamp, int startTimeStamp);
} }
package net.wanji.databus.po;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author duanruiming
* @date 2023/03/12 20:53
*/
@Data
public class CrossLaneDataHistPOExt extends CrossLaneDataRealTimePO{
// 方向
private Integer dir;
// 车道序号,从左车道开始编号11、12、13...
private Integer sort;
}
...@@ -63,4 +63,15 @@ ...@@ -63,4 +63,15 @@
and batch_time <![CDATA[ <= ]]> #{endStamp} and batch_time <![CDATA[ <= ]]> #{endStamp}
order by batch_time order by batch_time
</select> </select>
<select id="selectByCrossIdAndDir" resultType="net.wanji.databus.po.CrossLaneDataHistPOExt">
SELECT *
FROM t_base_lane_info
JOIN t_lane_data_hist ON t_base_lane_info.id = t_lane_data_hist.id
WHERE t_base_lane_info.cross_id = #{crossId}
AND t_base_lane_info.type = 2
AND t_base_lane_info.dir = #{dir}
AND batch_time <![CDATA[ >= ]]> #{startTimeStamp}
AND batch_time <![CDATA[ <= ]]> #{endTimeStamp};
</select>
</mapper> </mapper>
\ No newline at end of file
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