Commit 1bd048da authored by duanruiming's avatar duanruiming

[add] 方案同步优化

parent ffaaa9be
......@@ -3,6 +3,7 @@ package net.wanji.web.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
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.databind.ObjectMapper;
import com.google.gson.Gson;
......@@ -15,11 +16,14 @@ import net.wanji.databus.dao.entity.*;
import net.wanji.databus.dao.mapper.*;
import net.wanji.databus.dto.*;
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.vo.*;
import net.wanji.feign.service.UtcFeignClients;
import net.wanji.web.common.enums.CrossDirChangeEnum;
import net.wanji.web.dto.*;
import net.wanji.web.mapper.scheme.CrossDirInfoMapper;
import net.wanji.web.po.RingPhasePO;
import net.wanji.web.service.FeignProxyService;
import net.wanji.web.service.PlanSendService;
......@@ -37,6 +41,7 @@ import javax.validation.constraints.NotNull;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @author Kent HAN
......@@ -59,6 +64,8 @@ public class PlanSendServiceImpl implements PlanSendService {
private final BaseCrossSchedulesMapper baseCrossSchedulesMapper;
private final BaseCrossLaneLightsMapper baseCrossLaneLightsMapper;
private final BaseCrossSectionMapper baseCrossSectionMapper;
private final CrossBaseLaneInfoMapper crossBaseLaneInfoMapper;
private final CrossDirInfoMapper crossDirInfoMapper;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat hourMinuteSdf = new SimpleDateFormat("HH:mm");
......@@ -71,7 +78,8 @@ public class PlanSendServiceImpl implements PlanSendService {
BaseCrossLightsMapper baseCrossLightsMapper, BaseCrossPhaseLightsMapper baseCrossPhaseLightsMapper,
RunningPlanServiceImpl runningPlanServiceImpl, SchemeConfigServiceImpl schemeConfigServiceImpl,
BaseCrossSchedulesMapper baseCrossSchedulesMapper, BaseCrossLaneLightsMapper baseCrossLaneLightsMapper,
BaseCrossSectionMapper baseCrossSectionMapper, FeignProxyService feignProxyService) {
BaseCrossSectionMapper baseCrossSectionMapper, FeignProxyService feignProxyService,
CrossBaseLaneInfoMapper crossBaseLaneInfoMapper, CrossDirInfoMapper crossDirInfoMapper) {
this.utcFeignClients = utcFeignClients;
this.baseCrossSchedulesPlanMapper = baseCrossSchedulesPlanMapper;
this.baseCrossPlanMapper = baseCrossPlanMapper;
......@@ -85,6 +93,8 @@ public class PlanSendServiceImpl implements PlanSendService {
this.baseCrossLaneLightsMapper = baseCrossLaneLightsMapper;
this.baseCrossSectionMapper = baseCrossSectionMapper;
this.feignProxyService = feignProxyService;
this.crossBaseLaneInfoMapper = crossBaseLaneInfoMapper;
this.crossDirInfoMapper = crossDirInfoMapper;
}
/**
......@@ -416,6 +426,8 @@ public class PlanSendServiceImpl implements PlanSendService {
List<CrossLightsPO> crossLightsList = schemePhaseLightsVO.getCrossLightsList();
// 清理数据库
baseCrossLightsMapper.deleteByCrossId(crossId);
// 灯组号去重
List<BaseCrossLightsPO> baseCrossLightsPOS = new ArrayList<>(crossLightsList.size());
for (CrossLightsPO crossLightsPO : crossLightsList) {
......@@ -430,8 +442,68 @@ public class PlanSendServiceImpl implements PlanSendService {
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.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);
}
......
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