Commit 85cbc010 authored by zhoushiguang's avatar zhoushiguang

修改为批量插入

parent 05a703a4
......@@ -9,9 +9,13 @@ import java.util.List;
import java.util.Map;
public interface AnalysisProblemAndStrategyDayMapper extends BaseMapper<AnalysisProblemAndStrategyDay> {
List<AnalysisProblemAndStrategyDay> selectCrossEvent();
List<AnalysisProblemAndStrategyDay> selectGreenEvent();
Integer insertProblemAndStrategy(AnalysisProblemAndStrategyDay analysisProblemAndStrategyDay);
List<AnalysisProblemAndStrategyDay> selectCrossEvent(@Param("dtStart") Integer dtStart,@Param("dtEnd") Integer dtEnd);
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 getCrossStrategy(@Param("crossID") String crossID, @Param("time") String time,@Param("eventSerialNumber") String eventSerialNumber);
}
package net.wanji.opt.servicev2.judgeanalysis;
import org.apache.ibatis.annotations.Param;
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;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* <p>
......@@ -29,15 +33,20 @@ public class AnalysisProblemAndStrategyDayImpl extends ServiceImpl<AnalysisProbl
private AnalysisProblemAndStrategyDayMapper analysisProblemAndStrategyDayMapper;
public void selectCountByType() {
StopWatch stopWatch = new StopWatch("事件优化时长计算监控");
public void selectCountByTypeOfGreen(Integer dtStart,Integer dtEnd) {
StopWatch stopWatch = new StopWatch("干线事件优化时长计算监控");
stopWatch.start();
//查询路口事件数据
List<AnalysisProblemAndStrategyDay> crossEvenList = analysisProblemAndStrategyDayMapper.selectCrossEvent();
if (crossEvenList.size() > 0) {
//循环查找路口事件数据是否有策略下发
for (AnalysisProblemAndStrategyDay vo : crossEvenList) {
AnalysisProblemAndStrategyDay temp = analysisProblemAndStrategyDayMapper.getCrossStrategy(vo.getCrossId(), vo.getHappenStartTime(),vo.getEventSerialNumber());
//查询干线事件数据
List<AnalysisProblemAndStrategyDay> greenEvenList = analysisProblemAndStrategyDayMapper.selectGreenEvent(dtStart,dtEnd);
int size = greenEvenList.size();
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) {
vo.setOptStatus(0);
} else {
......@@ -46,23 +55,49 @@ public class AnalysisProblemAndStrategyDayImpl extends ServiceImpl<AnalysisProbl
vo.setOptEndTime(temp.getOptEndTime());
vo.setOptDuration(temp.getOptDuration());
}
LocalDate previousDay = LocalDate.now().minusDays(1);
String formattedDate = previousDay.format(DateTimeFormatter.ofPattern("yyyyMMdd"));
vo.setDt(formattedDate);
// LocalDate previousDay = LocalDate.now().minusDays(1);
// String formattedDate = previousDay.format(DateTimeFormatter.ofPattern("yyyyMMdd"));
vo.setDt(vo.getDt());
vo.setInsertTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
//路口数据设置干线ID为不存在的ID
vo.setGreenId("-1");
//写入数据--Error
analysisProblemAndStrategyDayMapper.insertProblemAndStrategy(vo);
//干线数据设置路口ID为不存在的null字符串
vo.setCrossId("null");
saveList.add(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) {
for (AnalysisProblemAndStrategyDay vo : greenEvenList) {
AnalysisProblemAndStrategyDay temp = analysisProblemAndStrategyDayMapper.getGreenStrategy(vo.getGreenId(), vo.getHappenStartTime());
}
public void selectCountByTypeOfCross(Integer dtStart,Integer dtEnd) {
StopWatch stopWatch = new StopWatch("路口事件优化时长计算监控");
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) {
vo.setOptStatus(0);
} else {
......@@ -71,18 +106,34 @@ public class AnalysisProblemAndStrategyDayImpl extends ServiceImpl<AnalysisProbl
vo.setOptEndTime(temp.getOptEndTime());
vo.setOptDuration(temp.getOptDuration());
}
LocalDate previousDay = LocalDate.now().minusDays(1);
String formattedDate = previousDay.format(DateTimeFormatter.ofPattern("yyyyMMdd"));
vo.setDt(formattedDate);
// LocalDate previousDay = LocalDate.now().minusDays(1);
// String formattedDate = previousDay.format(DateTimeFormatter.ofPattern("yyyyMMdd"));
vo.setDt(vo.getDt());
vo.setInsertTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
//干线数据设置路口ID为不存在的null字符串
vo.setCrossId("null");
//写入数据
analysisProblemAndStrategyDayMapper.insertProblemAndStrategy(vo);
//路口数据设置干线ID为不存在的ID
vo.setGreenId("-1");
saveList.add(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();
log.info("事件优化记录优化耗时:{}ms",stopWatch.getTotalTimeMillis());
log.info("路口事件优化时长计算监控总耗时:{}ms", stopWatch.getTotalTimeMillis());
}
......
......@@ -22,9 +22,21 @@ public class AnalysisProblemAndStrategyDayTask {
private AnalysisProblemAndStrategyDayService analysisProblemAndStrategyDayService;
@Scheduled(cron = "0 15 1 * * ?")
public void task() {
public void taskCross() {
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) {
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