Commit b66424ec authored by zhouleilei's avatar zhouleilei

新增 - 根据路口号和方案号查询环转阶段

parent 3d9fdd71
...@@ -163,4 +163,12 @@ public interface FeignCommon { ...@@ -163,4 +163,12 @@ public interface FeignCommon {
@PostMapping("/signalStatus/lightStatusOneHist") @PostMapping("/signalStatus/lightStatusOneHist")
JsonViewObject selectLightStatusHist(@RequestBody CrossIdDateTimeDTO crossIdDateTimeDTO); JsonViewObject selectLightStatusHist(@RequestBody CrossIdDateTimeDTO crossIdDateTimeDTO);
/**
* 根据路口号和方案号查询环转阶段
* @param crossIdDateTimeDTO
* @return
*/
@PostMapping("/staticInfo/selectCrossSchemeRingsToStages")
JsonViewObject selectCrossSchemeRingsToStages(@RequestBody CrossSchemeRingsDTO crossSchemeRingsDTO);
} }
...@@ -12,6 +12,7 @@ import net.wanji.databus.dao.entity.CrossSchedulesPO; ...@@ -12,6 +12,7 @@ import net.wanji.databus.dao.entity.CrossSchedulesPO;
import net.wanji.databus.dto.*; import net.wanji.databus.dto.*;
import net.wanji.databus.po.CoordinationStatus; import net.wanji.databus.po.CoordinationStatus;
import net.wanji.databus.po.CrossInfoPO; import net.wanji.databus.po.CrossInfoPO;
import net.wanji.databus.vo.CrossSchemeRingsToStagesPO;
import net.wanji.databus.vo.PlanSectionVO; import net.wanji.databus.vo.PlanSectionVO;
import net.wanji.databus.vo.SchemePhaseLightsVO; import net.wanji.databus.vo.SchemePhaseLightsVO;
import net.wanji.databus.po.CrossSchemeRings; import net.wanji.databus.po.CrossSchemeRings;
...@@ -149,4 +150,22 @@ public class StaticInfoController { ...@@ -149,4 +150,22 @@ public class StaticInfoController {
public JsonViewObject selectSchemeByParams(@RequestBody @Validated QueryByCrossIdAndTimeDTO queryByCrossIdAndTimeDTO) throws Exception { public JsonViewObject selectSchemeByParams(@RequestBody @Validated QueryByCrossIdAndTimeDTO queryByCrossIdAndTimeDTO) throws Exception {
return JsonViewObject.newInstance().success(staticInfoService.selectSchemeByParams(queryByCrossIdAndTimeDTO)); return JsonViewObject.newInstance().success(staticInfoService.selectSchemeByParams(queryByCrossIdAndTimeDTO));
} }
@AspectLog(description = "根据路口号和方案号查询环转阶段", operationType = BaseEnum.OperationTypeEnum.QUERY)
@PostMapping(value = "/selectCrossSchemeRingsToStages")
@ApiOperation(value = "根据路口号和方案号查询环转阶段", notes = "根据路口号和方案号查询环转阶段", response = CrossSchemeRings.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = CrossSchemeRings.class)
})
public JsonViewObject selectCrossSchemeRingsToStages(@RequestBody @Validated CrossSchemeRingsDTO crossSchemeRingsDTO) throws Exception {
if (ObjectUtils.isEmpty(crossSchemeRingsDTO.getPattern())) {
return JsonViewObject.newInstance().fail("方案号不能为空");
}
CrossSchemeRingsToStagesPO crossSchemeRingsToStagesPO = staticInfoService.selectCrossSchemeRingsToStages(crossSchemeRingsDTO);
if (ObjectUtils.isEmpty(crossSchemeRingsToStagesPO)) {
return JsonViewObject.newInstance().fail("获取海信方案环图失败");
}
return JsonViewObject.newInstance().success(crossSchemeRingsToStagesPO);
}
} }
...@@ -4,11 +4,12 @@ import net.wanji.databus.dao.entity.BaseCrossSchemePO; ...@@ -4,11 +4,12 @@ import net.wanji.databus.dao.entity.BaseCrossSchemePO;
import net.wanji.databus.dao.entity.CrossSchedulesPO; import net.wanji.databus.dao.entity.CrossSchedulesPO;
import net.wanji.databus.dao.entity.CrossSchemeStageOptLogPO; import net.wanji.databus.dao.entity.CrossSchemeStageOptLogPO;
import net.wanji.databus.dto.*; import net.wanji.databus.dto.*;
import net.wanji.databus.po.CoordinationStatus;
import net.wanji.databus.po.CrossInfoPO; import net.wanji.databus.po.CrossInfoPO;
import net.wanji.databus.po.CrossSchemeRings;
import net.wanji.databus.vo.CrossSchemeRingsToStagesPO;
import net.wanji.databus.vo.PlanSectionVO; import net.wanji.databus.vo.PlanSectionVO;
import net.wanji.databus.vo.SchemePhaseLightsVO; import net.wanji.databus.vo.SchemePhaseLightsVO;
import net.wanji.databus.po.CoordinationStatus;
import net.wanji.databus.po.CrossSchemeRings;
import java.util.List; import java.util.List;
@SuppressWarnings("all") @SuppressWarnings("all")
...@@ -47,4 +48,11 @@ public interface StaticInfoService { ...@@ -47,4 +48,11 @@ public interface StaticInfoService {
**/ **/
BaseCrossSchemePO selectSchemeByParams(QueryByCrossIdAndTimeDTO queryByCrossIdAndTimeDTO) throws Exception; BaseCrossSchemePO selectSchemeByParams(QueryByCrossIdAndTimeDTO queryByCrossIdAndTimeDTO) throws Exception;
/**
* @Description : 根据路口号和方案号查询环转阶段
* @Param crossId 路口编号
* @Param pattern 方案号
**/
CrossSchemeRingsToStagesPO selectCrossSchemeRingsToStages(CrossSchemeRingsDTO crossSchemeRingsDTO) throws Exception;
} }
...@@ -755,7 +755,7 @@ public class ControlCommandServiceImpl implements ControlCommandService { ...@@ -755,7 +755,7 @@ public class ControlCommandServiceImpl implements ControlCommandService {
* @Description 默认的相位时间 * @Description 默认的相位时间
* @Param [] * @Param []
**/ **/
private String getDefaultPhaseTime() { public String getDefaultPhaseTime() {
StringBuilder str = new StringBuilder(); StringBuilder str = new StringBuilder();
for (int i = 0; i < 16; i++) { for (int i = 0; i < 16; i++) {
str.append("0").append(" "); str.append("0").append(" ");
......
...@@ -17,6 +17,7 @@ import net.wanji.databus.dao.mapper.CrossSchemeStageOptLogMapper; ...@@ -17,6 +17,7 @@ import net.wanji.databus.dao.mapper.CrossSchemeStageOptLogMapper;
import net.wanji.databus.dao.mapper.ManufacturerInfoMapper; import net.wanji.databus.dao.mapper.ManufacturerInfoMapper;
import net.wanji.databus.dto.*; import net.wanji.databus.dto.*;
import net.wanji.databus.po.*; import net.wanji.databus.po.*;
import net.wanji.databus.vo.CrossSchemeRingsToStagesPO;
import net.wanji.databus.vo.PlanSectionVO; import net.wanji.databus.vo.PlanSectionVO;
import net.wanji.databus.vo.SchemePhaseLightsVO; import net.wanji.databus.vo.SchemePhaseLightsVO;
import net.wanji.utc.hisense.cache.CrossInfoCache; import net.wanji.utc.hisense.cache.CrossInfoCache;
...@@ -78,6 +79,8 @@ public class StaticInfoServiceImpl implements StaticInfoService { ...@@ -78,6 +79,8 @@ public class StaticInfoServiceImpl implements StaticInfoService {
@Resource @Resource
private BaseCrossSchemeMapper baseCrossSchemeMapper; private BaseCrossSchemeMapper baseCrossSchemeMapper;
public static Map<String, Integer> planMap = new HashMap<>(); public static Map<String, Integer> planMap = new HashMap<>();
@Resource
private StaticInfoServiceImpl staticInfoServiceImpl;
@Override @Override
public List<CrossInfoPO> crossBasicInfo(CrossInfoDTO crossInfoDTO) throws Exception { public List<CrossInfoPO> crossBasicInfo(CrossInfoDTO crossInfoDTO) throws Exception {
...@@ -1085,4 +1088,99 @@ public class StaticInfoServiceImpl implements StaticInfoService { ...@@ -1085,4 +1088,99 @@ public class StaticInfoServiceImpl implements StaticInfoService {
} }
return baseCrossSchemePO; return baseCrossSchemePO;
} }
@Override
public CrossSchemeRingsToStagesPO selectCrossSchemeRingsToStages(CrossSchemeRingsDTO crossSchemeRingsDTO) throws Exception {
CrossSchemeRingsToStagesPO crossSchemeRingsToStagesPO = new CrossSchemeRingsToStagesPO();
String crossId = crossSchemeRingsDTO.getCrossId();
int pattern = Integer.valueOf(crossSchemeRingsDTO.getPattern());
crossSchemeRingsToStagesPO.setCrossId(crossId);
crossSchemeRingsToStagesPO.setSchemeId(String.valueOf(pattern));
//海信方案号
String schemeId = String.valueOf(pattern*3 - 2);
crossSchemeRingsDTO.setPattern(schemeId);
//查询方案环图请求
CrossSchemeRings crossSchemeRings = crossSchemeRingsHisen(crossSchemeRingsDTO);
if (ObjectUtil.isEmpty(crossSchemeRings)) {
return null;
}
String cycleLen = crossSchemeRings.getCycleLen();
String ringCount = crossSchemeRings.getRingCount();
crossSchemeRingsToStagesPO.setRingCount(ringCount);
crossSchemeRingsToStagesPO.setCycleLen(cycleLen);
crossSchemeRingsToStagesPO.setOffset(crossSchemeRings.getOffset());
List<CrossSchemeRings.Phase> phaseList = crossSchemeRings.getPhaseList();
CrossSchemeRings.Phase phase = phaseList.get(0);
String redTime = phase.getRedTime();
String greenTime = phase.getGreenTime();
String yellowTime = phase.getYellowTime();
crossSchemeRingsToStagesPO.setSplit(getPhaseTime(redTime,greenTime,yellowTime));
JSONObject cycleJSONObject = crossSchemeRings.getCycleList();
List<StagePhaseDTO> stagePhaseDTOList = null;
try {
//封装环和环上相位数据
Map<Integer, List<RingPhaseDTO>> ringPhasesMap = staticInfoServiceImpl.getRingPhasesMap(Integer.valueOf(ringCount), cycleJSONObject, phase);
//环封装阶段
stagePhaseDTOList = staticInfoServiceImpl.stagePhaseList(Integer.valueOf(cycleLen), Integer.valueOf(ringCount), ringPhasesMap);
} catch (Exception e) {
return null;
}
List<CrossSchemeRingsToStagesPO.Phase> phasePOlist = new ArrayList<>();
if (ObjectUtil.isNotEmpty(stagePhaseDTOList)) {
for (StagePhaseDTO stagePhaseDTO : stagePhaseDTOList) {
CrossSchemeRingsToStagesPO.Phase phasePO = new CrossSchemeRingsToStagesPO.Phase();
phasePO.setPhaseNo(String.valueOf(stagePhaseDTO.getStageId()));
phasePO.setPhaseTime(stagePhaseDTO.getStageTime());
CrossSchemeStageOptLogPO crossSchemeStageOptLogPO = new CrossSchemeStageOptLogPO();
crossSchemeStageOptLogPO.setCrossId(crossId);
crossSchemeStageOptLogPO.setPhaseNo(stagePhaseDTO.getStageId() + "");
crossSchemeStageOptLogPO.setPhaseTime(stagePhaseDTO.getStageTime());
List<RingPhaseDTO> ringPhaseList = stagePhaseDTO.getRingPhaseList();
List<Integer> list = new ArrayList<>();
for (RingPhaseDTO ringPhaseDTO : ringPhaseList) {
if (ObjectUtil.isNotEmpty(ringPhaseDTO)) {
list.add(ringPhaseDTO.getPhaseId());
}
}
if (ObjectUtil.isNotEmpty(list)) {
String phases = CollectionUtil.join(list, ",");
crossSchemeStageOptLogPO.setPhaseList(phases);
phasePO.setPhaseList(phases);
}
phasePOlist.add(phasePO);
}
}
crossSchemeRingsToStagesPO.setPhaseList(phasePOlist);
return crossSchemeRingsToStagesPO;
}
/**
* @Description 通过红灯、绿灯、黄灯时间,计算相位时间
* @Param [redTime, greenTime, yellowTime]
* @return java.lang.String
**/
public String getPhaseTime(String redTime,String greenTime,String yellowTime){
// 将字符串拆分为数组,处理可能的首尾空格
String[] redArray = redTime.trim().split("\\s+");
String[] greenArray = greenTime.trim().split("\\s+");
String[] yellowArray = yellowTime.trim().split("\\s+");
StringBuilder result = new StringBuilder();
for (int i = 0; i < 16; i++) {
// 将对应位置的数值求和
int sum = Integer.parseInt(redArray[i])
+ Integer.parseInt(greenArray[i])
+ Integer.parseInt(yellowArray[i]);
// 拼接结果,用空格分隔
if (i > 0) {
result.append(" ");
}
result.append(sum);
}
return result.toString();
}
} }
...@@ -195,6 +195,14 @@ public class StaticInfoController { ...@@ -195,6 +195,14 @@ public class StaticInfoController {
public JsonViewObject selectSchemeOptLogByParams(@Validated @RequestBody CrossSchemeQueryDTO crossSchemeQueryDTO) throws Exception { public JsonViewObject selectSchemeOptLogByParams(@Validated @RequestBody CrossSchemeQueryDTO crossSchemeQueryDTO) throws Exception {
return staticInfoService.selectSchemeOptLogByParams(crossSchemeQueryDTO); return staticInfoService.selectSchemeOptLogByParams(crossSchemeQueryDTO);
} }
@AspectLog(description = "根据路口号和方案号查询环转阶段", operationType = BaseEnum.OperationTypeEnum.QUERY)
@PostMapping(value = "/selectCrossSchemeRingsToStages", produces = MediaType.APPLICATION_JSON)
@ApiOperation(value = "根据路口号和方案号查询环转阶段", notes = "根据路口号和方案号查询环转阶段")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = CrossSchedulesPO.class)
})
public JsonViewObject selectCrossSchemeRingsToStages(@Validated @RequestBody CrossSchemeRingsDTO crossSchemeRingsDTO) throws Exception {
return staticInfoService.selectCrossSchemeRingsToStages(crossSchemeRingsDTO);
}
} }
...@@ -34,5 +34,6 @@ public interface StaticInfoService { ...@@ -34,5 +34,6 @@ public interface StaticInfoService {
JsonViewObject schemeOptLog(CrossSchemeRingsDTO crossSchemeRingsDTO) throws Exception; JsonViewObject schemeOptLog(CrossSchemeRingsDTO crossSchemeRingsDTO) throws Exception;
JsonViewObject selectSchemeByParams(QueryByCrossIdAndTimeDTO queryByCrossIdAndTimeDTO) throws Exception; JsonViewObject selectSchemeByParams(QueryByCrossIdAndTimeDTO queryByCrossIdAndTimeDTO) throws Exception;
JsonViewObject selectSchemeOptLogByParams(CrossSchemeQueryDTO crossSchemeQueryDT) throws Exception; JsonViewObject selectSchemeOptLogByParams(CrossSchemeQueryDTO crossSchemeQueryDT) throws Exception;
JsonViewObject selectCrossSchemeRingsToStages(CrossSchemeRingsDTO crossSchemeRingsDTO) throws Exception;
} }
...@@ -58,5 +58,5 @@ public interface WanJiCommonStaticInfoService { ...@@ -58,5 +58,5 @@ public interface WanJiCommonStaticInfoService {
JsonViewObject schemeOptLog(CrossSchemeRingsDTO crossSchemeRingsDTO) throws Exception; JsonViewObject schemeOptLog(CrossSchemeRingsDTO crossSchemeRingsDTO) throws Exception;
JsonViewObject selectSchemeByParams(QueryByCrossIdAndTimeDTO queryByCrossIdAndTimeDTO) throws Exception; JsonViewObject selectSchemeByParams(QueryByCrossIdAndTimeDTO queryByCrossIdAndTimeDTO) throws Exception;
JsonViewObject selectSchemeOptLogByParams(CrossSchemeQueryDTO crossSchemeQueryDT) throws Exception; JsonViewObject selectSchemeOptLogByParams(CrossSchemeQueryDTO crossSchemeQueryDT) throws Exception;
JsonViewObject selectCrossSchemeRingsToStages(CrossSchemeRingsDTO crossSchemeRingsDTO) throws Exception;
} }
...@@ -251,4 +251,10 @@ public class StaticInfoServiceImpl implements StaticInfoService { ...@@ -251,4 +251,10 @@ public class StaticInfoServiceImpl implements StaticInfoService {
jsonViewObject = wanjiCommonStaticInfoService.selectSchemeOptLogByParams(crossSchemeQueryDT); jsonViewObject = wanjiCommonStaticInfoService.selectSchemeOptLogByParams(crossSchemeQueryDT);
return jsonViewObject; return jsonViewObject;
} }
@Override
public JsonViewObject selectCrossSchemeRingsToStages(CrossSchemeRingsDTO crossSchemeRingsDTO) throws Exception {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
jsonViewObject = wanjiCommonStaticInfoService.selectCrossSchemeRingsToStages(crossSchemeRingsDTO);
return jsonViewObject; }
} }
...@@ -401,6 +401,23 @@ public class WanJiCommonStaticInfoServiceImpl implements WanJiCommonStaticInfoSe ...@@ -401,6 +401,23 @@ public class WanJiCommonStaticInfoServiceImpl implements WanJiCommonStaticInfoSe
return JsonViewObject.newInstance().success(schemeOptLogPO); return JsonViewObject.newInstance().success(schemeOptLogPO);
} }
@Override
public JsonViewObject selectCrossSchemeRingsToStages(CrossSchemeRingsDTO crossSchemeRingsDTO) throws Exception {
String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(crossSchemeRingsDTO.getCrossId());
JsonViewObject jsonViewObject = null;
if ("HISENSE".equals(manufacturerIdCode)) {
FeignCommon utcFeignClientService = utcFeignClientCache.getUtcFeignClientService(manufacturerIdCode);
jsonViewObject = utcFeignClientService.selectCrossSchemeRingsToStages(crossSchemeRingsDTO);
} else {
//TODO 易华录及其它厂家
}
if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
throw new Exception("根据时间和路口号查询方案号远程服务调用异常,异常信息" + jsonViewObject.getMessage());
}
return jsonViewObject;
}
/** /**
* @return net.wanji.databus.dao.entity.BaseCrossSchemePO * @return net.wanji.databus.dao.entity.BaseCrossSchemePO
* @Description 获取方案号 * @Description 获取方案号
......
package net.wanji.databus.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @ClassName CrossSchemeOptLog
* @Description 方案
* @Author zhouleilei
* @Date 2024/11/23 14:23
*/
@Data
public class CrossSchemeRingsToStagesPO {
@ApiModelProperty(value = "路口编号")
private String crossId;
@ApiModelProperty(value = "方案号")
private String schemeId;
@ApiModelProperty(value = "环数")
private String ringCount;
@ApiModelProperty(value = "周期长,单位秒")
private String cycleLen;
@ApiModelProperty(value = "相位差")
private String offset;
@ApiModelProperty(value = "绿信比")
private String split;
@ApiModelProperty(value = "划分后的相位")
private List<Phase> phaseList;
@Data
public static class Phase {
@ApiModelProperty(value = "相位编号")
private String phaseNo;
@ApiModelProperty(value = "阶段对应的相位号")
private String phaseList;
@ApiModelProperty(value = "相位时长")
private Integer phaseTime;
}
}
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