Commit 2d8f61be authored by 董国亮's avatar 董国亮

修订自动优化绿波下发逻辑

parent e60f0122
......@@ -38,6 +38,7 @@ import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.io.IOException;
import java.text.ParseException;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.ArrayList;
......@@ -171,12 +172,15 @@ public class InducesMonitorTask {
LambdaQueryWrapper<GreenwaveInducesHist> greenwaveInducesHistQueryWrapper = new LambdaQueryWrapper<>();
greenwaveInducesHistQueryWrapper.eq(GreenwaveInducesHist::getGreenId, greenwaveInfoPO.getId());
greenwaveInducesHistQueryWrapper.eq(GreenwaveInducesHist::getDir, getDir(greenOptHistEntity.getDir()));
GreenwaveInducesHist greenwaveInducesHist = greenwaveInducesHistService.getOne(greenwaveInducesHistQueryWrapper);
if (Objects.isNull(greenwaveInducesHist)) {
List<GreenwaveInducesHist> greenwaveInducesHistList = greenwaveInducesHistService.list(greenwaveInducesHistQueryWrapper);
GreenwaveInducesHist greenwaveInducesHist=null;
if (Objects.isNull(greenwaveInducesHistList) || greenwaveInducesHistList.size()<1) {
greenwaveInducesHist = new GreenwaveInducesHist();
greenwaveInducesHist.setCreateTime(new Date());
greenwaveInducesHist.setGreenId(greenwaveInfoPO.getId());
greenwaveInducesHist.setDir(getDir(greenOptHistEntity.getDir()));
}else{
greenwaveInducesHist=greenwaveInducesHistList.get(0);
}
greenwaveInducesHist.setStrategyId(strategyId.get());
greenwaveInducesHist.setStrategyName(greenwaveInfoPO.getName());//当前策略名称
......@@ -186,7 +190,7 @@ public class InducesMonitorTask {
greenwaveInducesHist.setType(greenOptHistEntity.getType());// 执行策略
greenwaveInducesHist.setMinSpeed(greenOptHistEntity.getMinSpeed());
greenwaveInducesHist.setMaxSpeed(greenOptHistEntity.getMaxSpeed());
greenwaveInducesHist.setDir(greenOptHistEntity.getDirType());
// greenwaveInducesHist.setDir(greenOptHistEntity.getDirType());
//5、获取绿波信息,调用上屏服务;发布互联网诱导方案
//[{"crossId":"13MOD0B5SI0","phaseStartTime":32.0,"phaseEndTime":122.0,"greenStartTime":35.0,"speed":"39.71","offset":208.0,"travelTime":57.0,"distance":"628.81"},{"crossId":"13MQJ0B5SI0","phaseStartTime":43.0,"phaseEndTime":158.0,"greenStartTime":0.0,"speed":"35.54","offset":69.0,"travelTime":42.0,"distance":"414.62"},{"crossId":"13MS20B5SI0","phaseStartTime":32.0,"phaseEndTime":142.0,"greenStartTime":8.0,"speed":"22.72","offset":114.0,"travelTime":116.0,"distance":"732.00"},{"crossId":"13MUK0B5SH0","phaseStartTime":0.0,"phaseEndTime":135.0,"greenStartTime":0.0,"speed":"42.33","offset":50.0,"travelTime":45.0,"distance":"529.16"},{"crossId":"13N0F0B5SH0","phaseStartTime":25.0,"phaseEndTime":156.0,"greenStartTime":70.0,"speed":"40.67","offset":0.0,"travelTime":40.0,"distance":"451.89"},{"crossId":"13N200B5SH0","phaseStartTime":23.0,"phaseEndTime":150.0,"greenStartTime":0.0,"speed":"-1.00","offset":112.0,"travelTime":-1.0,"distance":"-1.00"}]
// List<GreenBeltInfoVO.CrossGreenDetail> crossGreenDetailList = new ArrayList<>();
......@@ -195,8 +199,7 @@ public class InducesMonitorTask {
// } catch (JsonProcessingException e) {
// log.error("绿波详情转换失败:" + greenOptHistEntity.getGreenId() + "---" + e.getMessage());
// }
greenwaveInducesHistService.saveOrUpdate(greenwaveInducesHist);
//greenwaveInducesHistService.saveOrUpdate(greenwaveInducesHist);
////自动发送诱导消息
MessageParam messageParam = new MessageParam();
messageParam.setFlg(1);
......@@ -204,7 +207,7 @@ public class InducesMonitorTask {
messageParam.setContents(new String[]{greenOptHistEntity.getMaxSpeed()+"-"+greenOptHistEntity.getMaxSpeed()+"km/h"});
messageParam.setType("TFMH");
try {
if(greenwaveInducesHist.getStatus()==0||greenwaveInducesHist.getModifyTime()!=greenOptHistEntity.getCreateTime()) {
if(greenwaveInducesHist.getStatus()==0||greenwaveInducesHist.getModifyTime().before(greenOptHistEntity.getCreateTime())) {
LambdaQueryWrapper<GreenwaveInduces> greenwaveInducesQueryWrapper = new LambdaQueryWrapper<>();
greenwaveInducesQueryWrapper.eq(GreenwaveInduces::getGreenId, greenwaveInfoPO.getId());
List<GreenwaveInduces> greenwaveInducesList = greenwaveInducesService.list(greenwaveInducesQueryWrapper);
......@@ -229,16 +232,16 @@ public class InducesMonitorTask {
}
}
greenwaveInducesHist.setStatus(1);
greenwaveInducesHist.setModifyTime(greenOptHistEntity.getCreateTime());
greenwaveInducesHistService.saveOrUpdate(greenwaveInducesHist);
}
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
log.info("发送上屏信息异常" + e.getMessage());
}
greenwaveInducesHist.setModifyTime(greenOptHistEntity.getCreateTime());
greenwaveInducesHistService.saveOrUpdate(greenwaveInducesHist);
synCount.getAndIncrement();
log.info("同步绿波状态信息成功->" + greenwaveInfoPO.getName());
log.info("同步绿波状态信息成功->" + greenwaveInfoPO.getName()+greenOptHistEntity.getDir());
}
}
}
......@@ -300,37 +303,39 @@ public class InducesMonitorTask {
* @return
*/
private Integer getDir(String dirType) {
if (dirType=="e2w") { //东
if (dirType.equals("e2w")) { //东
return 4;
} else if (dirType=="s2n") {//南
} else if (dirType.equals("s2n")) {//南
return 1;
} else if (dirType=="w2e") {//西
} else if (dirType.equals("w2e")) {//西
return 2;
} else if (dirType=="n2s") {//北
} else if (dirType.equals("n2s")) {//北
return 3;
}
return null;
}
public static void main(String []args){
public static void main(String []args) throws ParseException {
// 获取当前时间
LocalTime now = LocalTime.now();
List<String> timesList=new ArrayList();
timesList.add("00:00");
timesList.add("23:59");
// 定义时间范围
LocalTime startTime = LocalTime.parse(timesList.get(0));
LocalTime endTime = LocalTime.parse(timesList.get(1));
// LocalTime now = LocalTime.now();
// List<String> timesList=new ArrayList();
// timesList.add("00:00");
// timesList.add("23:59");
// // 定义时间范围
// LocalTime startTime = LocalTime.parse(timesList.get(0));
// LocalTime endTime = LocalTime.parse(timesList.get(1));
//
// // 判断当前时间是否在范围内
// if (now.isAfter(startTime) && now.isBefore(endTime)) {
// System.out.println("当前时间在范围内: " + now);
// } else if (now.equals(startTime) || now.equals(endTime)) {
// System.out.println("当前时间恰好在范围边界: " + now);
// } else {
// System.out.println("当前时间不在范围内: " + now);
// }
// 判断当前时间是否在范围内
if (now.isAfter(startTime) && now.isBefore(endTime)) {
System.out.println("当前时间在范围内: " + now);
} else if (now.equals(startTime) || now.equals(endTime)) {
System.out.println("当前时间恰好在范围边界: " + now);
} else {
System.out.println("当前时间不在范围内: " + now);
}
System.out.print(new Date().before(DateUtil.parse("2024-12-04", Constants.DATE_FORMAT.E_DATE_FORMAT_DAY)));
}
}
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