Commit f1afad27 authored by wuxiaokai's avatar wuxiaokai

控制指令接口-相位配时下发

parent 473b1826
...@@ -10,14 +10,16 @@ import net.wanji.utc.mapper.CrossInfoMapper; ...@@ -10,14 +10,16 @@ import net.wanji.utc.mapper.CrossInfoMapper;
import net.wanji.utc.po.CrossInfoPO; import net.wanji.utc.po.CrossInfoPO;
import net.wanji.utc.service.ControlCommandService; import net.wanji.utc.service.ControlCommandService;
import net.wanji.utc.util.ListUtil; import net.wanji.utc.util.ListUtil;
import net.wanji.utc.vo.PhaseLock; import net.wanji.utc.vo.PhaseLockVO;
import net.wanji.utc.vo.plansend.PlanSendVO; import net.wanji.utc.vo.plansend.PlanSendVO;
import net.wanji.utc.vo.timeplan.TimePlanVO;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Date;
import java.util.List; import java.util.List;
import static net.wanji.utc.common.ResultEnum.BODY_NOT_MATCH; import static net.wanji.utc.common.ResultEnum.BODY_NOT_MATCH;
...@@ -49,7 +51,9 @@ public class ControlCommandController { ...@@ -49,7 +51,9 @@ public class ControlCommandController {
@ApiOperation(value = "方案下发-基础方案下发", notes = "方案下发-基础方案下发") @ApiOperation(value = "方案下发-基础方案下发", notes = "方案下发-基础方案下发")
@PostMapping("/schemeSend") @PostMapping("/schemeSend")
public <T> Result<T> schemeSend(@RequestParam String signalId, @RequestParam Integer command) { public <T> Result<T> schemeSend(@RequestParam String signalId, @RequestParam Integer command) {
if (mock) return Result.success(); if (mock) {
return Result.success();
}
Integer manufacturerId = check(signalId); Integer manufacturerId = check(signalId);
if (manufacturerId.equals(BasicEnum.ManufacturerEnum.HK.getCode())) { if (manufacturerId.equals(BasicEnum.ManufacturerEnum.HK.getCode())) {
return hkControlCommandService.allRedControl(signalId, null, null, command); return hkControlCommandService.allRedControl(signalId, null, null, command);
...@@ -59,6 +63,40 @@ public class ControlCommandController { ...@@ -59,6 +63,40 @@ public class ControlCommandController {
} }
} }
/**
* 相位配时下发
*
* @param signalId 信号id
* @param timePlans 配时方案实体类
* @return {@link Result}<{@link T}>
*/
@ApiOperation(value = "相位配时下发-相位的绿灯、绿闪、行闪、黄灯、红灯配时下发", notes = "相位配时下发-相位的绿灯、绿闪、行闪、黄灯、红灯配时下发")
@PostMapping("/phaseTimingSend")
public <T> Result<T> phaseTimingSend(@RequestParam String signalId, @RequestBody List<TimePlanVO> timePlans) {
if (mock) {
return Result.success();
}
CrossInfoPO crossInfoPo = crossInfoMapper.selectByCode(signalId);
if (crossInfoPo == null) {
throw new ControlException(BODY_NOT_MATCH.getResultCode(), "参数错误,信号机ID不正确。");
}
if (ListUtil.isEmpty(timePlans)) {
throw new ControlException("参数错误,下发方案信息为空。");
}
//开启适配服务
for (TimePlanVO timePlanVo : timePlans) {
timePlanVo.setCode(crossInfoPo.getCode());
timePlanVo.setManufacturerAbbr(crossInfoPo.getManufacturerId() + "");
}
Integer manufacturerId = crossInfoPo.getManufacturerId();
if (manufacturerId.equals(BasicEnum.ManufacturerEnum.HK.getCode())) {
return hkControlCommandService.phaseTimingSend(timePlans);
} else {
// todo else
return null;
}
}
/** /**
* 计划下发 * 计划下发
* *
...@@ -69,15 +107,17 @@ public class ControlCommandController { ...@@ -69,15 +107,17 @@ public class ControlCommandController {
@ApiOperation(value = "计划下发-计划信息、时段信息", notes = "计划下发-计划信息、时段信息") @ApiOperation(value = "计划下发-计划信息、时段信息", notes = "计划下发-计划信息、时段信息")
@PostMapping("/planSend") @PostMapping("/planSend")
public <T> Result<T> planSend(@RequestParam String signalId, @RequestBody PlanSendVO planSendVO) { public <T> Result<T> planSend(@RequestParam String signalId, @RequestBody PlanSendVO planSendVO) {
if (mock) return Result.success(); if (mock) {
return Result.success();
}
try { try {
CrossInfoPO crossInfoPO = crossInfoMapper.selectByCode(signalId); CrossInfoPO crossInfoPo = crossInfoMapper.selectByCode(signalId);
if (crossInfoPO == null) { if (crossInfoPo == null) {
throw new ControlException(BODY_NOT_MATCH.getResultCode(), "参数错误,信号机ID不正确。"); throw new ControlException(BODY_NOT_MATCH.getResultCode(), "参数错误,信号机ID不正确。");
} }
planSendVO.setCode(crossInfoPO.getCode()); planSendVO.setCode(crossInfoPo.getCode());
planSendVO.setManufacturerAbbr(crossInfoPO.getManufacturerId() + ""); planSendVO.setManufacturerAbbr(crossInfoPo.getManufacturerId() + "");
Integer manufacturerId = crossInfoPO.getManufacturerId(); Integer manufacturerId = crossInfoPo.getManufacturerId();
if (manufacturerId.equals(BasicEnum.ManufacturerEnum.HK.getCode())) { if (manufacturerId.equals(BasicEnum.ManufacturerEnum.HK.getCode())) {
return hkControlCommandService.planSend(planSendVO); return hkControlCommandService.planSend(planSendVO);
} else { } else {
...@@ -101,7 +141,9 @@ public class ControlCommandController { ...@@ -101,7 +141,9 @@ public class ControlCommandController {
@ApiOperation(value = "全红控制-路口全红控制/恢复", notes = "全红控制-路口全红控制/恢复") @ApiOperation(value = "全红控制-路口全红控制/恢复", notes = "全红控制-路口全红控制/恢复")
@PostMapping("/allRedControl") @PostMapping("/allRedControl")
public <T> Result<T> allRedControl(@RequestParam String signalId, @RequestParam Integer command) { public <T> Result<T> allRedControl(@RequestParam String signalId, @RequestParam Integer command) {
if (mock) return Result.success(); if (mock) {
return Result.success();
}
Integer manufacturerId = check(signalId); Integer manufacturerId = check(signalId);
if (manufacturerId.equals(BasicEnum.ManufacturerEnum.HK.getCode())) { if (manufacturerId.equals(BasicEnum.ManufacturerEnum.HK.getCode())) {
return hkControlCommandService.allRedControl(signalId, null, null, command); return hkControlCommandService.allRedControl(signalId, null, null, command);
...@@ -121,7 +163,9 @@ public class ControlCommandController { ...@@ -121,7 +163,9 @@ public class ControlCommandController {
@ApiOperation(value = "黄闪控制-路口黄闪控制/恢复", notes = "黄闪控制-路口黄闪控制/恢复") @ApiOperation(value = "黄闪控制-路口黄闪控制/恢复", notes = "黄闪控制-路口黄闪控制/恢复")
@PostMapping("/yellowLightControl") @PostMapping("/yellowLightControl")
public <T> Result<T> yellowLightControl(@RequestParam String signalId, @RequestParam Integer command) { public <T> Result<T> yellowLightControl(@RequestParam String signalId, @RequestParam Integer command) {
if (mock) return Result.success(); if (mock) {
return Result.success();
}
Integer manufacturerId = check(signalId); Integer manufacturerId = check(signalId);
if (manufacturerId.equals(BasicEnum.ManufacturerEnum.HK.getCode())) { if (manufacturerId.equals(BasicEnum.ManufacturerEnum.HK.getCode())) {
return hkControlCommandService.yellowLightControl(signalId, null, null, command); return hkControlCommandService.yellowLightControl(signalId, null, null, command);
...@@ -141,7 +185,9 @@ public class ControlCommandController { ...@@ -141,7 +185,9 @@ public class ControlCommandController {
@ApiOperation(value = "关灯控制-路口关灯控制/开灯", notes = "关灯控制-路口关灯控制/开灯") @ApiOperation(value = "关灯控制-路口关灯控制/开灯", notes = "关灯控制-路口关灯控制/开灯")
@PostMapping("/closeLightControl") @PostMapping("/closeLightControl")
public <T> Result<T> closeLightControl(@RequestParam String signalId, @RequestParam Integer command) { public <T> Result<T> closeLightControl(@RequestParam String signalId, @RequestParam Integer command) {
if (mock) return Result.success(); if (mock) {
return Result.success();
}
Integer manufacturerId = check(signalId); Integer manufacturerId = check(signalId);
if (manufacturerId.equals(BasicEnum.ManufacturerEnum.HK.getCode())) { if (manufacturerId.equals(BasicEnum.ManufacturerEnum.HK.getCode())) {
return hkControlCommandService.closeLightControl(signalId, null, null, command); return hkControlCommandService.closeLightControl(signalId, null, null, command);
...@@ -164,7 +210,9 @@ public class ControlCommandController { ...@@ -164,7 +210,9 @@ public class ControlCommandController {
public <T> Result<T> stepControl(@RequestParam String signalId, public <T> Result<T> stepControl(@RequestParam String signalId,
@RequestParam Integer command, @RequestParam Integer command,
@RequestParam int stepNum) { @RequestParam int stepNum) {
if (mock) return Result.success(); if (mock) {
return Result.success();
}
Integer manufacturerId = check(signalId); Integer manufacturerId = check(signalId);
if (manufacturerId.equals(BasicEnum.ManufacturerEnum.HK.getCode())) { if (manufacturerId.equals(BasicEnum.ManufacturerEnum.HK.getCode())) {
return hkControlCommandService.stepControl(signalId, null, null, command, stepNum); return hkControlCommandService.stepControl(signalId, null, null, command, stepNum);
...@@ -183,7 +231,9 @@ public class ControlCommandController { ...@@ -183,7 +231,9 @@ public class ControlCommandController {
@ApiOperation(value = "恢复时间表-恢复路口时间表执行", notes = "恢复时间表-恢复路口时间表执行") @ApiOperation(value = "恢复时间表-恢复路口时间表执行", notes = "恢复时间表-恢复路口时间表执行")
@PostMapping("/scheduleSend") @PostMapping("/scheduleSend")
public <T> Result<T> scheduleSend(@RequestParam String signalId) { public <T> Result<T> scheduleSend(@RequestParam String signalId) {
if (mock) return Result.success(); if (mock) {
return Result.success();
}
Integer manufacturerId = check(signalId); Integer manufacturerId = check(signalId);
if (manufacturerId.equals(BasicEnum.ManufacturerEnum.HK.getCode())) { if (manufacturerId.equals(BasicEnum.ManufacturerEnum.HK.getCode())) {
return hkControlCommandService.scheduleSend(signalId, null, null, null); return hkControlCommandService.scheduleSend(signalId, null, null, null);
...@@ -201,7 +251,7 @@ public class ControlCommandController { ...@@ -201,7 +251,7 @@ public class ControlCommandController {
*/ */
@ApiOperation(value = "锁定控制-相位锁定/解锁", notes = "锁定控制-相位锁定/解锁") @ApiOperation(value = "锁定控制-相位锁定/解锁", notes = "锁定控制-相位锁定/解锁")
@PostMapping("/lockControl") @PostMapping("/lockControl")
public <T> Result<T> lockControl(@RequestParam String signalId, @RequestBody PhaseLock phaseLock) { public <T> Result<T> lockControl(@RequestParam String signalId, @RequestBody PhaseLockVO phaseLock) {
if (mock) { if (mock) {
return Result.success(); return Result.success();
} }
...@@ -220,10 +270,10 @@ public class ControlCommandController { ...@@ -220,10 +270,10 @@ public class ControlCommandController {
} }
private Integer check(String signalId) { private Integer check(String signalId) {
CrossInfoPO crossInfoPO = crossInfoMapper.selectByCode(signalId); CrossInfoPO crossInfoPo = crossInfoMapper.selectByCode(signalId);
if (crossInfoPO == null) { if (crossInfoPo == null) {
throw new ControlException(BODY_NOT_MATCH.getResultCode(), "参数错误,信号机ID不正确。"); throw new ControlException(BODY_NOT_MATCH.getResultCode(), "参数错误,信号机ID不正确。");
} }
return crossInfoPO.getManufacturerId(); return crossInfoPo.getManufacturerId();
} }
} }
package net.wanji.utc.service; package net.wanji.utc.service;
import net.wanji.utc.common.Result; import net.wanji.utc.common.Result;
import net.wanji.utc.vo.PhaseLock; import net.wanji.utc.vo.PhaseLockVO;
import net.wanji.utc.vo.plansend.PlanSendVO; import net.wanji.utc.vo.plansend.PlanSendVO;
import net.wanji.utc.vo.timeplan.TimePlanVO;
import java.util.List; import java.util.List;
...@@ -21,6 +22,10 @@ public interface ControlCommandService { ...@@ -21,6 +22,10 @@ public interface ControlCommandService {
/** /**
* 计划下发 * 计划下发
*
* @param planSendVO 计划下发VO
* @return {@link Result}<{@link T}>
* @throws Exception 异常
*/ */
<T> Result<T> planSend(PlanSendVO planSendVO) throws Exception; <T> Result<T> planSend(PlanSendVO planSendVO) throws Exception;
...@@ -32,11 +37,11 @@ public interface ControlCommandService { ...@@ -32,11 +37,11 @@ public interface ControlCommandService {
/** /**
* 锁定控制 * 锁定控制
* *
* @param signalId 信号机编号 * @param signalId 信号机编号
* @param phaseLock 相位锁定实体类 * @param phaseLock 相位锁定实体类
* @return {@link Result}<{@link T}> * @return {@link Result}<{@link T}>
*/ */
<T> Result<T> lockControl(String signalId, PhaseLock phaseLock) throws Exception; <T> Result<T> lockControl(String signalId, PhaseLockVO phaseLock) throws Exception;
/** /**
* 步进控制 * 步进控制
...@@ -96,8 +101,11 @@ public interface ControlCommandService { ...@@ -96,8 +101,11 @@ public interface ControlCommandService {
/** /**
* 相位配时下发 * 相位配时下发
*
* @param timePlans 批量下发的配时数据
* @return {@link Result}<{@link T}>
*/ */
<T> Result<T> phaseTimingSend(); <T> Result<T> phaseTimingSend(List<TimePlanVO> timePlans);
/** /**
* 相位差下发 * 相位差下发
......
...@@ -8,20 +8,21 @@ import com.hikvision.artemis.sdk.config.ArtemisConfig; ...@@ -8,20 +8,21 @@ import com.hikvision.artemis.sdk.config.ArtemisConfig;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.wanji.utc.common.Result; import net.wanji.utc.common.Result;
import net.wanji.utc.common.baseentity.BaseCrossInfo; import net.wanji.utc.common.baseentity.BaseCrossInfo;
import net.wanji.utc.common.constant.Constants;
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.entity.SignalRunring;
import net.wanji.utc.mapper.CrossPhaseMapper; import net.wanji.utc.mapper.CrossPhaseMapper;
import net.wanji.utc.po.CrossPhasePO; import net.wanji.utc.po.CrossPhasePO;
import net.wanji.utc.service.ControlCommandService; import net.wanji.utc.service.ControlCommandService;
import net.wanji.utc.service.HkGetSignalMethodService; import net.wanji.utc.service.HkGetSignalMethodService;
import net.wanji.utc.vo.PhaseLock; import net.wanji.utc.vo.PhaseLockVO;
import net.wanji.utc.vo.plansend.PlanSendVO; import net.wanji.utc.vo.plansend.PlanSendVO;
import net.wanji.utc.vo.plansend.SectionPlan; import net.wanji.utc.vo.plansend.SectionPlan;
import net.wanji.utc.vo.plansend.TimeSlice; import net.wanji.utc.vo.plansend.TimeSlice;
import net.wanji.utc.vo.signal.SignalLightStateVo; import net.wanji.utc.vo.signal.SignalLightStateVo;
import net.wanji.utc.vo.signal.SignalRingVo; import net.wanji.utc.vo.signal.SignalRingVo;
import net.wanji.utc.vo.timeplan.Phase;
import net.wanji.utc.vo.timeplan.Ring;
import net.wanji.utc.vo.timeplan.TimePlanVO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
...@@ -68,7 +69,7 @@ public class HKControlCommandServiceImpl implements ControlCommandService { ...@@ -68,7 +69,7 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
} }
@Override @Override
public <T> Result<T> lockControl(String signalId, PhaseLock phaseLock) throws Exception{ public <T> Result<T> lockControl(String signalId, PhaseLockVO phaseLock) throws Exception {
if (phaseLock.getCommand().equals(TRUE)) { if (phaseLock.getCommand().equals(TRUE)) {
return updateManualLock(signalId, phaseLock.getLockTime()); return updateManualLock(signalId, phaseLock.getLockTime());
} else { } else {
...@@ -91,7 +92,6 @@ public class HKControlCommandServiceImpl implements ControlCommandService { ...@@ -91,7 +92,6 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
* 控制命令为灯态锁定时,设置相关车道参数信息 * 控制命令为灯态锁定时,设置相关车道参数信息
* *
* @param signalId, 信号机id * @param signalId, 信号机id
* @param obj
*/ */
private void setSignalControlLaneInfos(String signalId, JSONObject obj) throws Exception { private void setSignalControlLaneInfos(String signalId, JSONObject obj) throws Exception {
//获取当前运行方案的相位id //获取当前运行方案的相位id
...@@ -140,7 +140,7 @@ public class HKControlCommandServiceImpl implements ControlCommandService { ...@@ -140,7 +140,7 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
@Override @Override
public <T> Result<T> stepControl(String signalId, String sourceType, String signalType, Integer command, Integer stepNum) { public <T> Result<T> stepControl(String signalId, String sourceType, String signalType, Integer command, Integer stepNum) {
if (command.equals(TRUE)) { if (command.equals(TRUE)) {
return updateManualStep(signalId, STEP_CONTROL, stepNum); return updateManualStep(signalId, stepNum);
} else { } else {
return controlSignal(signalId, CANCEL_STEP_CONTROL); return controlSignal(signalId, CANCEL_STEP_CONTROL);
} }
...@@ -170,8 +170,70 @@ public class HKControlCommandServiceImpl implements ControlCommandService { ...@@ -170,8 +170,70 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
} }
@Override @Override
public <T> Result<T> phaseTimingSend() { public <T> Result<T> phaseTimingSend(List<TimePlanVO> timePlans) {
return null; try {
for (TimePlanVO timePlanVo : timePlans) {
if (!phaseTimingSend(timePlanVo)) {
//发送失败
log.error("批量下发配时方案信息到路口信号机或信号系统中异常!");
throw new ControlException("批量下发配时方案信息到路口信号机或信号系统中异常!");
}
//暂停1秒
Thread.sleep(1000);
}
return Result.success();
} catch (InterruptedException e) {
log.error("批量配时方案下发-->线程等待异常!{}", e.getMessage());
throw new ControlException("批量配时方案下发-->线程等待异常!");
}
}
private boolean phaseTimingSend(TimePlanVO timePlan) {
try {
//获取某一路口下海康相位和车道关系
Map<Integer, JSONArray> laneArrayMap = new HashMap<>();
getPhaseRelationLanes(timePlan.getCode(), laneArrayMap, new HashMap<>());
//拼接参数
JSONObject bodyObjectParam = new JSONObject();
JSONArray patternArrayParam = new JSONArray();
JSONObject patternObjectParam = new JSONObject();
patternObjectParam.put("patternNo", timePlan.getTimePlanId());
patternObjectParam.put("offSet", timePlan.getOffset());
patternObjectParam.put("cycle", timePlan.getCycleLen());
List<Ring> ringList = timePlan.getRings();
JSONArray ringsArrayParam = new JSONArray();
for (Ring ring : ringList) {
List<Phase> phaseList = ring.getPhases();
JSONArray phaseArrayParam = new JSONArray();
for (Phase phase : phaseList) {
JSONObject phaseObjectParam = new JSONObject();
phaseObjectParam.put("phaseNo", phase.getPhaseId());
phaseObjectParam.put("phaseName", phase.getPhaseName());
phaseObjectParam.put("phaseLength", phase.getPhaseTime());
phaseObjectParam.put("phaseSequence", phase.getPhaseOrderId());
//车道列表参数,适配海康车道参数
if (laneArrayMap.containsKey(Integer.valueOf(phase.getPhaseId()))) {
phaseObjectParam.put("lanes", laneArrayMap.get(Integer.valueOf(phase.getPhaseId())));
}
phaseArrayParam.add(phaseObjectParam);
}
JSONObject ringObjectParam = new JSONObject();
ringObjectParam.put("ringNo", ring.getRingNo());
ringObjectParam.put("phaseList", phaseArrayParam);
ringsArrayParam.add(ringObjectParam);
}
patternObjectParam.put("rings", ringsArrayParam);
patternArrayParam.add(patternObjectParam);
bodyObjectParam.put("crossCode", timePlan.getCode());
bodyObjectParam.put("patternList", patternArrayParam);
//获取下发配时方案的url
String strResult = ArtemisHttpUtil.doPostStringArtemis(artemisConfig, getPathMapByApiCode("updateTimePlans"), bodyObjectParam.toJSONString(), null, null, "application/json", null);
JSONObject object = JSON.parseObject(strResult);
return HK_SUCCESS_CODE.equals(object.getInteger(HK_CODE_KEY));
} catch (Exception e) {
log.error("系统繁忙,服务器端内部错误!", e);
throw new ControlException("系统繁忙,服务器端内部错误!");
}
} }
@Override @Override
...@@ -179,10 +241,10 @@ public class HKControlCommandServiceImpl implements ControlCommandService { ...@@ -179,10 +241,10 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
return null; return null;
} }
private <T> Result<T> updateManualStep(String signalId, Integer runningMode, Integer stepNum) { private <T> Result<T> updateManualStep(String signalId, Integer stepNum) {
JSONObject bodyObjectParam = new JSONObject(); JSONObject bodyObjectParam = new JSONObject();
bodyObjectParam.put("crossCode", signalId); bodyObjectParam.put("crossCode", signalId);
bodyObjectParam.put("controlType", runningMode); bodyObjectParam.put("controlType", STEP_CONTROL);
int controlNo = 0; int controlNo = 0;
if (0 != stepNum) { if (0 != stepNum) {
//根据当前实时灯态获取运行的相位 //根据当前实时灯态获取运行的相位
......
...@@ -11,8 +11,8 @@ import lombok.Data; ...@@ -11,8 +11,8 @@ import lombok.Data;
* @date 2022/11/15 15:05:57 * @date 2022/11/15 15:05:57
*/ */
@Data @Data
@ApiModel(value = "PhaseLock", description = "相位锁定实体类") @ApiModel(value = "PhaseLockVO", description = "相位锁定实体类")
public class PhaseLock { public class PhaseLockVO {
/** /**
* 相位编号 * 相位编号
......
package net.wanji.utc.vo.timeplan;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author hfx
* @version 1.0
* Created on 2019/7/15 10:28
* @description: [固定灯色灯组方案下发]
*/
@Data
@ApiModel(value = "FixedLightGroupVo", description = "固定灯色灯组实体")
public class FixedLightGroupVo {
//灯组编号
@ApiModelProperty(value = "灯组编号,逗号分隔")
private String lightGroupNo;
//固定灯色
@ApiModelProperty(value = "固定灯色")
private Integer color;
}
package net.wanji.utc.vo.timeplan;
import io.swagger.annotations.ApiModel;
import lombok.Data;
/**
* @author hfx
* @version 1.0
* @Description: [行人方向]
* Created on 2019/4/19 17:20
*/
@Data
@ApiModel(value = "Pdirection", description = "行人方向")
public class Pdirection {
//方向
private Integer direction;
private Integer second;
private Integer inoutType;
}
package net.wanji.utc.vo.timeplan;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author hfx
* @version 1.0
* @Description: [相位数据实体]
* Created on 2019/4/19 16:56
*/
@Data
@ApiModel(value = "Phase", description = "相位数据实体")
public class Phase {
//相位编号
@ApiModelProperty(value = "相位编号")
private String phaseId;
//相位名称
@ApiModelProperty(value = "相位名称")
private String phaseName;
//相位描述
@ApiModelProperty(value = "相位描述")
private String phaseDesc;
//相位顺序号
@ApiModelProperty(value = "相位顺序号")
private Integer phaseOrderId;
//原版本相位时长(绿信比)
@ApiModelProperty(value = "原版本相位时长(绿信比)")
private Integer originalTime;
//相位时长(绿信比)
@ApiModelProperty(value = "相位时长(绿信比)")
private Integer phaseTime;
//最大绿时间
@ApiModelProperty(value = "最大绿时间")
private Integer maxgreenTime;
//最小绿时间
@ApiModelProperty(value = "最小绿时间")
private Integer mingreenTime;
//灯组编号
@ApiModelProperty(value = "灯组编号")
private String lightGroupNo;
//黄灯时间
@ApiModelProperty(value = "黄灯时间")
private Integer yellowTime;
//红灯时间
@ApiModelProperty(value = "红灯时间")
private Integer redTime;
//所有跟随相位,相位编号
@ApiModelProperty(value = "所有跟随相位,相位编号")
private String[] followPhases;
//步数据对象列表
@ApiModelProperty(value = "步数据对象列表")
private List<Step> steps;
//机动车方向
@ApiModelProperty(value = "机动车方向")
private List<Vdirection> vdirections;
//行人方向
@ApiModelProperty(value = "行人方向")
private List<Pdirection> pdirections;
}
package net.wanji.utc.vo.timeplan;
import lombok.Data;
import java.util.List;
/**
* @author hfx
* @version 1.0
* @Description: [环数据对象]
* Created on 2019/4/22 15:54
*/
@Data
public class Ring {
//环编号
private String ringNo;
//相位对象列表
private List<Phase> phases;
}
package net.wanji.utc.vo.timeplan;
import lombok.Data;
/**
* @author hfx
* @version 1.0
* @Description: [步数据对象]
* Created on 2019/4/22 15:56
*/
@Data
public class Step {
//步号:1,2,3,4,5,6
private Integer stepNo;
//步类型:1 green 2 greenflash 3 pedflash 4 yellow 5 red 6 off
private Integer stepType;
//步长
private Integer stepLen;
}
package net.wanji.utc.vo.timeplan;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.wanji.utc.common.baseentity.BaseCrossInfo;
import java.util.List;
/**
* @author hfx
* @version 1.0
* @Description: [配时方案实体类]
* Created on 2019/4/22 15:40
*/
@Data
@ApiModel(value = "TimePlanVo", description = "配时方案实体类")
public class TimePlanVO extends BaseCrossInfo {
//配时方案编号
@ApiModelProperty(value = "配时方案编号", required = true)
private String timePlanId;
//配时方案描述
@ApiModelProperty(value = "配时方案描述")
private String timePlanDesc;
//相位方案编号
@ApiModelProperty(value = "相位方案编号")
private String phasePlanId;
//周期长度
@ApiModelProperty(value = "周期长度")
private Integer cycleLen;
//协调相位编号
@ApiModelProperty(value = "协调相位编号")
private String coordPhaseId;
//相位差
@ApiModelProperty(value = "相位差")
private Integer offset;
//环数量 1 一环 2 两环
@ApiModelProperty(value = "环数量 1 一环 2 两环")
private String ringCount;
//环数据对象列表
@ApiModelProperty(value = "环数据对象列表")
private List<Ring> rings;
//始终固定灯色的灯组(可选)
@ApiModelProperty(value = "始终固定灯色的灯组(可选)")
private List<FixedLightGroupVo> fixedLightGroups;
//是否启用信号机自适应功能(可选,默认为 false)
@ApiModelProperty(value = "是否启用信号机自适应功能(可选,默认为 false)")
private Boolean selfAdaptive;
//操作类型 1:下发 2:恢复 3:下发返回300特殊处理 4:恢复返回300特殊处理
@ApiModelProperty(value = "操作类型 1:下发 2:恢复 3:下发返回300特殊处理 4:恢复返回300特殊处理")
private Integer optType;
//顺序号
@ApiModelProperty(value = "顺序号")
private Integer orderId;
}
package net.wanji.utc.vo.timeplan;
import io.swagger.annotations.ApiModel;
import lombok.Data;
/**
* @author hfx
* @version 1.0
* @Description: [机动车方向]
* Created on 2019/4/19 17:20
*/
@Data
@ApiModel(value = "Vdirection", description = "机动车方向")
public class Vdirection {
//方向, 方向:0 北 1 东北 2 东 3 东南 4 南 5 西南 6 西 7 西北
private Integer direction;
//车辆类型
private Integer turnType;
}
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