Commit 69a0745d authored by duanruiming's avatar duanruiming

信号机控制指令-万集统一标准服务

parent cc4dce64
......@@ -4,11 +4,11 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.wanji.utc.common.Result;
import net.wanji.utc.service.control.ControlCommandService;
import net.wanji.utc.entity.JsonViewObject;
import net.wanji.utc.service.control.ControlCommandStrategyService;
import net.wanji.utc.vo.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
......@@ -23,98 +23,99 @@ import static net.wanji.utc.common.constant.Constants.*;
@Slf4j
@RestController
@RequestMapping("/controlCommand")
@RequiredArgsConstructor
@Api(value = "控制指令接口", description = "控制指令接口", tags = "控制指令接口")
public class ControlCommandController {
@Autowired
private ControlCommandService hkControlCommandService;
private final ControlCommandStrategyService controlCommandStrategyService;
/**
* 信号机方案下发
*
* @param schemeSendVO 方案下发VO
* @return {@link Result}<{@link T}>
* @return
*/
@ApiOperation(value = "信号机方案下发-基础方案下发", notes = "信号机方案下发-基础方案下发")
@PostMapping("/schemeSend")
public <T> Result<T> schemeSend(@RequestBody SchemeSendVO schemeSendVO) throws Exception {
return hkControlCommandService.schemeSend(schemeSendVO);
public JsonViewObject schemeSend(@RequestBody @Validated SchemeSendVO schemeSendVO) throws Exception {
return controlCommandStrategyService.schemeSendStrategy(schemeSendVO);
}
/**
* 下发信号机计划
*
* @param planSendVO 计划下发VO
* @return {@link Result}<{@link T}>
* @return
*/
@ApiOperation(value = "计划下发-计划信息、时段信息", notes = "计划下发-计划信息、时段信息")
@PostMapping("/planSend")
public <T> Result<T> planSend(@RequestBody PlanSendVO planSendVO) throws Exception {
return hkControlCommandService.planSend(planSendVO);
public JsonViewObject planSend(@RequestBody PlanSendVO planSendVO) throws Exception {
return controlCommandStrategyService.planSendStrategy(planSendVO);
}
/**
* 时间表下发
*
* @param scheduleSendVO 时间表下发VO
* @return {@link Result}<{@link T}>
* @return
* @throws Exception 异常
*/
@ApiOperation(value = "时间表下发-时间表信息", notes = "时间表下发-时间表信息")
@PostMapping("/scheduleSend")
public <T> Result<T> scheduleSend(@RequestBody ScheduleSendVO scheduleSendVO) throws Exception {
return hkControlCommandService.scheduleSend(scheduleSendVO);
public JsonViewObject scheduleSend(@RequestBody ScheduleSendVO scheduleSendVO) throws Exception {
return controlCommandStrategyService.scheduleSendStrategy(scheduleSendVO);
}
/**
* 相位配时下发-(下发相位参数)
*
* @return {@link Result}<{@link T}>
* @return
* @throws InterruptedException 中断异常
*/
@ApiOperation(value = "相位配时下发-(下发相位参数)", notes = "相位配时下发-(下发相位参数)")
@PostMapping("/phaseTimingSend")
public <T> Result<T> phaseTimingSend(@RequestBody PhaseTimingSendVO phaseTimingSendVO) throws Exception {
return hkControlCommandService.phaseTimingSend(phaseTimingSendVO);
public JsonViewObject phaseTimingSend(@RequestBody PhaseTimingSendVO phaseTimingSendVO) throws Exception {
return controlCommandStrategyService.phaseTimingSendStrategy(phaseTimingSendVO);
}
/**
* 全红控制
*
* @param commandVO 控制指令VO
* @return {@link Result}<{@link T}>
* @return
* @throws Exception 异常
*/
@ApiOperation(value = "全红控制-路口全红控制/恢复", notes = "全红控制-路口全红控制/恢复")
@PostMapping("/allRedControl")
public <T> Result<T> allRedControl(@RequestBody @Validated ControlCommandVO commandVO) throws Exception {
return hkControlCommandService.setSignalControl(commandVO.getCrossCode(), commandVO.getCommand(), ALL_RED_CONTROL);
public JsonViewObject allRedControl(@RequestBody @Validated ControlCommandVO commandVO) throws Exception {
return controlCommandStrategyService.setSignalControlStrategy(commandVO.getCrossCode(), commandVO.getCommand(), ALL_RED_CONTROL);
}
/**
* 黄闪控制
*
* @param commandVO 控制指令VO
* @return {@link Result}<{@link T}>
* @return
* @throws Exception 异常
*/
@ApiOperation(value = "黄闪控制-路口黄闪控制/恢复", notes = "黄闪控制-路口黄闪控制/恢复")
@PostMapping("/yellowLightControl")
public <T> Result<T> yellowLightControl(@RequestBody @Validated ControlCommandVO commandVO) throws Exception {
return hkControlCommandService.setSignalControl(commandVO.getCrossCode(), commandVO.getCommand(), YELLOW_LIGHT_CONTROL);
public JsonViewObject yellowLightControl(@RequestBody @Validated ControlCommandVO commandVO) throws Exception {
return controlCommandStrategyService.setSignalControlStrategy(commandVO.getCrossCode(), commandVO.getCommand(), YELLOW_LIGHT_CONTROL);
}
/**
* 关灯控制
*
* @param commandVO 控制指令VO
* @return {@link Result}<{@link T}>
* @return
* @throws Exception 异常
*/
@ApiOperation(value = "关灯控制-路口关灯控制/开灯", notes = "关灯控制-路口关灯控制/开灯")
@PostMapping("/closeLightControl")
public <T> Result<T> closeLightControl(@RequestBody @Validated ControlCommandVO commandVO) throws Exception {
return hkControlCommandService.setSignalControl(commandVO.getCrossCode(), commandVO.getCommand(), CLOSE_LIGHT_CONTROL);
public JsonViewObject closeLightControl(@RequestBody @Validated ControlCommandVO commandVO) throws Exception {
return controlCommandStrategyService.setSignalControlStrategy(commandVO.getCrossCode(), commandVO.getCommand(), CLOSE_LIGHT_CONTROL);
}
/**
......@@ -123,7 +124,7 @@ public class ControlCommandController {
* @param code 信号id
* @param command 命令
* @param stepNum 一步num
* @return {@link Result}<{@link T}>
* @return
*/
@ApiOperation(value = "步进控制-步进控制/恢复", notes = "步进控制-步进控制/恢复")
@ApiImplicitParams({
......@@ -131,35 +132,35 @@ public class ControlCommandController {
@ApiImplicitParam(name = "stepNum", value = "0 顺序步进 n 跳过n个相位", paramType = "query", required = true, dataType = "int"),
})
@PostMapping("/stepControl")
public <T> Result<T> stepControl(@RequestParam String code,
@RequestParam Integer command,
@RequestParam int stepNum) throws Exception {
return hkControlCommandService.stepControl(code, command, stepNum);
public JsonViewObject stepControl(@RequestParam String code,
@RequestParam Integer command,
@RequestParam int stepNum) throws Exception {
return controlCommandStrategyService.stepControlStrategy(code, command, stepNum);
}
/**
* 恢复时间表
*
* @param code 信号id
* @return {@link Result}<{@link T}>
* @return
*/
@ApiOperation(value = "恢复时间表-恢复路口时间表执行", notes = "恢复时间表-恢复路口时间表执行")
@PostMapping("/recoverSchedule")
public <T> Result<T> recoverSchedule(@RequestParam String code) throws Exception {
return hkControlCommandService.recoverSchedule(code);
public JsonViewObject recoverSchedule(@RequestParam String code) throws Exception {
return controlCommandStrategyService.recoverScheduleStrategy(code);
}
/**
* 锁定控制
*
* @param commandVO 控制指令VO
* @return {@link Result}<{@link T}>
* @return
* @throws Exception 异常
*/
@ApiOperation(value = "锁定控制-相位锁定/解锁", notes = "锁定控制-相位锁定/解锁")
@PostMapping("/lockControl")
public <T> Result<T> lockControl(@RequestBody @Validated ControlCommandVO commandVO) throws Exception {
return hkControlCommandService.lockControl(commandVO);
public JsonViewObject lockControl(@RequestBody @Validated ControlCommandVO commandVO) throws Exception {
return controlCommandStrategyService.lockControlStrategy(commandVO);
}
/**
......@@ -167,7 +168,7 @@ public class ControlCommandController {
*/
@ApiOperation(value = "相位差下发", notes = "相位差下发")
@PostMapping("/phaseDiffSend")
public <T> Result<T> phaseDiffSend() {
return hkControlCommandService.phaseDiffSend();
public JsonViewObject phaseDiffSend() {
return controlCommandStrategyService.phaseDiffSendStrategy();
}
}
package net.wanji.utc.service.control;
import net.wanji.utc.common.Result;
import net.wanji.utc.entity.JsonViewObject;
import net.wanji.utc.service.rpc.RpcService;
import net.wanji.utc.vo.*;
/**
......@@ -9,37 +10,37 @@ import net.wanji.utc.vo.*;
* @author wuxiaokai
* @date 2022/11/15 14:02:36
*/
public interface ControlCommandService {
public interface ControlCommandService extends RpcService {
/**
* 方案下发
*/
<T> Result<T> schemeSend(SchemeSendVO schemeSendVO) throws Exception;
JsonViewObject schemeSend(SchemeSendVO schemeSendVO) throws Exception;
/**
* 计划下发
*
* @param planSendVO 计划下发VO
* @return {@link Result}<{@link T}>
* @return
*/
<T> Result<T> planSend(PlanSendVO planSendVO) throws Exception;
JsonViewObject planSend(PlanSendVO planSendVO) throws Exception;
/**
* 时间表下发
*
* @param scheduleSendVO 时间表下发VO
* @return {@link Result}<{@link T}>
* @return
*/
<T> Result<T> scheduleSend(ScheduleSendVO scheduleSendVO) throws Exception;
JsonViewObject scheduleSend(ScheduleSendVO scheduleSendVO) throws Exception;
/**
* 锁定控制
*
* @param commandVO 控制指令VO
* @return {@link Result}<{@link T}>
* @return
* @throws Exception 异常
*/
<T> Result<T> lockControl(ControlCommandVO commandVO) throws Exception;
JsonViewObject lockControl(ControlCommandVO commandVO) throws Exception;
/**
* 步进控制
......@@ -47,10 +48,10 @@ public interface ControlCommandService {
* @param code 信号机编号
* @param command 1 开始步进 0 取消步进
* @param stepNum 0 顺序步进 n 跳过n个相位
* @return {@link Result}<{@link T}>
* @return
* @throws Exception 异常
*/
<T> Result<T> stepControl(String code, Integer command, Integer stepNum) throws Exception;
JsonViewObject stepControl(String code, Integer command, Integer stepNum) throws Exception;
/**
* 设置信号机控制模式
......@@ -58,30 +59,30 @@ public interface ControlCommandService {
* @param code 信号机编号
* @param command 指令 1 开 0 关
* @param commandType 命令类型
* @return {@link Result}<{@link T}>
* @return
* @throws Exception 异常
*/
<T> Result<T> setSignalControl(String code, Integer command, Integer commandType) throws Exception;
JsonViewObject setSignalControl(String code, Integer command, Integer commandType) throws Exception;
/**
* 恢复时间表
*
* @param code 信号机编号
* @return {@link Result}<{@link T}>
* @return
*/
<T> Result<T> recoverSchedule(String code) throws Exception;
JsonViewObject recoverSchedule(String code) throws Exception;
/**
* 相位配时下发
*
* @return {@link Result}<{@link T}>
* @return
* @throws InterruptedException 中断异常
*/
<T> Result<T> phaseTimingSend(PhaseTimingSendVO phaseTimingSendVO) throws Exception;
JsonViewObject phaseTimingSend(PhaseTimingSendVO phaseTimingSendVO) throws Exception;
/**
* 相位差下发
*/
<T> Result<T> phaseDiffSend();
JsonViewObject phaseDiffSend();
}
package net.wanji.utc.service.control;
import net.wanji.utc.entity.JsonViewObject;
import net.wanji.utc.vo.*;
/**
* @author duanruiming
* @date 2023/01/12 9:44
*/
public interface ControlCommandStrategyService {
/**
* 方案下发
*/
JsonViewObject schemeSendStrategy(SchemeSendVO schemeSendVO) throws Exception;
/**
* 计划下发
*
* @param planSendVO 计划下发VO
* @return
*/
JsonViewObject planSendStrategy(PlanSendVO planSendVO) throws Exception;
/**
* 时间表下发
*
* @param scheduleSendVO 时间表下发VO
* @return
*/
JsonViewObject scheduleSendStrategy(ScheduleSendVO scheduleSendVO) throws Exception;
/**
* 锁定控制
*
* @param commandVO 控制指令VO
* @return
* @throws Exception 异常
*/
JsonViewObject lockControlStrategy(ControlCommandVO commandVO) throws Exception;
/**
* 步进控制
*
* @param code 信号机编号
* @param command 1 开始步进 0 取消步进
* @param stepNum 0 顺序步进 n 跳过n个相位
* @return
* @throws Exception 异常
*/
JsonViewObject stepControlStrategy(String code, Integer command, Integer stepNum) throws Exception;
/**
* 设置信号机控制模式
*
* @param code 信号机编号
* @param command 指令 1 开 0 关
* @param commandType 命令类型
* @return
* @throws Exception 异常
*/
JsonViewObject setSignalControlStrategy(String code, Integer command, Integer commandType) throws Exception;
/**
* 恢复时间表
*
* @param code 信号机编号
* @return
*/
JsonViewObject recoverScheduleStrategy(String code) throws Exception;
/**
* 相位配时下发
*
* @return
* @throws InterruptedException 中断异常
*/
JsonViewObject phaseTimingSendStrategy(PhaseTimingSendVO phaseTimingSendVO) throws Exception;
/**
* 相位差下发
*/
JsonViewObject phaseDiffSendStrategy();
}
package net.wanji.utc.service.control.impl;
import lombok.RequiredArgsConstructor;
import net.wanji.utc.common.typeenum.BasicEnum;
import net.wanji.utc.common.typeenum.DateStyle;
import net.wanji.utc.entity.JsonViewObject;
import net.wanji.utc.mapper.*;
import net.wanji.utc.po.*;
import net.wanji.utc.service.control.ControlCommandStrategyService;
import net.wanji.utc.service.control.ControlCommandService;
import net.wanji.utc.util.StringUtils;
import net.wanji.utc.vo.*;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
/**
* @author duanruiming
* @date 2023/01/12 9:53
*/
@Service
@RequiredArgsConstructor
public class ControlCommandStrategyServiceImpl implements ControlCommandStrategyService {
@Resource(name = "hkControlCommandService")
ControlCommandService hkControlCommandService;
@Resource(name = "wanJiControlCommandService")
ControlCommandService wanJiControlCommandService;
private final CrossInfoMapper crossInfoMapper;
private final ManufacturerInfoMapper manufacturerInfoMapper;
private final CrossSchemeMapper crossSchemeMapper;
private final CrossPhaseMapper crossPhaseMapper;
private final CrossSectionMapper crossSectionMapper;
private final CrossPlanMapper crossPlanMapper;
private final CrossSchedulesMapper crossSchedulesMapper;
/**
* 通过路口编号获取厂商编码
*
* @param crossId
* @return
*/
public String getManufacturerCodeByCrossId(String crossId) {
// 获取厂商ID和信号机ID
CrossInfoPO crossInfoPO = crossInfoMapper.selectByPrimaryKey(crossId);
String signalId = crossInfoPO.getCode();
Integer manufacturerId = crossInfoPO.getManufacturerId();
// 获取厂商代码
ManufacturerInfoPO manufacturerInfoPO = manufacturerInfoMapper.selectById(manufacturerId);
return manufacturerInfoPO.getCode();
}
@Transactional(rollbackFor = Exception.class)
@Override
public JsonViewObject schemeSendStrategy(SchemeSendVO schemeSendVO) throws Exception {
JsonViewObject jsonViewObject;
String manufacturerIdCode = getManufacturerCodeByCrossId(schemeSendVO.getCrossCode());
if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) {
jsonViewObject = hkControlCommandService.schemeSend(schemeSendVO);
} else {
jsonViewObject = wanJiControlCommandService.schemeSend(schemeSendVO);
}
schemeSendDataInsert(schemeSendVO);
return jsonViewObject;
}
private void schemeSendDataInsert(SchemeSendVO schemeSendVO) {
// 入库操作
List<CrossSchemePO> crossSchemePOList = new ArrayList<>();
schemeSendVO.getPatternList().forEach(pattern -> {
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<>();
ring.getPhaseList().forEach(phase -> {
CrossPhasePO crossPhasePO = new CrossPhasePO();
crossPhasePO.setPhaseNo(phase.getPhaseNo());
crossPhasePO.setName(phase.getPhaseName());
crossPhasePO.setSort(Integer.parseInt(phase.getSort()));
crossPhasePO.setCrossId(schemeSendVO.getCrossCode());
crossPhasePO.setPlanId(Integer.parseInt(pattern.getPatternNo()));
crossPhasePO.setRingNo(Integer.parseInt(ring.getRingNo()));
crossPhasePO.setControlMode(Integer.parseInt(phase.getControlMode()));
crossPhasePO.setPhaseTime(Integer.parseInt(phase.getPhaseTime()));
crossPhasePO.setGreenTime(Integer.parseInt(phase.getGreenTime()));
crossPhasePO.setGreenFlashTime(Integer.parseInt(phase.getGreenFlashTime()));
crossPhasePO.setPedFlashTime(Integer.parseInt(phase.getPedFlashTime()));
crossPhasePO.setYellowTime(Integer.parseInt(phase.getYellowTime()));
crossPhasePO.setRedTime(Integer.parseInt(phase.getRedTime()));
crossPhasePO.setMinGreenTime(Integer.parseInt(phase.getMinGreenTime()));
crossPhasePO.setMaxGreenTime(Integer.parseInt(phase.getMaxGreenTime()));
crossPhasePOList.add(crossPhasePO);
});
// 入库路口相位表
crossPhaseMapper.insertBatch(crossPhasePOList);
});
});
// 入库信号方案表
crossSchemeMapper.insertBatch(crossSchemePOList);
}
@Transactional(rollbackFor = Exception.class)
@Override
public JsonViewObject planSendStrategy(PlanSendVO planSendVO) throws Exception {
JsonViewObject jsonViewObject;
String manufacturerIdCode = getManufacturerCodeByCrossId(planSendVO.getCrossCode());
if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) {
jsonViewObject = hkControlCommandService.planSend(planSendVO);
} else {
jsonViewObject = wanJiControlCommandService.planSend(planSendVO);
}
planSendDataInsert(planSendVO);
return jsonViewObject;
}
private void planSendDataInsert(PlanSendVO planSendVO) {
List<CrossPlanPO> crossPlanPOList = new ArrayList<>();
planSendVO.getPlanList().forEach(plan -> {
CrossPlanPO crossPlanPO = new CrossPlanPO();
crossPlanPO.setPlanNo(plan.getPlanNo());
crossPlanPO.setName(plan.getPlanDescribe());
crossPlanPO.setCrossId(planSendVO.getCrossCode());
crossPlanPOList.add(crossPlanPO);
List<CrossSectionPO> crossSectionPOList = new ArrayList<>();
plan.getSectionList().forEach(section -> {
CrossSectionPO crossSectionPO = new CrossSectionPO();
crossSectionPO.setSectionNo(section.getSectionNo());
crossSectionPO.setStartTime(section.getBeginTime());
crossSectionPO.setEndTime(section.getEndTime());
crossSectionPO.setCrossId(planSendVO.getCrossCode());
crossSectionPO.setPlanId(Integer.parseInt(plan.getPlanNo()));
crossSectionPO.setControlMode(Integer.parseInt(section.getControlMode()));
crossSectionPO.setScemeId(Integer.parseInt(section.getPatternNo()));
crossSectionPOList.add(crossSectionPO);
});
// 入库路口时段表
crossSectionMapper.insertBatch(crossSectionPOList);
});
// 入库路口计划表
crossPlanMapper.insertBatch(crossPlanPOList);
}
@Transactional(rollbackFor = Exception.class)
@Override
public JsonViewObject scheduleSendStrategy(ScheduleSendVO scheduleSendVO) throws Exception {
JsonViewObject jsonViewObject;
String manufacturerIdCode = getManufacturerCodeByCrossId(scheduleSendVO.getCrossCode());
if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) {
jsonViewObject = hkControlCommandService.scheduleSend(scheduleSendVO);
} else {
jsonViewObject = wanJiControlCommandService.scheduleSend(scheduleSendVO);
}
scheduleSendDataInsert(scheduleSendVO);
return jsonViewObject;
}
private void scheduleSendDataInsert(ScheduleSendVO scheduleSendVO) {
// 1、入库操作
SimpleDateFormat sdf = new SimpleDateFormat(DateStyle.YYYY_MM_DD.getValue());
ArrayList<CrossSchedulesPO> crossSchedulesPOS = new ArrayList<>();
scheduleSendVO.getSchedules().forEach(schedule -> {
schedule.getWeeks().forEach(week -> {
CrossSchedulesPO schedulesPO = new CrossSchedulesPO();
if (week.getWeekNum() >= 6) {
schedulesPO.setName("周末");
} else {
schedulesPO.setName("工作日");
}
schedulesPO.setCrossId(scheduleSendVO.getCrossCode());
schedulesPO.setPlanId(week.getPlanNo());
schedulesPO.setWeek(week.getWeekNum());
schedulesPO.setSpecialDate(null);
crossSchedulesPOS.add(schedulesPO);
});
schedule.getSpecialDays().forEach(specialDay -> {
CrossSchedulesPO schedulesPO = new CrossSchedulesPO();
schedulesPO.setName("特殊日期");
schedulesPO.setCrossId(scheduleSendVO.getCrossCode());
schedulesPO.setPlanId(specialDay.getPlanNo());
schedulesPO.setWeek(null);
try {
schedulesPO.setSpecialDate(sdf.parse(specialDay.getDateStr()));
} catch (ParseException e) {
schedulesPO.setSpecialDate(null);
}
crossSchedulesPOS.add(schedulesPO);
});
});
// 入库时间表
crossSchedulesMapper.insertBatch(crossSchedulesPOS);
}
@Override
public JsonViewObject lockControlStrategy(ControlCommandVO commandVO) throws Exception {
JsonViewObject jsonViewObject;
String manufacturerIdCode = getManufacturerCodeByCrossId(commandVO.getCrossCode());
if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) {
jsonViewObject = hkControlCommandService.lockControl(commandVO);
} else {
jsonViewObject = wanJiControlCommandService.lockControl(commandVO);
}
return jsonViewObject;
}
@Override
public JsonViewObject stepControlStrategy(String crossId, Integer command, Integer stepNum) throws Exception {
JsonViewObject jsonViewObject;
String manufacturerIdCode = getManufacturerCodeByCrossId(crossId);
if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) {
jsonViewObject = hkControlCommandService.stepControl(crossId, command, stepNum);
} else {
jsonViewObject = wanJiControlCommandService.stepControl(crossId, command, stepNum);
}
return jsonViewObject;
}
@Override
public JsonViewObject setSignalControlStrategy(String crossId, Integer command, Integer commandType) throws Exception {
JsonViewObject jsonViewObject;
String manufacturerIdCode = getManufacturerCodeByCrossId(crossId);
if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) {
jsonViewObject = hkControlCommandService.setSignalControl(crossId, command, commandType);
} else {
jsonViewObject = wanJiControlCommandService.setSignalControl(crossId, command, commandType);
}
return jsonViewObject;
}
@Override
public JsonViewObject recoverScheduleStrategy(String crossId) throws Exception {
JsonViewObject jsonViewObject;
String manufacturerIdCode = getManufacturerCodeByCrossId(crossId);
if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) {
jsonViewObject = hkControlCommandService.recoverSchedule(crossId);
} else {
jsonViewObject = wanJiControlCommandService.recoverSchedule(crossId);
}
return jsonViewObject;
}
@Override
public JsonViewObject phaseTimingSendStrategy(PhaseTimingSendVO phaseTimingSendVO) throws Exception {
JsonViewObject jsonViewObject;
String manufacturerIdCode = getManufacturerCodeByCrossId(phaseTimingSendVO.getCrossCode());
if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) {
jsonViewObject = hkControlCommandService.phaseTimingSend(phaseTimingSendVO);
} else {
jsonViewObject = wanJiControlCommandService.phaseTimingSend(phaseTimingSendVO);
}
return jsonViewObject;
}
@Override
public JsonViewObject phaseDiffSendStrategy() {
return null;
}
}
......@@ -7,16 +7,17 @@ import com.google.common.collect.Lists;
import com.hikvision.artemis.sdk.ArtemisHttpUtil;
import com.hikvision.artemis.sdk.config.ArtemisConfig;
import lombok.extern.slf4j.Slf4j;
import net.wanji.utc.common.Result;
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.DateStyle;
import net.wanji.utc.dto.hk.DownloadPlanSpandsDTO;
import net.wanji.utc.dto.hk.DownloadScheduleDTO;
import net.wanji.utc.dto.hk.DownloadTimeSpandsDTO;
import net.wanji.utc.entity.JsonViewObject;
import net.wanji.utc.mapper.*;
import net.wanji.utc.po.*;
import net.wanji.utc.po.CrossInfoPO;
import net.wanji.utc.po.CrossPhasePO;
import net.wanji.utc.po.ManufacturerInfoPO;
import net.wanji.utc.service.control.ControlCommandService;
import net.wanji.utc.service.runninginfo.HkLightsStatusService;
import net.wanji.utc.util.FieldUtil;
......@@ -25,8 +26,6 @@ import net.wanji.utc.vo.*;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
......@@ -69,363 +68,243 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
private ManufacturerInfoMapper manufacturerInfoMapper;
@Override
public <T> Result<T> schemeSend(SchemeSendVO schemeSendVO) throws Exception {
public JsonViewObject schemeSend(SchemeSendVO schemeSendVO) throws Exception {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
// 厂商 HK
ManufacturerInfoPO manufacturerInfoPO = checkCrossCode(schemeSendVO.getCrossCode());
if (manufacturerInfoPO.getCode().equals(BasicEnum.ManufacturerEnum.HK.getCode())) {
// 1、组装参数, 下发海康信号机
DownloadPlanSpandsDTO dto = new DownloadPlanSpandsDTO();
// 将路口code转换为信号机code
//dto.setCrossCode(schemeSendVO.getCrossCode());
dto.setCrossCode(manufacturerInfoPO.getName());
List<DownloadPlanSpandsDTO.Pattern> patternList = new ArrayList<>();
schemeSendVO.getPatternList().forEach(pattern -> {
DownloadPlanSpandsDTO.Pattern pattern1 = new DownloadPlanSpandsDTO.Pattern();
pattern1.setPatternNo(pattern.getPatternNo());
pattern1.setPatternName(pattern.getPatternName());
pattern1.setCoordPhase(pattern.getCoordPhase());
pattern1.setOffset(pattern.getOffset());
pattern1.setCycle(pattern.getCycle());
List<DownloadPlanSpandsDTO.Pattern.Ring> rings = new ArrayList<>();
pattern.getRings().forEach(ring -> {
DownloadPlanSpandsDTO.Pattern.Ring ring1 = new DownloadPlanSpandsDTO.Pattern.Ring();
ring1.setRingNo(ring.getRingNo());
List<DownloadPlanSpandsDTO.Pattern.Ring.Phase> phaseList = new ArrayList<>();
ring.getPhaseList().forEach(phase -> {
DownloadPlanSpandsDTO.Pattern.Ring.Phase phase1 = new DownloadPlanSpandsDTO.Pattern.Ring.Phase();
phase1.setPhaseNo(phase.getPhaseNo());
phase1.setPhaseName(phase.getPhaseName());
phase1.setPhaseLength(phase.getPhaseTime());
phase1.setPhaseSequence(phase.getSort());
phase1.setLanes(Lists.newArrayList());
phaseList.add(phase1);
});
ring1.setPhaseList(phaseList);
rings.add(ring1);
// 1、组装参数, 下发海康信号机
DownloadPlanSpandsDTO dto = new DownloadPlanSpandsDTO();
// 将路口code转换为信号机code
//dto.setCrossCode(schemeSendVO.getCrossCode());
dto.setCrossCode(manufacturerInfoPO.getName());
List<DownloadPlanSpandsDTO.Pattern> patternList = new ArrayList<>();
schemeSendVO.getPatternList().forEach(pattern -> {
DownloadPlanSpandsDTO.Pattern pattern1 = new DownloadPlanSpandsDTO.Pattern();
pattern1.setPatternNo(pattern.getPatternNo());
pattern1.setPatternName(pattern.getPatternName());
pattern1.setCoordPhase(pattern.getCoordPhase());
pattern1.setOffset(pattern.getOffset());
pattern1.setCycle(pattern.getCycle());
List<DownloadPlanSpandsDTO.Pattern.Ring> rings = new ArrayList<>();
pattern.getRings().forEach(ring -> {
DownloadPlanSpandsDTO.Pattern.Ring ring1 = new DownloadPlanSpandsDTO.Pattern.Ring();
ring1.setRingNo(ring.getRingNo());
List<DownloadPlanSpandsDTO.Pattern.Ring.Phase> phaseList = new ArrayList<>();
ring.getPhaseList().forEach(phase -> {
DownloadPlanSpandsDTO.Pattern.Ring.Phase phase1 = new DownloadPlanSpandsDTO.Pattern.Ring.Phase();
phase1.setPhaseNo(phase.getPhaseNo());
phase1.setPhaseName(phase.getPhaseName());
phase1.setPhaseLength(phase.getPhaseTime());
phase1.setPhaseSequence(phase.getSort());
phase1.setLanes(Lists.newArrayList());
phaseList.add(phase1);
});
pattern1.setRings(rings);
patternList.add(pattern1);
ring1.setPhaseList(phaseList);
rings.add(ring1);
});
dto.setPatternList(patternList);
// 下发信号机方案
Map<String, Object> fieldMap = FieldUtil.fieldMethod(dto);
Map<String, String> path = PathUtil.getPathMapByApiCode("downloadPlanSpands");
String strResult = ArtemisHttpUtil.doPostStringArtemis(artemisConfig,
path,
JSON.toJSONString(fieldMap), null, null, "application/json", null);
JSONObject obj = JSON.parseObject(strResult);
if (obj.get(HK_CODE_KEY).equals(HK_SUCCESS_STRING_CODE)) {
// 入库操作
List<CrossSchemePO> crossSchemePOList = new ArrayList<>();
schemeSendVO.getPatternList().forEach(pattern -> {
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<>();
ring.getPhaseList().forEach(phase -> {
CrossPhasePO crossPhasePO = new CrossPhasePO();
crossPhasePO.setPhaseNo(phase.getPhaseNo());
crossPhasePO.setName(phase.getPhaseName());
crossPhasePO.setSort(Integer.parseInt(phase.getSort()));
crossPhasePO.setCrossId(schemeSendVO.getCrossCode());
crossPhasePO.setPlanId(Integer.parseInt(pattern.getPatternNo()));
crossPhasePO.setRingNo(Integer.parseInt(ring.getRingNo()));
crossPhasePO.setControlMode(Integer.parseInt(phase.getControlMode()));
crossPhasePO.setPhaseTime(Integer.parseInt(phase.getPhaseTime()));
crossPhasePO.setGreenTime(Integer.parseInt(phase.getGreenTime()));
crossPhasePO.setGreenFlashTime(Integer.parseInt(phase.getGreenFlashTime()));
crossPhasePO.setPedFlashTime(Integer.parseInt(phase.getPedFlashTime()));
crossPhasePO.setYellowTime(Integer.parseInt(phase.getYellowTime()));
crossPhasePO.setRedTime(Integer.parseInt(phase.getRedTime()));
crossPhasePO.setMinGreenTime(Integer.parseInt(phase.getMinGreenTime()));
crossPhasePO.setMaxGreenTime(Integer.parseInt(phase.getMaxGreenTime()));
crossPhasePOList.add(crossPhasePO);
});
// 入库路口相位表
crossPhaseMapper.insertBatch(crossPhasePOList);
});
});
// 入库信号方案表
crossSchemeMapper.insertBatch(crossSchemePOList);
pattern1.setRings(rings);
patternList.add(pattern1);
});
dto.setPatternList(patternList);
// 下发信号机方案
Map<String, Object> fieldMap = FieldUtil.fieldMethod(dto);
Map<String, String> path = PathUtil.getPathMapByApiCode("downloadPlanSpands");
String strResult = ArtemisHttpUtil.doPostStringArtemis(artemisConfig,
path,
JSON.toJSONString(fieldMap), null, null, "application/json", null);
return Result.success("下发信号机方案成功");
}
return Result.error(obj.getString("msg"));
} else {
return null;
JSONObject obj = JSON.parseObject(strResult);
if (obj.get(HK_CODE_KEY).equals(HK_SUCCESS_STRING_CODE)) {
return jsonViewObject.success("海康下发信号机方案成功");
}
return jsonViewObject.fail(obj.getString("msg"));
}
@Override
public <T> Result<T> planSend(PlanSendVO planSendVO) throws Exception {
public JsonViewObject planSend(PlanSendVO planSendVO) throws Exception {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
// 厂商 HK
ManufacturerInfoPO manufacturerInfoPO = checkCrossCode(planSendVO.getCrossCode());
if (manufacturerInfoPO.getCode().equals(BasicEnum.ManufacturerEnum.HK.getCode())) {
// 1、下发信号机计划拼接参数
DownloadTimeSpandsDTO downloadTimeSpandsDTO = new DownloadTimeSpandsDTO();
List<DownloadTimeSpandsDTO.Data> dataList = new ArrayList<>();
DownloadTimeSpandsDTO.Data data = new DownloadTimeSpandsDTO.Data();
//data.setCrossCode(planSendVO.getCrossCode());
data.setCrossCode(manufacturerInfoPO.getName());
List<DownloadTimeSpandsDTO.Data.Plan> planList = new ArrayList<>();
planSendVO.getPlanList().forEach(plan -> {
DownloadTimeSpandsDTO.Data.Plan plan1 = new DownloadTimeSpandsDTO.Data.Plan();
plan1.setPlanNo(plan.getPlanNo());
List<DownloadTimeSpandsDTO.Data.Plan.Section> sectionList = new ArrayList<>();
plan.getSectionList().forEach(section -> {
DownloadTimeSpandsDTO.Data.Plan.Section section1 = new DownloadTimeSpandsDTO.Data.Plan.Section();
section1.setTimeSecNo(section.getSectionNo());
section1.setPatternNo(section.getPatternNo());
section1.setControlType(section.getControlMode());
section1.setBeginTime(section.getBeginTime());
sectionList.add(section1);
});
plan1.setSectionList(sectionList);
planList.add(plan1);
// 1、下发信号机计划拼接参数
DownloadTimeSpandsDTO downloadTimeSpandsDTO = new DownloadTimeSpandsDTO();
List<DownloadTimeSpandsDTO.Data> dataList = new ArrayList<>();
DownloadTimeSpandsDTO.Data data = new DownloadTimeSpandsDTO.Data();
//data.setCrossCode(planSendVO.getCrossCode());
data.setCrossCode(manufacturerInfoPO.getName());
List<DownloadTimeSpandsDTO.Data.Plan> planList = new ArrayList<>();
planSendVO.getPlanList().forEach(plan -> {
DownloadTimeSpandsDTO.Data.Plan plan1 = new DownloadTimeSpandsDTO.Data.Plan();
plan1.setPlanNo(plan.getPlanNo());
List<DownloadTimeSpandsDTO.Data.Plan.Section> sectionList = new ArrayList<>();
plan.getSectionList().forEach(section -> {
DownloadTimeSpandsDTO.Data.Plan.Section section1 = new DownloadTimeSpandsDTO.Data.Plan.Section();
section1.setTimeSecNo(section.getSectionNo());
section1.setPatternNo(section.getPatternNo());
section1.setControlType(section.getControlMode());
section1.setBeginTime(section.getBeginTime());
sectionList.add(section1);
});
data.setPlanList(planList);
dataList.add(data);
downloadTimeSpandsDTO.setData(dataList);
// 1、下发信号机计划
Map<String, Object> fieldMap = FieldUtil.fieldMethod(downloadTimeSpandsDTO);
Map<String, String> path = PathUtil.getPathMapByApiCode("downloadTimeSpands");
String strResult = ArtemisHttpUtil.doPostStringArtemis(artemisConfig,
path,
JSON.toJSONString(fieldMap), null, null, "application/json", null);
JSONObject obj = JSON.parseObject(strResult);
if (obj.get(HK_CODE_KEY).equals(HK_SUCCESS_STRING_CODE)) {
// 2、入库操作
List<CrossPlanPO> crossPlanPOList = new ArrayList<>();
planSendVO.getPlanList().forEach(plan -> {
CrossPlanPO crossPlanPO = new CrossPlanPO();
crossPlanPO.setPlanNo(plan.getPlanNo());
crossPlanPO.setName(plan.getPlanDescribe());
crossPlanPO.setCrossId(planSendVO.getCrossCode());
crossPlanPOList.add(crossPlanPO);
List<CrossSectionPO> crossSectionPOList = new ArrayList<>();
plan.getSectionList().forEach(section -> {
CrossSectionPO crossSectionPO = new CrossSectionPO();
crossSectionPO.setSectionNo(section.getSectionNo());
crossSectionPO.setStartTime(section.getBeginTime());
crossSectionPO.setEndTime(section.getEndTime());
crossSectionPO.setCrossId(planSendVO.getCrossCode());
crossSectionPO.setPlanId(Integer.parseInt(plan.getPlanNo()));
crossSectionPO.setControlMode(Integer.parseInt(section.getControlMode()));
crossSectionPO.setScemeId(Integer.parseInt(section.getPatternNo()));
crossSectionPOList.add(crossSectionPO);
});
// 入库路口时段表
crossSectionMapper.insertBatch(crossSectionPOList);
});
// 入库路口计划表
crossPlanMapper.insertBatch(crossPlanPOList);
return Result.success("下发信号机计划成功");
}
return Result.error(obj.getString("msg"));
} else {
// todo else
return null;
plan1.setSectionList(sectionList);
planList.add(plan1);
});
data.setPlanList(planList);
dataList.add(data);
downloadTimeSpandsDTO.setData(dataList);
// 1、下发信号机计划
Map<String, Object> fieldMap = FieldUtil.fieldMethod(downloadTimeSpandsDTO);
Map<String, String> path = PathUtil.getPathMapByApiCode("downloadTimeSpands");
String strResult = ArtemisHttpUtil.doPostStringArtemis(artemisConfig,
path,
JSON.toJSONString(fieldMap), null, null, "application/json", null);
JSONObject obj = JSON.parseObject(strResult);
if (obj.get(HK_CODE_KEY).equals(HK_SUCCESS_STRING_CODE)) {
return jsonViewObject.success("下发信号机计划成功");
}
return jsonViewObject.fail(obj.getString("msg"));
}
@Override
public <T> Result<T> scheduleSend(ScheduleSendVO param) throws Exception {
public JsonViewObject scheduleSend(ScheduleSendVO param) throws Exception {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
// 厂商 HK
ManufacturerInfoPO manufacturerInfoPO = checkCrossCode(param.getCrossCode());
if (manufacturerInfoPO.getCode().equals(BasicEnum.ManufacturerEnum.HK.getCode())) {
// 1、通过获取当前运行的日期数据,获取最新的日期方案id
JSONArray body = new JSONArray();
//body.add(param.getCrossCode());
body.add(manufacturerInfoPO.getName());
Map<String, String> path = PathUtil.getPathMapByApiCode("uploadDate");
String strResult = ArtemisHttpUtil.doPostStringArtemis(artemisConfig,
path,
body.toString(), null, null, "application/json", null);
JSONObject object = JSON.parseObject(strResult);
// 日期 id
int id = 1;
if (object.get(HK_CODE_KEY).equals(HK_SUCCESS_STRING_CODE)) {
// 获取日期列表
JSONArray schedulesArray = object.getJSONArray("data").getJSONObject(0).getJSONArray("schedules");
JSONObject scheduleObj = schedulesArray.getJSONObject(schedulesArray.size() - 1);
id = scheduleObj.getInteger("id");
}
// 下发信号机日期拼接参数
DownloadScheduleDTO dto = new DownloadScheduleDTO();
//dto.setCrossCode(param.getCrossCode());
dto.setCrossCode(manufacturerInfoPO.getName());
List<DownloadScheduleDTO.Schedule> schedules = new ArrayList<>();
for (ScheduleSendVO.Schedule schedule : param.getSchedules()) {
List<ScheduleSendVO.Schedule.Week> scheduleWeeks = schedule.getWeeks();
List<ScheduleSendVO.Schedule.SpecialDay> scheduleDays = schedule.getSpecialDays();
if (null != scheduleWeeks && scheduleWeeks.size() > 0) {
// 去重,获取所有的运行方案号
Set<Integer> planNos = new HashSet<>();
scheduleWeeks.forEach(week -> planNos.add(week.getPlanNo()));
if (null != scheduleDays && scheduleDays.size() > 0) {
scheduleDays.forEach(specialDay -> planNos.add(specialDay.getPlanNo()));
}
int num = 0;
for (Integer planNo : planNos) {
DownloadScheduleDTO.Schedule schedule1 = new DownloadScheduleDTO.Schedule();
// scheduleNo 日期号 ,支持返回【1~128】
if (id + planNos.size() > 128) {
schedule1.setScheduleNo(128 - planNos.size() - (++num));
} else {
schedule1.setScheduleNo(id + (++num));
}
// 0 说明 dates 内的日期是日期集合,1 说明是dates 内的数据是日期范围
schedule1.setIsPeriod(0);
// 特殊日期列表
List<String> dates = new ArrayList<>();
schedule.getSpecialDays().forEach(specialDay -> {
if (specialDay.getPlanNo().equals(planNo)) {
dates.add(specialDay.getDateStr());
}
});
schedule1.setDates(dates);
// 星期列表
List<String> weeks = new ArrayList<>();
schedule.getWeeks().forEach(week -> {
if (week.getPlanNo().equals(planNo)) {
weeks.add(String.valueOf(week.getWeekNum()));
}
});
schedule1.setWeeks(weeks);
schedule1.setPlanNo(planNo);
schedules.add(schedule1);
}
// 1、通过获取当前运行的日期数据,获取最新的日期方案id
JSONArray body = new JSONArray();
//body.add(param.getCrossCode());
body.add(manufacturerInfoPO.getName());
Map<String, String> path = PathUtil.getPathMapByApiCode("uploadDate");
String strResult = ArtemisHttpUtil.doPostStringArtemis(artemisConfig,
path,
body.toString(), null, null, "application/json", null);
JSONObject object = JSON.parseObject(strResult);
// 日期 id
int id = 1;
if (object.get(HK_CODE_KEY).equals(HK_SUCCESS_STRING_CODE)) {
// 获取日期列表
JSONArray schedulesArray = object.getJSONArray("data").getJSONObject(0).getJSONArray("schedules");
JSONObject scheduleObj = schedulesArray.getJSONObject(schedulesArray.size() - 1);
id = scheduleObj.getInteger("id");
}
// 下发信号机日期拼接参数
DownloadScheduleDTO dto = new DownloadScheduleDTO();
//dto.setCrossCode(param.getCrossCode());
dto.setCrossCode(manufacturerInfoPO.getName());
List<DownloadScheduleDTO.Schedule> schedules = new ArrayList<>();
for (ScheduleSendVO.Schedule schedule : param.getSchedules()) {
List<ScheduleSendVO.Schedule.Week> scheduleWeeks = schedule.getWeeks();
List<ScheduleSendVO.Schedule.SpecialDay> scheduleDays = schedule.getSpecialDays();
if (null != scheduleWeeks && scheduleWeeks.size() > 0) {
// 去重,获取所有的运行方案号
Set<Integer> planNos = new HashSet<>();
scheduleWeeks.forEach(week -> planNos.add(week.getPlanNo()));
if (null != scheduleDays && scheduleDays.size() > 0) {
scheduleDays.forEach(specialDay -> planNos.add(specialDay.getPlanNo()));
}
}
dto.setSchedules(schedules);
// 2、下发时间表
Map<String, Object> fieldMap = FieldUtil.fieldMethod(dto);
for (DownloadScheduleDTO.Schedule schedule : dto.getSchedules()) {
List<Map<String, Object>> mapSchedules = (List<Map<String, Object>>) fieldMap.get("schedules");
for (Map<String, Object> mapSchedule : mapSchedules) {
if (mapSchedule.get("planNo").equals(schedule.getPlanNo())) {
mapSchedule.put("weeks", schedule.getWeeks());
mapSchedule.put("dates", schedule.getDates());
break;
int num = 0;
for (Integer planNo : planNos) {
DownloadScheduleDTO.Schedule schedule1 = new DownloadScheduleDTO.Schedule();
// scheduleNo 日期号 ,支持返回【1~128】
if (id + planNos.size() > 128) {
schedule1.setScheduleNo(128 - planNos.size() - (++num));
} else {
schedule1.setScheduleNo(id + (++num));
}
}
}
Map<String, String> downloadSchedulePath = PathUtil.getPathMapByApiCode("downloadTimeSpands");
String updateResult = ArtemisHttpUtil.doPostStringArtemis(artemisConfig,
downloadSchedulePath,
JSON.toJSONString(fieldMap), null, null, "application/json", null);
JSONObject obj = JSON.parseObject(updateResult);
if (obj.get(HK_CODE_KEY).equals(HK_SUCCESS_STRING_CODE)) {
// 1、入库操作
SimpleDateFormat sdf = new SimpleDateFormat(DateStyle.YYYY_MM_DD.getValue());
ArrayList<CrossSchedulesPO> crossSchedulesPOS = new ArrayList<>();
param.getSchedules().forEach(schedule -> {
schedule.getWeeks().forEach(week -> {
CrossSchedulesPO schedulesPO = new CrossSchedulesPO();
if (week.getWeekNum() >= 6) {
schedulesPO.setName("周末");
} else {
schedulesPO.setName("工作日");
// 0 说明 dates 内的日期是日期集合,1 说明是dates 内的数据是日期范围
schedule1.setIsPeriod(0);
// 特殊日期列表
List<String> dates = new ArrayList<>();
schedule.getSpecialDays().forEach(specialDay -> {
if (specialDay.getPlanNo().equals(planNo)) {
dates.add(specialDay.getDateStr());
}
schedulesPO.setCrossId(param.getCrossCode());
schedulesPO.setPlanId(week.getPlanNo());
schedulesPO.setWeek(week.getWeekNum());
schedulesPO.setSpecialDate(null);
crossSchedulesPOS.add(schedulesPO);
});
schedule.getSpecialDays().forEach(specialDay -> {
CrossSchedulesPO schedulesPO = new CrossSchedulesPO();
schedulesPO.setName("特殊日期");
schedulesPO.setCrossId(param.getCrossCode());
schedulesPO.setPlanId(specialDay.getPlanNo());
schedulesPO.setWeek(null);
try {
schedulesPO.setSpecialDate(sdf.parse(specialDay.getDateStr()));
} catch (ParseException e) {
schedulesPO.setSpecialDate(null);
schedule1.setDates(dates);
// 星期列表
List<String> weeks = new ArrayList<>();
schedule.getWeeks().forEach(week -> {
if (week.getPlanNo().equals(planNo)) {
weeks.add(String.valueOf(week.getWeekNum()));
}
crossSchedulesPOS.add(schedulesPO);
});
});
// 入库时间表
crossSchedulesMapper.insertBatch(crossSchedulesPOS);
return Result.success("时间表下发成功");
schedule1.setWeeks(weeks);
schedule1.setPlanNo(planNo);
schedules.add(schedule1);
}
}
}
dto.setSchedules(schedules);
// 2、下发时间表
Map<String, Object> fieldMap = FieldUtil.fieldMethod(dto);
for (DownloadScheduleDTO.Schedule schedule : dto.getSchedules()) {
List<Map<String, Object>> mapSchedules = (List<Map<String, Object>>) fieldMap.get("schedules");
for (Map<String, Object> mapSchedule : mapSchedules) {
if (mapSchedule.get("planNo").equals(schedule.getPlanNo())) {
mapSchedule.put("weeks", schedule.getWeeks());
mapSchedule.put("dates", schedule.getDates());
break;
}
}
return Result.error(obj.getString("msg"));
} else {
// todo else
return null;
}
Map<String, String> downloadSchedulePath = PathUtil.getPathMapByApiCode("downloadTimeSpands");
String updateResult = ArtemisHttpUtil.doPostStringArtemis(artemisConfig,
downloadSchedulePath,
JSON.toJSONString(fieldMap), null, null, "application/json", null);
JSONObject obj = JSON.parseObject(updateResult);
if (obj.get(HK_CODE_KEY).equals(HK_SUCCESS_STRING_CODE)) {
return jsonViewObject.success("时间表下发成功");
}
return jsonViewObject.fail(obj.getString("msg"));
}
@Override
public <T> Result<T> lockControl(ControlCommandVO commandVO) throws Exception {
public JsonViewObject lockControl(ControlCommandVO commandVO) throws Exception {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
ManufacturerInfoPO manufacturerInfoPO = checkCrossCode(commandVO.getCrossCode());
if (manufacturerInfoPO.getCode().equals(BasicEnum.ManufacturerEnum.HK.getCode())) {
if (commandVO.getCommand().equals(TRUE)) {
Map<String, Object> param = new HashMap<String, Object>() {
{
//put("crossCode", commandVO.getCrossCode());
put("crossCode", manufacturerInfoPO.getName());
put("controlType", LOCK_RUNNING_CONTROL);
}
};
// 控制命令为灯态锁定时,设置相关车道参数信息
//List<SignalRunring> runrings = getSignalInfoVos(commandVO.getCrossCode()).get(0).getRunrings();
// HK 为单环
// 获取当前运行方案的相位id
LightsStatusVO statusVO = getSignalInfoVos(manufacturerInfoPO.getName()).get(0);
Integer phaseId = Integer.valueOf(statusVO.getPhaseId());
// 获取某一路口下海康相位和车道关系
//Map<Integer, JSONArray> laneArrayMap = getPhaseRelationLanes(commandVO.getCrossCode());
Map<Integer, JSONArray> laneArrayMap = getPhaseRelationLanes(manufacturerInfoPO.getName());
JSONArray jsonArray = laneArrayMap.get(phaseId);
List<Map<String, Object>> laneList = new ArrayList<>();
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
Map<String, Object> laneMap = new HashMap<>();
laneMap.put("laneNo", jsonObject.getInteger("laneNo"));
laneMap.put("turn", jsonObject.getInteger("turn"));
laneMap.put("direction", jsonObject.getInteger("direction"));
laneList.add(laneMap);
}
param.put("laneInfos", laneList);
param.put("controlNo", 0);
// 控制时长,单位 s,0 则持续控制
param.put("duration", Objects.isNull(commandVO.getDuration()) || commandVO.getDuration() == 0 ? 999 : commandVO.getDuration());
String strResult = ArtemisHttpUtil.doPostStringArtemis(artemisConfig,
PathUtil.getPathMapByApiCode("setSignalControl"),
JSON.toJSONString(param), null, null, "application/json", null);
JSONObject obj = JSON.parseObject(strResult);
if (HK_SUCCESS_STRING_CODE.equals(obj.get(HK_CODE_KEY))) {
return Result.success("相位锁定成功");
if (commandVO.getCommand().equals(TRUE)) {
Map<String, Object> param = new HashMap<String, Object>() {
{
//put("crossCode", commandVO.getCrossCode());
put("crossCode", manufacturerInfoPO.getName());
put("controlType", LOCK_RUNNING_CONTROL);
}
return Result.error(obj.getString("msg"));
} else {
//return controlSignal(commandVO.getCrossCode(), UNLOCK_RUNNING_CONTROL);
return controlSignal(manufacturerInfoPO.getName(), UNLOCK_RUNNING_CONTROL);
};
// 控制命令为灯态锁定时,设置相关车道参数信息
//List<SignalRunring> runrings = getSignalInfoVos(commandVO.getCrossCode()).get(0).getRunrings();
// HK 为单环
// 获取当前运行方案的相位id
LightsStatusVO statusVO = getSignalInfoVos(manufacturerInfoPO.getName()).get(0);
Integer phaseId = Integer.valueOf(statusVO.getPhaseId());
// 获取某一路口下海康相位和车道关系
//Map<Integer, JSONArray> laneArrayMap = getPhaseRelationLanes(commandVO.getCrossCode());
Map<Integer, JSONArray> laneArrayMap = getPhaseRelationLanes(manufacturerInfoPO.getName());
JSONArray jsonArray = laneArrayMap.get(phaseId);
List<Map<String, Object>> laneList = new ArrayList<>();
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
Map<String, Object> laneMap = new HashMap<>();
laneMap.put("laneNo", jsonObject.getInteger("laneNo"));
laneMap.put("turn", jsonObject.getInteger("turn"));
laneMap.put("direction", jsonObject.getInteger("direction"));
laneList.add(laneMap);
}
param.put("laneInfos", laneList);
param.put("controlNo", 0);
// 控制时长,单位 s,0 则持续控制
param.put("duration", Objects.isNull(commandVO.getDuration()) || commandVO.getDuration() == 0 ? 999 : commandVO.getDuration());
String strResult = ArtemisHttpUtil.doPostStringArtemis(artemisConfig,
PathUtil.getPathMapByApiCode("setSignalControl"),
JSON.toJSONString(param), null, null, "application/json", null);
JSONObject obj = JSON.parseObject(strResult);
if (HK_SUCCESS_STRING_CODE.equals(obj.get(HK_CODE_KEY))) {
return jsonViewObject.success("相位锁定成功");
}
return jsonViewObject.fail(obj.getString("msg"));
} else {
// todo else
return null;
//return controlSignal(commandVO.getCrossCode(), UNLOCK_RUNNING_CONTROL);
return controlSignal(manufacturerInfoPO.getName(), UNLOCK_RUNNING_CONTROL);
}
}
/**
......@@ -460,112 +339,95 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
}
@Override
public <T> Result<T> stepControl(String code, Integer command, Integer stepNum) throws Exception {
public JsonViewObject stepControl(String code, Integer command, Integer stepNum) throws Exception {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
ManufacturerInfoPO manufacturerInfoPO = checkCrossCode(code);
if (manufacturerInfoPO.getCode().equals(BasicEnum.ManufacturerEnum.HK.getCode())) {
if (command.equals(TRUE)) {
if (command.equals(TRUE)) {
Map<String, Object> param = new HashMap<String, Object>() {
{
//put("crossCode", code);
put("crossCode", manufacturerInfoPO.getName());
put("controlType", STEP_CONTROL);
}
};
int controlNo = 0;
if (0 != stepNum) {
//根据当前实时灯态获取运行的相位
//LightsStatusVO lightsStatusVO = getSignalInfoVos(code).get(0);
LightsStatusVO lightsStatusVO = getSignalInfoVos(manufacturerInfoPO.getName()).get(0);
//暂时按单环处理
String phaseId = lightsStatusVO.getPhaseId();
//获取方案数据列表
List<CrossPhasePO> baseCrossPhasePlanList = crossPhaseMapper.selectByCrossIdAndPlanId(lightsStatusVO.getCode(), lightsStatusVO.getPhasePlanId());
Map<String, List<CrossPhasePO>> groupByPhase = baseCrossPhasePlanList.stream().collect(Collectors.groupingBy(CrossPhasePO::getPhaseNo));
//根据相位获取当前相序
int newPhaseOrderId = 0;
for (String key : groupByPhase.keySet()) {
CrossPhasePO crossPhase = groupByPhase.get(key).get(0);
if (crossPhase.getPhaseNo().equals(phaseId)) {
newPhaseOrderId = (crossPhase.getSort() + stepNum) % groupByPhase.size();
}
}
//根据相序获取相位
for (String key : groupByPhase.keySet()) {
CrossPhasePO crossPhase = groupByPhase.get(key).get(0);
if (newPhaseOrderId == crossPhase.getSort()) {
controlNo = Integer.parseInt(crossPhase.getPhaseNo());
}
Map<String, Object> param = new HashMap<String, Object>() {
{
//put("crossCode", code);
put("crossCode", manufacturerInfoPO.getName());
put("controlType", STEP_CONTROL);
}
};
int controlNo = 0;
if (0 != stepNum) {
//根据当前实时灯态获取运行的相位
//LightsStatusVO lightsStatusVO = getSignalInfoVos(code).get(0);
LightsStatusVO lightsStatusVO = getSignalInfoVos(manufacturerInfoPO.getName()).get(0);
//暂时按单环处理
String phaseId = lightsStatusVO.getPhaseId();
//获取方案数据列表
List<CrossPhasePO> baseCrossPhasePlanList = crossPhaseMapper.selectByCrossIdAndPlanId(lightsStatusVO.getCode(), lightsStatusVO.getPhasePlanId());
Map<String, List<CrossPhasePO>> groupByPhase = baseCrossPhasePlanList.stream().collect(Collectors.groupingBy(CrossPhasePO::getPhaseNo));
//根据相位获取当前相序
int newPhaseOrderId = 0;
for (String key : groupByPhase.keySet()) {
CrossPhasePO crossPhase = groupByPhase.get(key).get(0);
if (crossPhase.getPhaseNo().equals(phaseId)) {
newPhaseOrderId = (crossPhase.getSort() + stepNum) % groupByPhase.size();
}
}
param.put("controlNo", controlNo);
String strResult = ArtemisHttpUtil.doPostStringArtemis(artemisConfig,
PathUtil.getPathMapByApiCode("setSignalControl"),
JSON.toJSONString(param), null, null, "application/json", null);
JSONObject obj = JSON.parseObject(strResult);
if (HK_SUCCESS_STRING_CODE.equals(obj.get(HK_CODE_KEY))) {
return Result.success();
//根据相序获取相位
for (String key : groupByPhase.keySet()) {
CrossPhasePO crossPhase = groupByPhase.get(key).get(0);
if (newPhaseOrderId == crossPhase.getSort()) {
controlNo = Integer.parseInt(crossPhase.getPhaseNo());
}
}
return Result.error(obj.getString("msg"));
} else {
//return controlSignal(code, CANCEL_STEP_CONTROL);
return controlSignal(manufacturerInfoPO.getName(), CANCEL_STEP_CONTROL);
}
param.put("controlNo", controlNo);
String strResult = ArtemisHttpUtil.doPostStringArtemis(artemisConfig,
PathUtil.getPathMapByApiCode("setSignalControl"),
JSON.toJSONString(param), null, null, "application/json", null);
JSONObject obj = JSON.parseObject(strResult);
if (HK_SUCCESS_STRING_CODE.equals(obj.get(HK_CODE_KEY))) {
return jsonViewObject.success();
}
return jsonViewObject.fail(obj.getString("msg"));
} else {
// todo else
return null;
//return controlSignal(code, CANCEL_STEP_CONTROL);
return controlSignal(manufacturerInfoPO.getName(), CANCEL_STEP_CONTROL);
}
}
@Override
public <T> Result<T> setSignalControl(String code, Integer command, Integer commandType) throws Exception {
public JsonViewObject setSignalControl(String code, Integer command, Integer commandType) throws Exception {
ManufacturerInfoPO manufacturerInfoPO = checkCrossCode(code);
if (manufacturerInfoPO.getCode().equals(BasicEnum.ManufacturerEnum.HK.getCode())) {
Integer runningMode = command.equals(TRUE) ? commandType : NORMAL_RUNNING_CONTROL;
//return controlSignal(code, runningMode);
return controlSignal(manufacturerInfoPO.getName(), runningMode);
} else {
// todo else
return null;
}
Integer runningMode = command.equals(TRUE) ? commandType : NORMAL_RUNNING_CONTROL;
//return controlSignal(code, runningMode);
return controlSignal(manufacturerInfoPO.getName(), runningMode);
}
@Override
public <T> Result<T> recoverSchedule(String code) throws Exception {
public JsonViewObject recoverSchedule(String code) throws Exception {
ManufacturerInfoPO manufacturerInfoPO = checkCrossCode(code);
if (manufacturerInfoPO.getCode().equals(BasicEnum.ManufacturerEnum.HK.getCode())) {
//return controlSignal(code, NORMAL_RUNNING_CONTROL);
return controlSignal(manufacturerInfoPO.getName(), NORMAL_RUNNING_CONTROL);
} else {
// todo else
return null;
}
//return controlSignal(code, NORMAL_RUNNING_CONTROL);
return controlSignal(manufacturerInfoPO.getName(), NORMAL_RUNNING_CONTROL);
}
@Override
public <T> Result<T> phaseTimingSend(PhaseTimingSendVO phaseTimingSendVO) throws Exception {
public JsonViewObject phaseTimingSend(PhaseTimingSendVO phaseTimingSendVO) throws Exception {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
ManufacturerInfoPO manufacturerInfoPO = checkCrossCode(phaseTimingSendVO.getCrossCode());
if (manufacturerInfoPO.getCode().equals(BasicEnum.ManufacturerEnum.HK.getCode())) {
// 将路口code转换为信号机code
phaseTimingSendVO.setCrossCode(manufacturerInfoPO.getName());
Map<String, Object> param = FieldUtil.fieldMethod(phaseTimingSendVO);
Map<String, String> path = PathUtil.getPathMapByApiCode("setPhaseRlatLanes");
String strResult = ArtemisHttpUtil.doPostStringArtemis(artemisConfig,
path,
JSON.toJSONString(param), null, null, "application/json", null);
JSONObject obj = JSON.parseObject(strResult);
if (HK_SUCCESS_STRING_CODE.equals(obj.get(HK_CODE_KEY))) {
return Result.success();
}
return Result.error(obj.getString("msg"));
} else {
// todo else
return null;
// 将路口code转换为信号机code
phaseTimingSendVO.setCrossCode(manufacturerInfoPO.getName());
Map<String, Object> param = FieldUtil.fieldMethod(phaseTimingSendVO);
Map<String, String> path = PathUtil.getPathMapByApiCode("setPhaseRlatLanes");
String strResult = ArtemisHttpUtil.doPostStringArtemis(artemisConfig,
path,
JSON.toJSONString(param), null, null, "application/json", null);
JSONObject obj = JSON.parseObject(strResult);
if (HK_SUCCESS_STRING_CODE.equals(obj.get(HK_CODE_KEY))) {
return jsonViewObject.success();
}
return jsonViewObject.fail(obj.getString("msg"));
}
@Override
public <T> Result<T> phaseDiffSend() {
public JsonViewObject phaseDiffSend() {
return null;
}
......@@ -573,7 +435,8 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
* @param code 信号机编号
* @param runningMode 0-多时段控制模式 1-关灯、2-黄闪、3-全红、11-取消步进控制、12-灯态锁定、13-灯态解锁
*/
private <T> Result<T> controlSignal(String code, Integer runningMode) throws Exception {
private JsonViewObject controlSignal(String code, Integer runningMode) throws Exception {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
//执行恢复时间表方案命令
if (NORMAL_RUNNING_CONTROL.equals(runningMode) || CANCEL_STEP_CONTROL.equals(runningMode)) {
//根据实时灯态获取当前运行模式
......@@ -602,9 +465,9 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
JSON.toJSONString(param), null, null, "application/json", null);
JSONObject obj = JSON.parseObject(strResult);
if (HK_SUCCESS_STRING_CODE.equals(obj.get(HK_CODE_KEY))) {
return Result.success();
return jsonViewObject.success();
}
return Result.error(obj.getString("msg"));
return jsonViewObject.fail(obj.getString("msg"));
}
/**
......
package net.wanji.utc.service.control.impl;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import net.wanji.utc.entity.JsonViewObject;
import net.wanji.utc.service.control.ControlCommandService;
import net.wanji.utc.util.HttpRestUtil;
import net.wanji.utc.util.StringUtils;
import net.wanji.utc.vo.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.HashMap;
/**
* @author duanruiming
* @date 2023/01/12 13:18
*/
@Service("wanJiControlCommandService")
@RequiredArgsConstructor
public class WanJiControlCommandServiceImpl implements ControlCommandService {
private final HttpRestUtil httpRestUtil;
@Value("url")
private String rpcUri;
/**
* @param schemeSendVO
* @return
* @throws Exception
*/
@Override
public JsonViewObject schemeSend(SchemeSendVO schemeSendVO) throws Exception {
JsonViewObject jsonViewObject = rpcService(httpRestUtil, rpcUri, null, JSONObject.toJSONString(schemeSendVO));
if (StringUtils.endsWithIgnoreCase("success", jsonViewObject.getStatus())) {
return jsonViewObject.success("万集标准协议下发方案成功!");
}
return jsonViewObject;
}
@Override
public JsonViewObject planSend(PlanSendVO planSendVO) throws Exception {
JsonViewObject jsonViewObject = rpcService(httpRestUtil, rpcUri, null, JSONObject.toJSONString(planSendVO));
if (StringUtils.endsWithIgnoreCase("success", jsonViewObject.getStatus())) {
return jsonViewObject.success("万集标准协议下发计划成功!");
}
return jsonViewObject;
}
@Override
public JsonViewObject scheduleSend(ScheduleSendVO scheduleSendVO) throws Exception {
JsonViewObject jsonViewObject = rpcService(httpRestUtil, rpcUri, null, JSONObject.toJSONString(scheduleSendVO));
if (StringUtils.endsWithIgnoreCase("success", jsonViewObject.getStatus())) {
return jsonViewObject.success("万集标准协议下发时间表成功!");
}
return jsonViewObject;
}
@Override
public JsonViewObject lockControl(ControlCommandVO commandVO) throws Exception {
JsonViewObject jsonViewObject = rpcService(httpRestUtil, rpcUri, null, JSONObject.toJSONString(commandVO));
if (StringUtils.endsWithIgnoreCase("success", jsonViewObject.getStatus())) {
return jsonViewObject.success("万集标准协议锁定控制成功!");
}
return jsonViewObject;
}
@Override
public JsonViewObject stepControl(String crossId, Integer command, Integer stepNum) throws Exception {
HashMap<String, Object> paraMap = new HashMap<>();
paraMap.put("crossId", crossId);
paraMap.put("command", command);
paraMap.put("stepNum", stepNum);
JsonViewObject jsonViewObject = rpcService(httpRestUtil, rpcUri, null, JSONObject.toJSONString(paraMap));
if (StringUtils.endsWithIgnoreCase("success", jsonViewObject.getStatus())) {
return jsonViewObject.success("万集标准协议步进控制成功!");
}
return jsonViewObject;
}
@Override
public JsonViewObject setSignalControl(String crossId, Integer command, Integer commandType) throws Exception {
HashMap<String, Object> paraMap = new HashMap<>();
paraMap.put("crossId", crossId);
paraMap.put("command", command);
paraMap.put("commandType", commandType);
JsonViewObject jsonViewObject = rpcService(httpRestUtil, rpcUri, null, JSONObject.toJSONString(paraMap));
if (StringUtils.endsWithIgnoreCase("success", jsonViewObject.getStatus())) {
return jsonViewObject.success("万集标准协议设置信号机控制模式成功!");
}
return jsonViewObject;
}
@Override
public JsonViewObject recoverSchedule(String crossId) throws Exception {
HashMap<String, Object> paraMap = new HashMap<>();
paraMap.put("crossId", crossId);
JsonViewObject jsonViewObject = rpcService(httpRestUtil, rpcUri, null, JSONObject.toJSONString(paraMap));
if (StringUtils.endsWithIgnoreCase("success", jsonViewObject.getStatus())) {
return jsonViewObject.success("万集标准协议恢复时间表成功!");
}
return jsonViewObject;
}
@Override
public JsonViewObject phaseTimingSend(PhaseTimingSendVO phaseTimingSendVO) throws Exception {
JsonViewObject jsonViewObject = rpcService(httpRestUtil, rpcUri, null, JSONObject.toJSONString(phaseTimingSendVO));
if (StringUtils.endsWithIgnoreCase("success", jsonViewObject.getStatus())) {
return jsonViewObject.success("万集标准协议下发相位配时成功!");
}
return jsonViewObject;
}
@Override
public JsonViewObject phaseDiffSend() {
return null;
}
}
package net.wanji.utc.service.rpcservice;
package net.wanji.utc.service.rpc;
import net.wanji.utc.entity.JsonViewObject;
import net.wanji.utc.util.HttpRestUtil;
......@@ -10,7 +10,7 @@ import java.util.Objects;
* @author duanruiming
* @date 2023/01/09 9:57
*/
public interface rpcService {
public interface RpcService {
/**
* 远程调用信号机设备
......
package net.wanji.utc.service.runninginfo;
import net.wanji.utc.po.SignalStatusLogPO;
import net.wanji.utc.service.rpcservice.rpcService;
import net.wanji.utc.service.rpc.RpcService;
import net.wanji.utc.vo.LightsStatusVO;
import java.util.List;
......@@ -10,7 +10,7 @@ import java.util.List;
* @author duanruiming
* @date 2023/01/11 17:32
*/
public interface WanJiRunningStatusService extends rpcService {
public interface WanJiCommonRunningStatusService extends RpcService {
/**
* 标准获取路口实时运行状态接口,包括告警数据
* @param crossIdList
......
......@@ -15,7 +15,7 @@ import net.wanji.utc.po.SignalStatusLogPO;
import net.wanji.utc.service.runninginfo.HkLightsStatusService;
import net.wanji.utc.service.runninginfo.HkRunningStatusService;
import net.wanji.utc.service.runninginfo.SignalStatusService;
import net.wanji.utc.service.runninginfo.WanJiRunningStatusService;
import net.wanji.utc.service.runninginfo.WanJiCommonRunningStatusService;
import net.wanji.utc.util.ListUtil;
import net.wanji.utc.util.RedisUtil;
import net.wanji.utc.vo.LightsStatusVO;
......@@ -38,7 +38,7 @@ public class SignalStatusServiceImpl implements SignalStatusService {
private final HkLightsStatusService hkLightsStatusService;
private final RedisUtil redisUtil;
private final SignalStatusLogMapper signalStatusLogMapper;
private final WanJiRunningStatusService wanJiRunningStatusService;
private final WanJiCommonRunningStatusService wanJiRunningStatusService;
@Override
@Transactional
......
......@@ -5,7 +5,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.wanji.utc.entity.JsonViewObject;
import net.wanji.utc.po.SignalStatusLogPO;
import net.wanji.utc.service.runninginfo.WanJiRunningStatusService;
import net.wanji.utc.service.runninginfo.WanJiCommonRunningStatusService;
import net.wanji.utc.util.HttpRestUtil;
import net.wanji.utc.vo.LightsStatusVO;
import org.springframework.beans.factory.annotation.Value;
......@@ -21,7 +21,7 @@ import java.util.Map;
@Slf4j
@Service
@RequiredArgsConstructor
public class WanJiRunningStatusServiceImpl implements WanJiRunningStatusService {
public class WanJiCommonRunningStatusServiceImpl implements WanJiCommonRunningStatusService {
private final HttpRestUtil httpRestUtil;
@Value("url")
......@@ -43,6 +43,6 @@ public class WanJiRunningStatusServiceImpl implements WanJiRunningStatusService
@Override
public JsonViewObject rpcService(HttpRestUtil httpRestUtil, String url, Map<String, String> headers, String param) {
return WanJiRunningStatusService.super.rpcService(httpRestUtil, url, headers, param);
return WanJiCommonRunningStatusService.super.rpcService(httpRestUtil, url, headers, param);
}
}
......@@ -2,7 +2,7 @@ package net.wanji.utc.service.staticinfo;
import net.wanji.utc.common.Result;
import net.wanji.utc.po.CrossSchedulesPO;
import net.wanji.utc.service.rpcservice.rpcService;
import net.wanji.utc.service.rpc.RpcService;
import net.wanji.utc.vo.PlanSectionVO;
import net.wanji.utc.vo.SchemePhaseLightsVO;
......@@ -12,7 +12,7 @@ import java.util.List;
* @author duanruiming
* @date 2023/01/09 9:20
*/
public interface WanjiCommonStaticInfoService extends rpcService {
public interface WanJiCommonStaticInfoService extends RpcService {
/**
* 静态参数,获取万集标准方案数据-方案信息、相位信息、灯组信息
......
......@@ -8,7 +8,7 @@ import net.wanji.utc.dto.PlanSectionDTO;
import net.wanji.utc.dto.SchemePhaseLightsDTO;
import net.wanji.utc.mapper.*;
import net.wanji.utc.po.*;
import net.wanji.utc.service.staticinfo.WanjiCommonStaticInfoService;
import net.wanji.utc.service.staticinfo.WanJiCommonStaticInfoService;
import net.wanji.utc.service.staticinfo.*;
import net.wanji.utc.vo.PlanSectionVO;
import net.wanji.utc.vo.SchemePhaseLightsVO;
......@@ -39,7 +39,7 @@ public class StaticInfoServiceImpl implements StaticInfoService {
private final CrossPlanMapper crossPlanMapper;
private final CrossSectionMapper crossSectionMapper;
private final CrossSchedulesMapper crossSchedulesMapper;
private final WanjiCommonStaticInfoService wanjiCommonStaticInfoService;
private final WanJiCommonStaticInfoService wanjiCommonStaticInfoService;
@Override
@Transactional
......
......@@ -7,7 +7,7 @@ import net.wanji.utc.common.Result;
import net.wanji.utc.entity.JsonViewObject;
import net.wanji.utc.mapper.*;
import net.wanji.utc.po.*;
import net.wanji.utc.service.staticinfo.WanjiCommonStaticInfoService;
import net.wanji.utc.service.staticinfo.WanJiCommonStaticInfoService;
import net.wanji.utc.util.HttpRestUtil;
import net.wanji.utc.vo.PlanSectionVO;
import net.wanji.utc.vo.SchemePhaseLightsVO;
......@@ -27,7 +27,7 @@ import java.util.Objects;
@Slf4j
@Service
@RequiredArgsConstructor
public class WanjiCommonStaticInfoServiceImpl implements WanjiCommonStaticInfoService {
public class WanJiCommonStaticInfoServiceImpl implements WanJiCommonStaticInfoService {
private final HttpRestUtil httpRestUtil;
@Value("url")
......@@ -123,6 +123,6 @@ public class WanjiCommonStaticInfoServiceImpl implements WanjiCommonStaticInfoSe
@Override
public JsonViewObject rpcService(HttpRestUtil httpRestUtil, String url, Map<String, String> headers, String param) {
return WanjiCommonStaticInfoService.super.rpcService(httpRestUtil, url, headers, param);
return WanJiCommonStaticInfoService.super.rpcService(httpRestUtil, url, headers, param);
}
}
......@@ -6,6 +6,7 @@ import lombok.Data;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
......@@ -16,10 +17,10 @@ import javax.validation.constraints.NotNull;
*/
@Data
@ApiModel(value = "ControlCommandVO", description = "相位锁定实体类")
public class ControlCommandVO{
public class ControlCommandVO {
@ApiModelProperty(value = "路口编号", notes = "路口编号")
@NotNull(message = "路口编号不可为空")
@NotBlank(message = "路口编号不可为空")
private String crossCode;
/**
......
......@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
......@@ -19,9 +21,11 @@ import java.util.List;
public class PhaseTimingSendVO {
@ApiModelProperty(value = "路口编号", notes = "路口编号")
@NotBlank(message = "路口编号不可为空")
private String crossCode;
@ApiModelProperty(value = "需要下发的相位列表", notes = "需要下发的相位列表")
@NotEmpty(message = "相位列表不可为空")
private List<Phase> phaseList;
/**
......
......@@ -4,8 +4,9 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import net.wanji.utc.common.baseentity.BaseCrossInfo;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
......@@ -20,8 +21,10 @@ import java.util.List;
public class PlanSendVO {
@ApiModelProperty(value = "路口编号", notes = "路口编号")
@NotBlank(message = "路口编号不可为空")
private String crossCode;
@ApiModelProperty(value = "计划列表", notes = "计划列表")
@NotEmpty(message = "计划列表不可为空")
private List<Plan> planList;
@Setter
......
......@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
......@@ -19,8 +21,10 @@ import java.util.List;
public class ScheduleSendVO {
@ApiModelProperty(value = "路口编号", notes = "路口编号")
@NotBlank(message = "路口编号不可为空")
private String crossCode;
@ApiModelProperty(value = "时间表", notes = "时间表")
@NotEmpty(message = "时间表不可为空")
private List<Schedule> schedules;
@Setter
......
......@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
......@@ -19,9 +21,11 @@ import java.util.List;
public class SchemeSendVO {
@ApiModelProperty(value = "路口编号", notes = "路口编号")
@NotBlank(message = "路口编号不可为空")
private String crossCode;
@ApiModelProperty(value = "方案列表", notes = "方案列表")
@NotEmpty(message = "方案列表不可为空")
private List<Pattern> patternList;
/**
......
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