Commit b7ed83de authored by duanruiming's avatar duanruiming

[update] 下发相位参数

parent cf16f7a1
...@@ -12,6 +12,7 @@ import net.wanji.feign.service.UtcFeignClients; ...@@ -12,6 +12,7 @@ import net.wanji.feign.service.UtcFeignClients;
import net.wanji.web.dto.*; import net.wanji.web.dto.*;
import net.wanji.web.mapper.scheme.*; import net.wanji.web.mapper.scheme.*;
import net.wanji.web.po.scheme.*; import net.wanji.web.po.scheme.*;
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;
...@@ -33,6 +34,7 @@ import java.util.stream.Collectors; ...@@ -33,6 +34,7 @@ import java.util.stream.Collectors;
@Service @Service
public class PlanSendServiceImpl implements PlanSendService { public class PlanSendServiceImpl implements PlanSendService {
private final UtcFeignClients utcFeignClients; private final UtcFeignClients utcFeignClients;
private final FeignProxyService feignProxyService;
private final CrossSchedulesPlanMapper crossSchedulesPlanMapper; private final CrossSchedulesPlanMapper crossSchedulesPlanMapper;
private final CrossPlanMapper crossPlanMapper; private final CrossPlanMapper crossPlanMapper;
private final CrossSchemeMapper crossSchemeMapper; private final CrossSchemeMapper crossSchemeMapper;
...@@ -50,7 +52,13 @@ public class PlanSendServiceImpl implements PlanSendService { ...@@ -50,7 +52,13 @@ 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, CrossSchedulesPlanMapper crossSchedulesPlanMapper, CrossPlanMapper crossPlanMapper, CrossSchemeMapper crossSchemeMapper, CrossPhaseMapper crossPhaseMapper, CrossLightsMapper crossLightsMapper, CrossPhaseLightsMapper crossPhaseLightsMapper, RunningPlanServiceImpl runningPlanServiceImpl, SchemeConfigServiceImpl schemeConfigServiceImpl, CrossSchedulesMapper crossSchedulesMapper, CrossLaneLightsMapper crossLaneLightsMapper, CrossSectionMapper crossSectionMapper) { public PlanSendServiceImpl(@Qualifier("net.wanji.feign.service.UtcFeignClients") UtcFeignClients utcFeignClients,
CrossSchedulesPlanMapper crossSchedulesPlanMapper, CrossPlanMapper crossPlanMapper,
CrossSchemeMapper crossSchemeMapper, CrossPhaseMapper crossPhaseMapper,
CrossLightsMapper crossLightsMapper, CrossPhaseLightsMapper crossPhaseLightsMapper,
RunningPlanServiceImpl runningPlanServiceImpl, SchemeConfigServiceImpl schemeConfigServiceImpl,
CrossSchedulesMapper crossSchedulesMapper, CrossLaneLightsMapper crossLaneLightsMapper,
CrossSectionMapper crossSectionMapper, FeignProxyService feignProxyService) {
this.utcFeignClients = utcFeignClients; this.utcFeignClients = utcFeignClients;
this.crossSchedulesPlanMapper = crossSchedulesPlanMapper; this.crossSchedulesPlanMapper = crossSchedulesPlanMapper;
this.crossPlanMapper = crossPlanMapper; this.crossPlanMapper = crossPlanMapper;
...@@ -63,10 +71,28 @@ public class PlanSendServiceImpl implements PlanSendService { ...@@ -63,10 +71,28 @@ public class PlanSendServiceImpl implements PlanSendService {
this.crossSchedulesMapper = crossSchedulesMapper; this.crossSchedulesMapper = crossSchedulesMapper;
this.crossLaneLightsMapper = crossLaneLightsMapper; this.crossLaneLightsMapper = crossLaneLightsMapper;
this.crossSectionMapper = crossSectionMapper; this.crossSectionMapper = crossSectionMapper;
this.feignProxyService = feignProxyService;
} }
public JsonViewObject PhaseLaneSend(String crossId, String schemeId) { /**
JsonViewObject jsonViewObject = JsonViewObject.newInstance(); * 相位车道参数下发
*
* @param crossId
* @return
*/
public JsonViewObject phaseLaneSend(String crossId) {
PhaseTimingSendVO phaseTimingSendVO = buiPhaseTimingSendVO(crossId);
JsonViewObject jsonViewObject = feignProxyService.phaseTimingSend(phaseTimingSendVO);
return jsonViewObject;
}
/**
* 构建下发相位参数
*
* @param crossId
* @return
*/
private PhaseTimingSendVO buiPhaseTimingSendVO(String crossId) {
PhaseTimingSendVO phaseTimingSendVO = new PhaseTimingSendVO(); PhaseTimingSendVO phaseTimingSendVO = new PhaseTimingSendVO();
phaseTimingSendVO.setCrossCode(crossId); phaseTimingSendVO.setCrossCode(crossId);
List<PhaseTimingSendVO.Phase> phaseList = new ArrayList<>(); List<PhaseTimingSendVO.Phase> phaseList = new ArrayList<>();
...@@ -97,9 +123,9 @@ public class PlanSendServiceImpl implements PlanSendService { ...@@ -97,9 +123,9 @@ public class PlanSendServiceImpl implements PlanSendService {
for (CrossLightsPO lightsPO : crossLightsPOS) { for (CrossLightsPO lightsPO : crossLightsPOS) {
if (Objects.equals(lightsId, lightsPO.getId())) { if (Objects.equals(lightsId, lightsPO.getId())) {
PhaseTimingSendVO.Phase.Lane lane = new PhaseTimingSendVO.Phase.Lane(); PhaseTimingSendVO.Phase.Lane lane = new PhaseTimingSendVO.Phase.Lane();
lane.setLaneNo(Integer.valueOf(lightsPO.getLightsNo())); // lane.setLaneNo(Integer.valueOf(lightsPO.getLightsNo()));
lane.setDirection(lightsPO.getDir()); lane.setDirection(lightsPO.getDir());
lane.setTurn(lightsPO.getTurn()); lane.setTurn(lightsPO.getType());
lanes.add(lane); lanes.add(lane);
} }
} }
...@@ -108,13 +134,9 @@ public class PlanSendServiceImpl implements PlanSendService { ...@@ -108,13 +134,9 @@ public class PlanSendServiceImpl implements PlanSendService {
phase.setLanes(lanes); phase.setLanes(lanes);
phaseList.add(phase); phaseList.add(phase);
} }
phaseTimingSendVO.setPhaseList(phaseList); phaseTimingSendVO.setPhaseList(phaseList);
JsonViewObject phaseTimingSendResult = utcFeignClients.phaseTimingSend(phaseTimingSendVO);
if (Objects.isNull(phaseTimingSendResult) || phaseTimingSendResult.getCode() != 200) { return phaseTimingSendVO;
return jsonViewObject.fail("信号机方案下发-相位参数下发UTC服务调用异常");
}
return jsonViewObject.success(phaseTimingSendResult);
} }
@Override @Override
...@@ -138,8 +160,8 @@ public class PlanSendServiceImpl implements PlanSendService { ...@@ -138,8 +160,8 @@ public class PlanSendServiceImpl implements PlanSendService {
if (Objects.isNull(planSendResult) || planSendResult.getCode() != 200) { if (Objects.isNull(planSendResult) || planSendResult.getCode() != 200) {
return jsonViewObject.fail("信号机方案下发-日计划下发UTC服务调用异常"); return jsonViewObject.fail("信号机方案下发-日计划下发UTC服务调用异常");
} }
// 下发相位 // 下发车道相位
phaseLaneSend(crossId);
// 更新时间表状态为已执行 // 更新时间表状态为已执行
crossSchedulesMapper.resetStatus(crossId); crossSchedulesMapper.resetStatus(crossId);
...@@ -201,6 +223,8 @@ public class PlanSendServiceImpl implements PlanSendService { ...@@ -201,6 +223,8 @@ public class PlanSendServiceImpl implements PlanSendService {
if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) { if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
return jsonViewObject.fail("信号机方案下发-基础方案下发UTC服务调用异常"); return jsonViewObject.fail("信号机方案下发-基础方案下发UTC服务调用异常");
} }
// 下发车道相位
phaseLaneSend(crossId);
// 更新方案表状态为已执行 // 更新方案表状态为已执行
crossSchemeMapper.resetStatus(crossId); crossSchemeMapper.resetStatus(crossId);
crossSchemeMapper.updateStatus(schemeId); crossSchemeMapper.updateStatus(schemeId);
......
...@@ -4,40 +4,20 @@ import cn.hutool.core.collection.CollectionUtil; ...@@ -4,40 +4,20 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import net.wanji.common.dto.CrossIdDTO; import net.wanji.common.dto.CrossIdDTO;
import net.wanji.web.common.constant.ControlModeConst; import net.wanji.web.common.constant.ControlModeConst;
import net.wanji.web.common.enums.CrossLisghtsLaneDirEnum;
import net.wanji.web.common.exception.NoLanesException; import net.wanji.web.common.exception.NoLanesException;
import net.wanji.web.common.exception.PhaseNoNotUniqueException; import net.wanji.web.common.exception.PhaseNoNotUniqueException;
import net.wanji.web.dto.LaneIdDTO; import net.wanji.web.dto.LaneIdDTO;
import net.wanji.web.dto.LightIdDTO; import net.wanji.web.dto.LightIdDTO;
import net.wanji.web.dto.SaveSchemeConfigDTO; import net.wanji.web.dto.SaveSchemeConfigDTO;
import net.wanji.web.mapper.scheme.CrossAccompanyPhaseMapper; import net.wanji.web.mapper.scheme.*;
import net.wanji.web.mapper.scheme.CrossLaneLightsMapper; import net.wanji.web.po.scheme.*;
import net.wanji.web.mapper.scheme.CrossLightsMapper;
import net.wanji.web.mapper.scheme.CrossPhaseLightsMapper;
import net.wanji.web.mapper.scheme.CrossPhaseMapper;
import net.wanji.web.mapper.scheme.CrossSchemeMapper;
import net.wanji.web.mapper.scheme.LaneInfoMapper;
import net.wanji.web.po.scheme.CrossAccompanyPhasePO;
import net.wanji.web.po.scheme.CrossLaneLightsPO;
import net.wanji.web.po.scheme.CrossLightsPO;
import net.wanji.web.po.scheme.CrossPhaseLightsPO;
import net.wanji.web.po.scheme.CrossPhasePO;
import net.wanji.web.po.scheme.CrossSchemePO;
import net.wanji.web.po.scheme.LaneInfoPO;
import net.wanji.web.service.scheme.SchemeConfigService; import net.wanji.web.service.scheme.SchemeConfigService;
import net.wanji.web.vo.scheme.LaneIdsVO; import net.wanji.web.vo.scheme.LaneIdsVO;
import net.wanji.web.vo.scheme.LightIdVO; import net.wanji.web.vo.scheme.LightIdVO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.*;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -352,8 +332,9 @@ public class SchemeConfigServiceImpl implements SchemeConfigService { ...@@ -352,8 +332,9 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
} }
for (Integer dir : dirSet) { for (Integer dir : dirSet) {
SaveSchemeConfigDTO.DirListElement dirListElement = new SaveSchemeConfigDTO.DirListElement(); SaveSchemeConfigDTO.DirListElement dirListElement = new SaveSchemeConfigDTO.DirListElement();
Integer laneDir = CrossLisghtsLaneDirEnum.getLaneDirByLightsDir(dir); // 前端灯组方向就是车道方向
dirListElement.setDir(laneDir); // Integer laneDir = CrossLisghtsLaneDirEnum.getLaneDirByLightsDir(dir);
dirListElement.setDir(dir);
// 是否有行人相位 // 是否有行人相位
List<CrossLightsPO> crossLightsPOList = crossLightsMapper.selectByCrossIdAndDir(crossId, dir); List<CrossLightsPO> crossLightsPOList = crossLightsMapper.selectByCrossIdAndDir(crossId, dir);
for (CrossLightsPO crossLightsPO : crossLightsPOList) { for (CrossLightsPO crossLightsPO : crossLightsPOList) {
......
package net.wanji.utc.common.typeenum;
import java.util.Objects;
/**
* @author duanruiming
* @date 2023/04/03 16:26
*/
public enum CrossLightsDirEnum {
ONE(1, 1),// 由南向北
TWO(3, 4), // 由西向东
THREE(5, 2),// 由北向南
FOUR(7, 3);// 由东向西
private final Integer lightsCode;
private final Integer hkLightsCode;
CrossLightsDirEnum(Integer lightsCode, Integer hkLightsCode) {
this.lightsCode = lightsCode;
this.hkLightsCode = hkLightsCode;
}
public Integer getLightsCode() {
return lightsCode;
}
public Integer getHkLightsCode() {
return hkLightsCode;
}
public static Integer getHkLightsCode(Integer lightsCode) {
for (CrossLightsDirEnum value : values()) {
if (Objects.equals(lightsCode, value.getLightsCode())) {
return value.getHkLightsCode();
}
}
return null;
}
}
package net.wanji.utc.common.typeenum;
import java.util.Objects;
/**
* @author duanruiming
* @date 2023/04/03 13:26
*/
public enum CrossLightsTurnEnum {
ONE(1, 1),// 圆饼灯
TWO(2, 2), // 左转灯
THREE(3, 1),// 直行灯
FOUR(4,3),// 右转灯
FIVE(20, 9);// 行人
public static Integer getHkTurnByLightsType(Integer lightTurn) {
CrossLightsTurnEnum[] values = CrossLightsTurnEnum.values();
for (CrossLightsTurnEnum value : values) {
if (Objects.equals(lightTurn, value.lightType)) {
return value.getHkTurn();
}
}
return null;
}
CrossLightsTurnEnum(int lightTurn, int hkTurn) {
this.lightType = lightTurn;
this.hkTurn = hkTurn;
}
private final Integer lightType;
private final Integer hkTurn;
public int getLightType() {
return lightType;
}
public int getHkTurn() {
return hkTurn;
}
}
...@@ -36,4 +36,13 @@ public enum HkLightsDirEnum { ...@@ -36,4 +36,13 @@ public enum HkLightsDirEnum {
} }
return null; return null;
} }
public static Integer getHkCodeByCode(Integer code) {
for (HkLightsDirEnum value : values()) {
if (Objects.equals(code, value.getCode())) {
return value.getHkCode();
}
}
return null;
}
} }
...@@ -11,6 +11,8 @@ import net.wanji.common.framework.rest.JsonViewObject; ...@@ -11,6 +11,8 @@ import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.utc.common.baseentity.BaseCrossInfo; import net.wanji.utc.common.baseentity.BaseCrossInfo;
import net.wanji.utc.common.exception.ControlException; import net.wanji.utc.common.exception.ControlException;
import net.wanji.utc.common.typeenum.BasicEnum; import net.wanji.utc.common.typeenum.BasicEnum;
import net.wanji.utc.common.typeenum.CrossLightsDirEnum;
import net.wanji.utc.common.typeenum.CrossLightsTurnEnum;
import net.wanji.utc.dto.hk.DownloadPlanSpandsDTO; import net.wanji.utc.dto.hk.DownloadPlanSpandsDTO;
import net.wanji.utc.dto.hk.DownloadScheduleDTO; import net.wanji.utc.dto.hk.DownloadScheduleDTO;
import net.wanji.utc.dto.hk.DownloadTimeSpandsDTO; import net.wanji.utc.dto.hk.DownloadTimeSpandsDTO;
...@@ -409,6 +411,34 @@ public class HKControlCommandServiceImpl implements ControlCommandService { ...@@ -409,6 +411,34 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
if (Objects.isNull(crossInfoPO)) { if (Objects.isNull(crossInfoPO)) {
return jsonViewObject.fail("当前路口编号有误,路口信息不存在"); return jsonViewObject.fail("当前路口编号有误,路口信息不存在");
} }
// 海康车道转换
List<PhaseTimingSendVO.Phase> phaseList = phaseTimingSendVO.getPhaseList();
for (PhaseTimingSendVO.Phase phase : phaseList) {
List<PhaseTimingSendVO.Phase.Lane> lanes = phase.getLanes();
for (PhaseTimingSendVO.Phase.Lane lane : lanes) {
Integer type = lane.getTurn(); //web端发送的是灯组类型
Integer turn = CrossLightsTurnEnum.getHkTurnByLightsType(type);
if (!Objects.equals(turn, 9)) { // 行人
lane.setTurn(turn);
} else {
if (Objects.equals(lane.getDirection(), 1)) {
lane.setDirection(9);
}
if (Objects.equals(lane.getDirection(), 3)) {
lane.setDirection(11);
}
if (Objects.equals(lane.getDirection(), 5)) {
lane.setDirection(10);
}
if (Objects.equals(lane.getDirection(), 7)) {
lane.setDirection(12);
}
}
Integer hkCodeByCode = CrossLightsDirEnum.getHkLightsCode(lane.getDirection());
lane.setDirection(hkCodeByCode);
}
}
String signalCode = crossInfoPO.getCode(); String signalCode = crossInfoPO.getCode();
// 将路口code转换为信号机code // 将路口code转换为信号机code
phaseTimingSendVO.setCrossCode(signalCode); phaseTimingSendVO.setCrossCode(signalCode);
......
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