Commit 4590005a authored by duanruiming's avatar duanruiming

[add] 诱导屏逻辑去除策略表逻辑校验

parent 90d8a528
......@@ -102,67 +102,67 @@ public class InducesMonitorTask {
List<GreenwaveInducesHist> greenwaveInducesHistss = greenwaveInducesHistService.list();
for(GreenwaveInfoPO greenwaveInfoPO :greenwaveInfoPOList) {
AtomicBoolean flag = new AtomicBoolean(false);//是否已发布优化
AtomicBoolean flag = new AtomicBoolean(true);//是否已发布优化
AtomicReference<Integer> strategyId = new AtomicReference<Integer>(0);
//1、查询所有绿波带路口信息,获取路口下的绿波策略计划
List<GreenwaveCrossPO> greenwaveCrossList = greenwaveCrossMapper.selectByGreenwaveId(greenwaveInfoPO.getId());
greenwaveCrossList.stream().forEach(o -> {
//System.out.println("绿波路口--->"+greenwaveInfoPO.getId()+"=="+o.getCrossId());
//创建路口策略列表
List<StrategyPlanInfoEntity> strategyPlanInfoEntityList = strategyPlanInfoMapper.selectByCrossId(o.getCrossId());
//strategyPlanInfoEntityList.stream().filter(x->Objects.nonNull(x.getCrossId()) && x.getCrossId().equals(o.getCrossId()) ).forEach(x->
for (StrategyPlanInfoEntity strategyPlanInfoEntity : strategyPlanInfoEntityList) {
System.out.println("策略计划--->" + greenwaveInfoPO.getId() + "==" + strategyPlanInfoEntity.getPlanDetails());
//2、检查绿波时段,判断是否在绿波时段内,如果不在,则判断是否执行过上屏操作,如果执行过,则调用下屏服务(此出屏幕自动处理,无需逻辑)
//[{"dailyPlanId":1,"weeks":[1,2,3,4,5]}]
List<StrategyControlDetailList.ExecutePlan.PlanDetail> planDetails = new ArrayList<>();
try {
planDetails = JacksonUtils.getInstance().readValue(strategyPlanInfoEntity.getPlanDetails(), new TypeReference<List<StrategyControlDetailList.ExecutePlan.PlanDetail>>() {
});
} catch (JsonProcessingException e) {
log.error("策略周计划详情转换失败:" + strategyPlanInfoEntity.getPlanId() + "---" + e.getMessage());
}
//处理日计划的时间拼合处理
if (!CollectionUtils.isEmpty(planDetails)) {
for (StrategyControlDetailList.ExecutePlan.PlanDetail planDetail : planDetails) {
Integer dailyPlanId = planDetail.getDailyPlanId();
List<Integer> weeks = planDetail.getWeeks();
//获取当前周几,判断是否在时间范围内
if (weeks.contains(LocalDate.now().getDayOfWeek().getValue())) {
LambdaQueryWrapper<StrategyDailyPlanInfoEntity> dailyPlanQueryWrapper = new LambdaQueryWrapper<>();
dailyPlanQueryWrapper.eq(StrategyDailyPlanInfoEntity::getCrossId, strategyPlanInfoEntity.getCrossId());
dailyPlanQueryWrapper.eq(StrategyDailyPlanInfoEntity::getDailyPlanId, dailyPlanId);
List<StrategyDailyPlanInfoEntity> dailyPlanInfoEntities = strategyDailyPlanInfoMapper.selectList(dailyPlanQueryWrapper);
dailyPlanInfoEntities.stream().forEach(p -> {
System.out.println("plan detail->" + p.getDailyPlanDetails());
List<StrategyControlDetailList.DailyPlan.DailyPlanDetail> dailyPlanDetails = new ArrayList<>();
try {
dailyPlanDetails = JacksonUtils.getInstance().readValue(p.getDailyPlanDetails(), new TypeReference<List<StrategyControlDetailList.DailyPlan.DailyPlanDetail>>() {
});
} catch (JsonProcessingException e) {
log.error("策略日计划详情转换失败:" + p.getDailyPlanId() + "---" + e.getMessage());
}
for (StrategyControlDetailList.DailyPlan.DailyPlanDetail dailyPlanDetail : dailyPlanDetails) {
//[{"strategy":1,"times":["00:00","20:00"]},{"strategy":2,"times":["20:00","23:59"]}]
if (!CollectionUtils.isEmpty(dailyPlanDetail.getTimes())) {
LocalTime startTime = LocalTime.parse(dailyPlanDetail.getTimes().get(0));
LocalTime endTime = LocalTime.parse(dailyPlanDetail.getTimes().get(1));
// 判断当前时间是否在范围内
if (LocalTime.now().isAfter(startTime) && LocalTime.now().isBefore(endTime)) {
System.out.println("当前时间在范围内: " + LocalTime.now());
//System.out.println("绿波路口--->"+greenwaveInfoPO.getId()+"=="+o.getCrossId());
flag.set(true);
log.info("当前诱导屏在策略执行时间内flag=true内容:{}", greenwaveInfoPO.getId());
strategyId.set(p.getDailyPlanId());
}
}
}
});
}
}
}
}
});
//greenwaveCrossList.stream().forEach(o -> {
// //System.out.println("绿波路口--->"+greenwaveInfoPO.getId()+"=="+o.getCrossId());
// //创建路口策略列表
// List<StrategyPlanInfoEntity> strategyPlanInfoEntityList = strategyPlanInfoMapper.selectByCrossId(o.getCrossId());
// //strategyPlanInfoEntityList.stream().filter(x->Objects.nonNull(x.getCrossId()) && x.getCrossId().equals(o.getCrossId()) ).forEach(x->
// for (StrategyPlanInfoEntity strategyPlanInfoEntity : strategyPlanInfoEntityList) {
// System.out.println("策略计划--->" + greenwaveInfoPO.getId() + "==" + strategyPlanInfoEntity.getPlanDetails());
// //2、检查绿波时段,判断是否在绿波时段内,如果不在,则判断是否执行过上屏操作,如果执行过,则调用下屏服务(此出屏幕自动处理,无需逻辑)
// //[{"dailyPlanId":1,"weeks":[1,2,3,4,5]}]
// List<StrategyControlDetailList.ExecutePlan.PlanDetail> planDetails = new ArrayList<>();
// try {
// planDetails = JacksonUtils.getInstance().readValue(strategyPlanInfoEntity.getPlanDetails(), new TypeReference<List<StrategyControlDetailList.ExecutePlan.PlanDetail>>() {
// });
// } catch (JsonProcessingException e) {
// log.error("策略周计划详情转换失败:" + strategyPlanInfoEntity.getPlanId() + "---" + e.getMessage());
// }
// //处理日计划的时间拼合处理
// if (!CollectionUtils.isEmpty(planDetails)) {
// for (StrategyControlDetailList.ExecutePlan.PlanDetail planDetail : planDetails) {
// Integer dailyPlanId = planDetail.getDailyPlanId();
// List<Integer> weeks = planDetail.getWeeks();
// //获取当前周几,判断是否在时间范围内
// if (weeks.contains(LocalDate.now().getDayOfWeek().getValue())) {
// LambdaQueryWrapper<StrategyDailyPlanInfoEntity> dailyPlanQueryWrapper = new LambdaQueryWrapper<>();
// dailyPlanQueryWrapper.eq(StrategyDailyPlanInfoEntity::getCrossId, strategyPlanInfoEntity.getCrossId());
// dailyPlanQueryWrapper.eq(StrategyDailyPlanInfoEntity::getDailyPlanId, dailyPlanId);
// List<StrategyDailyPlanInfoEntity> dailyPlanInfoEntities = strategyDailyPlanInfoMapper.selectList(dailyPlanQueryWrapper);
// dailyPlanInfoEntities.stream().forEach(p -> {
// System.out.println("plan detail->" + p.getDailyPlanDetails());
// List<StrategyControlDetailList.DailyPlan.DailyPlanDetail> dailyPlanDetails = new ArrayList<>();
// try {
// dailyPlanDetails = JacksonUtils.getInstance().readValue(p.getDailyPlanDetails(), new TypeReference<List<StrategyControlDetailList.DailyPlan.DailyPlanDetail>>() {
// });
// } catch (JsonProcessingException e) {
// log.error("策略日计划详情转换失败:" + p.getDailyPlanId() + "---" + e.getMessage());
// }
// for (StrategyControlDetailList.DailyPlan.DailyPlanDetail dailyPlanDetail : dailyPlanDetails) {
// //[{"strategy":1,"times":["00:00","20:00"]},{"strategy":2,"times":["20:00","23:59"]}]
// if (!CollectionUtils.isEmpty(dailyPlanDetail.getTimes())) {
// LocalTime startTime = LocalTime.parse(dailyPlanDetail.getTimes().get(0));
// LocalTime endTime = LocalTime.parse(dailyPlanDetail.getTimes().get(1));
// // 判断当前时间是否在范围内
// if (LocalTime.now().isAfter(startTime) && LocalTime.now().isBefore(endTime)) {
// System.out.println("当前时间在范围内: " + LocalTime.now());
// //System.out.println("绿波路口--->"+greenwaveInfoPO.getId()+"=="+o.getCrossId());
// flag.set(true);
// log.info("当前诱导屏在策略执行时间内flag=true内容:{}", greenwaveInfoPO.getId());
// strategyId.set(p.getDailyPlanId());
// }
// }
// }
// });
// }
// }
// }
// }
//});
//3、如果在绿波时段内,未上屏,则获取固定配时绿波信息
//4、获取优化绿波方案,如果不存在,则执行固定绿波方案
//如果在绿波时段内,未上屏,则获取固定配时绿波信息
......
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