Commit 85cbc010 authored by zhoushiguang's avatar zhoushiguang

修改为批量插入

parent 05a703a4
...@@ -9,9 +9,13 @@ import java.util.List; ...@@ -9,9 +9,13 @@ import java.util.List;
import java.util.Map; import java.util.Map;
public interface AnalysisProblemAndStrategyDayMapper extends BaseMapper<AnalysisProblemAndStrategyDay> { public interface AnalysisProblemAndStrategyDayMapper extends BaseMapper<AnalysisProblemAndStrategyDay> {
List<AnalysisProblemAndStrategyDay> selectCrossEvent(); List<AnalysisProblemAndStrategyDay> selectCrossEvent(@Param("dtStart") Integer dtStart,@Param("dtEnd") Integer dtEnd);
List<AnalysisProblemAndStrategyDay> selectGreenEvent();
Integer insertProblemAndStrategy(AnalysisProblemAndStrategyDay analysisProblemAndStrategyDay); List<AnalysisProblemAndStrategyDay> selectGreenEvent(@Param("dtStart") Integer dtStart,@Param("dtEnd") Integer dtEnd);
Integer insertProblemAndStrategy(List<AnalysisProblemAndStrategyDay> list);
AnalysisProblemAndStrategyDay getGreenStrategy(@Param("greenID") String greenID, @Param("time") String time); AnalysisProblemAndStrategyDay getGreenStrategy(@Param("greenID") String greenID, @Param("time") String time);
AnalysisProblemAndStrategyDay getCrossStrategy(@Param("crossID") String crossID, @Param("time") String time,@Param("eventSerialNumber") String eventSerialNumber); AnalysisProblemAndStrategyDay getCrossStrategy(@Param("crossID") String crossID, @Param("time") String time,@Param("eventSerialNumber") String eventSerialNumber);
} }
package net.wanji.opt.servicev2.judgeanalysis; package net.wanji.opt.servicev2.judgeanalysis;
import org.apache.ibatis.annotations.Param;
public interface AnalysisProblemAndStrategyDayService { public interface AnalysisProblemAndStrategyDayService {
public void selectCountByType(); public void selectCountByTypeOfCross(Integer dtStart, Integer dtEnd);
public void selectCountByTypeOfGreen(Integer dtStart,Integer dtEnd);
} }
...@@ -12,7 +12,11 @@ import javax.annotation.Resource; ...@@ -12,7 +12,11 @@ import javax.annotation.Resource;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
* <p> * <p>
...@@ -29,15 +33,20 @@ public class AnalysisProblemAndStrategyDayImpl extends ServiceImpl<AnalysisProbl ...@@ -29,15 +33,20 @@ public class AnalysisProblemAndStrategyDayImpl extends ServiceImpl<AnalysisProbl
private AnalysisProblemAndStrategyDayMapper analysisProblemAndStrategyDayMapper; private AnalysisProblemAndStrategyDayMapper analysisProblemAndStrategyDayMapper;
public void selectCountByType() { public void selectCountByTypeOfGreen(Integer dtStart,Integer dtEnd) {
StopWatch stopWatch = new StopWatch("事件优化时长计算监控"); StopWatch stopWatch = new StopWatch("干线事件优化时长计算监控");
stopWatch.start(); stopWatch.start();
//查询路口事件数据 //查询干线事件数据
List<AnalysisProblemAndStrategyDay> crossEvenList = analysisProblemAndStrategyDayMapper.selectCrossEvent(); List<AnalysisProblemAndStrategyDay> greenEvenList = analysisProblemAndStrategyDayMapper.selectGreenEvent(dtStart,dtEnd);
if (crossEvenList.size() > 0) {
//循环查找路口事件数据是否有策略下发 int size = greenEvenList.size();
for (AnalysisProblemAndStrategyDay vo : crossEvenList) {
AnalysisProblemAndStrategyDay temp = analysisProblemAndStrategyDayMapper.getCrossStrategy(vo.getCrossId(), vo.getHappenStartTime(),vo.getEventSerialNumber()); if (greenEvenList.size() > 0) {
long st = System.currentTimeMillis();
List<AnalysisProblemAndStrategyDay> saveList = new ArrayList<>();// greenEvenList.stream().filter(o->o.getGreenId().equals("1")).collect(Collectors.toList());
long total = 0;
for (AnalysisProblemAndStrategyDay vo : greenEvenList) {
AnalysisProblemAndStrategyDay temp = analysisProblemAndStrategyDayMapper.getGreenStrategy(vo.getGreenId(), vo.getHappenStartTime());
if (temp == null) { if (temp == null) {
vo.setOptStatus(0); vo.setOptStatus(0);
} else { } else {
...@@ -46,23 +55,49 @@ public class AnalysisProblemAndStrategyDayImpl extends ServiceImpl<AnalysisProbl ...@@ -46,23 +55,49 @@ public class AnalysisProblemAndStrategyDayImpl extends ServiceImpl<AnalysisProbl
vo.setOptEndTime(temp.getOptEndTime()); vo.setOptEndTime(temp.getOptEndTime());
vo.setOptDuration(temp.getOptDuration()); vo.setOptDuration(temp.getOptDuration());
} }
// LocalDate previousDay = LocalDate.now().minusDays(1);
LocalDate previousDay = LocalDate.now().minusDays(1); // String formattedDate = previousDay.format(DateTimeFormatter.ofPattern("yyyyMMdd"));
String formattedDate = previousDay.format(DateTimeFormatter.ofPattern("yyyyMMdd")); vo.setDt(vo.getDt());
vo.setDt(formattedDate);
vo.setInsertTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); vo.setInsertTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
//路口数据设置干线ID为不存在的ID //干线数据设置路口ID为不存在的null字符串
vo.setGreenId("-1"); vo.setCrossId("null");
//写入数据--Error saveList.add(vo);
analysisProblemAndStrategyDayMapper.insertProblemAndStrategy(vo); //写入数据
if (saveList.size() % 100 == 0) {
analysisProblemAndStrategyDayMapper.insertProblemAndStrategy(saveList);
long et = System.currentTimeMillis();
total += 100;
log.info("干线事件优化记录挂接-批量插入优化挂接记录耗时:{}ms,已入库数量:{},总记录数:{}", et - st,total,size);
st = et;
}
}
if (saveList.size() > 0) {
total += saveList.size();
analysisProblemAndStrategyDayMapper.insertProblemAndStrategy(saveList);
long et = System.currentTimeMillis();
log.info("干线事件优化记录挂接-批量插入优化挂接记录耗时:{}ms,已入库数量:{},总记录数:{}", et - st,total,size);
saveList.clear();
} }
} }
stopWatch.stop();
log.info("干线事件优化时长计算监控 耗时:{}ms", stopWatch.getTotalTimeMillis());
//查询干线事件数据 }
List<AnalysisProblemAndStrategyDay> greenEvenList = analysisProblemAndStrategyDayMapper.selectGreenEvent();
if (greenEvenList.size() > 0) { public void selectCountByTypeOfCross(Integer dtStart,Integer dtEnd) {
for (AnalysisProblemAndStrategyDay vo : greenEvenList) { StopWatch stopWatch = new StopWatch("路口事件优化时长计算监控");
AnalysisProblemAndStrategyDay temp = analysisProblemAndStrategyDayMapper.getGreenStrategy(vo.getGreenId(), vo.getHappenStartTime()); stopWatch.start();
//查询路口事件数据
List<AnalysisProblemAndStrategyDay> crossEvenList = analysisProblemAndStrategyDayMapper.selectCrossEvent(dtStart,dtEnd);
int size = crossEvenList.size();
if (crossEvenList.size() > 0) {
long st = System.currentTimeMillis();
long total = 0;
//循环查找路口事件数据是否有策略下发
List<AnalysisProblemAndStrategyDay> saveList = new ArrayList<>();
for (AnalysisProblemAndStrategyDay vo : crossEvenList) {
AnalysisProblemAndStrategyDay temp = analysisProblemAndStrategyDayMapper.getCrossStrategy(vo.getCrossId(), vo.getHappenStartTime(), vo.getEventSerialNumber());
if (temp == null) { if (temp == null) {
vo.setOptStatus(0); vo.setOptStatus(0);
} else { } else {
...@@ -71,18 +106,34 @@ public class AnalysisProblemAndStrategyDayImpl extends ServiceImpl<AnalysisProbl ...@@ -71,18 +106,34 @@ public class AnalysisProblemAndStrategyDayImpl extends ServiceImpl<AnalysisProbl
vo.setOptEndTime(temp.getOptEndTime()); vo.setOptEndTime(temp.getOptEndTime());
vo.setOptDuration(temp.getOptDuration()); vo.setOptDuration(temp.getOptDuration());
} }
LocalDate previousDay = LocalDate.now().minusDays(1);
String formattedDate = previousDay.format(DateTimeFormatter.ofPattern("yyyyMMdd")); // LocalDate previousDay = LocalDate.now().minusDays(1);
vo.setDt(formattedDate); // String formattedDate = previousDay.format(DateTimeFormatter.ofPattern("yyyyMMdd"));
vo.setDt(vo.getDt());
vo.setInsertTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); vo.setInsertTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
//干线数据设置路口ID为不存在的null字符串 //路口数据设置干线ID为不存在的ID
vo.setCrossId("null"); vo.setGreenId("-1");
//写入数据 saveList.add(vo);
analysisProblemAndStrategyDayMapper.insertProblemAndStrategy(vo); //写入数据--Error
if (saveList.size() % 100 == 0) {
analysisProblemAndStrategyDayMapper.insertProblemAndStrategy(saveList);
long et = System.currentTimeMillis();
total += 100;
log.info("干线事件优化记录挂接-批量插入优化挂接记录耗时:{}ms,已入库数量:{},总记录数:{}", et - st,total,size);
st = et;
}
} }
if (saveList.size() > 0) {
analysisProblemAndStrategyDayMapper.insertProblemAndStrategy(saveList);
long et = System.currentTimeMillis();
total += saveList.size();
log.info("干线事件优化记录挂接-批量插入优化挂接记录耗时:{}ms,已入库数量:{},总记录数:{}", et - st,total,size);
saveList.clear();
} }
}
stopWatch.stop(); stopWatch.stop();
log.info("事件优化记录优化耗时:{}ms",stopWatch.getTotalTimeMillis()); log.info("路口事件优化时长计算监控总耗时:{}ms", stopWatch.getTotalTimeMillis());
} }
......
...@@ -22,9 +22,21 @@ public class AnalysisProblemAndStrategyDayTask { ...@@ -22,9 +22,21 @@ public class AnalysisProblemAndStrategyDayTask {
private AnalysisProblemAndStrategyDayService analysisProblemAndStrategyDayService; private AnalysisProblemAndStrategyDayService analysisProblemAndStrategyDayService;
@Scheduled(cron = "0 15 1 * * ?") @Scheduled(cron = "0 15 1 * * ?")
public void task() { public void taskCross() {
try { try {
analysisProblemAndStrategyDayService.selectCountByType();
analysisProblemAndStrategyDayService.selectCountByTypeOfCross(null,null);
} catch (Exception e) {
log.error("获取事件优化记录异常", e);
}
}
@Scheduled(cron = "0 15 1 * * ?")
public void taskGreen() {
try {
analysisProblemAndStrategyDayService.selectCountByTypeOfGreen(null,null);
} catch (Exception e) { } catch (Exception e) {
log.error("获取事件优化记录异常", e); log.error("获取事件优化记录异常", e);
} }
......
/**
*
*/
import cn.hutool.core.date.DateUtil;
import net.wanji.opt.SignalOptimizeApplication;
import net.wanji.opt.dao.mapper.judgeanalysis.AnalysisProblemCrossDayMapper;
import net.wanji.opt.servicev2.judgeanalysis.AnalysisProblemAndStrategyDayService;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.Date;
/**
* @author fengyi
* @date
*/
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SignalOptimizeApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class EventOptimizeTaskTest {
@Autowired
private AnalysisProblemAndStrategyDayService analysisProblemAndStrategyDayService;
@Test
public void taskGreen() {
try {
//analysisProblemAndStrategyDayService.selectCountByTypeOfCross();
Integer dtStart = 20250423;// Integer.valueOf(DateUtil.beginOfMonth(new Date()).toString("yyyyMMdd"));
Integer dtEnd = 20250423;// Integer.valueOf(DateUtil.format(new Date(),"yyyyMMdd"));
analysisProblemAndStrategyDayService.selectCountByTypeOfGreen(dtStart,dtEnd);
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void taskCross() {
try {
Integer dtStart = 20250423;// Integer.valueOf(DateUtil.beginOfMonth(new Date()).toString("yyyyMMdd"));
Integer dtEnd = 20250423; //Integer.valueOf(DateUtil.format(new Date(),"yyyyMMdd"));
analysisProblemAndStrategyDayService.selectCountByTypeOfCross(dtStart,dtEnd);
} catch (Exception e) {
e.printStackTrace();
}
}
}
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