Commit 89938984 authored by zhoushiguang's avatar zhoushiguang

干线周报接口-优化计算

parent c886e08d
...@@ -248,77 +248,78 @@ public class OptimizeStatisticTask { ...@@ -248,77 +248,78 @@ public class OptimizeStatisticTask {
Map<String, List<StrategyCrossResultEntity>> groupByCross = list.stream().collect(Collectors.groupingBy(StrategyCrossResultEntity::getCrossId)); Map<String, List<StrategyCrossResultEntity>> groupByCross = list.stream().collect(Collectors.groupingBy(StrategyCrossResultEntity::getCrossId));
for (Map.Entry<String, List<StrategyCrossResultEntity>> entry : groupByCross.entrySet()) { for (Map.Entry<String, List<StrategyCrossResultEntity>> entry : groupByCross.entrySet()) {
List<StrategyCrossResultEntity> value = entry.getValue(); List<StrategyCrossResultEntity> value = entry.getValue();
StrategyCrossResultEntity minTime = value.stream().min(Comparator.comparing(o->o.getIssueTime())).orElse(new StrategyCrossResultEntity());
StrategyCrossResultEntity maxTime = value.stream().max(Comparator.comparing(o->o.getIssueTime())).orElse(new StrategyCrossResultEntity());
int duration = value.stream().mapToInt(o->o.getDuration()).sum();
long count = value.size();
//优化控制时段-开始时间
String controlStartTime = DateUtil.formatDate(minTime.getIssueTime(), "yyyy-MM-dd HH:mm:ss");
//优化控制时段-截止时间
String controlEndTime = new DateTime(maxTime.getIssueTime()).plusSeconds(duration).toString(DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"));
for (StrategyCrossResultEntity result : value) { DateTime optStartTime = DateTime.parse(controlStartTime, DateTimeFormat.forPattern(EsDateIndexUtil.YMD_HM_FORMATTER)).minusMinutes(15);
//优化控制时段-开始时间 String optStartTimeStr = controlStartTime.substring(0, controlStartTime.indexOf(" ") + 1) + Tools.fillZeroFront(optStartTime.getHourOfDay() + "", 2) + ":" + Tools.fillZeroFront((int) Math.ceil(optStartTime.getMinuteOfHour() / 5) * 5 + "", 2) + ":00";
String controlStartTime = DateUtil.formatDate(result.getIssueTime(), "yyyy-MM-dd HH:mm:ss");
//优化控制时段-截止时间 Map<String, Object> params = new HashMap<>();
String controlEndTime = new DateTime(result.getIssueTime()).plusSeconds(result.getDuration()).toString(DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss")); params.put("crossId", entry.getKey());
params.put("startDate", optStartTimeStr);
DateTime optStartTime = DateTime.parse(controlStartTime, DateTimeFormat.forPattern(EsDateIndexUtil.YMD_HM_FORMATTER)).minusMinutes(15); params.put("endDate", controlEndTime);
String optStartTimeStr = controlStartTime.substring(0, controlStartTime.indexOf(" ") + 1) + Tools.fillZeroFront(optStartTime.getHourOfDay() + "", 2) + ":" + Tools.fillZeroFront((int) Math.ceil(optStartTime.getMinuteOfHour() / 5) * 5 + "", 2) + ":00"; params.put("groupType", "0");
params.put("objectType", "4");
Map<String, Object> params = new HashMap<>(); //本周指标数据
params.put("crossId", result.getCrossId()); List<CrossLaneDataHistPoExtend> thisWeekList = greenwaveHistoryMapper.findCrossObjectIndex(params);
params.put("startDate", optStartTimeStr); AnalysisReportCrossOptimizeDetail thisData = this.getWeedData(thisWeekList);
params.put("endDate", controlEndTime);
params.put("groupType", "0"); //上周策略同期-开始时间
params.put("objectType", "4"); DateTime lastWeekDateStartTime = optStartTime.minusWeeks(1).minusMinutes(15);
//本周指标数据 ;
List<CrossLaneDataHistPoExtend> thisWeekList = greenwaveHistoryMapper.findCrossObjectIndex(params); String lastWeekStartTime = lastWeekDateStartTime.toString(DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"));
AnalysisReportCrossOptimizeDetail thisData = this.getWeedData(thisWeekList); String lastOptStartTimeStr = lastWeekStartTime.substring(0, lastWeekStartTime.indexOf(" ") + 1) + Tools.fillZeroFront(lastWeekDateStartTime.getHourOfDay() + "", 2) + ":" + Tools.fillZeroFront((int) Math.ceil(lastWeekDateStartTime.getMinuteOfHour() / 5) * 5 + "", 2) + ":00";
//上周策略同期-截止时间
//上周策略同期-开始时间 String lastWeekEndTime = lastWeekDateStartTime.plusSeconds(minTime.getDuration()).toString(DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"));
DateTime lastWeekDateStartTime = optStartTime.minusWeeks(1).minusMinutes(15); params.put("startDate", lastOptStartTimeStr);
; params.put("endDate", lastWeekEndTime);
String lastWeekStartTime = lastWeekDateStartTime.toString(DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss")); //上周指标数据
String lastOptStartTimeStr = lastWeekStartTime.substring(0, lastWeekStartTime.indexOf(" ") + 1) + Tools.fillZeroFront(lastWeekDateStartTime.getHourOfDay() + "", 2) + ":" + Tools.fillZeroFront((int) Math.ceil(lastWeekDateStartTime.getMinuteOfHour() / 5) * 5 + "", 2) + ":00"; List<CrossLaneDataHistPoExtend> lastWeekList = greenwaveHistoryMapper.findCrossObjectIndex(params);
//上周策略同期-截止时间 AnalysisReportCrossOptimizeDetail lastData = this.getWeedData(lastWeekList);
String lastWeekEndTime = lastWeekDateStartTime.plusSeconds(result.getDuration()).toString(DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"));
params.put("startDate", lastOptStartTimeStr); DateTime issueTime = new DateTime(minTime.getIssueTime());
params.put("endDate", lastWeekEndTime);
//上周指标数据 AnalysisReportCrossOptimizeDetail detail = new AnalysisReportCrossOptimizeDetail();
List<CrossLaneDataHistPoExtend> lastWeekList = greenwaveHistoryMapper.findCrossObjectIndex(params); detail.setCrossId(minTime.getCrossId());
AnalysisReportCrossOptimizeDetail lastData = this.getWeedData(lastWeekList); detail.setYearWeek(Integer.parseInt(issueTime.getYear() + "" + issueTime.getWeekOfWeekyear()));
detail.setWeekDay(issueTime.getDayOfWeek() + 1);
DateTime issueTime = new DateTime(result.getIssueTime()); detail.setWeekStartTime(cn.hutool.core.date.DateUtil.beginOfWeek(minTime.getIssueTime()).toLocalDateTime());
;
AnalysisReportCrossOptimizeDetail detail = new AnalysisReportCrossOptimizeDetail(); detail.setWeekEndTime(cn.hutool.core.date.DateUtil.endOfWeek(minTime.getIssueTime()).toLocalDateTime());
detail.setCrossId(result.getCrossId()); detail.setOptimizeCount((int)count);
detail.setYearWeek(Integer.parseInt(issueTime.getYear() + "" + issueTime.getWeekOfWeekyear())); detail.setOptimizeDuration(duration);
detail.setWeekDay(issueTime.getDayOfWeek() + 1); detail.setOptimizeStartTime(LocalDateTime.parse(controlStartTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
detail.setWeekStartTime(cn.hutool.core.date.DateUtil.beginOfWeek(result.getIssueTime()).toLocalDateTime()); detail.setOptimizeEndTime(LocalDateTime.parse(controlEndTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
; detail.setStragetyId(minTime.getCurrentAlgo());
detail.setWeekEndTime(cn.hutool.core.date.DateUtil.endOfWeek(result.getIssueTime()).toLocalDateTime()); detail.setCapacity(thisData.getCapacity());
detail.setOptimizeCount(1); detail.setStopTimes(thisData.getStopTimes());
detail.setOptimizeDuration(result.getDuration()); detail.setDelayTime(thisData.getDelayTime());
detail.setOptimizeStartTime(LocalDateTime.parse(controlStartTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); detail.setMaxQueueLength(thisData.getMaxQueueLength());
detail.setOptimizeEndTime(LocalDateTime.parse(controlEndTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); detail.setLastWeekCapacity(lastData.getCapacity());
detail.setStragetyId(result.getCurrentAlgo()); detail.setLastWeekStopTimes(lastData.getStopTimes());
detail.setCapacity(thisData.getCapacity()); detail.setLastWeekDelayTime(lastData.getDelayTime());
detail.setStopTimes(thisData.getStopTimes()); detail.setLastWeekMaxQueueLength(lastData.getMaxQueueLength());
detail.setDelayTime(thisData.getDelayTime());
detail.setMaxQueueLength(thisData.getMaxQueueLength()); String eventSerialNumber = minTime.getEventId();
detail.setLastWeekCapacity(lastData.getCapacity()); Map<String, Object> eventParma = new HashMap<>();
detail.setLastWeekStopTimes(lastData.getStopTimes()); eventParma.put("eventSerialNumber", eventSerialNumber);
detail.setLastWeekDelayTime(lastData.getDelayTime()); List<EventInfo> eventInfoList = eventInfoMapper.findByMap(eventParma);
detail.setLastWeekMaxQueueLength(lastData.getMaxQueueLength()); //获取事件方向
if (!eventInfoList.isEmpty()) {
String eventSerialNumber = result.getEventId(); String dir = eventInfoList.get(0).getDir();
Map<String, Object> eventParma = new HashMap<>(); detail.setDirs(CommonUtils.getEventHappenDirName(dir));
eventParma.put("eventSerialNumber", eventSerialNumber); }
List<EventInfo> eventInfoList = eventInfoMapper.findByMap(eventParma); optimizeList.add(detail);
//获取事件方向 if (optimizeList.size() % 500 == 0) {
if (!eventInfoList.isEmpty()) { analysisReportCrossOptimizeDetailMapper.insertBatch(optimizeList);
String dir = eventInfoList.get(0).getDir(); optimizeList.clear();
detail.setDirs(CommonUtils.getEventHappenDirName(dir)); log.info("计算路口周报-路口优分批入库耗时:{}ms,size:{} ,starDate:{}", System.currentTimeMillis() - et1,optimizeList.size(), startDate);
}
optimizeList.add(detail);
if (optimizeList.size() % 500 == 0) {
analysisReportCrossOptimizeDetailMapper.insertBatch(optimizeList);
optimizeList.clear();
log.info("计算路口周报-路口优分批入库耗时:{}ms,size:{} ,starDate:{}", System.currentTimeMillis() - et1,optimizeList.size(), startDate);
}
} }
} }
//==========================================================================================================// //==========================================================================================================//
......
...@@ -22,7 +22,7 @@ import java.util.List; ...@@ -22,7 +22,7 @@ import java.util.List;
*/ */
public class CodeGeneratorMYSQLPlus { public class CodeGeneratorMYSQLPlus {
static String baseOutputDir = "./signal-optimize-service"; static String baseOutputDir = "./signal-optimize-service";
static String subModulePackage = ".judgeanalysis"; static String subModulePackage = ".report";
public static void main(String[] args) { public static void main(String[] args) {
// 生成地址 : // System.getProperty("user.dir") == 得到当前项目的实际地址 // 生成地址 : // System.getProperty("user.dir") == 得到当前项目的实际地址
...@@ -32,7 +32,7 @@ public class CodeGeneratorMYSQLPlus { ...@@ -32,7 +32,7 @@ public class CodeGeneratorMYSQLPlus {
System.out.println(outputDir); System.out.println(outputDir);
// 表名, 注意大小写 // 表名, 注意大小写
String[] tableNames = new String[]{"t_analysis_problem_green_day"}; String[] tableNames = new String[]{"t_analysis_report_cross_optimize_detail"};
// 数据库地址 // 数据库地址
String url = "jdbc:mysql://localhost:3306/wjdit_ecosystem_db_v1.0.0?serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&characterEncoding=utf8"; String url = "jdbc:mysql://localhost:3306/wjdit_ecosystem_db_v1.0.0?serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&characterEncoding=utf8";
......
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