Commit 2606fa8a authored by duanruiming's avatar duanruiming

[update] 同步计划和调度

parent 842f050f
...@@ -2,27 +2,26 @@ package net.wanji.web.service.impl; ...@@ -2,27 +2,26 @@ 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 com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
import net.wanji.common.dto.CrossIdDTO; import net.wanji.common.dto.CrossIdDTO;
import net.wanji.common.framework.rest.JsonViewObject; import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.databus.dao.entity.*; import net.wanji.databus.dao.entity.*;
import net.wanji.databus.dao.mapper.*; import net.wanji.databus.dao.mapper.*;
import net.wanji.databus.dto.CrossSchedulesDTO;
import net.wanji.databus.dto.PlanSectionDTO;
import net.wanji.databus.dto.RunningPlanDTO; import net.wanji.databus.dto.RunningPlanDTO;
import net.wanji.databus.po.BaseCrossLightsPO; import net.wanji.databus.po.BaseCrossLightsPO;
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.dto.*; import net.wanji.web.dto.*;
import net.wanji.databus.dao.mapper.CrossSchedulesPlanMapper;
import net.wanji.databus.dao.entity.BaseCrossSchedulesPO;
import net.wanji.databus.dao.entity.CrossSchedulesPlanPO;
import net.wanji.web.service.FeignProxyService; import net.wanji.web.service.FeignProxyService;
import net.wanji.web.service.PlanSendService; import net.wanji.web.service.PlanSendService;
import net.wanji.web.service.scheme.impl.RunningPlanServiceImpl; import net.wanji.web.service.scheme.impl.RunningPlanServiceImpl;
import net.wanji.web.service.scheme.impl.SchemeConfigServiceImpl; import net.wanji.web.service.scheme.impl.SchemeConfigServiceImpl;
import net.wanji.web.vo.PhaseListByTimeVO; import net.wanji.web.vo.PhaseListByTimeVO;
import net.wanji.web.vo.SchemePhaseLightsVO;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -40,7 +39,7 @@ import java.util.stream.Collectors; ...@@ -40,7 +39,7 @@ import java.util.stream.Collectors;
public class PlanSendServiceImpl implements PlanSendService { public class PlanSendServiceImpl implements PlanSendService {
private final UtcFeignClients utcFeignClients; private final UtcFeignClients utcFeignClients;
private final FeignProxyService feignProxyService; private final FeignProxyService feignProxyService;
private final CrossSchedulesPlanMapper crossSchedulesPlanMapper; private final BaseCrossSchedulesPlanMapper baseCrossSchedulesPlanMapper;
private final BaseCrossPlanMapper baseCrossPlanMapper; private final BaseCrossPlanMapper baseCrossPlanMapper;
private final BaseCrossSchemeMapper baseCrossSchemeMapper; private final BaseCrossSchemeMapper baseCrossSchemeMapper;
private final BaseCrossPhaseMapper baseCrossPhaseMapper; private final BaseCrossPhaseMapper baseCrossPhaseMapper;
...@@ -58,14 +57,14 @@ public class PlanSendServiceImpl implements PlanSendService { ...@@ -58,14 +57,14 @@ public class PlanSendServiceImpl implements PlanSendService {
private Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create(); private Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create();
public PlanSendServiceImpl(@Qualifier("net.wanji.feign.service.UtcFeignClients") UtcFeignClients utcFeignClients, public PlanSendServiceImpl(@Qualifier("net.wanji.feign.service.UtcFeignClients") UtcFeignClients utcFeignClients,
CrossSchedulesPlanMapper crossSchedulesPlanMapper, BaseCrossPlanMapper baseCrossPlanMapper, BaseCrossSchedulesPlanMapper baseCrossSchedulesPlanMapper, BaseCrossPlanMapper baseCrossPlanMapper,
BaseCrossSchemeMapper baseCrossSchemeMapper, BaseCrossPhaseMapper baseCrossPhaseMapper, BaseCrossSchemeMapper baseCrossSchemeMapper, BaseCrossPhaseMapper baseCrossPhaseMapper,
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) {
this.utcFeignClients = utcFeignClients; this.utcFeignClients = utcFeignClients;
this.crossSchedulesPlanMapper = crossSchedulesPlanMapper; this.baseCrossSchedulesPlanMapper = baseCrossSchedulesPlanMapper;
this.baseCrossPlanMapper = baseCrossPlanMapper; this.baseCrossPlanMapper = baseCrossPlanMapper;
this.baseCrossSchemeMapper = baseCrossSchemeMapper; this.baseCrossSchemeMapper = baseCrossSchemeMapper;
this.baseCrossPhaseMapper = baseCrossPhaseMapper; this.baseCrossPhaseMapper = baseCrossPhaseMapper;
...@@ -174,8 +173,8 @@ public class PlanSendServiceImpl implements PlanSendService { ...@@ -174,8 +173,8 @@ public class PlanSendServiceImpl implements PlanSendService {
} }
private PlanSendVO getPlanSendVO(String crossId, Integer scheduleId) { private PlanSendVO getPlanSendVO(String crossId, Integer scheduleId) {
List<CrossSchedulesPlanPO> crossSchedulesPlanPOList = List<BaseCrossSchedulesPlanPO> crossSchedulesPlanPOList =
crossSchedulesPlanMapper.selectByCrossIdAndSchedulesId(crossId, scheduleId); baseCrossSchedulesPlanMapper.selectByCrossIdAndSchedulesId(crossId, scheduleId);
Integer planId = crossSchedulesPlanPOList.get(0).getPlanId(); Integer planId = crossSchedulesPlanPOList.get(0).getPlanId();
CrossPlanPO crossPlanPO = baseCrossPlanMapper.selectById(planId); CrossPlanPO crossPlanPO = baseCrossPlanMapper.selectById(planId);
...@@ -236,7 +235,6 @@ public class PlanSendServiceImpl implements PlanSendService { ...@@ -236,7 +235,6 @@ public class PlanSendServiceImpl implements PlanSendService {
} }
// 更新方案表状态为已执行 // 更新方案表状态为已执行
baseCrossSchemeMapper.resetStatus(crossId); baseCrossSchemeMapper.resetStatus(crossId);
baseCrossSchemeMapper.updateStatus(schemeId); baseCrossSchemeMapper.updateStatus(schemeId);
...@@ -353,61 +351,144 @@ public class PlanSendServiceImpl implements PlanSendService { ...@@ -353,61 +351,144 @@ public class PlanSendServiceImpl implements PlanSendService {
@Override @Override
@Transactional @Transactional
public JsonViewObject syncScheme(CrossIdDTO crossIdDTO) { public JsonViewObject syncScheme(CrossIdDTO crossIdDTO) {
CrossIdVO crossIdVO = new CrossIdVO(); // CrossIdVO crossIdVO = new CrossIdVO();
String crossId = crossIdDTO.getCrossId(); String crossId = crossIdDTO.getCrossId();
crossIdVO.setCrossId(crossId); // crossIdVO.setCrossId(crossId);
JsonViewObject jsonViewObject = utcFeignClients.schemePhaseLights(crossIdVO); // JsonViewObject jsonViewObject = utcFeignClients.schemePhaseLights(crossIdVO);
if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) { // if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
return jsonViewObject.fail("信号机静态信息获取-方案信息-UTC服务调用异常"); // return jsonViewObject.fail("信号机静态信息获取-方案信息-UTC服务调用异常");
// }
// Object content = jsonViewObject.getContent();
// if (ObjectUtil.isNotNull(content)) {
// // 信息入库
// String contentStr = gson.toJson(content);
// SchemePhaseLightsVO schemePhaseLightsVO = gson.fromJson(contentStr, SchemePhaseLightsVO.class);
// if (ObjectUtil.isEmpty(schemePhaseLightsVO)) {
// return jsonViewObject.fail("信号机方案对象转换结果为空,未更新数据库");
// }
// List<BaseCrossSchemePO> crossSchemeList = schemePhaseLightsVO.getCrossSchemeList();
// baseCrossSchemeMapper.deleteByCrossId(crossId);
// // 保存旧方案ID
// List<Integer> oldSchemeIds = crossSchemeList.stream().map(BaseCrossSchemePO::getId).collect(Collectors.toList());
// // 保存新方案ID
// baseCrossSchemeMapper.insertBatch(crossSchemeList);
// List<Integer> newSchemeIds = crossSchemeList.stream().map(BaseCrossSchemePO::getId).collect(Collectors.toList());
// // 生成新旧方案ID映射
// Map<Integer, Integer> oldNewSchemeId = new HashMap<>();
// for (int i = 0; i < oldSchemeIds.size(); i++) {
// oldNewSchemeId.put(oldSchemeIds.get(i), newSchemeIds.get(i));
// }
//
// List<CrossPhasePO> crossPhaseList = schemePhaseLightsVO.getCrossPhaseList();
// baseCrossPhaseMapper.deleteByCrossId(crossId);
// // 更新方案ID
// for (CrossPhasePO crossPhasePO : crossPhaseList) {
// // 当前相位未关联方案,方案id为-1
// Integer planId = crossPhasePO.getPlanId();
// if (planId == -1) {
// crossPhasePO.setPlanId(-1);
// } else {
// crossPhasePO.setPlanId(oldNewSchemeId.get(planId));
// }
// }
// baseCrossPhaseMapper.insertBatch(crossPhaseList);
//
// List<BaseCrossLightsPO> crossLightsList = schemePhaseLightsVO.getCrossLightsList();
// // 清理数据库
// baseCrossLightsMapper.deleteByCrossId(crossId);
// // 灯组号去重
// TreeSet<BaseCrossLightsPO> crossLightsSet = distinctLightsNo(crossLightsList);
// // 修改灯组数据内容
// changeLightsType(crossLightsSet);
// baseCrossLightsMapper.insertBatch(crossLightsSet);
//
// baseCrossPhaseLightsMapper.deleteByCrossId(crossId);
// baseCrossLaneLightsMapper.deleteByCrossId(crossId);
//
try {
syncSchedules(crossId);
} catch (Exception e) {
throw new RuntimeException(e);
}
// }
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
return jsonViewObject.success();
}
public void syncSchedules(String crossId) throws Exception {
ObjectMapper mapper = new ObjectMapper();
// 计划信息
PlanSectionDTO planSectionDTO = new PlanSectionDTO();
planSectionDTO.setCrossId(crossId);
planSectionDTO.setPlanNo(-1);
JsonViewObject jsonViewObject1 = utcFeignClients.planSection(planSectionDTO);
if (Objects.isNull(jsonViewObject1) || jsonViewObject1.getCode() != 200) {
throw new Exception("信号机静态信息获取-计划信息-UTC服务调用异常");
} }
Object content = jsonViewObject.getContent(); PlanSectionVO planSectionVO = mapper.convertValue(jsonViewObject1.getContent(), PlanSectionVO.class);
if (ObjectUtil.isNotNull(content)) { if (Objects.nonNull(planSectionVO)) {
// 信息入库 List<CrossPlanPO> crossPlanPOList = planSectionVO.getCrossPlanPOList();
String contentStr = gson.toJson(content); for (CrossPlanPO crossPlanPO : crossPlanPOList) {
SchemePhaseLightsVO schemePhaseLightsVO = gson.fromJson(contentStr, SchemePhaseLightsVO.class); baseCrossPlanMapper.insertOne(crossPlanPO);
if (ObjectUtil.isEmpty(schemePhaseLightsVO)) {
return jsonViewObject.fail("信号机方案对象转换结果为空,未更新数据库");
} }
List<BaseCrossSchemePO> crossSchemeList = schemePhaseLightsVO.getCrossSchemeList(); List<CrossSectionPO> crossSectionPOList = planSectionVO.getCrossSectionPOList();
baseCrossSchemeMapper.deleteByCrossId(crossId); for (CrossSectionPO crossSectionPO : crossSectionPOList) {
// 保存旧方案ID String planNo = null;
List<Integer> oldSchemeIds = crossSchemeList.stream().map(BaseCrossSchemePO::getId).collect(Collectors.toList()); for (CrossPlanPO crossPlanPO : crossPlanPOList) {
// 保存新方案ID if (Objects.equals(crossPlanPO.getId(), crossSectionPO.getPlanId())) {
baseCrossSchemeMapper.insertBatch(crossSchemeList); planNo = crossPlanPO.getPlanNo();
List<Integer> newSchemeIds = crossSchemeList.stream().map(BaseCrossSchemePO::getId).collect(Collectors.toList()); }
// 生成新旧方案ID映射 }
Map<Integer, Integer> oldNewSchemeId = new HashMap<>(); CrossPlanPO crossPlanPO = baseCrossPlanMapper.selectByCrossIdAndPlanNo(crossId, planNo);
for (int i = 0; i < oldSchemeIds.size(); i++) { crossSectionPO.setPlanId(null);
oldNewSchemeId.put(oldSchemeIds.get(i), newSchemeIds.get(i)); crossSectionPO.setSchemeId(null);
baseCrossSectionMapper.insertOne(crossSectionPO);
} }
}
List<CrossPhasePO> crossPhaseList = schemePhaseLightsVO.getCrossPhaseList(); // 调度信息
baseCrossPhaseMapper.deleteByCrossId(crossId); CrossSchedulesDTO crossSchedulesDTO = new CrossSchedulesDTO();
// 更新方案ID crossSchedulesDTO.setCrossIdList(Arrays.asList(crossId));
for (CrossPhasePO crossPhasePO : crossPhaseList) { crossSchedulesDTO.setManufacturerCode("DT");
// 当前相位未关联方案,方案id为-1 JsonViewObject jsonViewObject = utcFeignClients.crossSchedules(crossSchedulesDTO);
Integer planId = crossPhasePO.getPlanId(); if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
if (planId == -1) { throw new Exception("信号机静态信息获取-调度信息-UTC服务调用异常");
crossPhasePO.setPlanId(-1); }
} else { List<CrossSchedulesPO> crossSchedulesPOList = mapper.convertValue(jsonViewObject.getContent(), new TypeReference<List<CrossSchedulesPO>>() {
crossPhasePO.setPlanId(oldNewSchemeId.get(planId)); });
} baseCrossSchedulesMapper.deleteByCrossId(crossId);
baseCrossSchedulesPlanMapper.deleteByCrossId(crossId);
Integer tempScheduleNo = null;
HashMap<Integer, List<Integer>> weekMap = new HashMap<>(7);
HashMap<Integer, List<Date>> specialMap = new HashMap<>();
List<Integer> weekList = new ArrayList<>();
List<Date> scpecialList = new ArrayList<>();
for (CrossSchedulesPO crossSchedulesPO : crossSchedulesPOList) {
Integer scheduleNo = crossSchedulesPO.getScheduleNo();
BaseCrossSchedulesPO baseCrossSchedulesPO = new BaseCrossSchedulesPO();
weekList.add(crossSchedulesPO.getWeek());
scpecialList.add(crossSchedulesPO.getSpecialDate());
if (Objects.equals(tempScheduleNo, scheduleNo)) {
continue;
} else {
tempScheduleNo = scheduleNo;
baseCrossSchedulesPO.setScheduleNo(String.valueOf(scheduleNo));
baseCrossSchedulesPO.setCrossId(crossId);
baseCrossSchedulesPO.setStatus(0);
baseCrossSchedulesPO.setName(crossSchedulesPO.getName());
} }
baseCrossPhaseMapper.insertBatch(crossPhaseList); baseCrossSchedulesMapper.insertOne(baseCrossSchedulesPO);
weekMap.put(scheduleNo, weekList);
List<BaseCrossLightsPO> crossLightsList = schemePhaseLightsVO.getCrossLightsList(); specialMap.put(scheduleNo, scpecialList);
// 清理数据库
baseCrossLightsMapper.deleteByCrossId(crossId);
// 灯组号去重
TreeSet<BaseCrossLightsPO> crossLightsSet = distinctLightsNo(crossLightsList);
// 修改灯组数据内容
changeLightsType(crossLightsSet);
baseCrossLightsMapper.insertBatch(crossLightsSet);
baseCrossPhaseLightsMapper.deleteByCrossId(crossId);
baseCrossLaneLightsMapper.deleteByCrossId(crossId);
} }
return jsonViewObject.success(); List<BaseCrossSchedulesPO> baseCrossSchedulesPOS = baseCrossSchedulesMapper.selectByCrossId(crossId);
List<CrossPlanPO> crossPlanPOS = baseCrossPlanMapper.selectByCrossId(crossId);
} }
private TreeSet<BaseCrossLightsPO> distinctLightsNo(List<BaseCrossLightsPO> crossLightsList) { private TreeSet<BaseCrossLightsPO> distinctLightsNo(List<BaseCrossLightsPO> crossLightsList) {
...@@ -624,12 +705,12 @@ public class PlanSendServiceImpl implements PlanSendService { ...@@ -624,12 +705,12 @@ public class PlanSendServiceImpl implements PlanSendService {
private List<ScheduleSendVO.Schedule> buildSchedules(String crossId, ScheduleIdDTO scheduleIdDTO) { private List<ScheduleSendVO.Schedule> buildSchedules(String crossId, ScheduleIdDTO scheduleIdDTO) {
List<ScheduleSendVO.Schedule> schedules = new ArrayList<>(); List<ScheduleSendVO.Schedule> schedules = new ArrayList<>();
Integer scheduleId = scheduleIdDTO.getScheduleId(); Integer scheduleId = scheduleIdDTO.getScheduleId();
List<CrossSchedulesPlanPO> crossSchedulesPlanPOList = List<BaseCrossSchedulesPlanPO> crossSchedulesPlanPOList =
crossSchedulesPlanMapper.selectByCrossIdAndSchedulesId(crossId, scheduleId); baseCrossSchedulesPlanMapper.selectByCrossIdAndSchedulesId(crossId, scheduleId);
ScheduleSendVO.Schedule schedule = new ScheduleSendVO.Schedule(); ScheduleSendVO.Schedule schedule = new ScheduleSendVO.Schedule();
List<ScheduleSendVO.Schedule.Week> weeks = new ArrayList<>(); List<ScheduleSendVO.Schedule.Week> weeks = new ArrayList<>();
List<ScheduleSendVO.Schedule.SpecialDay> specialDays = new ArrayList<>(); List<ScheduleSendVO.Schedule.SpecialDay> specialDays = new ArrayList<>();
for (CrossSchedulesPlanPO crossSchedulesPlanPO : crossSchedulesPlanPOList) { for (BaseCrossSchedulesPlanPO crossSchedulesPlanPO : crossSchedulesPlanPOList) {
Integer planId = crossSchedulesPlanPO.getPlanId(); Integer planId = crossSchedulesPlanPO.getPlanId();
Integer week = crossSchedulesPlanPO.getWeek(); Integer week = crossSchedulesPlanPO.getWeek();
Date specialDate = crossSchedulesPlanPO.getSpecialDate(); Date specialDate = crossSchedulesPlanPO.getSpecialDate();
......
...@@ -11,8 +11,8 @@ import net.wanji.databus.dao.mapper.BaseCrossSchedulesMapper; ...@@ -11,8 +11,8 @@ import net.wanji.databus.dao.mapper.BaseCrossSchedulesMapper;
import net.wanji.databus.dao.mapper.BaseCrossSchemeMapper; import net.wanji.databus.dao.mapper.BaseCrossSchemeMapper;
import net.wanji.databus.dao.mapper.BaseCrossSectionMapper; import net.wanji.databus.dao.mapper.BaseCrossSectionMapper;
import net.wanji.databus.dto.RunningPlanDTO; import net.wanji.databus.dto.RunningPlanDTO;
import net.wanji.databus.dao.mapper.CrossSchedulesPlanMapper; import net.wanji.databus.dao.mapper.BaseCrossSchedulesPlanMapper;
import net.wanji.databus.dao.entity.CrossSchedulesPlanPO; import net.wanji.databus.dao.entity.BaseCrossSchedulesPlanPO;
import net.wanji.web.service.scheme.RunningPlanService; import net.wanji.web.service.scheme.RunningPlanService;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -38,16 +38,16 @@ public class RunningPlanServiceImpl implements RunningPlanService { ...@@ -38,16 +38,16 @@ public class RunningPlanServiceImpl implements RunningPlanService {
private final BaseCrossSchemeMapper baseCrossSchemeMapper; private final BaseCrossSchemeMapper baseCrossSchemeMapper;
private final BaseCrossSectionMapper baseCrossSectionMapper; private final BaseCrossSectionMapper baseCrossSectionMapper;
private final BaseCrossSchedulesMapper baseCrossSchedulesMapper; private final BaseCrossSchedulesMapper baseCrossSchedulesMapper;
private final CrossSchedulesPlanMapper crossSchedulesPlanMapper; private final BaseCrossSchedulesPlanMapper baseCrossSchedulesPlanMapper;
public RunningPlanServiceImpl(BaseCrossPlanMapper baseCrossPlanMapper, BaseCrossSchemeMapper baseCrossSchemeMapper, public RunningPlanServiceImpl(BaseCrossPlanMapper baseCrossPlanMapper, BaseCrossSchemeMapper baseCrossSchemeMapper,
BaseCrossSectionMapper baseCrossSectionMapper, BaseCrossSchedulesMapper baseCrossSchedulesMapper, BaseCrossSectionMapper baseCrossSectionMapper, BaseCrossSchedulesMapper baseCrossSchedulesMapper,
CrossSchedulesPlanMapper crossSchedulesPlanMapper) { BaseCrossSchedulesPlanMapper baseCrossSchedulesPlanMapper) {
this.baseCrossPlanMapper = baseCrossPlanMapper; this.baseCrossPlanMapper = baseCrossPlanMapper;
this.baseCrossSchemeMapper = baseCrossSchemeMapper; this.baseCrossSchemeMapper = baseCrossSchemeMapper;
this.baseCrossSectionMapper = baseCrossSectionMapper; this.baseCrossSectionMapper = baseCrossSectionMapper;
this.baseCrossSchedulesMapper = baseCrossSchedulesMapper; this.baseCrossSchedulesMapper = baseCrossSchedulesMapper;
this.crossSchedulesPlanMapper = crossSchedulesPlanMapper; this.baseCrossSchedulesPlanMapper = baseCrossSchedulesPlanMapper;
} }
@Override @Override
...@@ -58,7 +58,7 @@ public class RunningPlanServiceImpl implements RunningPlanService { ...@@ -58,7 +58,7 @@ public class RunningPlanServiceImpl implements RunningPlanService {
baseCrossPlanMapper.deleteByCrossId(crossId); baseCrossPlanMapper.deleteByCrossId(crossId);
baseCrossSectionMapper.deleteByCrossId(crossId); baseCrossSectionMapper.deleteByCrossId(crossId);
baseCrossSchedulesMapper.deleteByCrossId(crossId); baseCrossSchedulesMapper.deleteByCrossId(crossId);
crossSchedulesPlanMapper.deleteByCrossId(crossId); baseCrossSchedulesPlanMapper.deleteByCrossId(crossId);
// 保存计划数据 // 保存计划数据
saveCrossPlan(runningPlanDTO, crossId); saveCrossPlan(runningPlanDTO, crossId);
// 保存调度数据 // 保存调度数据
...@@ -106,20 +106,20 @@ public class RunningPlanServiceImpl implements RunningPlanService { ...@@ -106,20 +106,20 @@ public class RunningPlanServiceImpl implements RunningPlanService {
BaseCrossSchedulesPO schedulesPO = baseCrossSchedulesMapper.selectByCrossIdAndScheduleNo(crossId, scheduleNo); BaseCrossSchedulesPO schedulesPO = baseCrossSchedulesMapper.selectByCrossIdAndScheduleNo(crossId, scheduleNo);
Integer schedulesId = schedulesPO.getId(); Integer schedulesId = schedulesPO.getId();
// 根据路口ID、调度ID和计划ID查询调度计划关系 // 根据路口ID、调度ID和计划ID查询调度计划关系
List<CrossSchedulesPlanPO> crossSchedulesPlanPOList = List<BaseCrossSchedulesPlanPO> baseCrossSchedulesPlanPOList =
crossSchedulesPlanMapper.selectByCrossIdAndSchedulesId(crossId, schedulesId); baseCrossSchedulesPlanMapper.selectByCrossIdAndSchedulesId(crossId, schedulesId);
Map<Integer, List<CrossSchedulesPlanPO>> collectMap = crossSchedulesPlanPOList.stream() Map<Integer, List<BaseCrossSchedulesPlanPO>> collectMap = baseCrossSchedulesPlanPOList.stream()
.collect(Collectors.groupingBy(CrossSchedulesPlanPO::getPlanId)); .collect(Collectors.groupingBy(BaseCrossSchedulesPlanPO::getPlanId));
for (Map.Entry<Integer, List<CrossSchedulesPlanPO>> entry : collectMap.entrySet()) { for (Map.Entry<Integer, List<BaseCrossSchedulesPlanPO>> entry : collectMap.entrySet()) {
RunningPlanDTO.ExecListElement execListElement = new RunningPlanDTO.ExecListElement(); RunningPlanDTO.ExecListElement execListElement = new RunningPlanDTO.ExecListElement();
List<Integer> week = new ArrayList<>(); List<Integer> week = new ArrayList<>();
List<String> specialDateList = new ArrayList<>(); List<String> specialDateList = new ArrayList<>();
Integer planId = entry.getKey(); Integer planId = entry.getKey();
List<CrossSchedulesPlanPO> secondList = entry.getValue(); List<BaseCrossSchedulesPlanPO> secondList = entry.getValue();
for (CrossSchedulesPlanPO crossSchedulesPlanPO : secondList) { for (BaseCrossSchedulesPlanPO baseCrossSchedulesPlanPO : secondList) {
Integer day = crossSchedulesPlanPO.getWeek(); Integer day = baseCrossSchedulesPlanPO.getWeek();
if (day == 0) { // 特殊日期 if (day == 0) { // 特殊日期
Date specialDate = crossSchedulesPlanPO.getSpecialDate(); Date specialDate = baseCrossSchedulesPlanPO.getSpecialDate();
specialDateList.add(sdf.format(specialDate)); specialDateList.add(sdf.format(specialDate));
} else { } else {
week.add(day); week.add(day);
...@@ -197,29 +197,29 @@ public class RunningPlanServiceImpl implements RunningPlanService { ...@@ -197,29 +197,29 @@ public class RunningPlanServiceImpl implements RunningPlanService {
List<String> specialDateList = schedulesPlan.getSpecialDateList(); List<String> specialDateList = schedulesPlan.getSpecialDateList();
if (CollectionUtil.isNotEmpty(specialDateList)) { if (CollectionUtil.isNotEmpty(specialDateList)) {
for (String date : specialDateList) { for (String date : specialDateList) {
CrossSchedulesPlanPO crossSchedulesPlanPO = initData(crossId, crossSchedulesId, planId); BaseCrossSchedulesPlanPO baseCrossSchedulesPlanPO = initData(crossId, crossSchedulesId, planId);
crossSchedulesPlanPO.setSpecialDate(sdf.parse(date)); baseCrossSchedulesPlanPO.setSpecialDate(sdf.parse(date));
crossSchedulesPlanPO.setWeek(0); baseCrossSchedulesPlanPO.setWeek(0);
crossSchedulesPlanMapper.insertOne(crossSchedulesPlanPO); baseCrossSchedulesPlanMapper.insertOne(baseCrossSchedulesPlanPO);
} }
} }
if (CollectionUtil.isNotEmpty(week)) { if (CollectionUtil.isNotEmpty(week)) {
for (Integer day : week) { for (Integer day : week) {
CrossSchedulesPlanPO crossSchedulesPlanPO = initData(crossId, crossSchedulesId, planId); BaseCrossSchedulesPlanPO baseCrossSchedulesPlanPO = initData(crossId, crossSchedulesId, planId);
crossSchedulesPlanPO.setSpecialDate(new Date(0)); baseCrossSchedulesPlanPO.setSpecialDate(new Date(0));
crossSchedulesPlanPO.setWeek(day); baseCrossSchedulesPlanPO.setWeek(day);
crossSchedulesPlanMapper.insertOne(crossSchedulesPlanPO); baseCrossSchedulesPlanMapper.insertOne(baseCrossSchedulesPlanPO);
} }
} }
} }
@NotNull @NotNull
private static CrossSchedulesPlanPO initData(String crossId, Integer crossSchedulesId, Integer planId) { private static BaseCrossSchedulesPlanPO initData(String crossId, Integer crossSchedulesId, Integer planId) {
CrossSchedulesPlanPO crossSchedulesPlanPO = new CrossSchedulesPlanPO(); BaseCrossSchedulesPlanPO baseCrossSchedulesPlanPO = new BaseCrossSchedulesPlanPO();
crossSchedulesPlanPO.setCrossId(crossId); baseCrossSchedulesPlanPO.setCrossId(crossId);
crossSchedulesPlanPO.setSchedulesId(crossSchedulesId); baseCrossSchedulesPlanPO.setSchedulesId(crossSchedulesId);
crossSchedulesPlanPO.setPlanId(planId); baseCrossSchedulesPlanPO.setPlanId(planId);
return crossSchedulesPlanPO; return baseCrossSchedulesPlanPO;
} }
private void saveCrossPlan(RunningPlanDTO runningPlanDTO, String crossId) { private void saveCrossPlan(RunningPlanDTO runningPlanDTO, String crossId) {
......
...@@ -58,7 +58,7 @@ public class TrendServiceImpl implements TrendService { ...@@ -58,7 +58,7 @@ public class TrendServiceImpl implements TrendService {
private final GreenwaveRealtimeMapper greenwaveRealtimeMapper; private final GreenwaveRealtimeMapper greenwaveRealtimeMapper;
private final StrategyMapper strategyMapper; private final StrategyMapper strategyMapper;
private final BaseCrossSchedulesMapper baseCrossSchedulesMapper; private final BaseCrossSchedulesMapper baseCrossSchedulesMapper;
private final CrossSchedulesPlanMapper crossSchedulesPlanMapper; private final BaseCrossSchedulesPlanMapper baseCrossSchedulesPlanMapper;
private final BaseCrossSectionMapper baseCrossSectionMapper; private final BaseCrossSectionMapper baseCrossSectionMapper;
private final BaseCrossSchemeMapper baseCrossSchemeMapper; private final BaseCrossSchemeMapper baseCrossSchemeMapper;
private final BaseCrossPhaseMapper baseCrossPhaseMapper; private final BaseCrossPhaseMapper baseCrossPhaseMapper;
...@@ -86,7 +86,7 @@ public class TrendServiceImpl implements TrendService { ...@@ -86,7 +86,7 @@ public class TrendServiceImpl implements TrendService {
CrossTurnDataRealtimeMapper crossTurnDataRealtimeMapper, CrossTurnDataRealtimeMapper crossTurnDataRealtimeMapper,
CrossDirDataHistMapper crossDirDataHistMapper, EventAlarmMapper eventAlarmMapper, CrossDirDataHistMapper crossDirDataHistMapper, EventAlarmMapper eventAlarmMapper,
RidInfoMapper ridInfoMapper, BaseCrossDirInfoMapper baseCrossDirInfoMapper, RidInfoMapper ridInfoMapper, BaseCrossDirInfoMapper baseCrossDirInfoMapper,
CrossSchemeOptLogMapper crossSchemeOptLogMapper, GreenwaveCrossMapper greenwaveCrossMapper, CrossDirDataRealtimeMapper crossDirDataRealtimeMapper, GreenwaveHistMapper greenwaveHistMapper, GreenwaveRealtimeMapper greenwaveRealtimeMapper, SceneStrategyIdeaMapper strategyIdeaMapper, StrategyMapper strategyMapper, BaseCrossSchedulesMapper baseCrossSchedulesMapper, CrossSchedulesPlanMapper crossSchedulesPlanMapper, BaseCrossSectionMapper baseCrossSectionMapper, BaseCrossSchemeMapper crossSchemeMapper, BaseCrossSchemeMapper baseCrossSchemeMapper, BaseCrossPhaseMapper baseCrossPhaseMapper, BaseCrossPhaseLightsMapper crossPhaseLightsMapper, BaseCrossLaneLightsMapper baseCrossLaneLightsMapper, CrossBaseLaneInfoMapper crossBaseLaneInfoMapper, CrossTurnDataHistMapper crossTurnDataHistMapper) { CrossSchemeOptLogMapper crossSchemeOptLogMapper, GreenwaveCrossMapper greenwaveCrossMapper, CrossDirDataRealtimeMapper crossDirDataRealtimeMapper, GreenwaveHistMapper greenwaveHistMapper, GreenwaveRealtimeMapper greenwaveRealtimeMapper, SceneStrategyIdeaMapper strategyIdeaMapper, StrategyMapper strategyMapper, BaseCrossSchedulesMapper baseCrossSchedulesMapper, BaseCrossSchedulesPlanMapper baseCrossSchedulesPlanMapper, BaseCrossSectionMapper baseCrossSectionMapper, BaseCrossSchemeMapper crossSchemeMapper, BaseCrossSchemeMapper baseCrossSchemeMapper, BaseCrossPhaseMapper baseCrossPhaseMapper, BaseCrossPhaseLightsMapper crossPhaseLightsMapper, BaseCrossLaneLightsMapper baseCrossLaneLightsMapper, CrossBaseLaneInfoMapper crossBaseLaneInfoMapper, CrossTurnDataHistMapper crossTurnDataHistMapper) {
this.greenwaveInfoMapper = greenwaveInfoMapper; this.greenwaveInfoMapper = greenwaveInfoMapper;
this.baseCrossInfoMapper = baseCrossInfoMapper; this.baseCrossInfoMapper = baseCrossInfoMapper;
this.crossDataRealtimeMapper = crossDataRealtimeMapper; this.crossDataRealtimeMapper = crossDataRealtimeMapper;
...@@ -102,7 +102,7 @@ public class TrendServiceImpl implements TrendService { ...@@ -102,7 +102,7 @@ public class TrendServiceImpl implements TrendService {
this.greenwaveRealtimeMapper = greenwaveRealtimeMapper; this.greenwaveRealtimeMapper = greenwaveRealtimeMapper;
this.strategyMapper = strategyMapper; this.strategyMapper = strategyMapper;
this.baseCrossSchedulesMapper = baseCrossSchedulesMapper; this.baseCrossSchedulesMapper = baseCrossSchedulesMapper;
this.crossSchedulesPlanMapper = crossSchedulesPlanMapper; this.baseCrossSchedulesPlanMapper = baseCrossSchedulesPlanMapper;
this.baseCrossSectionMapper = baseCrossSectionMapper; this.baseCrossSectionMapper = baseCrossSectionMapper;
this.baseCrossSchemeMapper = baseCrossSchemeMapper; this.baseCrossSchemeMapper = baseCrossSchemeMapper;
this.baseCrossPhaseMapper = baseCrossPhaseMapper; this.baseCrossPhaseMapper = baseCrossPhaseMapper;
......
...@@ -3,36 +3,38 @@ package net.wanji.databus.dao.entity; ...@@ -3,36 +3,38 @@ package net.wanji.databus.dao.entity;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.Date;
/** /**
* @author hfx * 时间表信息(调度计划关系);(t_base_cross_schedules_plan)表
* @date 2023/1/13 10:31 *
* @desc 路口调度计划信息 * @author Kent HAN
* @date 2022/12/28 17:45
*/ */
@Data @Data
public class BaseCrossSchedulesPlanPO { public class BaseCrossSchedulesPlanPO {
/** ID */
@ApiModelProperty(name = "ID",notes = "")
private Integer id ;
/** 路口ID */
@ApiModelProperty(name = "路口ID",notes = "")
private String crossId ;
/** 调度ID */
@ApiModelProperty(name = "调度ID",notes = "") @ApiModelProperty(name = "调度ID",notes = "")
private Integer schedulesId; private Integer schedulesId ;
/** 计划ID */
@ApiModelProperty(name = "调度名称",notes = "")
private String schedulesName;
@ApiModelProperty(name = "调度状态:1执行;0未执行",notes = "")
private Integer status;
@ApiModelProperty(name = "计划ID",notes = "") @ApiModelProperty(name = "计划ID",notes = "")
private Integer planId; private Integer planId ;
/** 星期:1周一,2周二,3周三,4周四,5周五,6周六,7周日,0特殊日期 */
@ApiModelProperty(name = "计划号",notes = "")
private String planNo;
@ApiModelProperty(name = "路口ID",notes = "")
private String crossId;
@ApiModelProperty(name = "星期:1周一,2周二,3周三,4周四,5周五,6周六,7周日,0特殊日期",notes = "") @ApiModelProperty(name = "星期:1周一,2周二,3周三,4周四,5周五,6周六,7周日,0特殊日期",notes = "")
private Integer week; private Integer week = 0 ;
/** 特殊日期 */
@ApiModelProperty(name = "特殊日期",notes = "") @ApiModelProperty(name = "特殊日期",notes = "")
private String specialDate; private Date specialDate ;
/** 创建时间 */
} @ApiModelProperty(name = "创建时间",notes = "")
private Date gmtCreate ;
/** 修改时间 */
@ApiModelProperty(name = "修改时间",notes = "")
private Date gmtModified ;
}
\ No newline at end of file
package net.wanji.databus.dao.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* 时间表信息(调度计划关系);(t_base_cross_schedules_plan)表
*
* @author Kent HAN
* @date 2022/12/28 17:45
*/
@Data
public class CrossSchedulesPlanPO {
/** ID */
@ApiModelProperty(name = "ID",notes = "")
private Integer id ;
/** 路口ID */
@ApiModelProperty(name = "路口ID",notes = "")
private String crossId ;
/** 调度ID */
@ApiModelProperty(name = "调度ID",notes = "")
private Integer schedulesId ;
/** 计划ID */
@ApiModelProperty(name = "计划ID",notes = "")
private Integer planId ;
/** 星期:1周一,2周二,3周三,4周四,5周五,6周六,7周日,0特殊日期 */
@ApiModelProperty(name = "星期:1周一,2周二,3周三,4周四,5周五,6周六,7周日,0特殊日期",notes = "")
private Integer week = 0 ;
/** 特殊日期 */
@ApiModelProperty(name = "特殊日期",notes = "")
private Date specialDate ;
/** 创建时间 */
@ApiModelProperty(name = "创建时间",notes = "")
private Date gmtCreate ;
/** 修改时间 */
@ApiModelProperty(name = "修改时间",notes = "")
private Date gmtModified ;
}
\ No newline at end of file
...@@ -28,4 +28,6 @@ public interface BaseCrossPlanMapper { ...@@ -28,4 +28,6 @@ public interface BaseCrossPlanMapper {
CrossPlanPO selectById(@Param("planId") Integer planId); CrossPlanPO selectById(@Param("planId") Integer planId);
List<CrossPlanPO> selectByCrossId(String crossId); List<CrossPlanPO> selectByCrossId(String crossId);
CrossPlanPO selectByCrossIdAndPlanNo(@Param("crossId") String crossId, @Param("planNo") String planNo);
} }
package net.wanji.databus.dao.mapper; package net.wanji.databus.dao.mapper;
import net.wanji.databus.dao.entity.BaseCrossSchedulesPO;
import net.wanji.databus.dao.entity.BaseCrossSchedulesPlanPO; import net.wanji.databus.dao.entity.BaseCrossSchedulesPlanPO;
import net.wanji.databus.dao.entity.BaseCrossSchedulesPO;
import net.wanji.databus.dao.entity.CrossSchedulesPO; import net.wanji.databus.dao.entity.CrossSchedulesPO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
......
...@@ -2,7 +2,7 @@ package net.wanji.databus.dao.mapper; ...@@ -2,7 +2,7 @@ package net.wanji.databus.dao.mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import net.wanji.databus.dao.entity.CrossSchedulesPlanPO; import net.wanji.databus.dao.entity.BaseCrossSchedulesPlanPO;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -14,16 +14,16 @@ import java.util.List; ...@@ -14,16 +14,16 @@ import java.util.List;
* @date 2023/1/28 13:16 * @date 2023/1/28 13:16
*/ */
@Repository @Repository
public interface CrossSchedulesPlanMapper { public interface BaseCrossSchedulesPlanMapper {
void deleteByCrossId(@Param("crossId") String crossId); void deleteByCrossId(@Param("crossId") String crossId);
void insertOne(CrossSchedulesPlanPO crossSchedulesPlanPO); void insertOne(BaseCrossSchedulesPlanPO baseCrossSchedulesPlanPO);
List<CrossSchedulesPlanPO> selectByCrossIdAndSchedulesId(@Param("crossId") String crossId, List<BaseCrossSchedulesPlanPO> selectByCrossIdAndSchedulesId(@Param("crossId") String crossId,
@Param("schedulesId") Integer schedulesId); @Param("schedulesId") Integer schedulesId);
CrossSchedulesPlanPO selectBySpecialDate(String crossId, Integer schedulesId, Date todayDate); BaseCrossSchedulesPlanPO selectBySpecialDate(String crossId, Integer schedulesId, Date todayDate);
CrossSchedulesPlanPO selectByWeekday(String crossId, Integer schedulesId, int weekday); BaseCrossSchedulesPlanPO selectByWeekday(String crossId, Integer schedulesId, int weekday);
} }
...@@ -70,5 +70,12 @@ ...@@ -70,5 +70,12 @@
where cross_id = #{crossId} where cross_id = #{crossId}
</select> </select>
<select id="selectByCrossIdAndPlanNo" resultType="net.wanji.databus.dao.entity.CrossPlanPO">
select
id,plan_no,name,cross_id,gmt_create,gmt_modified
from t_base_cross_plan
where cross_id = #{crossId} and plan_no = #{planNo}
</select>
</mapper> </mapper>
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="net.wanji.databus.dao.mapper.CrossSchedulesPlanMapper"> <mapper namespace="net.wanji.databus.dao.mapper.BaseCrossSchedulesPlanMapper">
<!-- 通用查询映射结果 --> <!-- 通用查询映射结果 -->
<resultMap type="net.wanji.databus.dao.entity.CrossSchedulesPlanPO" id="BaseResultMap"> <resultMap type="net.wanji.databus.dao.entity.BaseCrossSchedulesPlanPO" id="BaseResultMap">
<result property="id" column="id"/> <result property="id" column="id"/>
<result property="crossId" column="cross_id"/> <result property="crossId" column="cross_id"/>
<result property="schedulesId" column="schedules_id"/> <result property="schedulesId" column="schedules_id"/>
...@@ -28,19 +28,19 @@ ...@@ -28,19 +28,19 @@
WHERE cross_id = #{crossId} WHERE cross_id = #{crossId}
</delete> </delete>
<select id="selectByCrossIdAndSchedulesId" resultType="net.wanji.databus.dao.entity.CrossSchedulesPlanPO"> <select id="selectByCrossIdAndSchedulesId" resultType="net.wanji.databus.dao.entity.BaseCrossSchedulesPlanPO">
select <include refid="baseColumnList" /> select <include refid="baseColumnList" />
from t_base_cross_schedules_plan from t_base_cross_schedules_plan
where cross_id = #{crossId} and schedules_id = #{schedulesId} where cross_id = #{crossId} and schedules_id = #{schedulesId}
</select> </select>
<select id="selectBySpecialDate" resultType="net.wanji.databus.dao.entity.CrossSchedulesPlanPO"> <select id="selectBySpecialDate" resultType="net.wanji.databus.dao.entity.BaseCrossSchedulesPlanPO">
select <include refid="baseColumnList" /> select <include refid="baseColumnList" />
from t_base_cross_schedules_plan from t_base_cross_schedules_plan
where cross_id = #{crossId} and schedules_id = #{schedulesId} and DATE(special_date) = DATE(#{todayDate}); where cross_id = #{crossId} and schedules_id = #{schedulesId} and DATE(special_date) = DATE(#{todayDate});
</select> </select>
<select id="selectByWeekday" resultType="net.wanji.databus.dao.entity.CrossSchedulesPlanPO"> <select id="selectByWeekday" resultType="net.wanji.databus.dao.entity.BaseCrossSchedulesPlanPO">
select <include refid="baseColumnList" /> select <include refid="baseColumnList" />
from t_base_cross_schedules_plan from t_base_cross_schedules_plan
where cross_id = #{crossId} and schedules_id = #{schedulesId} and week = #{weekday}; where cross_id = #{crossId} and schedules_id = #{schedulesId} and week = #{weekday};
......
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