Commit b7ed83de authored by duanruiming's avatar duanruiming

[update] 下发相位参数

parent cf16f7a1
......@@ -12,6 +12,7 @@ import net.wanji.feign.service.UtcFeignClients;
import net.wanji.web.dto.*;
import net.wanji.web.mapper.scheme.*;
import net.wanji.web.po.scheme.*;
import net.wanji.web.service.FeignProxyService;
import net.wanji.web.service.PlanSendService;
import net.wanji.web.service.scheme.impl.RunningPlanServiceImpl;
import net.wanji.web.service.scheme.impl.SchemeConfigServiceImpl;
......@@ -33,6 +34,7 @@ import java.util.stream.Collectors;
@Service
public class PlanSendServiceImpl implements PlanSendService {
private final UtcFeignClients utcFeignClients;
private final FeignProxyService feignProxyService;
private final CrossSchedulesPlanMapper crossSchedulesPlanMapper;
private final CrossPlanMapper crossPlanMapper;
private final CrossSchemeMapper crossSchemeMapper;
......@@ -50,7 +52,13 @@ public class PlanSendServiceImpl implements PlanSendService {
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.crossSchedulesPlanMapper = crossSchedulesPlanMapper;
this.crossPlanMapper = crossPlanMapper;
......@@ -63,10 +71,28 @@ public class PlanSendServiceImpl implements PlanSendService {
this.crossSchedulesMapper = crossSchedulesMapper;
this.crossLaneLightsMapper = crossLaneLightsMapper;
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.setCrossCode(crossId);
List<PhaseTimingSendVO.Phase> phaseList = new ArrayList<>();
......@@ -97,9 +123,9 @@ public class PlanSendServiceImpl implements PlanSendService {
for (CrossLightsPO lightsPO : crossLightsPOS) {
if (Objects.equals(lightsId, lightsPO.getId())) {
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.setTurn(lightsPO.getTurn());
lane.setTurn(lightsPO.getType());
lanes.add(lane);
}
}
......@@ -108,13 +134,9 @@ public class PlanSendServiceImpl implements PlanSendService {
phase.setLanes(lanes);
phaseList.add(phase);
}
phaseTimingSendVO.setPhaseList(phaseList);
JsonViewObject phaseTimingSendResult = utcFeignClients.phaseTimingSend(phaseTimingSendVO);
if (Objects.isNull(phaseTimingSendResult) || phaseTimingSendResult.getCode() != 200) {
return jsonViewObject.fail("信号机方案下发-相位参数下发UTC服务调用异常");
}
return jsonViewObject.success(phaseTimingSendResult);
return phaseTimingSendVO;
}
@Override
......@@ -138,8 +160,8 @@ public class PlanSendServiceImpl implements PlanSendService {
if (Objects.isNull(planSendResult) || planSendResult.getCode() != 200) {
return jsonViewObject.fail("信号机方案下发-日计划下发UTC服务调用异常");
}
// 下发相位
// 下发车道相位
phaseLaneSend(crossId);
// 更新时间表状态为已执行
crossSchedulesMapper.resetStatus(crossId);
......@@ -201,6 +223,8 @@ public class PlanSendServiceImpl implements PlanSendService {
if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
return jsonViewObject.fail("信号机方案下发-基础方案下发UTC服务调用异常");
}
// 下发车道相位
phaseLaneSend(crossId);
// 更新方案表状态为已执行
crossSchemeMapper.resetStatus(crossId);
crossSchemeMapper.updateStatus(schemeId);
......
......@@ -4,40 +4,20 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import net.wanji.common.dto.CrossIdDTO;
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.PhaseNoNotUniqueException;
import net.wanji.web.dto.LaneIdDTO;
import net.wanji.web.dto.LightIdDTO;
import net.wanji.web.dto.SaveSchemeConfigDTO;
import net.wanji.web.mapper.scheme.CrossAccompanyPhaseMapper;
import net.wanji.web.mapper.scheme.CrossLaneLightsMapper;
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.mapper.scheme.*;
import net.wanji.web.po.scheme.*;
import net.wanji.web.service.scheme.SchemeConfigService;
import net.wanji.web.vo.scheme.LaneIdsVO;
import net.wanji.web.vo.scheme.LightIdVO;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
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.*;
import java.util.stream.Collectors;
/**
......@@ -352,8 +332,9 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
}
for (Integer dir : dirSet) {
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);
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 {
}
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;
import net.wanji.utc.common.baseentity.BaseCrossInfo;
import net.wanji.utc.common.exception.ControlException;
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.DownloadScheduleDTO;
import net.wanji.utc.dto.hk.DownloadTimeSpandsDTO;
......@@ -409,6 +411,34 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
if (Objects.isNull(crossInfoPO)) {
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();
// 将路口code转换为信号机code
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