Commit 840622ab authored by duanruiming's avatar duanruiming

[add] 调优平台v2态势监测-运行监测-绿波优化监测列表

parent e2f9ead5
......@@ -7,9 +7,7 @@ import io.swagger.annotations.ApiResponses;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.opt.servicev2.TrendServiceV2;
import net.wanji.opt.vo2.CrossOptInfoVO;
import net.wanji.opt.vo2.CrossGreenStatusTimeRateVO;
import net.wanji.opt.vo2.GreenOptInfoVO;
import net.wanji.opt.vo2.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
......@@ -82,4 +80,21 @@ public class TrendControllerV2 {
}
return JsonViewObject.newInstance().success(list);
}
@ApiOperation(value = "态势监测-运行监测-干线优化监测", notes = "态势监测-运行监测-干线优化监测",
response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@GetMapping(value = "/greenOptMonitoringList")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = GreenOptMonitoringVO.class),
})
public JsonViewObject greenOptMonitoringList() throws Exception {
List<GreenOptMonitoringVO> list = Collections.emptyList();
try {
list = trendServiceV2.greenOptMonitoringList();
} catch (Exception e) {
JsonViewObject.newInstance().success(list);
}
return JsonViewObject.newInstance().success(list);
}
}
\ No newline at end of file
......@@ -2,7 +2,7 @@ package net.wanji.opt.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import net.wanji.databus.dao.entity.GreenwaveRealtimePO;
import net.wanji.opt.vo2.GreenOptInfoVO;
import net.wanji.opt.vo2.GreenOptInfoDTO;
import java.util.List;
......@@ -12,5 +12,5 @@ import java.util.List;
*/
public interface GreenWaveRealTimeMapperV2Mapper extends BaseMapper<GreenwaveRealtimePO> {
List<GreenOptInfoVO> selectGreenOptInfoList();
List<GreenOptInfoDTO> selectGreenOptInfoList();
}
......@@ -10,6 +10,7 @@ import net.wanji.opt.po.trend.EventInfoSimplePo;
import net.wanji.opt.po.trend.HoloEventInfoPO;
import net.wanji.opt.vo.CrossEventListPO;
import net.wanji.opt.vo2.CrossGreenStatusTimeRateVO;
import net.wanji.opt.vo2.GreenOptMonitoringVO;
import org.springframework.stereotype.Repository;
import java.util.Date;
......@@ -71,4 +72,9 @@ public interface HoloEventMapper extends BaseMapper<HoloEventInfoPO> {
*/
List<CrossGreenStatusTimeRateVO> selectCrossGreenStatusTimeRate();
/**
* 态势监测-运行监测-干线优化监测
* @return
*/
List<GreenOptMonitoringVO> selectGreenOptMonitoringList();
}
package net.wanji.opt.servicev2;
import net.wanji.opt.vo2.CrossGreenStatusTimeRateVO;
import net.wanji.opt.vo2.CrossOptInfoVO;
import net.wanji.opt.vo2.GreenOptInfoVO;
import net.wanji.opt.vo2.*;
import java.util.List;
......@@ -17,4 +15,6 @@ public interface TrendServiceV2 {
List<CrossOptInfoVO> crossOptInfoList() throws Exception;
List<GreenOptInfoVO> greenOptInfoList() throws Exception;
List<GreenOptMonitoringVO> greenOptMonitoringList() throws Exception;
}
\ No newline at end of file
......@@ -7,7 +7,6 @@ import net.wanji.common.utils.tool.DateUtil;
import net.wanji.databus.dao.entity.GreenwaveHistPO;
import net.wanji.databus.dao.mapper.CrossDataHistMapper;
import net.wanji.databus.dao.mapper.GreenwaveHistMapper;
import net.wanji.databus.dao.mapper.GreenwaveRealtimeMapper;
import net.wanji.databus.po.CrossDataHistPO;
import net.wanji.opt.common.enums.EventInfoTypeEnum;
import net.wanji.opt.common.enums.GreenBeltDirEnum;
......@@ -15,20 +14,14 @@ import net.wanji.opt.dao.mapper.GreenWaveRealTimeMapperV2Mapper;
import net.wanji.opt.dao.mapper.HoloEventMapper;
import net.wanji.opt.dao.mapper.StrategyCrossResultMapper;
import net.wanji.opt.servicev2.TrendServiceV2;
import net.wanji.opt.vo2.CrossGreenStatusTimeRateVO;
import net.wanji.opt.vo2.CrossOptInfoVO;
import net.wanji.opt.vo2.GreenOptInfoVO;
import net.wanji.opt.vo2.*;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @author duanruiming
......@@ -118,21 +111,22 @@ public class TrendServiceV2Impl implements TrendServiceV2 {
@Override
public List<GreenOptInfoVO> greenOptInfoList() throws Exception {
List<GreenOptInfoVO> greenOptInfoVOS = greenWaveRealTimeMapperV2Mapper.selectGreenOptInfoList();
List<GreenOptInfoVO> results = new ArrayList<>();
List<GreenOptInfoDTO> greenOptInfoDTOS = greenWaveRealTimeMapperV2Mapper.selectGreenOptInfoList();
long start = DateUtil.getCurrentTimeSecond();
long end = start + 5 * 60;
LambdaQueryWrapper<GreenwaveHistPO> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.between(GreenwaveHistPO::getBatchTime, start, end);
List<GreenwaveHistPO> greenwaveHistPOS = greenwaveHistMapper.selectList(queryWrapper);
if (!CollectionUtils.isEmpty(greenOptInfoVOS)) {
for (GreenOptInfoVO greenOptInfoVO : greenOptInfoVOS) {
Integer greenId = greenOptInfoVO.getGreenId();
Double trafficIndex = greenOptInfoVO.getTrafficIndex();
Integer speed = greenOptInfoVO.getSpeed();
Integer travelTime = greenOptInfoVO.getTravelTime();
greenOptInfoVO.setStrategyName("效率提升");
String roadDirection = greenOptInfoVO.getRoadDirection();
greenOptInfoVO.setDirectionName(GreenBeltDirEnum.getDesc(roadDirection));
if (!CollectionUtils.isEmpty(greenOptInfoDTOS)) {
for (GreenOptInfoDTO greenOptInfoDTO : greenOptInfoDTOS) {
Integer greenId = greenOptInfoDTO.getGreenId();
Double trafficIndex = greenOptInfoDTO.getTrafficIndex();
Integer speed = greenOptInfoDTO.getSpeed();
Integer travelTime = greenOptInfoDTO.getTravelTime();
greenOptInfoDTO.setStrategyName("效率提升");
String roadDirection = greenOptInfoDTO.getRoadDirection();
greenOptInfoDTO.setDirectionName(GreenBeltDirEnum.getDesc(roadDirection));
for (GreenwaveHistPO greenwaveHistPO : greenwaveHistPOS) {
Integer curGreenId = greenwaveHistPO.getGreenId();
String curDirection = greenwaveHistPO.getRoadDirection();
......@@ -142,25 +136,39 @@ public class TrendServiceV2Impl implements TrendServiceV2 {
if (Objects.equals(greenId, curGreenId) && StringUtils.equals(roadDirection, curDirection)) {
if (trafficIndex > curTrafficIndex) {
greenOptInfoVO.setTrafficIndexUpDown(1);
greenOptInfoDTO.setTrafficIndexUpDown(1);
} else {
greenOptInfoVO.setTrafficIndexUpDown(0);
greenOptInfoDTO.setTrafficIndexUpDown(0);
}
if (speed > curSpeed.intValue()) {
greenOptInfoVO.setSpeedUpDown(1);
greenOptInfoDTO.setSpeedUpDown(1);
} else {
greenOptInfoVO.setSpeedUpDown(0);
greenOptInfoDTO.setSpeedUpDown(0);
}
if (travelTime > curTravelTime) {
greenOptInfoVO.setTravelUpDown(1);
greenOptInfoDTO.setTravelUpDown(1);
} else {
greenOptInfoVO.setTravelUpDown(0);
greenOptInfoDTO.setTravelUpDown(0);
}
}
}
}
Map<Integer, List<GreenOptInfoDTO>> greenIdMap = greenOptInfoDTOS.stream().collect(Collectors.groupingBy(GreenOptInfoDTO::getGreenId));
for (Map.Entry<Integer, List<GreenOptInfoDTO>> entry : greenIdMap.entrySet()) {
GreenOptInfoVO greenOptInfoVO = new GreenOptInfoVO();
Integer greenId = entry.getKey();
List<GreenOptInfoDTO> value = entry.getValue();
greenOptInfoVO.setGreenId(greenId);
greenOptInfoVO.setDetails(value);
results.add(greenOptInfoVO);
}
}
return greenOptInfoVOS;
return results;
}
@Override
public List<GreenOptMonitoringVO> greenOptMonitoringList() throws Exception {
return holoEventMapper.selectGreenOptMonitoringList();
}
}
\ No newline at end of file
package net.wanji.opt.vo2;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.wanji.opt.config.Double2TwoDecimalPlacesSerializer;
/**
* @author duanruiming
* @date 2025/03/10 16:14
*/
@Data
@ApiModel(value = "GreenOptInfoDTO", description = "态势监测-区域体检-绿波优化列表")
public class GreenOptInfoDTO {
@ApiModelProperty(value = "绿波编号")
private Integer greenId;
@ApiModelProperty(value = "绿波名称")
private String greenName;
@ApiModelProperty(value = "绿波方向")
private String roadDirection;
@ApiModelProperty(value = "绿波名称")
private String directionName;
@ApiModelProperty(value = "经纬度")
private String wkt;
@ApiModelProperty(value = "策略名称")
private String strategyName;
@ApiModelProperty(value = "交通指数")
@JsonSerialize(using = Double2TwoDecimalPlacesSerializer.class)
private Double trafficIndex;
@ApiModelProperty(value = "运行速度")
private Integer speed;
@ApiModelProperty(value = "行程速度")
private Integer travelTime;
@ApiModelProperty(value = "同比交通指数,0-向下, 1向上")
private Integer trafficIndexUpDown;
@ApiModelProperty(value = "同比运行速度,0-向下, 1向上")
private Integer speedUpDown;
@ApiModelProperty(value = "同比行程时间,0-向下, 1向上")
private Integer travelUpDown;
}
package net.wanji.opt.vo2;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.wanji.opt.config.Double2TwoDecimalPlacesSerializer;
import java.util.List;
/**
* @author duanruiming
* @date 2025/03/10 16:14
* @date 2025/03/11 10:18
*/
@Data
@ApiModel(value = "GreenOptInfoVO", description = "态势监测-区域体检-绿波优化列表")
public class GreenOptInfoVO {
@ApiModelProperty(value = "绿波编号")
private Integer greenId;
@ApiModelProperty(value = "绿波名称")
private String greenName;
@ApiModelProperty(value = "绿波方向")
private String roadDirection;
@ApiModelProperty(value = "绿波名称")
private String directionName;
@ApiModelProperty(value = "经纬度")
private String wkt;
@ApiModelProperty(value = "策略名称")
private String strategyName;
@ApiModelProperty(value = "交通指数")
@JsonSerialize(using = Double2TwoDecimalPlacesSerializer.class)
private Double trafficIndex;
@ApiModelProperty(value = "运行速度")
private Integer speed;
@ApiModelProperty(value = "行程速度")
private Integer travelTime;
@ApiModelProperty(value = "同比交通指数,0-向下, 1向上")
private Integer trafficIndexUpDown;
@ApiModelProperty(value = "同比运行速度,0-向下, 1向上")
private Integer speedUpDown;
@ApiModelProperty(value = "同比行程时间,0-向下, 1向上")
private Integer travelUpDown;
@ApiModelProperty(value = "绿波详情列表")
private List<GreenOptInfoDTO> details;
}
package net.wanji.opt.vo2;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author duanruiming
* @date 2025/03/11 11:03
*/
@Data
@ApiModel(value = "GreenOptMonitoringVO", description = "态势监测-运行监测-干线优化监测")
public class GreenOptMonitoringVO {
@ApiModelProperty(value = "绿波编号")
private Integer greenId;
@ApiModelProperty(value = "绿波事件")
private String type;
@ApiModelProperty(value = "绿波名称")
private String greenName;
}
......@@ -3,7 +3,7 @@
<mapper namespace="net.wanji.opt.dao.mapper.GreenWaveRealTimeMapperV2Mapper">
<!-- 态势监测-区域体检-绿波列表 -->
<select id="selectGreenOptInfoList" resultType="net.wanji.opt.vo2.GreenOptInfoVO">
<select id="selectGreenOptInfoList" resultType="net.wanji.opt.vo2.GreenOptInfoDTO">
select t2.green_id greenId, t1.name greenName, t2.road_direction roadDirection,
t2.traffic_index trafficIndex, t1.wkt, t2.trval_time as travelTime, t2.speed
from t_greenwave_info t1
......
......@@ -253,6 +253,16 @@
) t1 group by t1.type
</select>
<!-- 态势监测-运行监测-干线优化监测 -->
<select id="selectGreenOptMonitoringList" resultType="net.wanji.opt.vo2.GreenOptMonitoringVO">
select distinct t1.name greenName, t1.id greenId, ifnull(t2.type, '700') type
from t_greenwave_info t1
left join t_event_info t2 on t1.id = t2.green_id
and t2.dt = curdate() and t2.type in ('705', '706')
and t2.start_time <![CDATA[ < ]]> now() and ifnull(t2.end_time, now()) <![CDATA[ >= ]]> now()
order by t2.start_time desc
</select>
</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