Commit 057f81c9 authored by duanruiming's avatar duanruiming

[update] 同步计划和调度

parent 1275ee93
......@@ -92,11 +92,19 @@ public class PlanSendController {
@AspectLog(description = "信号机方案同步", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "信号机方案同步", notes = "信号机方案同步")
@PostMapping("/syncScheme")
public JsonViewObject syncScheme(@RequestBody CrossIdDTO crossIdDTO) {
public JsonViewObject syncScheme(@RequestBody CrossIdDTO crossIdDTO) throws Exception{
JsonViewObject jsonViewObject = planSendService.syncScheme(crossIdDTO);
return jsonViewObject;
}
@AspectLog(description = "信号机调度日计划同步", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "信号机调度日计划同步", notes = "信号机调度日计划同步")
@PostMapping("/syncSchedules")
public JsonViewObject syncSchedules(@RequestBody CrossIdDTO crossIdDTO) throws Exception{
// planSendService.syncSchedules(crossIdDTO.getCrossId());
return JsonViewObject.newInstance().success("");
}
@AspectLog(description = "根据当前时间返回相位列表", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "根据当前时间返回相位列表", notes = "根据当前时间返回相位列表")
@PostMapping("/phaseListByTime")
......
......@@ -26,7 +26,7 @@ public interface PlanSendService {
JsonViewObject restore(CrossIdAndPhaseIdsDTO crossIdAndPhaseIdsDTO);
JsonViewObject syncScheme(CrossIdDTO crossIdDTO);
JsonViewObject syncScheme(CrossIdDTO crossIdDTO) throws Exception;
PhaseListByTimeVO phaseListByTime(CrossIdAndTimeDTO crossIdAndTimeDTO);
......
......@@ -2,6 +2,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.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
......@@ -22,6 +23,7 @@ import net.wanji.web.service.PlanSendService;
import net.wanji.web.service.scheme.impl.RunningPlanServiceImpl;
import net.wanji.web.service.scheme.impl.SchemeConfigServiceImpl;
import net.wanji.web.vo.PhaseListByTimeVO;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -176,7 +178,7 @@ public class PlanSendServiceImpl implements PlanSendService {
List<BaseCrossSchedulesPlanPO> crossSchedulesPlanPOList =
baseCrossSchedulesPlanMapper.selectByCrossIdAndSchedulesId(crossId, scheduleId);
Integer planId = crossSchedulesPlanPOList.get(0).getPlanId();
CrossPlanPO crossPlanPO = baseCrossPlanMapper.selectById(planId);
BaseCrossPlanPO baseCrossPlanPO = baseCrossPlanMapper.selectById(planId);
CrossSectionPO crossSectionPO = new CrossSectionPO();
crossSectionPO.setCrossId(crossId);
......@@ -208,8 +210,8 @@ public class PlanSendServiceImpl implements PlanSendService {
PlanSendVO planSendVO = new PlanSendVO();
planSendVO.setCrossCode(crossId);
PlanSendVO.Plan plan = new PlanSendVO.Plan();
plan.setPlanNo(crossPlanPO.getPlanNo());
plan.setPlanDescribe(crossPlanPO.getName());
plan.setPlanNo(baseCrossPlanPO.getPlanNo());
plan.setPlanDescribe(baseCrossPlanPO.getName());
plan.setSectionList(sectionList);
planSendVO.setPlanList(Arrays.asList(plan));
return planSendVO;
......@@ -349,146 +351,185 @@ public class PlanSendServiceImpl implements PlanSendService {
}
@Override
@Transactional
public JsonViewObject syncScheme(CrossIdDTO crossIdDTO) {
// CrossIdVO crossIdVO = new CrossIdVO();
// @Transactional
public JsonViewObject syncScheme(CrossIdDTO crossIdDTO) throws Exception {
String crossId = crossIdDTO.getCrossId();
// crossIdVO.setCrossId(crossId);
// JsonViewObject jsonViewObject = utcFeignClients.schemePhaseLights(crossIdVO);
// if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
// 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();
CrossIdVO crossIdVO = new CrossIdVO();
crossIdVO.setCrossId(crossId);
JsonViewObject jsonViewObject = utcFeignClients.schemePhaseLights(crossIdVO);
if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
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<CrossSchemePO> crossSchemeList = schemePhaseLightsVO.getCrossSchemeList();
List<BaseCrossSchemePO> baseCrossSchemeList = new ArrayList<>(crossSchemeList.size());
for (CrossSchemePO crossSchemePO : crossSchemeList) {
BaseCrossSchemePO baseCrossSchemePO = new BaseCrossSchemePO();
BeanUtils.copyProperties(crossSchemePO, baseCrossSchemePO);
baseCrossSchemeList.add(baseCrossSchemePO);
}
baseCrossSchemeMapper.deleteByCrossId(crossId);
// 保存旧方案ID
List<Integer> oldSchemeIds = baseCrossSchemeList.stream().map(BaseCrossSchemePO::getId).collect(Collectors.toList());
// 保存新方案ID
baseCrossSchemeMapper.insertBatch(baseCrossSchemeList);
List<Integer> newSchemeIds = baseCrossSchemeList.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<CrossLightsPO> crossLightsList = schemePhaseLightsVO.getCrossLightsList();
// 清理数据库
baseCrossLightsMapper.deleteByCrossId(crossId);
// 灯组号去重
List<BaseCrossLightsPO> baseCrossLightsPOS = new ArrayList<>(crossLightsList.size());
for (CrossLightsPO crossLightsPO : crossLightsList) {
BaseCrossLightsPO baseCrossLightsPO = new BaseCrossLightsPO();
BeanUtils.copyProperties(crossLightsPO, baseCrossLightsPO);
baseCrossLightsPOS.add(baseCrossLightsPO);
}
TreeSet<BaseCrossLightsPO> crossLightsSet = distinctLightsNo(baseCrossLightsPOS);
// 修改灯组数据内容
changeLightsType(crossLightsSet);
baseCrossLightsMapper.insertBatch(crossLightsSet);
baseCrossPhaseLightsMapper.deleteByCrossId(crossId);
baseCrossLaneLightsMapper.deleteByCrossId(crossId);
syncSchedules(crossId, schemePhaseLightsVO);
}
return jsonViewObject.success();
}
public void syncSchedules(String crossId) throws Exception {
public void syncSchedules(String crossId, SchemePhaseLightsVO schemePhaseLightsVO) 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) {
planSectionDTO.setPlanNo(-1); // 查询所有计划
JsonViewObject planJsonViewObject = utcFeignClients.planSection(planSectionDTO);
if (Objects.isNull(planJsonViewObject) || planJsonViewObject.getCode() != 200) {
throw new Exception("信号机静态信息获取-计划信息-UTC服务调用异常");
}
PlanSectionVO planSectionVO = mapper.convertValue(jsonViewObject1.getContent(), PlanSectionVO.class);
PlanSectionVO planSectionVO = mapper.convertValue(planJsonViewObject.getContent(), PlanSectionVO.class);
List<CrossPlanPO> crossPlanPOList = null;
if (Objects.nonNull(planSectionVO)) {
List<CrossPlanPO> crossPlanPOList = planSectionVO.getCrossPlanPOList();
for (CrossPlanPO crossPlanPO : crossPlanPOList) {
baseCrossPlanMapper.insertOne(crossPlanPO);
}
crossPlanPOList = planSectionVO.getCrossPlanPOList();
insertPlanInfo(crossId, crossPlanPOList);
List<CrossSectionPO> crossSectionPOList = planSectionVO.getCrossSectionPOList();
for (CrossSectionPO crossSectionPO : crossSectionPOList) {
String planNo = null;
for (CrossPlanPO crossPlanPO : crossPlanPOList) {
if (Objects.equals(crossPlanPO.getId(), crossSectionPO.getPlanId())) {
planNo = crossPlanPO.getPlanNo();
}
}
CrossPlanPO crossPlanPO = baseCrossPlanMapper.selectByCrossIdAndPlanNo(crossId, planNo);
crossSectionPO.setPlanId(null);
crossSectionPO.setSchemeId(null);
baseCrossSectionMapper.insertOne(crossSectionPO);
}
insertSectionInfo(crossId, schemePhaseLightsVO.getCrossSchemeList() , crossPlanPOList, crossSectionPOList);
}
// 调度信息
CrossSchedulesDTO crossSchedulesDTO = new CrossSchedulesDTO();
crossSchedulesDTO.setCrossIdList(Arrays.asList(crossId));
crossSchedulesDTO.setManufacturerCode("DT");
crossSchedulesDTO.setManufacturerCode("DT"); // 不输入海康即可,通过路口编号判断
JsonViewObject jsonViewObject = utcFeignClients.crossSchedules(crossSchedulesDTO);
if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
throw new Exception("信号机静态信息获取-调度信息-UTC服务调用异常");
}
List<CrossSchedulesPO> crossSchedulesPOList = mapper.convertValue(jsonViewObject.getContent(), new TypeReference<List<CrossSchedulesPO>>() {
});
List<CrossSchedulesPO> crossSchedulesPOList = mapper.convertValue(jsonViewObject.getContent(), new TypeReference<List<CrossSchedulesPO>>() {});
insertSchedulesInfo(crossId, crossSchedulesPOList, crossPlanPOList);
}
private void insertSchedulesInfo(String crossId, List<CrossSchedulesPO> crossSchedulesPOList, List<CrossPlanPO> crossPlanPOList) {
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<>();
TreeSet<String> schedulesSet = new TreeSet<>();
for (CrossSchedulesPO crossSchedulesPO : crossSchedulesPOList) {
Integer scheduleNo = crossSchedulesPO.getScheduleNo();
String scheduleNo = String.valueOf(crossSchedulesPO.getScheduleNo());
BaseCrossSchedulesPO baseCrossSchedulesPO = new BaseCrossSchedulesPO();
weekList.add(crossSchedulesPO.getWeek());
scpecialList.add(crossSchedulesPO.getSpecialDate());
if (Objects.equals(tempScheduleNo, scheduleNo)) {
continue;
baseCrossSchedulesPO.setScheduleNo(String.valueOf(scheduleNo));
baseCrossSchedulesPO.setCrossId(crossId);
baseCrossSchedulesPO.setStatus(0);
baseCrossSchedulesPO.setName(crossSchedulesPO.getName());
if (!schedulesSet.contains(scheduleNo)) {
baseCrossSchedulesMapper.insertOne(baseCrossSchedulesPO);
}
schedulesSet.add(scheduleNo);
Integer planId = null;
for (CrossPlanPO crossPlanPO : crossPlanPOList) {
if (Objects.equals(crossPlanPO.getId(), crossSchedulesPO.getPlanId())) {
String planNo = crossPlanPO.getPlanNo();
BaseCrossPlanPO baseCrossPlanPO = baseCrossPlanMapper.selectByCrossIdAndPlanNo(crossId, planNo);
planId = baseCrossPlanPO.getId();
}
}
BaseCrossSchedulesPO baseCrossSchedulesPO14DB = baseCrossSchedulesMapper.selectByCrossIdAndScheduleNo(crossId, scheduleNo);
BaseCrossSchedulesPlanPO baseCrossSchedulesPlanPO = new BaseCrossSchedulesPlanPO();
baseCrossSchedulesPlanPO.setCrossId(crossId);
baseCrossSchedulesPlanPO.setSchedulesId(baseCrossSchedulesPO14DB.getId());
baseCrossSchedulesPlanPO.setPlanId(planId);
baseCrossSchedulesPlanPO.setWeek(crossSchedulesPO.getWeek());
if (Objects.nonNull(crossSchedulesPO.getSpecialDate())) {
baseCrossSchedulesPlanPO.setSpecialDate(crossSchedulesPO.getSpecialDate());
} else {
tempScheduleNo = scheduleNo;
baseCrossSchedulesPO.setScheduleNo(String.valueOf(scheduleNo));
baseCrossSchedulesPO.setCrossId(crossId);
baseCrossSchedulesPO.setStatus(0);
baseCrossSchedulesPO.setName(crossSchedulesPO.getName());
baseCrossSchedulesPlanPO.setSpecialDate(new Date());
}
baseCrossSchedulesMapper.insertOne(baseCrossSchedulesPO);
weekMap.put(scheduleNo, weekList);
specialMap.put(scheduleNo, scpecialList);
baseCrossSchedulesPlanMapper.insertOne(baseCrossSchedulesPlanPO);
}
List<BaseCrossSchedulesPO> baseCrossSchedulesPOS = baseCrossSchedulesMapper.selectByCrossId(crossId);
List<CrossPlanPO> crossPlanPOS = baseCrossPlanMapper.selectByCrossId(crossId);
}
private void insertSectionInfo(String crossId, List<CrossSchemePO> crossSchemeList, List<CrossPlanPO> crossPlanPOList, List<CrossSectionPO> crossSectionPOList) {
baseCrossSectionMapper.deleteByCrossId(crossId);
for (CrossSectionPO crossSectionPO : crossSectionPOList) {
String planNo = null;
for (CrossPlanPO crossPlanPO : crossPlanPOList) {
if (Objects.equals(crossPlanPO.getId(), crossSectionPO.getPlanId())) {
planNo = crossPlanPO.getPlanNo();
Integer schemeId = crossSectionPO.getSchemeId();
String schemeNo = null;
for (CrossSchemePO baseCrossSchemePO : crossSchemeList) {
if (Objects.equals(schemeId, baseCrossSchemePO.getId())) {
schemeNo = baseCrossSchemePO.getSchemeNo();
}
}
BaseCrossPlanPO crossPlanPO4DB = baseCrossPlanMapper.selectByCrossIdAndPlanNo(crossId, planNo);
crossSectionPO.setPlanId(crossPlanPO4DB.getId());
Integer schemeId4DB = baseCrossSchemeMapper.selectIdByCrossIdAndSchemeNo(crossId, schemeNo);
crossSectionPO.setSchemeId(schemeId4DB);
baseCrossSectionMapper.insertOne(crossSectionPO);
}
}
}
}
private void insertPlanInfo(String crossId, List<CrossPlanPO> crossPlanPOList) {
baseCrossPlanMapper.deleteByCrossId(crossId);
for (CrossPlanPO crossPlanPO : crossPlanPOList) {
BaseCrossPlanPO baseCrossPlanPO = new BaseCrossPlanPO();
BeanUtils.copyProperties(crossPlanPO, baseCrossPlanPO);
baseCrossPlanMapper.insertOne(baseCrossPlanPO);
}
}
private TreeSet<BaseCrossLightsPO> distinctLightsNo(List<BaseCrossLightsPO> crossLightsList) {
......@@ -748,7 +789,7 @@ public class PlanSendServiceImpl implements PlanSendService {
}
private String getPlanNo(Integer planId) {
CrossPlanPO crossPlanPO = baseCrossPlanMapper.selectById(planId);
BaseCrossPlanPO crossPlanPO = baseCrossPlanMapper.selectById(planId);
return crossPlanPO.getPlanNo();
}
}
......@@ -2,17 +2,9 @@ package net.wanji.web.service.scheme.impl;
import cn.hutool.core.collection.CollectionUtil;
import net.wanji.common.dto.CrossIdDTO;
import net.wanji.databus.dao.entity.BaseCrossSchedulesPO;
import net.wanji.databus.dao.entity.CrossPlanPO;
import net.wanji.databus.dao.entity.BaseCrossSchemePO;
import net.wanji.databus.dao.entity.CrossSectionPO;
import net.wanji.databus.dao.mapper.BaseCrossPlanMapper;
import net.wanji.databus.dao.mapper.BaseCrossSchedulesMapper;
import net.wanji.databus.dao.mapper.BaseCrossSchemeMapper;
import net.wanji.databus.dao.mapper.BaseCrossSectionMapper;
import net.wanji.databus.dao.entity.*;
import net.wanji.databus.dao.mapper.*;
import net.wanji.databus.dto.RunningPlanDTO;
import net.wanji.databus.dao.mapper.BaseCrossSchedulesPlanMapper;
import net.wanji.databus.dao.entity.BaseCrossSchedulesPlanPO;
import net.wanji.web.service.scheme.RunningPlanService;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service;
......@@ -127,9 +119,9 @@ public class RunningPlanServiceImpl implements RunningPlanService {
}
execListElement.setWeek(week);
execListElement.setSpecialDateList(specialDateList);
CrossPlanPO crossPlanPO = baseCrossPlanMapper.selectById(planId);
execListElement.setPlanName(crossPlanPO.getName());
execListElement.setPlanId(crossPlanPO.getId());
BaseCrossPlanPO baseCrossPlanPO = baseCrossPlanMapper.selectById(planId);
execListElement.setPlanName(baseCrossPlanPO.getName());
execListElement.setPlanId(baseCrossPlanPO.getId());
execList.add(execListElement);
}
return execList;
......@@ -139,12 +131,12 @@ public class RunningPlanServiceImpl implements RunningPlanService {
List<RunningPlanDTO.DailyPlanListElement> dailyPlanList = new ArrayList<>();
dailyPlanList = baseCrossPlanMapper.selectDailyPlanList(crossId);
if (CollectionUtil.isEmpty(dailyPlanList)) {
List<CrossPlanPO> crossPlanPOList = baseCrossPlanMapper.selectByCrossId(crossId);
List<BaseCrossPlanPO> crossPlanPOList = baseCrossPlanMapper.selectByCrossId(crossId);
if (CollectionUtil.isNotEmpty(crossPlanPOList)) {
for (CrossPlanPO crossPlanPO : crossPlanPOList) {
for (BaseCrossPlanPO baseCrossPlanPO : crossPlanPOList) {
RunningPlanDTO.DailyPlanListElement dailyPlan = new RunningPlanDTO.DailyPlanListElement();
dailyPlan.setPlanNo(crossPlanPO.getPlanNo());
dailyPlan.setName(crossPlanPO.getName());
dailyPlan.setPlanNo(baseCrossPlanPO.getPlanNo());
dailyPlan.setName(baseCrossPlanPO.getName());
dailyPlan.setTimeList(new ArrayList<>());
dailyPlanList.add(dailyPlan);
}
......@@ -181,9 +173,9 @@ public class RunningPlanServiceImpl implements RunningPlanService {
for (RunningPlanDTO.ExecListElement execListElement : execList) {
// 根据路口ID和计划名获取计划ID
String planName = execListElement.getPlanName();
CrossPlanPO crossPlanPO = baseCrossPlanMapper.selectByCrossIdAndName(crossId, planName);
if (crossPlanPO != null) {
Integer planId = crossPlanPO.getId();
BaseCrossPlanPO baseCrossPlanPO = baseCrossPlanMapper.selectByCrossIdAndName(crossId, planName);
if (baseCrossPlanPO != null) {
Integer planId = baseCrossPlanPO.getId();
// 更新调度计划关系表
updateCrossSchedulesPlan(crossId, execListElement, crossSchedulesId, planId);
}
......@@ -226,18 +218,18 @@ public class RunningPlanServiceImpl implements RunningPlanService {
List<RunningPlanDTO.DailyPlanListElement> dailyPlanList = runningPlanDTO.getDailyPlanList();
for (RunningPlanDTO.DailyPlanListElement dailyPlan : dailyPlanList) {
// 更新计划表获取计划ID
CrossPlanPO crossPlanPO = new CrossPlanPO();
BaseCrossPlanPO baseCrossPlanPO = new BaseCrossPlanPO();
String planNo = dailyPlan.getPlanNo();
try {
Integer.parseInt(planNo);
} catch (Exception e) {
throw new RuntimeException("计划编号必须为数字");
}
crossPlanPO.setPlanNo(planNo);
crossPlanPO.setName(dailyPlan.getName());
crossPlanPO.setCrossId(crossId);
baseCrossPlanMapper.insertOne(crossPlanPO);
Integer crossPlanId = crossPlanPO.getId();
baseCrossPlanPO.setPlanNo(planNo);
baseCrossPlanPO.setName(dailyPlan.getName());
baseCrossPlanPO.setCrossId(crossId);
baseCrossPlanMapper.insertOne(baseCrossPlanPO);
Integer crossPlanId = baseCrossPlanPO.getId();
List<RunningPlanDTO.TimeListElement> timeList = dailyPlan.getTimeList();
for (RunningPlanDTO.TimeListElement time : timeList) {
// 根据路口ID和方案名获取方案ID
......
......@@ -61,18 +61,18 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy
private void schemeSendDataInsert(SchemeSendVO schemeSendVO) {
// 入库操作
List<BaseCrossSchemePO> baseCrossSchemePOList = new ArrayList<>();
List<CrossSchemePO> crossSchemePOList = new ArrayList<>();
schemeSendVO.getPatternList().forEach(pattern -> {
BaseCrossSchemePO baseCrossSchemePO = new BaseCrossSchemePO();
baseCrossSchemePO.setSchemeNo(pattern.getPatternNo());
baseCrossSchemePO.setName(pattern.getPatternName());
baseCrossSchemePO.setCrossId(schemeSendVO.getCrossCode());
baseCrossSchemePO.setCycle(Integer.parseInt(pattern.getCycle()));
baseCrossSchemePO.setCoordPhase(Integer.parseInt(pattern.getCoordPhase()));
baseCrossSchemePO.setOffset(Integer.parseInt(pattern.getOffset()));
baseCrossSchemePO.setSource(2);
baseCrossSchemePO.setIsDeleted(0);
baseCrossSchemePOList.add(baseCrossSchemePO);
CrossSchemePO crossSchemePO = new CrossSchemePO();
crossSchemePO.setSchemeNo(pattern.getPatternNo());
crossSchemePO.setName(pattern.getPatternName());
crossSchemePO.setCrossId(schemeSendVO.getCrossCode());
crossSchemePO.setCycle(Integer.parseInt(pattern.getCycle()));
crossSchemePO.setCoordPhase(Integer.parseInt(pattern.getCoordPhase()));
crossSchemePO.setOffset(Integer.parseInt(pattern.getOffset()));
crossSchemePO.setSource(2);
crossSchemePO.setIsDeleted(0);
crossSchemePOList.add(crossSchemePO);
pattern.getRings().forEach(ring -> {
List<CrossPhasePO> crossPhasePOList = new ArrayList<>();
......@@ -101,7 +101,7 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy
});
// 入库信号方案表
crossSchemeMapper.insertBatch(baseCrossSchemePOList);
crossSchemeMapper.insertBatch(crossSchemePOList);
}
@Override
......
......@@ -7,10 +7,7 @@ import com.hikvision.artemis.sdk.ArtemisHttpUtil;
import com.hikvision.artemis.sdk.config.ArtemisConfig;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.wanji.databus.dao.entity.BaseCrossSchemePO;
import net.wanji.databus.dao.entity.CrossLightsPO;
import net.wanji.databus.dao.entity.CrossPhaseLightsPO;
import net.wanji.databus.dao.entity.CrossPhasePO;
import net.wanji.databus.dao.entity.*;
import net.wanji.databus.dao.mapper.*;
import net.wanji.databus.po.CrossInfoPO;
import net.wanji.databus.po.ManufacturerInfoPO;
......@@ -110,7 +107,7 @@ public class HkLightsStatusServiceImpl implements HkLightsStatusService {
for (RealTimeStateInfoPO resultPO : realTimeStateInfoListPO.getList()) {
infoVo = new LightsStatusVO();
Integer patternNo = resultPO.getPatternNo();
BaseCrossSchemePO baseCrossSchemePO = crossSchemeMapper.selectByCrossIdAndSchemeNo(crossId, patternNo);
CrossSchemePO baseCrossSchemePO = crossSchemeMapper.selectByCrossIdAndSchemeNo(crossId, patternNo);
List<RingsPO> rings = resultPO.getRings(); // 环列表
List<ChannelStatePO> channelState = resultPO.getChannelState();// 灯组列表
String HKControlType = resultPO.getControlType();
......@@ -187,9 +184,9 @@ public class HkLightsStatusServiceImpl implements HkLightsStatusService {
return result;
}
private void setDirTurnRedCountDown(String crossId, List<CrossLightsPO> crossLightsPOList, BaseCrossSchemePO baseCrossSchemePO, Map<String, Object> phaseMap, Integer phaseNo, Integer countdown) {
if (Objects.nonNull(baseCrossSchemePO)) {
Integer phaseId = crossPhaseMapper.selectPhaseId(crossId, baseCrossSchemePO.getId(), phaseNo);
private void setDirTurnRedCountDown(String crossId, List<CrossLightsPO> crossLightsPOList, CrossSchemePO crossSchemePO, Map<String, Object> phaseMap, Integer phaseNo, Integer countdown) {
if (Objects.nonNull(crossSchemePO)) {
Integer phaseId = crossPhaseMapper.selectPhaseId(crossId, crossSchemePO.getId(), phaseNo);
List<CrossPhaseLightsPO> crossPhaseLightsPOList = crossPhaseLightsMapper.selectByCrossId(crossId);
for (CrossPhaseLightsPO crossPhaseLightsPO : crossPhaseLightsPOList) {
if (Objects.equals(phaseId, crossPhaseLightsPO.getPhaseId())) {
......
......@@ -6,7 +6,7 @@ import com.hikvision.artemis.sdk.ArtemisHttpUtil;
import com.hikvision.artemis.sdk.config.ArtemisConfig;
import lombok.RequiredArgsConstructor;
import net.wanji.databus.dao.entity.CrossPlanPO;
import net.wanji.databus.dao.entity.BaseCrossSchemePO;
import net.wanji.databus.dao.entity.CrossSchemePO;
import net.wanji.databus.dao.entity.CrossSectionPO;
import net.wanji.databus.dao.mapper.CrossPlanMapper;
import net.wanji.databus.dao.mapper.CrossSchemeMapper;
......@@ -109,7 +109,7 @@ public class HkPlanSectionServiceImpl implements HkPlanSectionService {
crossSectionPO.setControlMode(controlType);
// 获取方案ID
Integer schemeNo = sectionPO.getPatternNo();
BaseCrossSchemePO baseCrossSchemePO = crossSchemeMapper.selectByCrossIdAndSchemeNo(crossId, schemeNo);
CrossSchemePO baseCrossSchemePO = crossSchemeMapper.selectByCrossIdAndSchemeNo(crossId, schemeNo);
if (Objects.nonNull(baseCrossSchemePO)) {
Integer schemePOId = baseCrossSchemePO.getId();
crossSectionPO.setSchemeId(schemePOId);
......
......@@ -6,10 +6,7 @@ import com.alibaba.fastjson.JSONObject;
import com.hikvision.artemis.sdk.ArtemisHttpUtil;
import com.hikvision.artemis.sdk.config.ArtemisConfig;
import lombok.RequiredArgsConstructor;
import net.wanji.databus.dao.entity.CrossLightsPO;
import net.wanji.databus.dao.entity.CrossPhaseLightsPO;
import net.wanji.databus.dao.entity.CrossPhasePO;
import net.wanji.databus.dao.entity.BaseCrossSchemePO;
import net.wanji.databus.dao.entity.*;
import net.wanji.databus.dao.mapper.CrossLightsMapper;
import net.wanji.databus.dao.mapper.CrossPhaseLightsMapper;
import net.wanji.databus.dao.mapper.CrossPhaseMapper;
......@@ -204,18 +201,18 @@ public class HkSchemePhaseLightsServiceImpl implements HkSchemePhaseLightsServic
Integer coordPhase = scheme.getInteger("coordPhase");
Integer offset = scheme.getInteger("offset");
// 构造数据库记录
BaseCrossSchemePO baseCrossSchemePO = new BaseCrossSchemePO();
baseCrossSchemePO.setSchemeNo(patternNo.toString());
baseCrossSchemePO.setName(patternName);
baseCrossSchemePO.setCrossId(crossId);
baseCrossSchemePO.setCycle(cycle);
baseCrossSchemePO.setCoordPhase(coordPhase);
baseCrossSchemePO.setOffset(offset);
baseCrossSchemePO.setSource(2);
baseCrossSchemePO.setIsDeleted(0);
CrossSchemePO crossSchemePO = new CrossSchemePO();
crossSchemePO.setSchemeNo(patternNo.toString());
crossSchemePO.setName(patternName);
crossSchemePO.setCrossId(crossId);
crossSchemePO.setCycle(cycle);
crossSchemePO.setCoordPhase(coordPhase);
crossSchemePO.setOffset(offset);
crossSchemePO.setSource(2);
crossSchemePO.setIsDeleted(0);
// 插入方案数据返回自增ID
crossSchemeMapper.insertOne(baseCrossSchemePO);
Integer schemePOId = baseCrossSchemePO.getId();
crossSchemeMapper.insertOne(crossSchemePO);
Integer schemePOId = crossSchemePO.getId();
// 生成相位数据
JSONArray phases = scheme.getJSONArray("phaseInfos");
for (int j = 0; j < phases.size(); j++) {
......
......@@ -144,14 +144,14 @@ public class StaticInfoServiceImpl implements StaticInfoService {
@Override
public net.wanji.databus.vo.SchemePhaseLightsVO buildSchemePhaseLightsResponse(SchemePhaseLightsDTO schemePhaseLightsDTO) {
String crossId = schemePhaseLightsDTO.getCrossId();
List<BaseCrossSchemePO> baseCrossSchemePOList = crossSchemeMapper.selectByCrossId(crossId);
List<CrossSchemePO> CrossSchemePOList = crossSchemeMapper.selectByCrossId(crossId);
List<CrossPhasePO> crossPhasePOList = crossPhaseMapper.selectByCrossId(crossId);
List<CrossLightsPO> crossLightsPOList = crossLightsMapper.selectByCrossId(crossId);
List<CrossPhaseLightsPO> crossPhaseLightsPOList = crossPhaseLightsMapper.selectByCrossId(crossId);
net.wanji.databus.vo.SchemePhaseLightsVO schemePhaseLightsVO = new net.wanji.databus.vo.SchemePhaseLightsVO();
schemePhaseLightsVO.setCrossSchemeList(baseCrossSchemePOList);
schemePhaseLightsVO.setCrossSchemeList(CrossSchemePOList);
schemePhaseLightsVO.setCrossPhaseList(crossPhasePOList);
schemePhaseLightsVO.setCrossLightsList(crossLightsPOList);
schemePhaseLightsVO.setCrossPhaseLightsPOList(crossPhaseLightsPOList);
......
......@@ -57,7 +57,7 @@ public class WanJiCommonStaticInfoServiceImpl implements WanJiCommonStaticInfoSe
}
ObjectMapper objectMapper = new ObjectMapper();
SchemePhaseLightsVO content = objectMapper.convertValue(jsonViewObject.getContent(), SchemePhaseLightsVO.class);
List<BaseCrossSchemePO> crossSchemeList = content.getCrossSchemeList();
List<CrossSchemePO> crossSchemeList = content.getCrossSchemeList();
crossSchemeList.forEach(crossSchemePO -> {
crossSchemeMapper.deleteOne(crossId, crossSchemePO.getSchemeNo());
crossSchemeMapper.insertOne(crossSchemePO);
......@@ -65,12 +65,12 @@ public class WanJiCommonStaticInfoServiceImpl implements WanJiCommonStaticInfoSe
List<CrossPhasePO> crossPhaseList = content.getCrossPhaseList();
crossPhaseMapper.deleteBatch(crossId, null);
crossPhaseList.forEach(crossPhasePO -> {
BaseCrossSchemePO baseCrossSchemePO = crossSchemeMapper.selectByCrossIdAndSchemeNo(crossId, crossPhasePO.getPlanId());
CrossSchemePO crossSchemePO = crossSchemeMapper.selectByCrossIdAndSchemeNo(crossId, crossPhasePO.getPlanId());
Integer id;
if (Objects.isNull(baseCrossSchemePO)) {
if (Objects.isNull(crossSchemePO)) {
id = -1;
} else {
id = baseCrossSchemePO.getId();
id = crossSchemePO.getId();
}
crossPhasePO.setPlanId(id);
crossPhaseMapper.insertOne(crossPhasePO);
......@@ -129,7 +129,7 @@ public class WanJiCommonStaticInfoServiceImpl implements WanJiCommonStaticInfoSe
crossSectionMapper.deleteOne(crossId, Integer.parseInt(crossSectionPO.getSectionNo()), null);
Integer id = crossPlanMapper.selectIdByNo(crossSectionPO.getCrossId(), crossSectionPO.getPlanId());
crossSectionPO.setPlanId(id);
BaseCrossSchemePO baseCrossSchemePO = crossSchemeMapper.selectByCrossIdAndSchemeNo(crossId, crossSectionPO.getSchemeId());
CrossSchemePO baseCrossSchemePO = crossSchemeMapper.selectByCrossIdAndSchemeNo(crossId, crossSectionPO.getSchemeId());
crossSectionPO.setSchemeId(baseCrossSchemePO.getId());
crossSectionMapper.insertOne(crossSectionPO);
});
......
package net.wanji.databus.dao.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author Kent HAN
* @date 2022/11/18 15:52
*/
@Data
public class BaseCrossPlanPO {
/** 计划ID */
@ApiModelProperty(value = "计划ID",notes = "")
private Integer id ;
/** 计划号 */
@ApiModelProperty(value = "计划号",notes = "")
private String planNo ;
/** 计划名称 */
@ApiModelProperty(value = "计划名称",notes = "")
private String name ;
/** 路口ID */
@ApiModelProperty(value = "路口ID",notes = "")
private String crossId ;
/** 创建时间 */
@ApiModelProperty(value = "创建时间",notes = "")
private Date gmtCreate ;
/** 修改时间 */
@ApiModelProperty(value = "修改时间",notes = "")
private Date gmtModified ;
}
package net.wanji.databus.dao.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author Kent HAN
* @date 2023/1/3 9:40
*/
@Data
public class CrossSchemePO {
/** 方案ID */
@ApiModelProperty(name = "方案ID",notes = "")
private Integer id ;
/** 方案号 */
@ApiModelProperty(name = "方案号",notes = "")
private String schemeNo ;
/** 方案名称 */
@ApiModelProperty(name = "方案名称",notes = "")
private String name ;
/** 路口ID */
@ApiModelProperty(name = "路口ID",notes = "")
private String crossId ;
/** 周期 */
@ApiModelProperty(name = "周期",notes = "")
private Integer cycle = 0;
/** 协调相位ID */
@ApiModelProperty(name = "协调相位ID",notes = "")
private Integer coordPhase = 0 ;
/** 相位差 */
@ApiModelProperty(name = "相位差",notes = "")
private Integer offset = 0;
/** 数据来源:1信号机;2平台 */
@ApiModelProperty(name = "数据来源:1信号机;2平台",notes = "")
private Integer source ;
/** 删除标识:1删除;0未删除 */
@ApiModelProperty(name = "删除标识:1删除;0未删除",notes = "")
private Integer isDeleted ;
@ApiModelProperty(name = "状态:1执行;0未执行",notes = "")
private Integer status = 0 ;
/** 创建时间 */
@ApiModelProperty(name = "创建时间",notes = "")
private Date gmtCreate ;
/** 修改时间 */
@ApiModelProperty(name = "修改时间",notes = "")
private Date gmtModified ;
}
package net.wanji.databus.dao.mapper;
import net.wanji.databus.dao.entity.CrossPlanPO;
import net.wanji.databus.dao.entity.BaseCrossPlanPO;
import net.wanji.databus.dto.RunningPlanDTO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
......@@ -16,18 +16,18 @@ import java.util.List;
@Repository
public interface BaseCrossPlanMapper {
void insertOne(CrossPlanPO crossPlanPO);
void insertOne(BaseCrossPlanPO BaseCrossPlanPO);
void deleteByCrossId(@Param("crossId") String crossId);
CrossPlanPO selectByCrossIdAndName(@Param("crossId") String crossId,
BaseCrossPlanPO selectByCrossIdAndName(@Param("crossId") String crossId,
@Param("planName") String planName);
List<RunningPlanDTO.DailyPlanListElement> selectDailyPlanList(String crossId);
CrossPlanPO selectById(@Param("planId") Integer planId);
BaseCrossPlanPO selectById(@Param("planId") Integer planId);
List<CrossPlanPO> selectByCrossId(String crossId);
List<BaseCrossPlanPO> selectByCrossId(String crossId);
CrossPlanPO selectByCrossIdAndPlanNo(@Param("crossId") String crossId, @Param("planNo") String planNo);
BaseCrossPlanPO selectByCrossIdAndPlanNo(@Param("crossId") String crossId, @Param("planNo") String planNo);
}
package net.wanji.databus.dao.mapper;
import net.wanji.databus.dao.entity.BaseCrossSchemePO;
import net.wanji.databus.dao.entity.CrossSchemePO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
......@@ -10,16 +10,16 @@ import java.util.List;
* @date 2022/11/16 17:28
*/
public interface CrossSchemeMapper {
void insertBatch(@Param("entities") List<BaseCrossSchemePO> baseCrossSchemePOList);
void insertBatch(@Param("entities") List<CrossSchemePO> CrossSchemePOList);
void insertOne(BaseCrossSchemePO baseCrossSchemePO);
void insertOne(CrossSchemePO CrossSchemePO);
void deleteOne(@Param("crossId") String crossId, @Param("patternNo") String patternNo);
BaseCrossSchemePO selectByCrossIdAndSchemeNo(@Param("crossId") String crossId,
CrossSchemePO selectByCrossIdAndSchemeNo(@Param("crossId") String crossId,
@Param("schemeNo") Integer schemeNo);
List<BaseCrossSchemePO> selectByCrossId(@Param("crossId") String crossId);
List<CrossSchemePO> selectByCrossId(@Param("crossId") String crossId);
void deleteByCrossId(String crossId);
}
......@@ -4,7 +4,7 @@ import lombok.Data;
import net.wanji.databus.dao.entity.CrossLightsPO;
import net.wanji.databus.dao.entity.CrossPhaseLightsPO;
import net.wanji.databus.dao.entity.CrossPhasePO;
import net.wanji.databus.dao.entity.BaseCrossSchemePO;
import net.wanji.databus.dao.entity.CrossSchemePO;
import java.util.List;
......@@ -14,7 +14,7 @@ import java.util.List;
*/
@Data
public class SchemePhaseLightsVO {
private List<BaseCrossSchemePO> crossSchemeList;
private List<CrossSchemePO> crossSchemeList;
private List<CrossPhasePO> crossPhaseList;
private List<CrossLightsPO> crossLightsList;
private List<CrossPhaseLightsPO> crossPhaseLightsPOList;
......
......@@ -3,7 +3,7 @@
<mapper namespace="net.wanji.databus.dao.mapper.BaseCrossPlanMapper">
<!-- 通用查询映射结果 -->
<resultMap type="net.wanji.databus.dao.entity.CrossPlanPO" id="BaseResultMap">
<resultMap type="net.wanji.databus.dao.entity.BaseCrossPlanPO" id="BaseResultMap">
<result property="id" column="id"/>
<result property="planNo" column="plan_no"/>
<result property="name" column="name"/>
......@@ -56,21 +56,21 @@
WHERE t1.cross_id = #{crossId}
</select>
<select id="selectById" resultType="net.wanji.databus.dao.entity.CrossPlanPO">
<select id="selectById" resultType="net.wanji.databus.dao.entity.BaseCrossPlanPO">
select
id,plan_no,name,cross_id,gmt_create,gmt_modified
from t_base_cross_plan
where id = #{planId}
</select>
<select id="selectByCrossId" resultType="net.wanji.databus.dao.entity.CrossPlanPO">
<select id="selectByCrossId" resultType="net.wanji.databus.dao.entity.BaseCrossPlanPO">
select
id,plan_no,name,cross_id,gmt_create,gmt_modified
from t_base_cross_plan
where cross_id = #{crossId}
</select>
<select id="selectByCrossIdAndPlanNo" resultType="net.wanji.databus.dao.entity.CrossPlanPO">
<select id="selectByCrossIdAndPlanNo" resultType="net.wanji.databus.dao.entity.BaseCrossPlanPO">
select
id,plan_no,name,cross_id,gmt_create,gmt_modified
from t_base_cross_plan
......
<?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">
<mapper namespace="net.wanji.databus.dao.mapper.CrossSchemeMapper">
<resultMap type="net.wanji.databus.dao.entity.BaseCrossSchemePO" id="BaseResultMap">
<resultMap type="net.wanji.databus.dao.entity.CrossSchemePO" id="BaseResultMap">
<result property="id" column="id"/>
<result property="schemeNo" column="scheme_no"/>
<result property="name" column="name"/>
......
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