Commit 7badecbe authored by wangyecheng's avatar wangyecheng

Merge remote-tracking branch 'origin/master'

parents bf397310 828e5f1c
......@@ -42,6 +42,6 @@ public interface AiOptimizeStatisticMapper extends BaseMapper<AiOptimizeStatisti
*/
Integer addAiOptimizeStatistic(AiOptimizeStatistic aiOptimizeStatistic);
List<AiOptimizeStatistic> greenOptimizeByTimeTrend(String greenId, Integer startTime, Integer endTime);
//List<AiOptimizeStatistic> greenOptimizeByTimeTrend(String greenId, Integer startTime, Integer endTime);
}
......@@ -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);
}
......@@ -87,9 +87,9 @@ import java.util.Map;
@Override
public Map<String, Object> greenOptimizeByTimeTrend(String greenId, Integer startTime, Integer endTime) {
List<AiOptimizeStatistic> list=aiOptimizeStatisticMapper.greenOptimizeByTimeTrend(greenId,startTime,endTime);
//List<AiOptimizeStatistic> list=aiOptimizeStatisticMapper.greenOptimizeByTimeTrend(greenId,startTime,endTime);
JSONObject jsonObject = new JSONObject();
jsonObject.put("dataList",list);
//jsonObject.put("dataList",list);
return jsonObject;
}
}
......@@ -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);
}
......
......@@ -105,7 +105,12 @@ public class HisenseGreenChartTask {
Integer indexDir = indexDTO.getInDir();
Integer totalDistance = indexDTO.getTotalDistance();
String greenKey = CommonUtils.getStrJoin(String.valueOf(greenId), String.valueOf(indexDir));
String greenKey = null;
if (Objects.equals(3, greenId)) {
greenKey = CommonUtils.getStrJoin(String.valueOf(greenId), String.valueOf(indexDir + 2));
} else {
greenKey = CommonUtils.getStrJoin(String.valueOf(greenId), String.valueOf(indexDir));
}
GreenwaveRealtimePO greenwaveRealtimePO = realTimeMap.get(greenKey);
Double speed = Objects.isNull(greenwaveRealtimePO.getSpeed()) ? 0 : greenwaveRealtimePO.getSpeed();
// km/h速度换成m/s
......@@ -122,7 +127,13 @@ public class HisenseGreenChartTask {
List<GreenCrossDirDTO> backValue = value.stream().sorted(Comparator.comparingInt(GreenCrossDirDTO::getSort).reversed()).collect(Collectors.toList());
List<Double> backOffsets = new ArrayList<>();
List<Double> backDistances = new ArrayList<>();
String backGreenKey = CommonUtils.getStrJoin(String.valueOf(greenId), String.valueOf(indexOutDir));
String backGreenKey = null;
if (Objects.equals(3, greenId)) {
backGreenKey = CommonUtils.getStrJoin(String.valueOf(greenId), String.valueOf(indexOutDir + 2));
} else {
backGreenKey = CommonUtils.getStrJoin(String.valueOf(greenId), String.valueOf(indexOutDir));
}
GreenwaveRealtimePO backGreenwaveRealtimePO = realTimeMap.get(backGreenKey);
// km/h速度换成m/s
Double backSpeed = Objects.isNull(backGreenwaveRealtimePO.getSpeed()) ? 0 : backGreenwaveRealtimePO.getSpeed();
......@@ -353,14 +364,19 @@ public class HisenseGreenChartTask {
crossRedTimes.add(Arrays.asList(cycleIndex + offset + greenEndTime, cycleLen + offset));
} else if (i > 0 && i < cycleSum) {
crossRedTimes.add(Arrays.asList(cycleIndex + offset + greenEndTime, cycleIndex * (i + 1) + offset));
// 绿灯时间
crossGreenTimes.add(Arrays.asList(cycleIndex + offset + greenStartTime, cycleIndex + offset + greenEndTime));
} else if (i == cycleSum) {
// a最后一个周期补充相位差
crossRedTimes.add(Arrays.asList(cycleIndex + offset + greenEndTime, cycleIndex + offset + endCycleExt));
// 绿灯时间
crossGreenTimes.add(Arrays.asList(cycleIndex + offset + greenStartTime, cycleIndex + offset + greenEndTime));
if (greenStartTime > endCycleExt) {
//crossGreenTimes.add(Arrays.asList(cycleIndex + offset + greenStartTime, cycleIndex + offset + endCycleExt));
} else {
crossGreenTimes.add(Arrays.asList(cycleIndex + offset + greenStartTime, cycleIndex + offset + endCycleExt));
}
}
// 绿灯时间
crossGreenTimes.add(Arrays.asList(cycleIndex + offset + greenStartTime, cycleIndex + offset + greenEndTime));
} else { // 红灯结束时间 < 相位差, 相位差包含绿灯,endCycleExt都是红灯
// 相位差中绿灯时间
if (i == 0) {
......@@ -374,14 +390,15 @@ public class HisenseGreenChartTask {
} else if (i > 0 && i < cycleSum) {
crossRedTimes.add(Arrays.asList(cycleIndex + offset, cycleIndex + offset + greenStartTime));
crossRedTimes.add(Arrays.asList(cycleIndex + offset + greenEndTime, cycleIndex * (i + 1) + offset));
// 绿灯时间
crossGreenTimes.add(Arrays.asList(cycleIndex + offset + greenStartTime, cycleIndex + offset + greenEndTime));
}
// 最后一个周期补充相位差
if (i == cycleSum) {
crossRedTimes.add(Arrays.asList(cycleIndex + offset, cycleIndex + offset + greenStartTime));
crossRedTimes.add(Arrays.asList(cycleIndex + offset + greenEndTime, cycleIndex + offset + endCycleExt));
crossRedTimes.add(Arrays.asList(cycleIndex + offset, cycleIndex + offset + endCycleExt));
//crossRedTimes.add(Arrays.asList(cycleIndex + offset + greenEndTime, cycleIndex + offset + endCycleExt));
}
// 绿灯时间
crossGreenTimes.add(Arrays.asList(cycleIndex + offset + greenStartTime, cycleIndex + offset + greenEndTime));
}
}
crossRedTimesMap.put(crossId, crossRedTimes);
......
......@@ -136,7 +136,7 @@
,#{type}
)
</insert>
<select id="greenOptimizeByTimeTrend" parameterType="map" resultMap="AiOptimizeStatisticMap">
<!--<select id="greenOptimizeByTimeTrend" parameterType="map" resultMap="AiOptimizeStatisticMap">
SELECT sum(optimize_count) as optimize_count
FROM t_ai_optimize_statistic t1
WHERE
......@@ -147,5 +147,5 @@
<if test="greenId!=null and greenId!=''">
AND t1.cross_id= #{greenId}
</if>
</select>
</select>-->
</mapper>
......@@ -168,11 +168,11 @@
<insert id="insertAnalysisProblemGreenDay">
insert into t_analysis_problem_green_day (id,green_id,area_id,event_category,event_type,event_number,event_total_time,dt,insert_time)
select UUID(), a.green_id, b.area_id,a.category,a.type,count(1) as event_number , sum( TIMESTAMPDIFF(SECOND, a.start_time , a.end_time) ) as duration ,
DATE_FORMAT(DATE_SUB(now(),INTERVAL 1 DAY),'%Y%m%d') as dt , now()
dt , now()
from t_event_info a
left join t_greenwave_info b on a.green_id = b.id
where DATE_FORMAT(a.start_time,'%Y-%m-%d') = DATE_FORMAT(DATE_SUB(now(),INTERVAL 1 DAY),'%Y-%m-%d') and a.type in (705,706) and a.green_id != ''
group by a.cross_id, b.area_id,a.category,a.type
where dt = DATE_FORMAT(DATE_SUB(now(),INTERVAL 1 DAY),'%Y%m%d') and a.type in (705,706) and a.green_id != ''
group by a.green_id, b.area_id,a.category,a.type
ON DUPLICATE KEY UPDATE
id=VALUES(id),
green_id=VALUES(green_id),
......
/**
*
*/
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();
}
}
}
......@@ -8,6 +8,8 @@ public class GreenReportProblemDetailVO {
@ApiModelProperty(value = "星期", example = "周一")
private String week;
@ApiModelProperty(value = "方向", example = "东向西")
private String dir;
@ApiModelProperty(value = "问题时段", example = "7:35~8:40")
private String problemSpan;
@ApiModelProperty(value = "状态:缓行/拥堵", example = "拥堵")
......
......@@ -58,4 +58,19 @@ public interface TEventOptimizeInfoMapper extends BaseMapper<TEventOptimizeInfo>
@Param("startTime") String startTime,
@Param("endTime") String endTime,
@Param("crossIds") List<String> crossIds);
/**
* 路口优化记录查询
* @param page
* @param startTime
* @param endTime
* @param crossId
* @param greenId
* @return
*/
Page<TEventOptimizeInfo> selectCrossOptimize(@Param("page") Page<TEventOptimizeInfo> page,
@Param("startTime") String startTime,
@Param("endTime") String endTime,
@Param("crossId") String crossId,
@Param("greenId") Integer greenId);
}
\ No newline at end of file
package net.wanji.opt.dao.mapper.judgeanalysis;
import net.wanji.opt.entity.eventoptimize.TEventOptimizeInfo;
import net.wanji.opt.entity.judgeanalysis.AiOptimizeStatistic;
import java.util.List;
import org.apache.ibatis.annotations.Param;
......@@ -42,6 +43,7 @@ public interface AiOptimizeStatisticMapper extends BaseMapper<AiOptimizeStatisti
*/
Integer addAiOptimizeStatistic(AiOptimizeStatistic aiOptimizeStatistic);
List<AiOptimizeStatistic> greenOptimizeByTimeTrend(String greenId, Integer startTime, Integer endTime);
// List<AiOptimizeStatistic> greenOptimizeByTimeTrend(String greenId, Integer startTime, Integer endTime);
List<TEventOptimizeInfo> greenOptimizeByTimeTrend(String greenId, Integer startTime, Integer endTime);
}
......@@ -39,4 +39,7 @@ public class TEventOptimizeInfoVO {
@ApiModelProperty(value = "干线ID")
private Integer greenId;
@ApiModelProperty(value = "时间数量")
private Integer eventNumber;
}
\ No newline at end of file
package net.wanji.opt.entity.report;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import net.wanji.common.framework.domain.TrackableEntity;
import java.util.Date;
import java.math.BigDecimal;
/**
* <p>
* 调控集锦
* </p>
*
* @Author fengyi
* @Date 2025-04-22
*/
@Data
@ApiModel(value="ReportHistory对象", description="调控集锦")
public class ReportHistory extends TrackableEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "报告名称")
private String name;
@ApiModelProperty(value = "文件地址")
private String fileUrl;
@ApiModelProperty(value = "插入时间")
private Date insertTime;
@ApiModelProperty(value = "修改时间")
private Date modifyTime;
}
......@@ -14,7 +14,7 @@ public class DailyPlanDetails {
//日计划编号
private int dailyPlanId;
//执行时间
private List<String> weekExecute;
private List<Integer> weekExecute;
//时间详情
private List<TimePlanDetails> timeDetails;
}
package net.wanji.opt.entity.strategy;
import lombok.Data;
import java.util.List;
/**
* @author duanruiming
* @date 2025/04/24 10:27
*/
@Data
public class StrategyPriorityGroupPushReq {
List<StrategyPriorityConfigPush> data;
}
package net.wanji.opt.entity.strategy;
import lombok.Data;
import java.util.List;
/**
* @author duanruiming
* @date 2025/04/24 10:34
*/
@Data
public class StrategyPriorityPlanPushReq {
List<StrategyPriorityPlanPush> data;
}
......@@ -39,26 +39,33 @@ public class TEventOptimizeInfoServiceImpl extends ServiceImpl<TEventOptimizeInf
@Override
public Page<TEventOptimizeInfoVO> selectPageWithCrossIdAndGreenId(int currentPage, int pageSize, String startTime, String endTime, String crossId, Integer greenId) {
if(ObjectUtil.isNotEmpty(greenId)){
List<String> crossIds = tEventOptimizeInfoMapper.getCrossIdList(greenId);
if(ObjectUtil.isNotEmpty(greenId)) {
//研判分析-绿波干线问题优化记录仍从t_event_optimize_info表查询
Page<TEventOptimizeInfo> page = new Page<>(currentPage, pageSize);
Page<TEventOptimizeInfo> tEventOptimizeInfoPage = baseMapper.selectPageWithCrossIds(page, startTime, endTime, crossIds);
Page<TEventOptimizeInfo> tEventOptimizeInfoPage = baseMapper.selectPageWithCrossIdAndGreenId(page, startTime, endTime, crossId, greenId);
List<TEventOptimizeInfoVO> collect = tEventOptimizeInfoPage.getRecords().stream().map(x -> {
TEventOptimizeInfoVO tEventOptimizeInfoVO = new TEventOptimizeInfoVO();
BeanUtils.copyProperties(x, tEventOptimizeInfoVO);
tEventOptimizeInfoVO.setEventLabal(getEventLabel1(x.getEventType()));
tEventOptimizeInfoVO.setOptStatus(1);
tEventOptimizeInfoVO.setGreenId(greenId);
tEventOptimizeInfoVO.setEventLabal(getEventLabel(x.getEventType()));
return tEventOptimizeInfoVO;
}).collect(Collectors.toList());
List<TEventOptimizeInfoVO> list = new ArrayList<>();
Map<String,List<TEventOptimizeInfoVO>> groupByDate = collect.stream().collect(Collectors.groupingBy(o->o.getOptStartTime().toString()+"_"+o.getOptEndTime()));
groupByDate.forEach((k,v)->{
TEventOptimizeInfoVO vo = v.stream().distinct().findAny().get();
vo.setEventNumber(v.size());
list.add(vo);
});
Page<TEventOptimizeInfoVO> pageVO = new Page<>(currentPage, pageSize);
pageVO.setTotal(page.getTotal());
pageVO.setRecords(collect);
pageVO.setRecords(list);
return pageVO;
}else {
} else {
//路口优化记录从t_strategy_cross_result表查询【兼顾信号评价路口当日优化记录查询】
Page<TEventOptimizeInfo> page = new Page<>(currentPage, pageSize);
Page<TEventOptimizeInfo> tEventOptimizeInfoPage = baseMapper.selectPageWithCrossIdAndGreenId(page, startTime, endTime, crossId, greenId);
Page<TEventOptimizeInfo> tEventOptimizeInfoPage = baseMapper.selectCrossOptimize(page, startTime, endTime, crossId, greenId);
List<TEventOptimizeInfoVO> collect = tEventOptimizeInfoPage.getRecords().stream().map(x -> {
TEventOptimizeInfoVO tEventOptimizeInfoVO = new TEventOptimizeInfoVO();
BeanUtils.copyProperties(x, tEventOptimizeInfoVO);
......
package net.wanji.opt.servicev2.judgeanalysis.impl;
import com.alibaba.fastjson.JSONObject;
import net.wanji.opt.entity.eventoptimize.TEventOptimizeInfo;
import net.wanji.opt.entity.judgeanalysis.AiOptimizeStatistic;
import net.wanji.opt.dao.mapper.judgeanalysis.AiOptimizeStatisticMapper;
import net.wanji.opt.servicev2.judgeanalysis.AiOptimizeStatisticService;
......@@ -87,8 +88,9 @@ import java.util.Map;
@Override
public Map<String, Object> greenOptimizeByTimeTrend(String greenId, Integer startTime, Integer endTime) {
List<AiOptimizeStatistic> list=aiOptimizeStatisticMapper.greenOptimizeByTimeTrend(greenId,startTime,endTime);
List<TEventOptimizeInfo> list=aiOptimizeStatisticMapper.greenOptimizeByTimeTrend(greenId,startTime,endTime);
JSONObject jsonObject = new JSONObject();
jsonObject.put("optimizeCount",list.size());
jsonObject.put("dataList",list);
return jsonObject;
}
......
......@@ -388,7 +388,11 @@ public class AnalysisGreenCongestionPeriodServiceImpl implements AnalysisGreenCo
}
}
}
greenReportProblemDetailAnalysisResponse.setDataList(greenReportProblemDetailList);
List<String> weekOrder = Arrays.asList("周一", "周二", "周三", "周四", "周五", "周六", "周日");
List<GreenReportProblemDetailVO> problemDetailVOS = greenReportProblemDetailList.stream().sorted(Comparator.comparing(
vo -> weekOrder.indexOf(vo.getWeek())
)).collect(Collectors.toList());
greenReportProblemDetailAnalysisResponse.setDataList(problemDetailVOS);
List<GreenWaveCrossRidInfo> greenInfoList = greenWaveCrossRidMapper.getGreenInfoList(String.valueOf(greenId));
greenReportProblemDetailAnalysisResponse.setGreenId(String.valueOf(greenId));
......@@ -469,6 +473,7 @@ public class AnalysisGreenCongestionPeriodServiceImpl implements AnalysisGreenCo
private GreenReportProblemDetailVO getGreenReportProblemDetail(AnalysisGreenCongestionPeriodVO periodVO) {
GreenReportProblemDetailVO greenReportProblemDetail = new GreenReportProblemDetailVO();
greenReportProblemDetail.setWeek(WeekEnum.getDesc(periodVO.getWeekDay()));
greenReportProblemDetail.setDir(GreenBeltDirEnum.getDesc(periodVO.getRoadDirection()));
greenReportProblemDetail.setProblemSpan(getTimeString(periodVO));
greenReportProblemDetail.setStatus(ConsgestionStatusEnum.getDesc(periodVO.getStatus()));
greenReportProblemDetail.setAvgSpeed(Math.round(periodVO.getSpeed() * 100) / 100.0);
......
......@@ -245,7 +245,6 @@ public class AnalysisGreenWaveOptimizeWeekServiceImpl extends ServiceImpl<Analys
@Override
public List<ImportGreenReportAnalysisResponseVO> getProblemDetail(Integer year, Integer week, String ids) {
Integer yearWeek = Integer.valueOf(year + "" + week);
Integer yearWeekLast = Integer.valueOf(year + "" + (week - 1));
List<Integer> greenIdList = new ArrayList<>();
if (ObjectUtils.isEmpty(ids)) {
List<GreenwaveInfoPO> greenwaveInfoPOList = greenwaveInfoMapper.selectAll();
......@@ -315,38 +314,46 @@ public class AnalysisGreenWaveOptimizeWeekServiceImpl extends ServiceImpl<Analys
analysisResponseVO.setDataList(analysisDataVOS);
analysisResponseVO.setOptimizeSpan(TimeIntervalMerger.timeString(timeList));
analysisResponseVO.setAvgCapacity(String.valueOf(allCapacity / waveOptimizeWeeks.size()));
analysisResponseVO.setAvgCapacity(String.valueOf(allCapacity / waveOptimizeWeeks.size())+"辆/小时");
analysisResponseVO.setAvgCongestIndex(String.valueOf(Math.round(allCongestIndex / waveOptimizeWeeks.size() * 100) / 100.0));
analysisResponseVO.setAvgSpeed(String.valueOf(Math.round(allSpeed / waveOptimizeWeeks.size() * 100) / 100.0));
analysisResponseVO.setAvgTravelTime(String.valueOf(allTravelTime / waveOptimizeWeeks.size()));
analysisResponseVO.setAvgCapacityCompareSituation(allCapacity > allCapacityLast ? "提升" : "下降");
double avgCongestIndex = allCongestIndex / waveOptimizeWeeks.size() - allCongestIndexLast / waveOptimizeWeeks.size();
analysisResponseVO.setAvgCongestIndexCompare(avgCongestIndex >= 0 ? "增加" + String.valueOf(Math.round(avgCongestIndex * 100) / 100.0) + "%" : "减少" + String.valueOf(Math.round(Math.abs(avgCongestIndex) * 100) / 100.0) + "%");
double avgSpeed = allSpeed / waveOptimizeWeeks.size() - allSpeedLast / waveOptimizeWeeks.size();
analysisResponseVO.setAvgSpeedCompare(avgSpeed > 0 ? "提升" + String.valueOf(Math.round(avgSpeed * 100) / 100.0) + "%" : "降低" + String.valueOf(Math.round(Math.abs(avgSpeed) * 100) / 100.0) + "%");
int avgTravelTime = allTravelTime / waveOptimizeWeeks.size() - allTravelTimeLast / waveOptimizeWeeks.size();
analysisResponseVO.setAvgTravelTimeCompare(String.valueOf(avgTravelTime > 0 ? "增加" + String.valueOf(Math.round(avgTravelTime * 100) / 100.0) + "%" : "减少" + String.valueOf(Math.round(Math.abs(avgTravelTime) * 100) / 100.0) + "%"));
analysisResponseVO.setAvgTravelTime(String.valueOf(allTravelTime / waveOptimizeWeeks.size()/60));
int allCapacityCha = allCapacity - allCapacityLast;
double allCapacityCompare = 0;
if(allCapacityLast != 0){
allCapacityCompare = Math.round( allCapacityCha * 10000 / allCapacityLast ) / 100.0;
}else {
allCapacityCompare = 100;
}
analysisResponseVO.setAvgCapacityCompareSituation(allCapacity > allCapacityLast ? "提升" + Math.abs(allCapacityCompare) + "%" : "下降" + Math.abs(allCapacityCompare) + "%");
double avgCongestIndexCompare = 0;
if(allCongestIndexLast != 0){
avgCongestIndexCompare = Math.round((allCongestIndex / waveOptimizeWeeks.size() - allCongestIndexLast / waveOptimizeWeeks.size())*10000/(allCongestIndexLast / waveOptimizeWeeks.size()))/100.0;
}else {
avgCongestIndexCompare = 100;
}
analysisResponseVO.setAvgCongestIndexCompare(avgCongestIndexCompare >= 0 ? "增加" + String.valueOf(avgCongestIndexCompare) + "%" : "减少" + String.valueOf(Math.abs(avgCongestIndexCompare)) + "%");
double avgSpeedCompare = 0;
if(allSpeedLast !=0){
avgSpeedCompare = Math.round((allSpeed / waveOptimizeWeeks.size() - allSpeedLast / waveOptimizeWeeks.size()) * 10000/(allSpeedLast / waveOptimizeWeeks.size())) / 100.0;
}else {
avgSpeedCompare = 100;
}
analysisResponseVO.setAvgSpeedCompare(avgSpeedCompare > 0 ? "提升" + String.valueOf(avgSpeedCompare) + "%" : "降低" + String.valueOf(Math.abs(avgSpeedCompare)) + "%");
double avgTravelTimeCompare = 0;
if(allTravelTimeLast!= 0){
avgTravelTimeCompare = Math.round((allTravelTime / waveOptimizeWeeks.size() - allTravelTimeLast / waveOptimizeWeeks.size()) * 10000/(allTravelTimeLast / waveOptimizeWeeks.size())) / 100.0;
}
analysisResponseVO.setAvgTravelTimeCompare(avgTravelTimeCompare > 0 ? "增加" + String.valueOf(avgTravelTimeCompare) + "%" : "减少" + String.valueOf(Math.abs(avgTravelTimeCompare) + "%"));
//本周总体情况
if (allCapacity / waveOptimizeWeeks.size() >= 0 && avgTravelTime <= 0) {
if (allCapacity / waveOptimizeWeeks.size() >= 5) {
if (allCapacityCompare >= 0) {
if (allCapacityCompare * 100 >= 5) {
analysisResponseVO.setWeekTotalitySituation("明显提升");
} else {
analysisResponseVO.setWeekTotalitySituation("略有提升");
}
} else if (allCapacity / waveOptimizeWeeks.size() >= 0 && avgTravelTime > 0) {
if (allCapacity / waveOptimizeWeeks.size() - avgTravelTime > 0) {
analysisResponseVO.setWeekTotalitySituation("略有提升");
} else {
analysisResponseVO.setWeekTotalitySituation("略有下降");
}
} else if (allCapacity / waveOptimizeWeeks.size() < 0 && avgTravelTime <= 0) {
if (allCapacity / waveOptimizeWeeks.size() - avgTravelTime > 0) {
analysisResponseVO.setWeekTotalitySituation("略有提升");
} else {
analysisResponseVO.setWeekTotalitySituation("略有下降");
}
} else if (allCapacity / waveOptimizeWeeks.size() < 0 && avgTravelTime > 0) {
if (Math.abs(allCapacity / waveOptimizeWeeks.size()) >= 5) {
} else if (allCapacityCompare < 0) {
if (Math.abs(allCapacityCompare * 100) >= 5) {
analysisResponseVO.setWeekTotalitySituation("明显下降");
} else {
analysisResponseVO.setWeekTotalitySituation("略有下降");
......
......@@ -316,7 +316,7 @@ public class GreenWaveWeekDataServiceImpl extends ServiceImpl<GreenWaveWeekDataM
greenWaveWeekDataVO.setGreenRoadType(RoadLevelEnum.getDesc(greenInfoList.get(0).getLevel()));
greenWaveWeekDataVOList.add(greenWaveWeekDataVO);
}
List<GreenWaveWeekDataVO> collect = greenWaveWeekDataVOList.stream().sorted(Comparator.comparingDouble(GreenWaveWeekDataVO::getMaxCongestIndex).reversed()).collect(Collectors.toList());
List<GreenWaveWeekDataVO> collect = greenWaveWeekDataVOList.stream().sorted(Comparator.comparingDouble(GreenWaveWeekDataVO::getCongestCount).reversed()).collect(Collectors.toList());
collect.forEach(x->{
x.setRank(collect.indexOf(x)+1);
});
......@@ -338,7 +338,7 @@ public class GreenWaveWeekDataServiceImpl extends ServiceImpl<GreenWaveWeekDataM
.collect(Collectors.toList());
}
List<GreenWaveWeekData> greenWaveWeekDatas = greenWaveWeekDataMapper.getDataByWeek(greenIdList,yearWeek);
List<GreenWaveWeekData> greenWaveWeekDatasLast = greenWaveWeekDataMapper.getDataByWeek(greenIdList,yearWeek-1);
List<GreenWaveWeekData> greenWaveWeekDatasLast = greenWaveWeekDataMapper.getDataByWeek(greenIdList,yearWeekLast);
List<GreenReportSamePeriodCompareData> result = new ArrayList<>();
if(!ObjectUtils.isEmpty(greenWaveWeekDatas) && !ObjectUtils.isEmpty(greenWaveWeekDatasLast)){
Map<Integer, List<GreenWaveWeekData>> collect = greenWaveWeekDatas.stream().collect(Collectors.groupingBy(GreenWaveWeekData::getGreenId));
......@@ -357,8 +357,8 @@ public class GreenWaveWeekDataServiceImpl extends ServiceImpl<GreenWaveWeekDataM
if("1".equals(waveWeekData.getPeakType())){
greenReportSamePeriodData.setPeakName(PeakNameEnum.getDesc(Integer.valueOf(greenWaveWeekData.getPeakType())));
greenReportSamePeriodData.setPeakFlow(greenWaveWeekData.getFlow());
greenReportSamePeriodData.setCongestIndex(greenWaveWeekData.getCongestIndex());
greenReportSamePeriodData.setAvgSpeed(greenWaveWeekData.getSpeed());
greenReportSamePeriodData.setCongestIndex(Math.round(greenWaveWeekData.getCongestIndex()*100)/100.0);
greenReportSamePeriodData.setAvgSpeed(Math.round(greenWaveWeekData.getSpeed()*100)/100.0);
greenReportSamePeriodData.setTravelTime(Double.valueOf(greenWaveWeekData.getTravelTime()));
double speed = greenWaveWeekData.getSpeed() - waveWeekData.getSpeed();
double flow = greenWaveWeekData.getFlow() - waveWeekData.getFlow();
......@@ -393,8 +393,8 @@ public class GreenWaveWeekDataServiceImpl extends ServiceImpl<GreenWaveWeekDataM
}else{
greenReportSamePeriodData.setCongestIndexRatio(100.0);
}
if(waveWeekData.getSpeed()!=0){
greenReportSamePeriodData.setTravelTimeRatio(Math.round((speed/waveWeekData.getTravelTime()*10000))/100.0);
if(waveWeekData.getTravelTime()!=0){
greenReportSamePeriodData.setTravelTimeRatio(Math.round((travelTime/waveWeekData.getTravelTime()*10000))/100.0);
}else{
greenReportSamePeriodData.setTravelTimeRatio(100.0);
}
......@@ -411,8 +411,8 @@ public class GreenWaveWeekDataServiceImpl extends ServiceImpl<GreenWaveWeekDataM
if("2".equals(waveWeekData.getPeakType())){
greenReportSamePeriodData.setPeakName(PeakNameEnum.getDesc(Integer.valueOf(greenWaveWeekData.getPeakType())));
greenReportSamePeriodData.setPeakFlow(greenWaveWeekData.getFlow());
greenReportSamePeriodData.setCongestIndex(greenWaveWeekData.getCongestIndex());
greenReportSamePeriodData.setAvgSpeed(greenWaveWeekData.getSpeed());
greenReportSamePeriodData.setCongestIndex(Math.round(greenWaveWeekData.getCongestIndex()*100)/100.0);
greenReportSamePeriodData.setAvgSpeed(Math.round(greenWaveWeekData.getSpeed()*100)/100.0);
greenReportSamePeriodData.setTravelTime(Double.valueOf(greenWaveWeekData.getTravelTime()));
double speed = greenWaveWeekData.getSpeed() - waveWeekData.getSpeed();
double flow = greenWaveWeekData.getFlow() - waveWeekData.getFlow();
......@@ -447,8 +447,8 @@ public class GreenWaveWeekDataServiceImpl extends ServiceImpl<GreenWaveWeekDataM
}else{
greenReportSamePeriodData.setCongestIndexRatio(100.0);
}
if(waveWeekData.getSpeed()!=0){
greenReportSamePeriodData.setTravelTimeRatio(Math.round((speed/waveWeekData.getTravelTime()*10000))/100.0);
if(waveWeekData.getTravelTime()!=0){
greenReportSamePeriodData.setTravelTimeRatio(Math.round((travelTime/waveWeekData.getTravelTime()*10000))/100.0);
}else{
greenReportSamePeriodData.setTravelTimeRatio(100.0);
}
......@@ -465,27 +465,27 @@ public class GreenWaveWeekDataServiceImpl extends ServiceImpl<GreenWaveWeekDataM
if("3".equals(waveWeekData.getPeakType())){
greenReportSamePeriodData.setPeakName(PeakNameEnum.getDesc(Integer.valueOf(greenWaveWeekData.getPeakType())));
greenReportSamePeriodData.setPeakFlow(greenWaveWeekData.getFlow());
greenReportSamePeriodData.setCongestIndex(greenWaveWeekData.getCongestIndex());
greenReportSamePeriodData.setAvgSpeed(greenWaveWeekData.getSpeed());
greenReportSamePeriodData.setCongestIndex(Math.round(greenWaveWeekData.getCongestIndex()*100)/100.0);
greenReportSamePeriodData.setAvgSpeed(Math.round(greenWaveWeekData.getSpeed()*100)/100.0);
greenReportSamePeriodData.setTravelTime(Double.valueOf(greenWaveWeekData.getTravelTime()));
double speed = greenWaveWeekData.getSpeed() - waveWeekData.getSpeed();
double flow = greenWaveWeekData.getFlow() - waveWeekData.getFlow();
double travelTime = greenWaveWeekData.getTravelTime() - waveWeekData.getTravelTime();
double congestIndex = greenWaveWeekData.getCongestIndex() - waveWeekData.getCongestIndex();
if(flow<0){
samePeriodData.setAmPeakSituation("减少");
}else if(flow == 0){
samePeriodData.setAmPeakSituation("相等");
}else {
samePeriodData.setAmPeakSituation("增加");
}
if(travelTime<0){
samePeriodData.setAmTravelTimeSituation("减少");
}else if(travelTime == 0){
samePeriodData.setAmTravelTimeSituation("相等");
}else {
samePeriodData.setAmTravelTimeSituation("增加");
}
// if(flow<0){
// samePeriodData.setAmPeakSituation("减少");
// }else if(flow == 0){
// samePeriodData.setAmPeakSituation("相等");
// }else {
// samePeriodData.setAmPeakSituation("增加");
// }
// if(travelTime<0){
// samePeriodData.setAmTravelTimeSituation("减少");
// }else if(travelTime == 0){
// samePeriodData.setAmTravelTimeSituation("相等");
// }else {
// samePeriodData.setAmTravelTimeSituation("增加");
// }
if(waveWeekData.getSpeed()!=0){
greenReportSamePeriodData.setAvgSpeedRatio(Math.round((speed/waveWeekData.getSpeed()*10000))/100.0);
}else{
......@@ -501,8 +501,8 @@ public class GreenWaveWeekDataServiceImpl extends ServiceImpl<GreenWaveWeekDataM
}else{
greenReportSamePeriodData.setCongestIndexRatio(100.0);
}
if(waveWeekData.getSpeed()!=0){
greenReportSamePeriodData.setTravelTimeRatio(Math.round((speed/waveWeekData.getTravelTime()*10000))/100.0);
if(waveWeekData.getTravelTime()!=0){
greenReportSamePeriodData.setTravelTimeRatio(Math.round((travelTime/waveWeekData.getTravelTime()*10000))/100.0);
}else{
greenReportSamePeriodData.setTravelTimeRatio(100.0);
}
......
package net.wanji.opt.synthesis.service;
import net.wanji.opt.entity.strategy.StrategyParameterPush;
import net.wanji.opt.entity.strategy.StrategyPriorityConfigPush;
import net.wanji.opt.entity.strategy.StrategyPriorityPlanPush;
import net.wanji.opt.entity.strategy.*;
import net.wanji.opt.synthesis.pojo.Result;
import net.wanji.opt.synthesis.pojo.StrategyControlReq;
import net.wanji.opt.synthesis.pojo.StrategyControlSwitchReq;
......@@ -36,7 +34,7 @@ public interface PushStrategyControlService {
* @return
* @throws Exception
*/
Result StartegyPriorityPush(List<StrategyPriorityConfigPush> req) throws Exception;
Result StartegyPriorityPush(StrategyPriorityGroupPushReq req) throws Exception;
/**
* 策略管理日计划配置推送
......@@ -44,7 +42,7 @@ public interface PushStrategyControlService {
* @return
* @throws Exception
*/
Result StartegyPriorityPlanPush(List<StrategyPriorityPlanPush> req) throws Exception;
Result StartegyPriorityPlanPush(StrategyPriorityPlanPushReq req) throws Exception;
/**
* 策略管理参数配置推送
......
package net.wanji.opt.synthesis.service.impl;
import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.tool.resttool.RestTemplateTool;
import net.wanji.common.utils.tool.JacksonUtils;
import net.wanji.opt.entity.strategy.StrategyParameterPush;
import net.wanji.opt.entity.strategy.StrategyPriorityConfigPush;
import net.wanji.opt.entity.strategy.StrategyPriorityPlanPush;
import net.wanji.opt.entity.strategy.*;
import net.wanji.opt.synthesis.pojo.Result;
import net.wanji.opt.synthesis.pojo.StrategyControlReq;
import net.wanji.opt.synthesis.pojo.StrategyControlSwitchReq;
......@@ -75,21 +72,19 @@ public class PushStrategyControlServiceImpl implements PushStrategyControlServic
* 优先级配置推送
* */
@Override
public Result StartegyPriorityPush(List<StrategyPriorityConfigPush> req) throws Exception {
public Result StartegyPriorityPush(StrategyPriorityGroupPushReq req) throws Exception {
try {
String priorityUrl = "http://37.12.182.50:8082/api/traffic/strategy/priority/info";
ObjectMapper mapper = JacksonUtils.getInstance();
System.out.println("req~~"+req);
// 序列化请求参数
String jsonReq = mapper.writeValueAsString(req);
//String jsonString = JSON.toJSONString(req);
// System.out.println("请求参数: " + jsonReq);
String resultStr = RestTemplateTool.postList(switchUrl, jsonReq);
String resultStr = RestTemplateTool.post(priorityUrl, jsonReq);
if (StringUtils.isNotBlank(resultStr)) {
log.info("下发神思策略管理优先级推送成功,内容: {}", req);
log.info("下发神思策略管理优先级推送成功,内容: {}", req);
Result result = mapper.readValue(resultStr, Result.class);
return result;
} else {
log.error("策略管理优先级推送url:{}失败:返回数据异常", switchUrl);
log.error("策略管理优先级推送url:{}失败:返回数据异常", priorityUrl);
return new Result("500", "服务调用失败", null);
}
} catch (Exception e) {
......@@ -101,19 +96,19 @@ public class PushStrategyControlServiceImpl implements PushStrategyControlServic
* 日计划配置推送
* */
@Override
public Result StartegyPriorityPlanPush(List<StrategyPriorityPlanPush> req) throws Exception {
public Result StartegyPriorityPlanPush(StrategyPriorityPlanPushReq req) throws Exception {
try {
String planUrl = "http://37.12.182.50:8082/api/traffic/strategy/priority/schedule";
ObjectMapper mapper = JacksonUtils.getInstance();
// 序列化请求参数
String jsonReq = mapper.writeValueAsString(req);
System.out.println("req~~"+jsonReq);
String resultStr = RestTemplateTool.postList(switchUrl, jsonReq);
String resultStr = RestTemplateTool.post(planUrl, jsonReq);
if (StringUtils.isNotBlank(resultStr)) {
log.info("下发神思策略管理日计划配置推送成功,内容: {}", req);
Result result = mapper.readValue(resultStr, Result.class);
return result;
} else {
log.error("策略管理日计划配置推送url:{}失败:返回数据异常", switchUrl);
log.error("策略管理日计划配置推送url:{}失败:返回数据异常", planUrl);
return new Result("500", "服务调用失败", null);
}
} catch (Exception e) {
......
......@@ -66,9 +66,9 @@
from t_event_info a
where a.start_time = (select MAX(start_time) from t_event_info where cross_id = #{crossID}
and start_time <![CDATA[ <= ]]> DATE_FORMAT(#{time}, '%Y-%m-%d %H:%i:%s') and start_time >= DATE_FORMAT(DATE_SUB(#{time},INTERVAL 30 MINUTE), '%Y-%m-%d %H:%i:%s')
and dt = DATE_FORMAT(#{time}, '%Y%m%d')
and dt = DATE_FORMAT(#{time}, '%Y%m%d') and type in (701, 702,703, 707) )
and a.type in (701, 702,703, 707)
and a.cross_id = #{crossID} )
and a.cross_id = #{crossID}
</select>
<select id="getCrossRealTimeAlarmsPlan" parameterType="String" resultMap="CrossRealTimeAlarmsResultMap">
......
......@@ -42,10 +42,10 @@
select a.type , a.start_time as startTime , SUBSTR(a.dir, 2, length(a.dir)-2) as dir , TIMESTAMPDIFF(SECOND, a.start_time, ifnull(a.end_time,now())) as duration
from t_event_info a
where a.start_time = (select MAX(start_time) from t_event_info where green_id = #{greenID}
and start_time <![CDATA[ <= ]]> DATE_FORMAT(#{time}, '%Y-%m-%d %H:%i:%s') and start_time >= DATE_FORMAT(DATE_SUB(#{time},INTERVAL 7 MINUTE), '%Y-%m-%d %H:%i:%s')
and dt = DATE_FORMAT(#{time}, '%Y%m%d')
and start_time <![CDATA[ <= ]]> DATE_FORMAT(#{time}, '%Y-%m-%d %H:%i:%s') and start_time >= DATE_FORMAT(DATE_SUB(#{time},INTERVAL 30 MINUTE), '%Y-%m-%d %H:%i:%s')
and dt = DATE_FORMAT(#{time}, '%Y%m%d') and type in (705, 706) )
and a.type in (705, 706)
and a.green_id = #{greenID} )
and a.green_id = #{greenID}
</select>
<select id="getTrunkLineRealTimeAlarmPlan" parameterType="map" resultMap="tlRealTimeAlarmsResultMap">
......
......@@ -36,7 +36,8 @@
</if>
ORDER BY happen_start_time desc
</select>
<select id="selectPageWithCrossIdAndGreenId" parameterType="map" resultType="net.wanji.opt.entity.eventoptimize.TEventOptimizeInfo">
<!-- 用于方案信号评价-路口优化记录查询(包含当日数据) -->
<select id="selectCrossOptimize" parameterType="map" resultType="net.wanji.opt.entity.eventoptimize.TEventOptimizeInfo">
SELECT
cross_id,
current_algo AS event_type,
......@@ -56,15 +57,16 @@
</if>
AND response_code = 200
</select>
<!-- <select id="selectPageWithCrossIdAndGreenId" parameterType="map" resultType="net.wanji.opt.entity.eventoptimize.TEventOptimizeInfo">-->
<!-- SELECT *-->
<!-- FROM t_event_optimize_info-->
<!-- WHERE (#{startTime} IS NULL OR happen_start_time >= #{startTime})-->
<!-- AND (#{endTime} IS NULL OR happen_end_time &lt;= #{endTime})-->
<!-- AND (#{crossId} IS NULL OR cross_id = #{crossId})-->
<!-- AND (#{greenId} IS NULL OR green_id = #{greenId})-->
<!-- AND opt_status != 0-->
<!-- </select>-->
<!-- 用于绿波干线研判-报警优化记录查询,t_event_optimize_info不包含当日数据 -->
<select id="selectPageWithCrossIdAndGreenId" parameterType="map" resultType="net.wanji.opt.entity.eventoptimize.TEventOptimizeInfo">
SELECT *
FROM t_event_optimize_info
WHERE (#{startTime} IS NULL OR happen_start_time >= #{startTime})
AND (#{endTime} IS NULL OR happen_end_time &lt;= #{endTime})
AND (#{crossId} IS NULL OR cross_id = #{crossId})
AND (#{greenId} IS NULL OR green_id = #{greenId})
AND opt_status != 0
</select>
<select id="getCrossOptimizeDistribute" parameterType="map" resultType="java.util.Map">
SELECT
......@@ -169,4 +171,24 @@
</if>
AND response_code = 200
</select>
<!-- 绿波干线优化记录查询 -->
<select id="selectPageWithGreenId" resultType="net.wanji.opt.entity.eventoptimize.TEventOptimizeInfo">
SELECT a.green_id,
a.type as event_type,
a.control_time AS opt_start_time,
a.control_duration AS opt_duration,
DATE_ADD( control_time, INTERVAL control_duration SECOND ) AS opt_end_time
FROM t_strategy_green_opt_hist a
WHERE
1=1
<if test="greenId != null" >
AND green_id = #{greenId}
</if>
<if test="startTime != null and endTime != null">
AND control_time >= #{startTime}
AND control_time &lt; #{endTime}
</if>
and control_method in (-1, 1)
</select>
</mapper>
\ No newline at end of file
......@@ -136,16 +136,35 @@
,#{type}
)
</insert>
<select id="greenOptimizeByTimeTrend" parameterType="map" resultMap="AiOptimizeStatisticMap">
SELECT sum(optimize_count) as optimize_count
FROM t_ai_optimize_statistic t1
WHERE
1=1
<if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
AND t1.statistic_time>=#{startTime} AND t1.statistic_time &lt;=#{endTime}
</if>
<!-- <select id="greenOptimizeByTimeTrend" parameterType="map" resultMap="AiOptimizeStatisticMap">-->
<!-- SELECT sum(optimize_count) as optimize_count-->
<!-- FROM t_ai_optimize_statistic t1-->
<!-- WHERE-->
<!-- 1=1-->
<!-- <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">-->
<!-- AND t1.statistic_time>=#{startTime} AND t1.statistic_time &lt;=#{endTime}-->
<!-- </if>-->
<!-- <if test="greenId!=null and greenId!=''">-->
<!-- AND t1.cross_id= #{greenId}-->
<!-- </if>-->
<!-- </select>-->
<select id="greenOptimizeByTimeTrend" parameterType="map" resultType="net.wanji.opt.entity.eventoptimize.TEventOptimizeInfo">
SELECT green_id,
control_time as opt_start_time,
DATE_ADD(control_time,INTERVAL control_duration SECOND) as opt_end_time,
control_duration as opt_duration
from t_strategy_green_opt_hist
where 1=1
<if test="greenId!=null and greenId!=''">
AND t1.cross_id= #{greenId}
AND green_id= #{greenId}
</if>
<if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
and control_time >= DATE_FORMAT(STR_TO_DATE(#{startTime},'%Y%m%d'),'%Y%m%d000000')
and control_time &lt; DATE_FORMAT(STR_TO_DATE(#{endTime},'%Y%m%d'),'%Y%m%d235959')
</if>
and control_method=1
GROUP BY green_id, control_time, control_duration, control_method
order by control_time
</select>
</mapper>
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