Commit 1bd048da authored by duanruiming's avatar duanruiming

[add] 方案同步优化

parent ffaaa9be
...@@ -3,6 +3,7 @@ package net.wanji.web.service.impl; ...@@ -3,6 +3,7 @@ package net.wanji.web.service.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson; import com.google.gson.Gson;
...@@ -15,11 +16,14 @@ import net.wanji.databus.dao.entity.*; ...@@ -15,11 +16,14 @@ import net.wanji.databus.dao.entity.*;
import net.wanji.databus.dao.mapper.*; import net.wanji.databus.dao.mapper.*;
import net.wanji.databus.dto.*; import net.wanji.databus.dto.*;
import net.wanji.databus.po.BaseCrossLightsPO; import net.wanji.databus.po.BaseCrossLightsPO;
import net.wanji.databus.po.CrossBaseLaneInfoPO;
import net.wanji.databus.po.CrossLaneLightsPO;
import net.wanji.databus.po.SaveToUtcPO; import net.wanji.databus.po.SaveToUtcPO;
import net.wanji.databus.vo.*; import net.wanji.databus.vo.*;
import net.wanji.feign.service.UtcFeignClients; import net.wanji.feign.service.UtcFeignClients;
import net.wanji.web.common.enums.CrossDirChangeEnum; import net.wanji.web.common.enums.CrossDirChangeEnum;
import net.wanji.web.dto.*; import net.wanji.web.dto.*;
import net.wanji.web.mapper.scheme.CrossDirInfoMapper;
import net.wanji.web.po.RingPhasePO; import net.wanji.web.po.RingPhasePO;
import net.wanji.web.service.FeignProxyService; import net.wanji.web.service.FeignProxyService;
import net.wanji.web.service.PlanSendService; import net.wanji.web.service.PlanSendService;
...@@ -37,6 +41,7 @@ import javax.validation.constraints.NotNull; ...@@ -37,6 +41,7 @@ import javax.validation.constraints.NotNull;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
/** /**
* @author Kent HAN * @author Kent HAN
...@@ -59,6 +64,8 @@ public class PlanSendServiceImpl implements PlanSendService { ...@@ -59,6 +64,8 @@ public class PlanSendServiceImpl implements PlanSendService {
private final BaseCrossSchedulesMapper baseCrossSchedulesMapper; private final BaseCrossSchedulesMapper baseCrossSchedulesMapper;
private final BaseCrossLaneLightsMapper baseCrossLaneLightsMapper; private final BaseCrossLaneLightsMapper baseCrossLaneLightsMapper;
private final BaseCrossSectionMapper baseCrossSectionMapper; private final BaseCrossSectionMapper baseCrossSectionMapper;
private final CrossBaseLaneInfoMapper crossBaseLaneInfoMapper;
private final CrossDirInfoMapper crossDirInfoMapper;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat hourMinuteSdf = new SimpleDateFormat("HH:mm"); SimpleDateFormat hourMinuteSdf = new SimpleDateFormat("HH:mm");
...@@ -71,7 +78,8 @@ public class PlanSendServiceImpl implements PlanSendService { ...@@ -71,7 +78,8 @@ public class PlanSendServiceImpl implements PlanSendService {
BaseCrossLightsMapper baseCrossLightsMapper, BaseCrossPhaseLightsMapper baseCrossPhaseLightsMapper, BaseCrossLightsMapper baseCrossLightsMapper, BaseCrossPhaseLightsMapper baseCrossPhaseLightsMapper,
RunningPlanServiceImpl runningPlanServiceImpl, SchemeConfigServiceImpl schemeConfigServiceImpl, RunningPlanServiceImpl runningPlanServiceImpl, SchemeConfigServiceImpl schemeConfigServiceImpl,
BaseCrossSchedulesMapper baseCrossSchedulesMapper, BaseCrossLaneLightsMapper baseCrossLaneLightsMapper, BaseCrossSchedulesMapper baseCrossSchedulesMapper, BaseCrossLaneLightsMapper baseCrossLaneLightsMapper,
BaseCrossSectionMapper baseCrossSectionMapper, FeignProxyService feignProxyService) { BaseCrossSectionMapper baseCrossSectionMapper, FeignProxyService feignProxyService,
CrossBaseLaneInfoMapper crossBaseLaneInfoMapper, CrossDirInfoMapper crossDirInfoMapper) {
this.utcFeignClients = utcFeignClients; this.utcFeignClients = utcFeignClients;
this.baseCrossSchedulesPlanMapper = baseCrossSchedulesPlanMapper; this.baseCrossSchedulesPlanMapper = baseCrossSchedulesPlanMapper;
this.baseCrossPlanMapper = baseCrossPlanMapper; this.baseCrossPlanMapper = baseCrossPlanMapper;
...@@ -85,6 +93,8 @@ public class PlanSendServiceImpl implements PlanSendService { ...@@ -85,6 +93,8 @@ public class PlanSendServiceImpl implements PlanSendService {
this.baseCrossLaneLightsMapper = baseCrossLaneLightsMapper; this.baseCrossLaneLightsMapper = baseCrossLaneLightsMapper;
this.baseCrossSectionMapper = baseCrossSectionMapper; this.baseCrossSectionMapper = baseCrossSectionMapper;
this.feignProxyService = feignProxyService; this.feignProxyService = feignProxyService;
this.crossBaseLaneInfoMapper = crossBaseLaneInfoMapper;
this.crossDirInfoMapper = crossDirInfoMapper;
} }
/** /**
...@@ -416,6 +426,8 @@ public class PlanSendServiceImpl implements PlanSendService { ...@@ -416,6 +426,8 @@ public class PlanSendServiceImpl implements PlanSendService {
List<CrossLightsPO> crossLightsList = schemePhaseLightsVO.getCrossLightsList(); List<CrossLightsPO> crossLightsList = schemePhaseLightsVO.getCrossLightsList();
// 清理数据库 // 清理数据库
baseCrossLightsMapper.deleteByCrossId(crossId); baseCrossLightsMapper.deleteByCrossId(crossId);
// 灯组号去重 // 灯组号去重
List<BaseCrossLightsPO> baseCrossLightsPOS = new ArrayList<>(crossLightsList.size()); List<BaseCrossLightsPO> baseCrossLightsPOS = new ArrayList<>(crossLightsList.size());
for (CrossLightsPO crossLightsPO : crossLightsList) { for (CrossLightsPO crossLightsPO : crossLightsList) {
...@@ -430,8 +442,68 @@ public class PlanSendServiceImpl implements PlanSendService { ...@@ -430,8 +442,68 @@ public class PlanSendServiceImpl implements PlanSendService {
baseCrossLightsMapper.insertBatch(crossLightsSet); baseCrossLightsMapper.insertBatch(crossLightsSet);
} }
baseCrossPhaseLightsMapper.deleteByCrossId(crossId); // 新增灯组关联车道逻辑
LambdaQueryWrapper<CrossBaseLaneInfoPO> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(CrossBaseLaneInfoPO::getCrossId, crossId);
queryWrapper.eq(CrossBaseLaneInfoPO::getType, 2);
List<CrossBaseLaneInfoPO> crossBaseLaneInfoPOS = crossBaseLaneInfoMapper.selectList(queryWrapper);
// 车道灯组关系列表
List<CrossLaneLightsPO> crossLaneLightsPOS = new ArrayList<>();
List<BaseCrossLightsPO> insertedList = baseCrossLightsMapper.selectByCrossId(crossId);
for (BaseCrossLightsPO baseCrossLightsPO : insertedList) {
Integer dir = baseCrossLightsPO.getDir();
Integer turn = baseCrossLightsPO.getTurn();
Integer type = baseCrossLightsPO.getType();
Integer lightId = baseCrossLightsPO.getId();
// 设置灯组车道关联关系
// 圆饼灯获取方向所有车道
if (Objects.equals(1, type)) {
List<String> lane2List = crossBaseLaneInfoPOS.stream().filter(item -> Objects.equals(dir, item.getDir()))
.map(CrossBaseLaneInfoPO::getId).collect(Collectors.toList());
for (String laneId : lane2List) {
CrossLaneLightsPO crossLaneLightsPO = new CrossLaneLightsPO();
crossLaneLightsPO.setLightsId(lightId);
crossLaneLightsPO.setLaneId(laneId);
crossLaneLightsPO.setCrossId(crossId);
crossLaneLightsPOS.add(crossLaneLightsPO);
}
} else {
Integer currentTurn = type - 1;
List<CrossBaseLaneInfoPO> lane1List = crossBaseLaneInfoPOS.stream().filter(item -> Objects.equals(dir, item.getDir())).collect(Collectors.toList());
for (CrossBaseLaneInfoPO laneInfoPO : lane1List) {
if (Objects.equals(currentTurn, laneInfoPO.getTurn()) && !Objects.equals(20, currentTurn)) {
CrossLaneLightsPO crossLaneLightsPO = new CrossLaneLightsPO();
crossLaneLightsPO.setLightsId(lightId);
crossLaneLightsPO.setLaneId(laneInfoPO.getId());
crossLaneLightsPO.setCrossId(crossId);
crossLaneLightsPOS.add(crossLaneLightsPO);
}
}
}
}
baseCrossLaneLightsMapper.deleteByCrossId(crossId); baseCrossLaneLightsMapper.deleteByCrossId(crossId);
baseCrossLaneLightsMapper.insertBatch(crossLaneLightsPOS);
List<CrossPhaseLightsPO> crossPhaseLightsPOS = new ArrayList<>();
CrossPhasePO crossPhasePO = new CrossPhasePO();
crossPhasePO.setCrossId(crossId);
List<CrossPhasePO> crossPhasePOS = baseCrossPhaseMapper.listCrossPhasePO(crossPhasePO);
// 灯组
//insertedList.stream()
// 相位
List<CrossPhaseLightsPO> crossPhaseLightsPOList = schemePhaseLightsVO.getCrossPhaseLightsPOList();
if (!CollectionUtils.isEmpty(crossPhaseLightsPOList) && !CollectionUtils.isEmpty(crossPhasePOS)) {
for (CrossPhaseLightsPO crossPhaseLightsPO : crossPhaseLightsPOList) {
Integer lightsId = crossPhaseLightsPO.getLightsId();
Integer phaseId = crossPhaseLightsPO.getPhaseId();
}
}
baseCrossPhaseLightsMapper.insertBatch(crossPhaseLightsPOS);
syncSchedules(crossId, schemePhaseLightsVO); syncSchedules(crossId, schemePhaseLightsVO);
} }
......
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