Commit a2c65e20 authored by 董国亮's avatar 董国亮

优化处理异常,增加绿波变化趋势需求

parent fc0728d1
...@@ -90,10 +90,12 @@ public class GreenwaveInducesHistController { ...@@ -90,10 +90,12 @@ public class GreenwaveInducesHistController {
greenwaveInducesDTO.setWkt(x.getWkt()); greenwaveInducesDTO.setWkt(x.getWkt());
AtomicReference<Integer> equipCount = new AtomicReference<>(0); AtomicReference<Integer> equipCount = new AtomicReference<>(0);
List<GreenwaveDirDTO> dirList = new ArrayList<>(); List<GreenwaveDirDTO> dirList = new ArrayList<>();
LambdaQueryWrapper<GreenwaveInducesHist> queryWrapper = new LambdaQueryWrapper<>(); greenwaveInducesList.stream().filter(t -> Objects.nonNull(t.getGreenId()) && t.getGreenId().equals(x.getId())).collect(Collectors.groupingBy(GreenwaveInduces::getDir)).entrySet().forEach(k -> {
queryWrapper.eq(GreenwaveInducesHist::getGreenId, x.getId()); LambdaQueryWrapper<GreenwaveInducesHist> queryWrapper = new LambdaQueryWrapper<>();
List<GreenwaveInducesHist> newGreenwaveInducesHistList= greenwaveInducesHistService.list(queryWrapper); queryWrapper.eq(GreenwaveInducesHist::getGreenId, x.getId());
newGreenwaveInducesHistList.stream().forEach(o -> { queryWrapper.eq(GreenwaveInducesHist::getDir, k.getKey());
List<GreenwaveInducesHist> newGreenwaveInducesHistList = greenwaveInducesHistService.list(queryWrapper);
newGreenwaveInducesHistList.stream().forEach(o -> {
GreenwaveDirDTO greenwaveDirDTO = new GreenwaveDirDTO(); GreenwaveDirDTO greenwaveDirDTO = new GreenwaveDirDTO();
greenwaveDirDTO.setDir(o.getDir()); greenwaveDirDTO.setDir(o.getDir());
greenwaveDirDTO.setStrategyId(o.getStrategyId()); greenwaveDirDTO.setStrategyId(o.getStrategyId());
...@@ -139,7 +141,7 @@ public class GreenwaveInducesHistController { ...@@ -139,7 +141,7 @@ public class GreenwaveInducesHistController {
equipCount.updateAndGet(v -> v + induceDTOList.size()); equipCount.updateAndGet(v -> v + induceDTOList.size());
dirList.add(greenwaveDirDTO); dirList.add(greenwaveDirDTO);
}); });
// }); });
greenwaveInducesDTO.setGreenwaveDirList(dirList); greenwaveInducesDTO.setGreenwaveDirList(dirList);
greenwaveInducesDTO.setEquipCount(equipCount.get()); greenwaveInducesDTO.setEquipCount(equipCount.get());
greenwaveInfoList.add(greenwaveInducesDTO); greenwaveInfoList.add(greenwaveInducesDTO);
...@@ -186,13 +188,13 @@ public class GreenwaveInducesHistController { ...@@ -186,13 +188,13 @@ public class GreenwaveInducesHistController {
greenwaveInducesDTO.setStatus(x.getStatus()); greenwaveInducesDTO.setStatus(x.getStatus());
AtomicReference<Integer> equipCount = new AtomicReference<>(0); AtomicReference<Integer> equipCount = new AtomicReference<>(0);
List<GreenwaveDirDTO> dirList = new ArrayList<>(); List<GreenwaveDirDTO> dirList = new ArrayList<>();
greenwaveInducesHistList.stream().filter(t->Objects.nonNull(t.getGreenId())&& t.getGreenId().equals(x.getId())).collect(Collectors.groupingBy(GreenwaveInducesHist::getDir)).entrySet().forEach(k->{ greenwaveInducesList.stream().filter(t -> Objects.nonNull(t.getGreenId()) && t.getGreenId().equals(x.getId())).collect(Collectors.groupingBy(GreenwaveInduces::getDir)).entrySet().forEach(k -> {
// greenwaveInducesList.stream().collect(Collectors.toMap(p -> p.getGreenId() + "_" + p.getDir(), p -> p, (existing, replacement) -> (existing.getGreenId() + "_" + existing.getDir()).equals(replacement.getGreenId() + "_" + replacement.getDir()) ? existing : replacement)).values().stream().distinct().collect(Collectors.toList()).stream().forEach(p -> { // greenwaveInducesList.stream().collect(Collectors.toMap(p -> p.getGreenId() + "_" + p.getDir(), p -> p, (existing, replacement) -> (existing.getGreenId() + "_" + existing.getDir()).equals(replacement.getGreenId() + "_" + replacement.getDir()) ? existing : replacement)).values().stream().distinct().collect(Collectors.toList()).stream().forEach(p -> {
LambdaQueryWrapper<GreenwaveInducesHist> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<GreenwaveInducesHist> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(GreenwaveInducesHist::getGreenId, x.getId()); queryWrapper.eq(GreenwaveInducesHist::getGreenId, x.getId());
queryWrapper.eq(GreenwaveInducesHist::getDir,k.getKey()); queryWrapper.eq(GreenwaveInducesHist::getDir, k.getKey());
List<GreenwaveInducesHist> newGreenwaveInducesHistList= greenwaveInducesHistService.list(queryWrapper); List<GreenwaveInducesHist> newGreenwaveInducesHistList = greenwaveInducesHistService.list(queryWrapper);
newGreenwaveInducesHistList.stream().forEach(o -> { newGreenwaveInducesHistList.stream().forEach(o -> {
// greenwaveInducesHistList.stream().filter(o -> Objects.isNull(o.getGreenId()) && Objects.equals(o.getGreenId(),x.getId())).forEach(o -> { // greenwaveInducesHistList.stream().filter(o -> Objects.isNull(o.getGreenId()) && Objects.equals(o.getGreenId(),x.getId())).forEach(o -> {
GreenwaveDirDTO greenwaveDirDTO = new GreenwaveDirDTO(); GreenwaveDirDTO greenwaveDirDTO = new GreenwaveDirDTO();
//这里从绿波表里获取基本信息 //这里从绿波表里获取基本信息
......
...@@ -99,22 +99,27 @@ public class InduceSendServiceImpl implements InduceSendService { ...@@ -99,22 +99,27 @@ public class InduceSendServiceImpl implements InduceSendService {
byte[] imageBytes = induceTemplate.getFileContent(); byte[] imageBytes = induceTemplate.getFileContent();
if (imageBytes != null || imageBytes.length > 0) { if (imageBytes != null || imageBytes.length > 0) {
// 将字节数组转换为字节对象 // 将字节数组转换为字节对象
BufferedImage image = ImageIO.read(new ByteArrayInputStream(imageBytes)); BufferedImage image =null;
// 修改图像中文字 try {
//addTextToImage(image, param.getContents(), induceTemplate.getTextX(), induceTemplate.getTextY(), induceTemplate.getTextSize(), induceTemplate.getTextSign()); image = ImageIO.read(new ByteArrayInputStream(imageBytes));
// 定义文字区域四个角的坐标 // 修改图像中文字
String[] topLeft = induceTemplate.getTopLeft().split(","); //addTextToImage(image, param.getContents(), induceTemplate.getTextX(), induceTemplate.getTextY(), induceTemplate.getTextSize(), induceTemplate.getTextSign());
String[] bottomRight = induceTemplate.getBottomRight().split(","); // 定义文字区域四个角的坐标
if (topLeft.length != 2 || bottomRight.length != 2) { String[] topLeft = induceTemplate.getTopLeft().split(",");
return; String[] bottomRight = induceTemplate.getBottomRight().split(",");
if (topLeft.length != 2 || bottomRight.length != 2) {
return;
}
int topLeftX = Integer.parseInt(topLeft[0]);
int topLeftY = Integer.parseInt(topLeft[1]);
int bottomRightX = Integer.parseInt(bottomRight[0]);
int bottomRightY = Integer.parseInt(bottomRight[1]);
// 图片生成操作
boolean upDown = param.getContents()[0].contains("▲") || param.getContents()[0].contains("▼");
createImageWithText(induceTemplate, image, param.getContents(), induceTemplate.getTextSign(), upDown, topLeftX, topLeftY, bottomRightX, bottomRightY);
}catch (Exception ex){
log.error(ex.getMessage());
} }
int topLeftX = Integer.parseInt(topLeft[0]);
int topLeftY = Integer.parseInt(topLeft[1]);
int bottomRightX = Integer.parseInt(bottomRight[0]);
int bottomRightY = Integer.parseInt(bottomRight[1]);
// 图片生成操作
boolean upDown=param.getContents()[0].contains("▲") || param.getContents()[0].contains("▼");
createImageWithText(induceTemplate, image, param.getContents(), induceTemplate.getTextSign(), upDown,topLeftX, topLeftY, bottomRightX, bottomRightY);
// 测试阶段保存图片到本地 // 测试阶段保存图片到本地
// ImageIO.write(image, "bmp", new File("D:\\tmp\\" + induceTemplate.getFileName())); // ImageIO.write(image, "bmp", new File("D:\\tmp\\" + induceTemplate.getFileName()));
// 上传文件至ftp // 上传文件至ftp
......
...@@ -95,7 +95,7 @@ public class InducesMonitorTask { ...@@ -95,7 +95,7 @@ public class InducesMonitorTask {
* #绿波调度计划扫描周期 * #绿波调度计划扫描周期
* 5 分钟 300000 * 5 分钟 300000
*/ */
@Scheduled(fixedRate = 30000) @Scheduled(fixedRate = 300000)
public void refresh() throws Exception { public void refresh() throws Exception {
long start = System.currentTimeMillis(); long start = System.currentTimeMillis();
AtomicLong synCount = new AtomicLong(); AtomicLong synCount = new AtomicLong();
...@@ -192,6 +192,16 @@ public class InducesMonitorTask { ...@@ -192,6 +192,16 @@ public class InducesMonitorTask {
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());// 执行策略
String upDown="";
// 计算绿波速度变化趋势
if(Objects.nonNull(greenwaveInducesHist.getMinSpeed()) && Objects.nonNull(greenwaveInducesHist.getMaxSpeed()) && Objects.nonNull(greenOptHistEntity.getMinSpeed()) && Objects.nonNull(greenOptHistEntity.getMaxSpeed())) {
if (greenwaveInducesHist.getMinSpeed() > greenOptHistEntity.getMinSpeed() || greenwaveInducesHist.getMaxSpeed() > greenOptHistEntity.getMaxSpeed()) {
upDown = "▼ ";
}
if (greenwaveInducesHist.getMinSpeed() < greenOptHistEntity.getMinSpeed() || greenwaveInducesHist.getMaxSpeed() < greenOptHistEntity.getMaxSpeed()) {
upDown = "▲ ";
}
}
greenwaveInducesHist.setMinSpeed(greenOptHistEntity.getMinSpeed()); greenwaveInducesHist.setMinSpeed(greenOptHistEntity.getMinSpeed());
greenwaveInducesHist.setMaxSpeed(greenOptHistEntity.getMaxSpeed()); greenwaveInducesHist.setMaxSpeed(greenOptHistEntity.getMaxSpeed());
// greenwaveInducesHist.setDir(greenOptHistEntity.getDirType()); // greenwaveInducesHist.setDir(greenOptHistEntity.getDirType());
...@@ -208,7 +218,8 @@ public class InducesMonitorTask { ...@@ -208,7 +218,8 @@ public class InducesMonitorTask {
MessageParam messageParam = new MessageParam(); MessageParam messageParam = new MessageParam();
messageParam.setFlg(1); messageParam.setFlg(1);
messageParam.setGreenId(greenwaveInfoPO.getId()); messageParam.setGreenId(greenwaveInfoPO.getId());
messageParam.setContents(new String[]{(Objects.nonNull(greenOptHistEntity.getMinSpeed())?greenOptHistEntity.getMinSpeed().intValue()+"-":"")+(Objects.nonNull(greenOptHistEntity.getMaxSpeed())?greenOptHistEntity.getMaxSpeed().intValue():"")+"km/h"});
messageParam.setContents(new String[]{(upDown+(Objects.nonNull(greenOptHistEntity.getMinSpeed())?greenOptHistEntity.getMinSpeed().intValue()+"-":"")+(Objects.nonNull(greenOptHistEntity.getMaxSpeed())?greenOptHistEntity.getMaxSpeed().intValue():""))+"km/h"});
messageParam.setType("TFMH"); messageParam.setType("TFMH");
try { try {
if(greenwaveInducesHist.getStatus()==0||greenwaveInducesHist.getModifyTime().before(greenOptHistEntity.getCreateTime())) { if(greenwaveInducesHist.getStatus()==0||greenwaveInducesHist.getModifyTime().before(greenOptHistEntity.getCreateTime())) {
......
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