Commit 13bd727e authored by 黄伟铭's avatar 黄伟铭

Merge remote-tracking branch 'origin/master'

parents 0f4a62a6 6f935773
......@@ -10,6 +10,7 @@ import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.common.utils.tool.StringUtils;
import net.wanji.databus.vo.LightsStatusVO2;
import net.wanji.opt.dto.GreenBeltChartDTO;
import net.wanji.opt.servicev2.TrendServiceV2;
import net.wanji.opt.vo2.*;
import org.springframework.web.bind.annotation.*;
......@@ -288,4 +289,23 @@ public class TrendControllerV2 {
}
return JsonViewObject.newInstance().success(lightsStatusVO2);
}
@ApiOperation(value = "态势监测-绿波时序图", notes = "态势监测-绿波时序图",
response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@GetMapping(value = "/green4SchemeChart")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = String.class),
})
public JsonViewObject green4SchemeChart(Integer greenId, String date) throws Exception {
GreenBeltChartDTO result = new GreenBeltChartDTO();
try {
result = trendServiceV2.green4SchemeChart(greenId, date);
} catch (Exception e) {
log.error("态势监测-绿波时序图:", e);
JsonViewObject.newInstance().success(result, "");
}
return JsonViewObject.newInstance().success(result, "");
}
}
\ No newline at end of file
package net.wanji.opt.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import net.wanji.opt.entity.GreenChartSchemeHist;
/**
* @author duanruiming
* @date 2025/04/10 11:32
*/
public interface GreenChartSchemeHistMapper extends BaseMapper<GreenChartSchemeHist> {
}
......@@ -24,5 +24,6 @@ public class GreenBeltChartDTO {
private Map<String, List<List<Double>>> backCrossRedTimesMap;
private Map<String, List<List<Double>>> crossGreenTimesMap;
private Map<String, List<List<Double>>> backCrossGreenTimesMap;
private List<Map<String, List<Double>>> greenwaveStartGroup;
private List<Map<String, List<List<Double>>>> greenwaveStartGroup;
private List<Map<String, List<List<Double>>>> backGreenwaveStartGroup;
}
package net.wanji.opt.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author duanruiming
* @date 2025/04/10 11:28
*/
@Data
@TableName("t_green_chart_scheme_hist")
public class GreenChartSchemeHist {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@TableField("green_id")
private Integer greenId;
@TableField("green_chart")
private String greenChart;
@TableField("scheme_detail")
private String schemeDetail;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@TableField("create_time")
private Date createTime;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@TableField("modify_time")
private Date modifyTime;
}
......@@ -28,10 +28,7 @@ public class AnalysisGreenWaveOptimizeWeek implements Serializable {
* 星期几:1~7代表周一至周日
*/
private Integer weekDay;
/**
* 拥堵指数
*/
private Double congestIndex;
/**
* 优化时段开始时间
......@@ -58,30 +55,62 @@ public class AnalysisGreenWaveOptimizeWeek implements Serializable {
*/
private Integer optimizeDuration;
/**
* 拥堵指数
*/
private Double congestIndex;
/**
* 上周拥堵指数
*/
private Double lastWeekCongestIndex;
/**
* 通行能力(辆)
*/
private Integer capacity;
/**
* 上周通行能力(辆)
*/
private Integer lastWeekCapacity;
/**
* 停车次数
*/
private Double stopTimes;
/**
* 上周停车次数
*/
private Double lastWeekStopTimes;
/**
* 延误时间,单位秒
*/
private Double delayTime;
/**
* 上周延误时间,单位秒
*/
private Double lastWeekDelayTime;
/**
* 行程时间,单位秒
*/
private Integer travelTime;
/**
* 上周行程时间,单位秒
*/
private Integer lastWeekTravelTime;
/**
* 平均速度,单位km/h
*/
private Double speed;
/**
* 上周平均速度,单位km/h
*/
private Double lastWeekSpeed;
/**
* 一年中的第几周
......
......@@ -2,6 +2,7 @@ package net.wanji.opt.servicev2;
import com.github.pagehelper.PageInfo;
import net.wanji.databus.vo.LightsStatusVO2;
import net.wanji.opt.dto.GreenBeltChartDTO;
import net.wanji.opt.vo2.*;
import java.util.List;
......@@ -36,4 +37,5 @@ public interface TrendServiceV2 {
LightsStatusVO2 selectLightStatusHist(String id, String date) throws Exception;
GreenBeltChartDTO green4SchemeChart(Integer id, String date) throws Exception;
}
\ No newline at end of file
package net.wanji.opt.servicev2.implv2;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.pagehelper.PageHelper;
......@@ -28,6 +29,8 @@ import net.wanji.opt.common.RedisUtils;
import net.wanji.opt.common.enums.EventInfoTypeEnum;
import net.wanji.opt.common.enums.GreenBeltDirEnum;
import net.wanji.opt.dao.mapper.*;
import net.wanji.opt.dto.GreenBeltChartDTO;
import net.wanji.opt.entity.GreenChartSchemeHist;
import net.wanji.opt.po.StrategyGreenOptHistEntity;
import net.wanji.opt.servicev2.TrendServiceV2;
import net.wanji.opt.synthesis.pojo.StrategyCrossResultEntity;
......@@ -81,6 +84,8 @@ public class TrendServiceV2Impl implements TrendServiceV2 {
private UtcFeignClients utcFeignClients;
@Resource
private StrategyFactoryMapper strategyFactoryMapper;
@Resource
private GreenChartSchemeHistMapper greenChartSchemeHistMapper;
private static List<OptMonitoringVO> greenListCache = new ArrayList<>(10);
private static List<OptMonitoringVO> crossListCache = new ArrayList<>(80);
......@@ -616,4 +621,26 @@ public class TrendServiceV2Impl implements TrendServiceV2 {
return null;
}
@Override
public GreenBeltChartDTO green4SchemeChart(Integer id, String date) throws Exception {
try {
GreenBeltChartDTO greenBeltChartDTO = new GreenBeltChartDTO();
LambdaQueryWrapper<GreenChartSchemeHist> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(GreenChartSchemeHist::getGreenId, id);
queryWrapper.le(GreenChartSchemeHist::getCreateTime, date);
queryWrapper.orderByDesc(GreenChartSchemeHist::getCreateTime);
queryWrapper.last("limit 1");
List<GreenChartSchemeHist> greenChartSchemeHists = greenChartSchemeHistMapper.selectList(queryWrapper);
if (!CollectionUtils.isEmpty(greenChartSchemeHists)) {
for (GreenChartSchemeHist greenChartSchemeHist : greenChartSchemeHists) {
greenBeltChartDTO = JacksonUtils.getInstance().readValue(greenChartSchemeHist.getGreenChart(), GreenBeltChartDTO.class);
}
}
return greenBeltChartDTO;
} catch (Exception e) {
log.error("态势监测-绿波时序图查询异常:{}", e);
throw new RuntimeException(e);
}
}
}
\ No newline at end of file
......@@ -63,7 +63,7 @@ public class OptimizeStatisticTask {
* 干线策略优化时长计算
*/
@Scheduled(cron = "0 40 1 * * ?")
//@PostConstruct
@PostConstruct
public void optimizeGreenWaveDurationCal() {
long st = System.currentTimeMillis();
try {
......@@ -137,6 +137,14 @@ public class OptimizeStatisticTask {
// }
GreenHistIndexDTO dto = greenwaveHistProvider.findGreenIndexByDateScope(result.getGreenId(),controlStartTime,controlEndTime);
//上周策略同期-开始时间
DateTime lastWeekDateTime = new DateTime(result.getControlTime()).minusWeeks(1);
String lastWeekStartTime = DateUtil.formatDate(lastWeekDateTime.toDate(),"yyyy-MM-dd HH:mm:ss");
//上周策略同期-截止时间
String lastWeekEndTime = lastWeekDateTime.plusSeconds(seconds).toString(DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"));
GreenHistIndexDTO lastWeekDto = greenwaveHistProvider.findGreenIndexByDateScope(result.getGreenId(),lastWeekStartTime,lastWeekEndTime);
AnalysisGreenWaveOptimizeWeek data = new AnalysisGreenWaveOptimizeWeek();
data.setGreenId(result.getGreenId());
data.setStragetyId(result.getStragetyId());
......@@ -149,6 +157,14 @@ public class OptimizeStatisticTask {
data.setStopTimes(dto.getStopTimes());
data.setCongestIndex(dto.getTrafficIndex());
}
if (lastWeekDto != null) {
data.setLastWeekCapacity(lastWeekDto.getCapacity());
data.setLastWeekDelayTime(lastWeekDto.getDelayTime());
data.setLastWeekSpeed(lastWeekDto.getSpeed());
data.setLastWeekTravelTime(lastWeekDto.getTravelTime());
data.setLastWeekStopTimes(lastWeekDto.getStopTimes());
data.setLastWeekCongestIndex(lastWeekDto.getTrafficIndex());
}
data.setWeekDay(result.getWeekDay());
data.setOptimizeStartTime(LocalDateTime.parse(controlStartTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
data.setOptimizeEndTime(LocalDateTime.parse(controlEndTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
......@@ -165,8 +181,7 @@ public class OptimizeStatisticTask {
if (!durationList.isEmpty()) {
analysisGreenWaveOptimizeWeekMapper.insertBatch(durationList);
}
long et = System.currentTimeMillis();
log.info("批量保存干线优化数据据耗时:{}ms,size:{}", et - st, durationList.size());
long et = System.currentTimeMillis();log.info("批量保存干线优化数据据耗时:{}ms,size:{}", et - st, durationList.size());
} catch (Exception e) {
log.error("", e);
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="net.wanji.opt.dao.mapper.GreenChartSchemeHistMapper">
</mapper>
......@@ -6,6 +6,7 @@
<!-- 通用查询列 -->
<sql id="Base_Column_List">
green_id, road_direction, week_day, optimize_start_time, optimize_end_time, stragety_id, optimize_count, optimize_duration, capacity,congest_index, stop_times, delay_time, travel_time, speed, year_week, week_start_time, week_end_time, insert_time
,last_week_congest_index,last_week_capacity,last_week_stop_times,last_week_delay_time,last_week_travel_time,last_week_speed
</sql>
<!-- 通用条件列 -->
......@@ -123,14 +124,23 @@
<result column="optimize_start_time" property="optimizeStartTime"/>
<result column="optimize_end_time" property="optimizeEndTime"/>
<result column="stragety_id" property="stragetyId"/>
<result column="congest_index" property="congestIndex"/>
<result column="optimize_count" property="optimizeCount"/>
<result column="optimize_duration" property="optimizeDuration"/>
<result column="congest_index" property="congestIndex"/>
<result column="capacity" property="capacity"/>
<result column="stop_times" property="stopTimes"/>
<result column="delay_time" property="delayTime"/>
<result column="travel_time" property="travelTime"/>
<result column="speed" property="speed"/>
<result column="last_week_congest_index" property="lastWeekCongestIndex"/>
<result column="last_week_capacity" property="lastWeekCapacity"/>
<result column="last_week_stop_times" property="lastWeekStopTimes"/>
<result column="last_week_delay_time" property="lastWeekDelayTime"/>
<result column="last_week_travel_time" property="lastWeekTravelTime"/>
<result column="last_week_speed" property="lastWeekSpeed"/>
<result column="year_week" property="yearWeek"/>
<result column="week_start_time" property="weekStartTime"/>
<result column="week_end_time" property="weekEndTime"/>
......@@ -199,6 +209,7 @@
,week_end_time
,insert_time
,congest_index
,last_week_congest_index,last_week_capacity,last_week_stop_times,last_week_delay_time,last_week_travel_time,last_week_speed
) VALUES (
#{greenId}
,#{roadDirection}
......@@ -218,13 +229,14 @@
,#{weekEndTime}
,#{insertTime}
,#{congestIndex}
,#{lastWeekCongestIndex},#{lastWeekCapacity},#{lastWeekStopTimes},#{lastWeekDelayTime},#{lastWeekTravelTime},#{lastWeekSpeed}
)
</insert>
<insert id="insertBatch" parameterType="net.wanji.opt.entity.report.AnalysisGreenWaveOptimizeWeek">
INSERT INTO t_analysis_green_wave_optimize_week (
green_id
green_id
,road_direction
,week_day
,optimize_start_time
......@@ -242,6 +254,12 @@
,week_end_time
,insert_time
,congest_index
,last_week_congest_index
,last_week_capacity
,last_week_stop_times
,last_week_delay_time
,last_week_travel_time
,last_week_speed
) VALUES
<foreach collection="list" item="entity" separator=",">
(
......@@ -263,6 +281,12 @@
,#{entity.weekEndTime}
,#{entity.insertTime}
,#{entity.congestIndex}
,#{entity.lastWeekCongestIndex}
,#{entity.lastWeekCapacity}
,#{entity.lastWeekStopTimes}
,#{entity.lastWeekDelayTime}
,#{entity.lastWeekTravelTime}
,#{entity.lastWeekSpeed}
)
</foreach>
ON DUPLICATE KEY UPDATE
......@@ -284,7 +308,13 @@
week_start_time = VALUES(week_start_time),
week_end_time = VALUES(week_end_time),
insert_time = VALUES(insert_time),
congest_index = VALUES(congest_index)
congest_index = VALUES(congest_index),
last_week_congest_index = VALUES(last_week_congest_index),
last_week_capacity = VALUES(last_week_capacity),
last_week_stop_times = VALUES(last_week_stop_times),
last_week_delay_time = VALUES(last_week_delay_time),
last_week_travel_time = VALUES(last_week_travel_time),
last_week_speed = VALUES(last_week_speed)
</insert>
......
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