Commit b43e3d51 authored by zhoushiguang's avatar zhoushiguang

干线周报接口-优化计算

parent 5d5132a7
......@@ -207,7 +207,7 @@ public class OptimizeStatisticTask {
while (beginOfDay.before(endOfDay)) {
String startDate = cn.hutool.core.date.DateUtil.format(beginOfDay, "yyyy-MM-dd HH:mm:ss");
beginOfDay = cn.hutool.core.date.DateUtil.offsetDay(beginOfDay,1);
beginOfDay = cn.hutool.core.date.DateUtil.offsetDay(beginOfDay, 1);
String endDate = cn.hutool.core.date.DateUtil.format(beginOfDay, "yyyy-MM-dd HH:mm:ss");
//==========================================================================================================//
......@@ -245,23 +245,29 @@ public class OptimizeStatisticTask {
//==========================================================================================================//
List<AnalysisReportCrossOptimizeDetail> optimizeList = new ArrayList<>();
Map<String, List<StrategyCrossResultEntity>> groupByCross = list.stream().collect(Collectors.groupingBy(StrategyCrossResultEntity::getCrossId));
Map<String, List<StrategyCrossResultEntity>> groupByCross = list.stream().collect(Collectors.groupingBy(o -> o.getCrossId() + "_" + o.getCurrentAlgo()));
for (Map.Entry<String, List<StrategyCrossResultEntity>> entry : groupByCross.entrySet()) {
String[] sps = entry.getKey().split("_");
String crossId = sps[0];
String strategy = sps[1];
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();
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"));
DateTime optStartTime = DateTime.parse(controlStartTime, DateTimeFormat.forPattern(EsDateIndexUtil.YMD_HM_FORMATTER)).minusMinutes(15);
DateTime optStartTime = DateTime.parse(controlStartTime, DateTimeFormat.forPattern(EsDateIndexUtil.YMD_HM_FORMATTER));
String optStartTimeStr = controlStartTime.substring(0, controlStartTime.indexOf(" ") + 1) + Tools.fillZeroFront(optStartTime.getHourOfDay() + "", 2) + ":" + Tools.fillZeroFront((int) Math.ceil(optStartTime.getMinuteOfHour() / 5) * 5 + "", 2) + ":00";
Map<String, Object> params = new HashMap<>();
params.put("crossId", entry.getKey());
params.put("crossId", crossId);
params.put("startDate", optStartTimeStr);
params.put("endDate", controlEndTime);
params.put("groupType", "0");
......@@ -271,12 +277,13 @@ public class OptimizeStatisticTask {
AnalysisReportCrossOptimizeDetail thisData = this.getWeedData(thisWeekList);
//上周策略同期-开始时间
DateTime lastWeekDateStartTime = optStartTime.minusWeeks(1).minusMinutes(15);
;
DateTime lastWeekDateStartTime = optStartTime.minusWeeks(1);
DateTime lastWeekDateEndTime = new DateTime(maxTime.getIssueTime()).plusSeconds(duration).minusWeeks(1);
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";
//上周策略同期-截止时间
String lastWeekEndTime = lastWeekDateStartTime.plusSeconds(minTime.getDuration()).toString(DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"));
String lastWeekEndTime = lastWeekDateEndTime.toString(DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"));
params.put("startDate", lastOptStartTimeStr);
params.put("endDate", lastWeekEndTime);
//上周指标数据
......@@ -292,7 +299,7 @@ public class OptimizeStatisticTask {
detail.setWeekStartTime(cn.hutool.core.date.DateUtil.beginOfWeek(minTime.getIssueTime()).toLocalDateTime());
;
detail.setWeekEndTime(cn.hutool.core.date.DateUtil.endOfWeek(minTime.getIssueTime()).toLocalDateTime());
detail.setOptimizeCount((int)count);
detail.setOptimizeCount((int) count);
detail.setOptimizeDuration(duration);
detail.setOptimizeStartTime(LocalDateTime.parse(controlStartTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
detail.setOptimizeEndTime(LocalDateTime.parse(controlEndTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
......@@ -305,6 +312,7 @@ public class OptimizeStatisticTask {
detail.setLastWeekStopTimes(lastData.getStopTimes());
detail.setLastWeekDelayTime(lastData.getDelayTime());
detail.setLastWeekMaxQueueLength(lastData.getMaxQueueLength());
detail.setInsertTime(LocalDateTime.now());
String eventSerialNumber = minTime.getEventId();
Map<String, Object> eventParma = new HashMap<>();
......@@ -316,10 +324,10 @@ public class OptimizeStatisticTask {
detail.setDirs(CommonUtils.getEventHappenDirName(dir));
}
optimizeList.add(detail);
if (optimizeList.size() % 500 == 0) {
if (optimizeList.size() % 100 == 0) {
analysisReportCrossOptimizeDetailMapper.insertBatch(optimizeList);
optimizeList.clear();
log.info("计算路口周报-路口优分批入库耗时:{}ms,size:{} ,starDate:{}", System.currentTimeMillis() - et1,optimizeList.size(), startDate);
log.info("计算路口周报-路口优分批入库耗时:{}ms,size:{} ,starDate:{}", System.currentTimeMillis() - et1, optimizeList.size(), startDate);
}
}
//==========================================================================================================//
......
......@@ -10,6 +10,6 @@ spring:
password: nacos
application:
# dubbo启动需要程序名称
name: signal-optimize-service
name: signal-optimize-data-compute
main:
allow-circular-references: true
......@@ -304,7 +304,7 @@
,#{entity.yearWeek}
,#{entity.weekStartTime}
,#{entity.weekEndTime}
,#{entity.insertTime}
,now()
,#{entity.lastWeekCapacity}
,#{entity.lastWeekStopTimes}
,#{entity.lastWeekDelayTime}
......
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