Commit 47017e84 authored by 董国亮's avatar 董国亮

绿波优化方向处理

parent 704eacde
...@@ -104,7 +104,7 @@ public class InduceSendController { ...@@ -104,7 +104,7 @@ public class InduceSendController {
param.setEndTime(greenwaveInducesHistList.get(0).getControlOptTimes().split("\\|")[1]); param.setEndTime(greenwaveInducesHistList.get(0).getControlOptTimes().split("\\|")[1]);
} else { } else {
param.setStartTime(DateUtil.format(new Date(), Constants.DATE_FORMAT.E_DATE_FORMAT_SECOND)); param.setStartTime(DateUtil.format(new Date(), Constants.DATE_FORMAT.E_DATE_FORMAT_SECOND));
param.setEndTime(DateUtil.format(System.currentTimeMillis() + 1000 * 30, Constants.DATE_FORMAT.E_DATE_FORMAT_SECOND)); param.setEndTime(DateUtil.format(System.currentTimeMillis() + 1000 * 60, Constants.DATE_FORMAT.E_DATE_FORMAT_SECOND));
} }
induceSendService.send(param); induceSendService.send(param);
} }
......
...@@ -97,7 +97,7 @@ public class GreenwaveInducesHist implements Serializable { ...@@ -97,7 +97,7 @@ public class GreenwaveInducesHist implements Serializable {
* 0 未发布 1 已发布 * 0 未发布 1 已发布
*/ */
@TableField("status") @TableField("status")
private Integer status; private Integer status=0;
/** /**
* 执行时段 * 执行时段
......
...@@ -3,6 +3,7 @@ package net.wanji.opt.task; ...@@ -3,6 +3,7 @@ package net.wanji.opt.task;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import freemarker.template.TemplateException;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.Constants; import net.wanji.common.framework.Constants;
...@@ -21,10 +22,12 @@ import net.wanji.opt.dao.mapper.StrategyPlanInfoMapper; ...@@ -21,10 +22,12 @@ import net.wanji.opt.dao.mapper.StrategyPlanInfoMapper;
import net.wanji.opt.dto.induce.MessageParam; import net.wanji.opt.dto.induce.MessageParam;
import net.wanji.opt.entity.GreenwaveInduces; import net.wanji.opt.entity.GreenwaveInduces;
import net.wanji.opt.entity.GreenwaveInducesHist; import net.wanji.opt.entity.GreenwaveInducesHist;
import net.wanji.opt.entity.InduceTemplate;
import net.wanji.opt.po.StrategyGreenOptHistEntity; import net.wanji.opt.po.StrategyGreenOptHistEntity;
import net.wanji.opt.service.induce.GreenwaveInducesHistService; import net.wanji.opt.service.induce.GreenwaveInducesHistService;
import net.wanji.opt.service.induce.GreenwaveInducesService; import net.wanji.opt.service.induce.GreenwaveInducesService;
import net.wanji.opt.service.induce.InduceSendService; import net.wanji.opt.service.induce.InduceSendService;
import net.wanji.opt.service.induce.InduceTemplateService;
import net.wanji.opt.synthesis.pojo.StrategyControlDetailList; import net.wanji.opt.synthesis.pojo.StrategyControlDetailList;
import net.wanji.opt.synthesis.pojo.StrategyDailyPlanInfoEntity; import net.wanji.opt.synthesis.pojo.StrategyDailyPlanInfoEntity;
import net.wanji.opt.synthesis.pojo.StrategyPlanInfoEntity; import net.wanji.opt.synthesis.pojo.StrategyPlanInfoEntity;
...@@ -34,6 +37,7 @@ import org.springframework.scheduling.annotation.Scheduled; ...@@ -34,6 +37,7 @@ import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.io.IOException;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalTime; import java.time.LocalTime;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -82,6 +86,10 @@ public class InducesMonitorTask { ...@@ -82,6 +86,10 @@ public class InducesMonitorTask {
@Autowired @Autowired
private InduceSendService induceSendService; private InduceSendService induceSendService;
@Autowired
private InduceTemplateService induceTemplateService;
/** /**
* #绿波调度计划扫描周期 * #绿波调度计划扫描周期
* 5 分钟 300000 * 5 分钟 300000
...@@ -162,7 +170,7 @@ public class InducesMonitorTask { ...@@ -162,7 +170,7 @@ public class InducesMonitorTask {
for (StrategyGreenOptHistEntity greenOptHistEntity : strategyGreenOptHistEntitiesList) { for (StrategyGreenOptHistEntity greenOptHistEntity : strategyGreenOptHistEntitiesList) {
LambdaQueryWrapper<GreenwaveInducesHist> greenwaveInducesHistQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<GreenwaveInducesHist> greenwaveInducesHistQueryWrapper = new LambdaQueryWrapper<>();
greenwaveInducesHistQueryWrapper.eq(GreenwaveInducesHist::getGreenId, greenwaveInfoPO.getId()); greenwaveInducesHistQueryWrapper.eq(GreenwaveInducesHist::getGreenId, greenwaveInfoPO.getId());
// greenwaveInducesHistQueryWrapper.eq(GreenwaveInducesHist::getDir, getDir(greenOptHistEntity.getDir())); greenwaveInducesHistQueryWrapper.eq(GreenwaveInducesHist::getDir, getDir(greenOptHistEntity.getDir()));
GreenwaveInducesHist greenwaveInducesHist = greenwaveInducesHistService.getOne(greenwaveInducesHistQueryWrapper); GreenwaveInducesHist greenwaveInducesHist = greenwaveInducesHistService.getOne(greenwaveInducesHistQueryWrapper);
if (Objects.isNull(greenwaveInducesHist)) { if (Objects.isNull(greenwaveInducesHist)) {
greenwaveInducesHist = new GreenwaveInducesHist(); greenwaveInducesHist = new GreenwaveInducesHist();
...@@ -172,8 +180,8 @@ public class InducesMonitorTask { ...@@ -172,8 +180,8 @@ public class InducesMonitorTask {
} }
greenwaveInducesHist.setStrategyId(strategyId.get()); greenwaveInducesHist.setStrategyId(strategyId.get());
greenwaveInducesHist.setStrategyName(greenwaveInfoPO.getName());//当前策略名称 greenwaveInducesHist.setStrategyName(greenwaveInfoPO.getName());//当前策略名称
if(StringUtils.isNotBlank(greenOptHistEntity.getControlTime()) && greenOptHistEntity.getControlDuration()>0) { if (StringUtils.isNotBlank(greenOptHistEntity.getControlTime()) && greenOptHistEntity.getControlDuration() > 0) {
greenwaveInducesHist.setControlOptTimes(greenOptHistEntity.getControlTime() + "|" + DateUtil.format(DateUtil.addSecond(greenOptHistEntity.getControlTime(),greenOptHistEntity.getControlDuration()), Constants.DATE_FORMAT.E_DATE_FORMAT_SECOND));//执行时段 greenwaveInducesHist.setControlOptTimes(greenOptHistEntity.getControlTime() + "|" + DateUtil.format(DateUtil.addSecond(greenOptHistEntity.getControlTime(), greenOptHistEntity.getControlDuration()), Constants.DATE_FORMAT.E_DATE_FORMAT_SECOND));//执行时段
} }
greenwaveInducesHist.setType(greenOptHistEntity.getType());// 执行策略 greenwaveInducesHist.setType(greenOptHistEntity.getType());// 执行策略
greenwaveInducesHist.setMinSpeed(greenOptHistEntity.getMinSpeed()); greenwaveInducesHist.setMinSpeed(greenOptHistEntity.getMinSpeed());
...@@ -181,18 +189,56 @@ public class InducesMonitorTask { ...@@ -181,18 +189,56 @@ public class InducesMonitorTask {
greenwaveInducesHist.setDir(greenOptHistEntity.getDirType()); greenwaveInducesHist.setDir(greenOptHistEntity.getDirType());
//5、获取绿波信息,调用上屏服务;发布互联网诱导方案 //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"}] //[{"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<>(); // List<GreenBeltInfoVO.CrossGreenDetail> crossGreenDetailList = new ArrayList<>();
// try {
// crossGreenDetailList = JacksonUtils.getInstance().readValue(greenOptHistEntity.getCrossGreenDetail(), new TypeReference<List<GreenBeltInfoVO.CrossGreenDetail>>() {});
// } catch (JsonProcessingException e) {
// log.error("绿波详情转换失败:" + greenOptHistEntity.getGreenId() + "---" + e.getMessage());
// }
greenwaveInducesHistService.saveOrUpdate(greenwaveInducesHist);
////自动发送诱导消息
MessageParam messageParam = new MessageParam();
messageParam.setFlg(1);
messageParam.setGreenId(greenwaveInfoPO.getId());
messageParam.setContents(new String[]{greenOptHistEntity.getMaxSpeed()+"-"+greenOptHistEntity.getMaxSpeed()+"km/h"});
messageParam.setType("TFMH");
try { try {
crossGreenDetailList = JacksonUtils.getInstance().readValue(greenOptHistEntity.getCrossGreenDetail(), new TypeReference<List<GreenBeltInfoVO.CrossGreenDetail>>() { if(greenwaveInducesHist.getStatus()==0||greenwaveInducesHist.getModifyTime()!=greenOptHistEntity.getCreateTime()) {
}); LambdaQueryWrapper<GreenwaveInduces> greenwaveInducesQueryWrapper = new LambdaQueryWrapper<>();
} catch (JsonProcessingException e) { greenwaveInducesQueryWrapper.eq(GreenwaveInduces::getGreenId, greenwaveInfoPO.getId());
log.error("绿波详情转换失败:" + greenOptHistEntity.getGreenId() + "---" + e.getMessage()); List<GreenwaveInduces> greenwaveInducesList = greenwaveInducesService.list(greenwaveInducesQueryWrapper);
for(GreenwaveInduces greenwaveCross :greenwaveInducesList){
LambdaQueryWrapper<InduceTemplate> induceTemplateQueryWrapper = new LambdaQueryWrapper<>();
induceTemplateQueryWrapper.eq(InduceTemplate::getEquipCode, greenwaveCross.getEquipCode());
List<InduceTemplate> induceTemplateList=induceTemplateService.list(induceTemplateQueryWrapper);
for(InduceTemplate induceTemplate:induceTemplateList) {
messageParam.setTemplateId(induceTemplate.getId());
messageParam.setInduceId(greenwaveCross.getId());
messageParam.setEquipCode(greenwaveCross.getEquipCode());
messageParam.setPlayorder(induceTemplateList.size());
messageParam.setDuration(greenwaveCross.getDuration());
if ( greenwaveInducesHist.getControlOptTimes().split("\\|").length > 0 && DateUtil.isBetween(new Date(), DateUtil.parse(greenwaveInducesHist.getControlOptTimes().split("\\|")[0], Constants.DATE_FORMAT.E_DATE_FORMAT_SECOND), DateUtil.parse(greenwaveInducesHist.getControlOptTimes().split("\\|")[1], Constants.DATE_FORMAT.E_DATE_FORMAT_SECOND))) {
messageParam.setStartTime(greenwaveInducesHist.getControlOptTimes().split("\\|")[0]);
messageParam.setEndTime(greenwaveInducesHist.getControlOptTimes().split("\\|")[1]);
} else {
messageParam.setStartTime(DateUtil.format(new Date(), Constants.DATE_FORMAT.E_DATE_FORMAT_SECOND));
messageParam.setEndTime(DateUtil.format(System.currentTimeMillis() + 1000 * 60, Constants.DATE_FORMAT.E_DATE_FORMAT_SECOND));
}
induceSendService.send(messageParam);
}
}
greenwaveInducesHist.setStatus(1);
greenwaveInducesHist.setModifyTime(greenOptHistEntity.getCreateTime());
greenwaveInducesHistService.saveOrUpdate(greenwaveInducesHist);
}
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
log.info("发送上屏信息异常" + e.getMessage());
} }
// greenwaveInducesHist.setStatus(1);
greenwaveInducesHist.setModifyTime(new Date());
greenwaveInducesHistService.saveOrUpdate(greenwaveInducesHist);
synCount.getAndIncrement(); synCount.getAndIncrement();
log.info("同步绿波状态信息成功->" +greenwaveInfoPO.getName()); log.info("同步绿波状态信息成功->" + greenwaveInfoPO.getName());
} }
} }
} }
...@@ -215,7 +261,13 @@ public class InducesMonitorTask { ...@@ -215,7 +261,13 @@ public class InducesMonitorTask {
messageParam.setSourceId(v.getSourceId()); messageParam.setSourceId(v.getSourceId());
messageParam.setType("TFMH"); messageParam.setType("TFMH");
//屏蔽此处功能,因为上屏的时候可以设置生效时间 //屏蔽此处功能,因为上屏的时候可以设置生效时间
//induceSendService.send(messageParam); try {
induceSendService.send(messageParam);
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
log.info("发送下屏信息异常"+e.getMessage());
}
log.info("发送下屏信息成功."); log.info("发送下屏信息成功.");
}); });
} }
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<mapper namespace="net.wanji.opt.dao.mapper.StrategyGreenOptHistMapper"> <mapper namespace="net.wanji.opt.dao.mapper.StrategyGreenOptHistMapper">
<select id="selectByGreenId" resultType="net.wanji.opt.po.StrategyGreenOptHistEntity" parameterType="String" > <select id="selectByGreenId" resultType="net.wanji.opt.po.StrategyGreenOptHistEntity" parameterType="String" >
select * from t_strategy_green_opt_hist where `green_id` = #{greenId} and TIMESTAMPDIFF(SECOND,`control_time`, now()) &lt; `control_duration` order by create_time desc limit 1; select * from t_strategy_green_opt_hist where `green_id` = #{greenId} and TIMESTAMPDIFF(SECOND,`control_time`, now()) &lt; `control_duration` order by create_time desc limit 2;
</select> </select>
</mapper> </mapper>
\ No newline at end of file
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