Commit ea99c7de authored by duanruiming's avatar duanruiming

[update] 标准协议通讯层远程调用优化

parent c7864d9c
package net.wanji.utc.cache;
import net.wanji.databus.dao.mapper.CrossInfoMapper;
import net.wanji.databus.dao.mapper.ManufacturerInfoMapper;
import net.wanji.databus.po.CrossInfoPO;
import net.wanji.databus.po.ManufacturerInfoPO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* @author duanruiming
* @date 2023/05/23 9:44
*/
@Component
public class CrossInfoCache implements CommandLineRunner {
@Resource
private CrossInfoMapper crossInfoMapper;
@Resource
private ManufacturerInfoMapper manufacturerInfoMapper;
private static final List<CrossInfoPO> crossInfoList = new ArrayList<>();
/**
* 通过路口编号获取厂商编码
*
* @param crossId
* @return
*/
public String getManufacturerCodeByCrossId(String crossId) throws Exception {
CrossInfoPO crossInfoPO = getCrossInfoPO(crossId);
if (Objects.nonNull(crossInfoPO)) {
Integer manufacturerId = crossInfoPO.getManufacturerId();
ManufacturerInfoPO manufacturerInfoPO = manufacturerInfoMapper.selectById(manufacturerId);
return manufacturerInfoPO.getCode();
}
return null;
}
/**
* 通过路口编号获取路口信息
*
* @param crossId
* @return
*/
public CrossInfoPO getCrossInfoPO(String crossId) {
if (!CollectionUtils.isEmpty(crossInfoList)) {
for (CrossInfoPO crossInfoPO : crossInfoList) {
if (StringUtils.equals(crossId, crossInfoPO.getCode())) {
return crossInfoPO;
}
}
}
return null;
}
@Override
public void run(String... args) throws Exception {
init();
}
public void init() {
List<CrossInfoPO> crossInfoPOList = crossInfoMapper.selectAll();
if (!CollectionUtils.isEmpty(crossInfoPOList)) {
crossInfoPOList = crossInfoPOList;
}
}
}
...@@ -20,8 +20,7 @@ public class UtcFeignClientCache implements CommandLineRunner { ...@@ -20,8 +20,7 @@ public class UtcFeignClientCache implements CommandLineRunner {
public UtcFeignCommon getUtcFeignClientService(String name) { public UtcFeignCommon getUtcFeignClientService(String name) {
if (!utcFeignClientsMap.isEmpty()) { if (!utcFeignClientsMap.isEmpty()) {
UtcFeignCommon utcFeignCommon = utcFeignClientsMap.get(name); return utcFeignClientsMap.get(name);
return utcFeignCommon;
} }
return null; return null;
} }
......
...@@ -42,7 +42,7 @@ public class SignalStatusController { ...@@ -42,7 +42,7 @@ public class SignalStatusController {
@ApiResponses({ @ApiResponses({
@ApiResponse(code = 200, message = "OK", response = SignalStatusLogPO.class) @ApiResponse(code = 200, message = "OK", response = SignalStatusLogPO.class)
}) })
public JsonViewObject runningStatusAlarm() { public JsonViewObject runningStatusAlarm() throws Exception {
List<SignalStatusLogPO> signalStatusLogPOList = signalStatusService.runningStatusAlarm(); List<SignalStatusLogPO> signalStatusLogPOList = signalStatusService.runningStatusAlarm();
JsonViewObject jsonViewObject = JsonViewObject.newInstance(); JsonViewObject jsonViewObject = JsonViewObject.newInstance();
...@@ -57,7 +57,7 @@ public class SignalStatusController { ...@@ -57,7 +57,7 @@ public class SignalStatusController {
@ApiResponses({ @ApiResponses({
@ApiResponse(code = 200, message = "OK", response = LightsStatusVO.class) @ApiResponse(code = 200, message = "OK", response = LightsStatusVO.class)
}) })
public JsonViewObject lightStatus() { public JsonViewObject lightStatus() throws Exception {
List<LightsStatusVO> lightsStatusVOList = signalStatusService.lightStatus(); List<LightsStatusVO> lightsStatusVOList = signalStatusService.lightStatus();
JsonViewObject jsonViewObject = JsonViewObject.newInstance(); JsonViewObject jsonViewObject = JsonViewObject.newInstance();
......
...@@ -5,8 +5,8 @@ import net.wanji.common.framework.rest.JsonViewObject; ...@@ -5,8 +5,8 @@ import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.databus.dao.entity.*; import net.wanji.databus.dao.entity.*;
import net.wanji.databus.dao.mapper.*; import net.wanji.databus.dao.mapper.*;
import net.wanji.databus.po.CrossInfoPO; import net.wanji.databus.po.CrossInfoPO;
import net.wanji.databus.po.ManufacturerInfoPO;
import net.wanji.databus.vo.*; import net.wanji.databus.vo.*;
import net.wanji.utc.cache.CrossInfoCache;
import net.wanji.utc.common.typeenum.BasicEnum; import net.wanji.utc.common.typeenum.BasicEnum;
import net.wanji.utc.common.typeenum.DateStyle; import net.wanji.utc.common.typeenum.DateStyle;
import net.wanji.utc.po.hk.request.DelBaseConfigPO; import net.wanji.utc.po.hk.request.DelBaseConfigPO;
...@@ -42,28 +42,14 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy ...@@ -42,28 +42,14 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy
private final CrossSectionMapper crossSectionMapper; private final CrossSectionMapper crossSectionMapper;
private final CrossPlanMapper crossPlanMapper; private final CrossPlanMapper crossPlanMapper;
private final CrossSchedulesMapper crossSchedulesMapper; private final CrossSchedulesMapper crossSchedulesMapper;
private final CrossInfoCache crossInfoCache;
/**
* 通过路口编号获取厂商编码
*
* @param crossId
* @return
*/
public String getManufacturerCodeByCrossId(String crossId) throws Exception {
CrossInfoPO crossInfoPO = crossInfoMapper.selectByPrimaryKey(crossId);
if (Objects.isNull(crossInfoPO)) {
throw new Exception("当前路口信息不存在!");
}
Integer manufacturerId = crossInfoPO.getManufacturerId();
ManufacturerInfoPO manufacturerInfoPO = manufacturerInfoMapper.selectById(manufacturerId);
return manufacturerInfoPO.getCode();
}
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public JsonViewObject schemeSendStrategy(SchemeSendVO schemeSendVO) throws Exception { public JsonViewObject schemeSendStrategy(SchemeSendVO schemeSendVO) throws Exception {
JsonViewObject jsonViewObject; JsonViewObject jsonViewObject;
String manufacturerIdCode = getManufacturerCodeByCrossId(schemeSendVO.getCrossCode()); String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(schemeSendVO.getCrossCode());
if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) { if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) {
jsonViewObject = hkControlCommandService.schemeSend(schemeSendVO); jsonViewObject = hkControlCommandService.schemeSend(schemeSendVO);
} else { } else {
...@@ -122,7 +108,7 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy ...@@ -122,7 +108,7 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public JsonViewObject planSendStrategy(PlanSendVO planSendVO) throws Exception { public JsonViewObject planSendStrategy(PlanSendVO planSendVO) throws Exception {
JsonViewObject jsonViewObject; JsonViewObject jsonViewObject;
String manufacturerIdCode = getManufacturerCodeByCrossId(planSendVO.getCrossCode()); String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(planSendVO.getCrossCode());
if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) { if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) {
jsonViewObject = hkControlCommandService.planSend(planSendVO); jsonViewObject = hkControlCommandService.planSend(planSendVO);
} else { } else {
...@@ -163,7 +149,7 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy ...@@ -163,7 +149,7 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public JsonViewObject scheduleSendStrategy(ScheduleSendVO scheduleSendVO) throws Exception { public JsonViewObject scheduleSendStrategy(ScheduleSendVO scheduleSendVO) throws Exception {
JsonViewObject jsonViewObject; JsonViewObject jsonViewObject;
String manufacturerIdCode = getManufacturerCodeByCrossId(scheduleSendVO.getCrossCode()); String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(scheduleSendVO.getCrossCode());
if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) { if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) {
jsonViewObject = hkControlCommandService.scheduleSend(scheduleSendVO); jsonViewObject = hkControlCommandService.scheduleSend(scheduleSendVO);
} else { } else {
...@@ -214,7 +200,7 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy ...@@ -214,7 +200,7 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy
@Override @Override
public JsonViewObject lockControlStrategy(ControlCommandVO commandVO) throws Exception { public JsonViewObject lockControlStrategy(ControlCommandVO commandVO) throws Exception {
JsonViewObject jsonViewObject; JsonViewObject jsonViewObject;
String manufacturerIdCode = getManufacturerCodeByCrossId(commandVO.getCrossCode()); String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(commandVO.getCrossCode());
if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) { if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) {
jsonViewObject = hkControlCommandService.lockControl(commandVO); jsonViewObject = hkControlCommandService.lockControl(commandVO);
} else { } else {
...@@ -226,7 +212,7 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy ...@@ -226,7 +212,7 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy
@Override @Override
public JsonViewObject stepControlStrategy(String crossId, Integer command, Integer stepNum) throws Exception { public JsonViewObject stepControlStrategy(String crossId, Integer command, Integer stepNum) throws Exception {
JsonViewObject jsonViewObject; JsonViewObject jsonViewObject;
String manufacturerIdCode = getManufacturerCodeByCrossId(crossId); String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(crossId);
if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) { if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) {
jsonViewObject = hkControlCommandService.stepControl(crossId, command, stepNum); jsonViewObject = hkControlCommandService.stepControl(crossId, command, stepNum);
} else { } else {
...@@ -238,7 +224,7 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy ...@@ -238,7 +224,7 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy
@Override @Override
public JsonViewObject setSignalControlStrategy(String crossId, Integer command, Integer commandType) throws Exception { public JsonViewObject setSignalControlStrategy(String crossId, Integer command, Integer commandType) throws Exception {
JsonViewObject jsonViewObject; JsonViewObject jsonViewObject;
String manufacturerIdCode = getManufacturerCodeByCrossId(crossId); String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(crossId);
if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) { if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) {
jsonViewObject = hkControlCommandService.setSignalControl(crossId, command, commandType); jsonViewObject = hkControlCommandService.setSignalControl(crossId, command, commandType);
} else { } else {
...@@ -253,7 +239,7 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy ...@@ -253,7 +239,7 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy
if (StringUtils.isBlank(crossId)) { if (StringUtils.isBlank(crossId)) {
return jsonViewObject.fail("路口编号不能为空"); return jsonViewObject.fail("路口编号不能为空");
} }
String manufacturerIdCode = getManufacturerCodeByCrossId(crossId); String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(crossId);
if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) { if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) {
jsonViewObject = hkControlCommandService.recoverSchedule(crossId); jsonViewObject = hkControlCommandService.recoverSchedule(crossId);
} else { } else {
...@@ -265,7 +251,7 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy ...@@ -265,7 +251,7 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy
@Override @Override
public JsonViewObject phaseTimingSendStrategy(PhaseTimingSendVO phaseTimingSendVO) throws Exception { public JsonViewObject phaseTimingSendStrategy(PhaseTimingSendVO phaseTimingSendVO) throws Exception {
JsonViewObject jsonViewObject; JsonViewObject jsonViewObject;
String manufacturerIdCode = getManufacturerCodeByCrossId(phaseTimingSendVO.getCrossCode()); String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(phaseTimingSendVO.getCrossCode());
if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) { if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerIdCode)) {
jsonViewObject = hkControlCommandService.phaseTimingSend(phaseTimingSendVO); jsonViewObject = hkControlCommandService.phaseTimingSend(phaseTimingSendVO);
} else { } else {
...@@ -280,7 +266,7 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy ...@@ -280,7 +266,7 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy
} }
@Override @Override
public JsonViewObject delBaseConfig(DelBaseConfigVO delBaseConfigVO) throws Exception{ public JsonViewObject delBaseConfig(DelBaseConfigVO delBaseConfigVO) throws Exception {
// 通过路口编号获取信号机编号 // 通过路口编号获取信号机编号
String crossId = delBaseConfigVO.getCrossId(); String crossId = delBaseConfigVO.getCrossId();
CrossInfoPO crossInfoPO = crossInfoMapper.selectByPrimaryKey(crossId); CrossInfoPO crossInfoPO = crossInfoMapper.selectByPrimaryKey(crossId);
...@@ -293,7 +279,7 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy ...@@ -293,7 +279,7 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy
delBaseConfigPO.setType(delBaseConfigVO.getType()); delBaseConfigPO.setType(delBaseConfigVO.getType());
delBaseConfigPO.setIds(delBaseConfigVO.getIds()); delBaseConfigPO.setIds(delBaseConfigVO.getIds());
// 通过厂商编码调用删除服务 // 通过厂商编码调用删除服务
String manufacturer = getManufacturerCodeByCrossId(crossId); String manufacturer = crossInfoCache.getManufacturerCodeByCrossId(crossId);
JsonViewObject jsonViewObject; JsonViewObject jsonViewObject;
if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturer)) { if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturer)) {
jsonViewObject = hkControlCommandService.delBaseConfig(delBaseConfigPO); jsonViewObject = hkControlCommandService.delBaseConfig(delBaseConfigPO);
......
package net.wanji.utc.service.control.impl; package net.wanji.utc.service.control.impl;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import net.wanji.common.framework.rest.JsonViewObject; import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.databus.vo.*; import net.wanji.databus.vo.*;
import net.wanji.feign.service.common.UtcFeignCommon; import net.wanji.feign.service.common.UtcFeignCommon;
import net.wanji.utc.cache.CrossInfoCache;
import net.wanji.utc.cache.UtcFeignClientCache; import net.wanji.utc.cache.UtcFeignClientCache;
import net.wanji.utc.common.constant.Constants;
import net.wanji.utc.po.hk.request.DelBaseConfigPO; import net.wanji.utc.po.hk.request.DelBaseConfigPO;
import net.wanji.utc.service.control.ControlCommandService; import net.wanji.utc.service.control.ControlCommandService;
import net.wanji.utc.util.HttpRestUtil; import net.wanji.utc.util.HttpRestUtil;
...@@ -13,7 +14,7 @@ import net.wanji.utc.util.StringUtils; ...@@ -13,7 +14,7 @@ import net.wanji.utc.util.StringUtils;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.HashMap; import java.util.Objects;
/** /**
* @author duanruiming * @author duanruiming
...@@ -27,6 +28,7 @@ public class WanJiControlCommandServiceImpl implements ControlCommandService { ...@@ -27,6 +28,7 @@ public class WanJiControlCommandServiceImpl implements ControlCommandService {
@Value("url") @Value("url")
private String rpcUri; private String rpcUri;
private final UtcFeignClientCache utcFeignClientCache; private final UtcFeignClientCache utcFeignClientCache;
private final CrossInfoCache crossInfoCache;
/** /**
* @param schemeSendVO * @param schemeSendVO
...@@ -35,7 +37,8 @@ public class WanJiControlCommandServiceImpl implements ControlCommandService { ...@@ -35,7 +37,8 @@ public class WanJiControlCommandServiceImpl implements ControlCommandService {
*/ */
@Override @Override
public JsonViewObject schemeSend(SchemeSendVO schemeSendVO) throws Exception { public JsonViewObject schemeSend(SchemeSendVO schemeSendVO) throws Exception {
JsonViewObject jsonViewObject = rpcService(httpRestUtil, rpcUri, null, JSONObject.toJSONString(schemeSendVO)); String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(schemeSendVO.getCrossCode());
JsonViewObject jsonViewObject = utcFeignClientCache.getUtcFeignClientService(manufacturerIdCode).schemeSend(schemeSendVO);
if (StringUtils.endsWithIgnoreCase("success", jsonViewObject.getStatus())) { if (StringUtils.endsWithIgnoreCase("success", jsonViewObject.getStatus())) {
return jsonViewObject.success("万集标准协议下发方案成功!"); return jsonViewObject.success("万集标准协议下发方案成功!");
} }
...@@ -44,7 +47,8 @@ public class WanJiControlCommandServiceImpl implements ControlCommandService { ...@@ -44,7 +47,8 @@ public class WanJiControlCommandServiceImpl implements ControlCommandService {
@Override @Override
public JsonViewObject planSend(PlanSendVO planSendVO) throws Exception { public JsonViewObject planSend(PlanSendVO planSendVO) throws Exception {
JsonViewObject jsonViewObject = rpcService(httpRestUtil, rpcUri, null, JSONObject.toJSONString(planSendVO)); String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(planSendVO.getCrossCode());
JsonViewObject jsonViewObject = utcFeignClientCache.getUtcFeignClientService(manufacturerIdCode).planSend(planSendVO);
if (StringUtils.endsWithIgnoreCase("success", jsonViewObject.getStatus())) { if (StringUtils.endsWithIgnoreCase("success", jsonViewObject.getStatus())) {
return jsonViewObject.success("万集标准协议下发计划成功!"); return jsonViewObject.success("万集标准协议下发计划成功!");
} }
...@@ -53,7 +57,8 @@ public class WanJiControlCommandServiceImpl implements ControlCommandService { ...@@ -53,7 +57,8 @@ public class WanJiControlCommandServiceImpl implements ControlCommandService {
@Override @Override
public JsonViewObject scheduleSend(ScheduleSendVO scheduleSendVO) throws Exception { public JsonViewObject scheduleSend(ScheduleSendVO scheduleSendVO) throws Exception {
JsonViewObject jsonViewObject = rpcService(httpRestUtil, rpcUri, null, JSONObject.toJSONString(scheduleSendVO)); String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(scheduleSendVO.getCrossCode());
JsonViewObject jsonViewObject = utcFeignClientCache.getUtcFeignClientService(manufacturerIdCode).scheduleSend(scheduleSendVO);
if (StringUtils.endsWithIgnoreCase("success", jsonViewObject.getStatus())) { if (StringUtils.endsWithIgnoreCase("success", jsonViewObject.getStatus())) {
return jsonViewObject.success("万集标准协议下发时间表成功!"); return jsonViewObject.success("万集标准协议下发时间表成功!");
} }
...@@ -62,7 +67,13 @@ public class WanJiControlCommandServiceImpl implements ControlCommandService { ...@@ -62,7 +67,13 @@ public class WanJiControlCommandServiceImpl implements ControlCommandService {
@Override @Override
public JsonViewObject lockControl(ControlCommandVO commandVO) throws Exception { public JsonViewObject lockControl(ControlCommandVO commandVO) throws Exception {
JsonViewObject jsonViewObject = rpcService(httpRestUtil, rpcUri, null, JSONObject.toJSONString(commandVO)); String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(commandVO.getCrossCode());
LockControlVO lockControlVO = new LockControlVO();
lockControlVO.setCrossCode(commandVO.getCrossCode());
lockControlVO.setCommand(lockControlVO.getCommand());
lockControlVO.setDuration(commandVO.getDuration());
lockControlVO.setPhaseList(commandVO.getPhaseList());
JsonViewObject jsonViewObject = utcFeignClientCache.getUtcFeignClientService(manufacturerIdCode).lockControl(lockControlVO);
if (StringUtils.endsWithIgnoreCase("success", jsonViewObject.getStatus())) { if (StringUtils.endsWithIgnoreCase("success", jsonViewObject.getStatus())) {
return jsonViewObject.success("万集标准协议锁定控制成功!"); return jsonViewObject.success("万集标准协议锁定控制成功!");
} }
...@@ -71,24 +82,44 @@ public class WanJiControlCommandServiceImpl implements ControlCommandService { ...@@ -71,24 +82,44 @@ public class WanJiControlCommandServiceImpl implements ControlCommandService {
@Override @Override
public JsonViewObject stepControl(String crossId, Integer command, Integer stepNum) throws Exception { public JsonViewObject stepControl(String crossId, Integer command, Integer stepNum) throws Exception {
HashMap<String, Object> paraMap = new HashMap<>(); String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(crossId);
paraMap.put("crossId", crossId); JsonViewObject jsonViewObject = utcFeignClientCache.getUtcFeignClientService(manufacturerIdCode).stepControl(crossId, command, stepNum);
paraMap.put("command", command);
paraMap.put("stepNum", stepNum);
JsonViewObject jsonViewObject = rpcService(httpRestUtil, rpcUri, null, JSONObject.toJSONString(paraMap));
if (StringUtils.endsWithIgnoreCase("success", jsonViewObject.getStatus())) { if (StringUtils.endsWithIgnoreCase("success", jsonViewObject.getStatus())) {
return jsonViewObject.success("万集标准协议步进控制成功!"); return jsonViewObject.success("万集标准协议步进控制成功!");
} }
return jsonViewObject; return jsonViewObject;
} }
/**
* 全红黄闪关灯
*
* @param crossId 信号机编号
* @param command 指令 1 开 0 关
* @param commandType 命令类型
* @return
* @throws Exception
*/
@Override @Override
public JsonViewObject setSignalControl(String crossId, Integer command, Integer commandType) throws Exception { public JsonViewObject setSignalControl(String crossId, Integer command, Integer commandType) throws Exception {
HashMap<String, Object> paraMap = new HashMap<>(); String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(crossId);
paraMap.put("crossId", crossId); UtcFeignCommon utcFeignClientService = utcFeignClientCache.getUtcFeignClientService(manufacturerIdCode);
paraMap.put("command", command); JsonViewObject jsonViewObject = JsonViewObject.newInstance();
paraMap.put("commandType", commandType); ControlCommandVO controlCommandVO = new ControlCommandVO();
JsonViewObject jsonViewObject = rpcService(httpRestUtil, rpcUri, null, JSONObject.toJSONString(paraMap)); controlCommandVO.setCrossCode(crossId);
controlCommandVO.setCommand(command);
controlCommandVO.setDuration(999);
if (Objects.equals(Constants.CLOSE_LIGHT_CONTROL, command)) {
controlCommandVO.setControlType(Constants.CLOSE_LIGHT_CONTROL);
jsonViewObject = utcFeignClientService.closeLightControl(controlCommandVO);
}
if (Objects.equals(Constants.YELLOW_LIGHT_CONTROL, command)) {
controlCommandVO.setControlType(Constants.YELLOW_LIGHT_CONTROL);
jsonViewObject = utcFeignClientService.closeLightControl(controlCommandVO);
}
if (Objects.equals(Constants.ALL_RED_CONTROL, command)) {
controlCommandVO.setControlType(Constants.ALL_RED_CONTROL);
jsonViewObject = utcFeignClientService.closeLightControl(controlCommandVO);
}
if (StringUtils.endsWithIgnoreCase("success", jsonViewObject.getStatus())) { if (StringUtils.endsWithIgnoreCase("success", jsonViewObject.getStatus())) {
return jsonViewObject.success("万集标准协议设置信号机控制模式成功!"); return jsonViewObject.success("万集标准协议设置信号机控制模式成功!");
} }
...@@ -97,12 +128,8 @@ public class WanJiControlCommandServiceImpl implements ControlCommandService { ...@@ -97,12 +128,8 @@ public class WanJiControlCommandServiceImpl implements ControlCommandService {
@Override @Override
public JsonViewObject recoverSchedule(String crossId) throws Exception { public JsonViewObject recoverSchedule(String crossId) throws Exception {
HashMap<String, Object> paraMap = new HashMap<>(); String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(crossId);
paraMap.put("crossId", crossId); JsonViewObject jsonViewObject = utcFeignClientCache.getUtcFeignClientService(manufacturerIdCode).recoverSchedule(crossId);
// JsonViewObject jsonViewObject = rpcService(httpRestUtil, rpcUri, null, JSONObject.toJSONString(paraMap));
UtcFeignCommon dtService = utcFeignClientCache.getUtcFeignClientService("DT");
JsonViewObject jsonViewObject = dtService.recoverSchedule(crossId);
// .recoverSchedule(crossId);
if (StringUtils.endsWithIgnoreCase("success", jsonViewObject.getStatus())) { if (StringUtils.endsWithIgnoreCase("success", jsonViewObject.getStatus())) {
return jsonViewObject.success("万集标准协议恢复时间表成功!"); return jsonViewObject.success("万集标准协议恢复时间表成功!");
} }
...@@ -111,7 +138,8 @@ public class WanJiControlCommandServiceImpl implements ControlCommandService { ...@@ -111,7 +138,8 @@ public class WanJiControlCommandServiceImpl implements ControlCommandService {
@Override @Override
public JsonViewObject phaseTimingSend(PhaseTimingSendVO phaseTimingSendVO) throws Exception { public JsonViewObject phaseTimingSend(PhaseTimingSendVO phaseTimingSendVO) throws Exception {
JsonViewObject jsonViewObject = rpcService(httpRestUtil, rpcUri, null, JSONObject.toJSONString(phaseTimingSendVO)); String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(phaseTimingSendVO.getCrossCode());
JsonViewObject jsonViewObject = utcFeignClientCache.getUtcFeignClientService(manufacturerIdCode).recoverSchedule(phaseTimingSendVO.getCrossCode());
if (StringUtils.endsWithIgnoreCase("success", jsonViewObject.getStatus())) { if (StringUtils.endsWithIgnoreCase("success", jsonViewObject.getStatus())) {
return jsonViewObject.success("万集标准协议下发相位配时成功!"); return jsonViewObject.success("万集标准协议下发相位配时成功!");
} }
......
...@@ -10,16 +10,17 @@ import java.util.List; ...@@ -10,16 +10,17 @@ import java.util.List;
* @date 2022/11/21 9:09 * @date 2022/11/21 9:09
*/ */
public interface SignalStatusService { public interface SignalStatusService {
List<SignalStatusLogPO> runningStatusAlarm(); List<SignalStatusLogPO> runningStatusAlarm() throws Exception;
/** /**
* todo 提供给其他平台,需要确认以厂商还是以路口形式推送数据 * todo 提供给其他平台,需要确认以厂商还是以路口形式推送数据
*
* @param crossId * @param crossId
* @return * @return
*/ */
List<SignalStatusLogPO> runningStatusAlarm(String crossId); List<SignalStatusLogPO> runningStatusAlarm(String crossId);
List<LightsStatusVO> lightStatus(); List<LightsStatusVO> lightStatus() throws Exception;
List<LightsStatusVO> lightStatus(String crossId); List<LightsStatusVO> lightStatus(String crossId) throws Exception;
} }
...@@ -16,7 +16,7 @@ public interface WanJiCommonRunningStatusService extends RpcService { ...@@ -16,7 +16,7 @@ public interface WanJiCommonRunningStatusService extends RpcService {
* @param crossIdList * @param crossIdList
* @return * @return
*/ */
List<SignalStatusLogPO> runningStatus(List<String> crossIdList); List<SignalStatusLogPO> runningStatus(List<String> crossIdList) throws Exception;
/** /**
...@@ -24,5 +24,5 @@ public interface WanJiCommonRunningStatusService extends RpcService { ...@@ -24,5 +24,5 @@ public interface WanJiCommonRunningStatusService extends RpcService {
* @param crossIdList * @param crossIdList
* @return * @return
*/ */
List<LightsStatusVO> lightsStatus(List<String> crossIdList); List<LightsStatusVO> lightsStatus(List<String> crossIdList) throws Exception;
} }
...@@ -44,7 +44,7 @@ public class SignalStatusServiceImpl implements SignalStatusService { ...@@ -44,7 +44,7 @@ public class SignalStatusServiceImpl implements SignalStatusService {
@Override @Override
@Transactional @Transactional
public List<SignalStatusLogPO> runningStatusAlarm() { public List<SignalStatusLogPO> runningStatusAlarm() throws Exception {
List<SignalStatusLogPO> resList = new ArrayList<>(); List<SignalStatusLogPO> resList = new ArrayList<>();
BasicEnum.ManufacturerEnum[] manufacturerEnums = BasicEnum.ManufacturerEnum.values(); BasicEnum.ManufacturerEnum[] manufacturerEnums = BasicEnum.ManufacturerEnum.values();
for (BasicEnum.ManufacturerEnum manufacturerEnum : manufacturerEnums) { for (BasicEnum.ManufacturerEnum manufacturerEnum : manufacturerEnums) {
...@@ -87,7 +87,7 @@ public class SignalStatusServiceImpl implements SignalStatusService { ...@@ -87,7 +87,7 @@ public class SignalStatusServiceImpl implements SignalStatusService {
} }
@Override @Override
public List<LightsStatusVO> lightStatus(String crossId) { public List<LightsStatusVO> lightStatus(String crossId) throws Exception {
List<LightsStatusVO> lightsStatusVOList = new ArrayList<>(); List<LightsStatusVO> lightsStatusVOList = new ArrayList<>();
String manufacturerCode = getManufacturerCode(crossId); String manufacturerCode = getManufacturerCode(crossId);
if (Objects.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerCode)) { if (Objects.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerCode)) {
...@@ -114,7 +114,7 @@ public class SignalStatusServiceImpl implements SignalStatusService { ...@@ -114,7 +114,7 @@ public class SignalStatusServiceImpl implements SignalStatusService {
@Override @Override
@Transactional @Transactional
public List<LightsStatusVO> lightStatus() { public List<LightsStatusVO> lightStatus() throws Exception {
List<LightsStatusVO> resList = new ArrayList<>(); List<LightsStatusVO> resList = new ArrayList<>();
BasicEnum.ManufacturerEnum[] manufacturerEnums = BasicEnum.ManufacturerEnum.values(); BasicEnum.ManufacturerEnum[] manufacturerEnums = BasicEnum.ManufacturerEnum.values();
for (BasicEnum.ManufacturerEnum manufacturerEnum : manufacturerEnums) { for (BasicEnum.ManufacturerEnum manufacturerEnum : manufacturerEnums) {
......
package net.wanji.utc.service.runninginfo.impl; package net.wanji.utc.service.runninginfo.impl;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.rest.JsonViewObject; import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.databus.po.SignalStatusLogPO; import net.wanji.databus.po.SignalStatusLogPO;
import net.wanji.databus.vo.LightsStatusVO; import net.wanji.databus.vo.LightsStatusVO;
import net.wanji.utc.cache.CrossInfoCache;
import net.wanji.utc.cache.UtcFeignClientCache;
import net.wanji.utc.service.runninginfo.WanJiCommonRunningStatusService; import net.wanji.utc.service.runninginfo.WanJiCommonRunningStatusService;
import net.wanji.utc.util.HttpRestUtil; import net.wanji.utc.util.HttpRestUtil;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.*;
import java.util.Map;
/** /**
* @author duanruiming * @author duanruiming
...@@ -26,18 +26,36 @@ public class WanJiCommonRunningStatusServiceImpl implements WanJiCommonRunningSt ...@@ -26,18 +26,36 @@ public class WanJiCommonRunningStatusServiceImpl implements WanJiCommonRunningSt
private final HttpRestUtil httpRestUtil; private final HttpRestUtil httpRestUtil;
@Value("url") @Value("url")
private String rpcUri; private String rpcUri;
private final CrossInfoCache crossInfoCache;
private final UtcFeignClientCache utcFeignClientCache;
@Override @Override
public List<SignalStatusLogPO> runningStatus(List<String> crossIdList) { public List<SignalStatusLogPO> runningStatus(List<String> crossIdList) throws Exception {
JsonViewObject jsonViewObject = rpcService(httpRestUtil, rpcUri, null, JSONObject.toJSONString(crossIdList)); Set<String> set = new HashSet<>();
List<SignalStatusLogPO> result = (List<SignalStatusLogPO>) jsonViewObject.getContent(); for (String crossId : crossIdList) {
String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(crossId);
set.add(manufacturerIdCode);
}
List<SignalStatusLogPO> result = new ArrayList<>();
for (String manufacturerIdCode : set) {
JsonViewObject jsonViewObject = utcFeignClientCache.getUtcFeignClientService(manufacturerIdCode).runningStatusAlarm();
result = (List<SignalStatusLogPO>) jsonViewObject.getContent();
}
return result; return result;
} }
@Override @Override
public List<LightsStatusVO> lightsStatus(List<String> crossIdList) { public List<LightsStatusVO> lightsStatus(List<String> crossIdList) throws Exception {
JsonViewObject jsonViewObject = rpcService(httpRestUtil, rpcUri, null, JSONObject.toJSONString(crossIdList)); Set<String> set = new HashSet<>();
List<LightsStatusVO> result = (List<LightsStatusVO>) jsonViewObject.getContent(); for (String crossId : crossIdList) {
String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(crossId);
set.add(manufacturerIdCode);
}
List<LightsStatusVO> result = new ArrayList<>();
for (String manufacturerIdCode : set) {
JsonViewObject jsonViewObject = utcFeignClientCache.getUtcFeignClientService(manufacturerIdCode).lightStatus();
result = (List<LightsStatusVO>) jsonViewObject.getContent();
}
return result; return result;
} }
......
...@@ -21,7 +21,7 @@ public interface WanJiCommonStaticInfoService extends RpcService { ...@@ -21,7 +21,7 @@ public interface WanJiCommonStaticInfoService extends RpcService {
* @param signalId * @param signalId
* @return * @return
*/ */
Result<SchemePhaseLightsVO> schemePhaseLights(String crossId, String signalId); Result<SchemePhaseLightsVO> schemePhaseLights(String crossId, String signalId) throws Exception;
/** /**
* 静态参数,获取计划数据-计划信息、时段信息 * 静态参数,获取计划数据-计划信息、时段信息
...@@ -30,7 +30,7 @@ public interface WanJiCommonStaticInfoService extends RpcService { ...@@ -30,7 +30,7 @@ public interface WanJiCommonStaticInfoService extends RpcService {
* @param signalId * @param signalId
* @return * @return
*/ */
Result<PlanSectionVO> planSection(String crossId, String signalId, Integer planNo); Result<PlanSectionVO> planSection(String crossId, String signalId, Integer planNo) throws Exception;
/** /**
* 静态参数,获取时间表数据 * 静态参数,获取时间表数据
...@@ -38,5 +38,5 @@ public interface WanJiCommonStaticInfoService extends RpcService { ...@@ -38,5 +38,5 @@ public interface WanJiCommonStaticInfoService extends RpcService {
* @param signalId * @param signalId
* @return * @return
*/ */
Result<List<CrossSchedulesPO>> schedules(String crossId, String signalId); Result<List<CrossSchedulesPO>> schedules(String crossId, String signalId) throws Exception;
} }
package net.wanji.utc.service.staticinfo.impl; package net.wanji.utc.service.staticinfo.impl;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.rest.JsonViewObject; import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.databus.dao.entity.*; import net.wanji.databus.dao.entity.*;
import net.wanji.databus.dao.mapper.*; import net.wanji.databus.dao.mapper.*;
import net.wanji.databus.dto.CrossSchedulesDTO;
import net.wanji.databus.dto.PlanSectionDTO;
import net.wanji.databus.vo.CrossIdVO;
import net.wanji.databus.vo.PlanSectionVO; import net.wanji.databus.vo.PlanSectionVO;
import net.wanji.databus.vo.SchemePhaseLightsVO; import net.wanji.databus.vo.SchemePhaseLightsVO;
import net.wanji.utc.cache.CrossInfoCache;
import net.wanji.utc.cache.UtcFeignClientCache;
import net.wanji.utc.common.Result; import net.wanji.utc.common.Result;
import net.wanji.utc.service.staticinfo.WanJiCommonStaticInfoService; import net.wanji.utc.service.staticinfo.WanJiCommonStaticInfoService;
import net.wanji.utc.util.HttpRestUtil; import net.wanji.utc.util.HttpRestUtil;
...@@ -15,10 +19,7 @@ import org.springframework.beans.factory.annotation.Value; ...@@ -15,10 +19,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.HashMap; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/** /**
* @author duanruiming * @author duanruiming
...@@ -39,12 +40,16 @@ public class WanJiCommonStaticInfoServiceImpl implements WanJiCommonStaticInfoSe ...@@ -39,12 +40,16 @@ public class WanJiCommonStaticInfoServiceImpl implements WanJiCommonStaticInfoSe
private final CrossPlanMapper crossPlanMapper; private final CrossPlanMapper crossPlanMapper;
private final CrossSectionMapper crossSectionMapper; private final CrossSectionMapper crossSectionMapper;
private final CrossSchedulesMapper crossSchedulesMapper; private final CrossSchedulesMapper crossSchedulesMapper;
private final CrossInfoCache crossInfoCache;
private final UtcFeignClientCache utcFeignClientCache;
@Override @Override
public Result<SchemePhaseLightsVO> schemePhaseLights(String crossId, String signalId) { public Result<SchemePhaseLightsVO> schemePhaseLights(String crossId, String signalId) throws Exception {
Map<String, String> commonParamMap = getCommonParamMap(crossId, signalId); String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(crossId);
JsonViewObject jsonViewObject = rpcService(httpRestUtil, rpcUri, null, JSONObject.toJSONString(commonParamMap)); CrossIdVO crossIdVO = new CrossIdVO();
crossIdVO.setCrossId(crossId);
JsonViewObject jsonViewObject = utcFeignClientCache.getUtcFeignClientService(manufacturerIdCode).schemePhaseLights(crossIdVO);
SchemePhaseLightsVO content = (SchemePhaseLightsVO) jsonViewObject.getContent(); SchemePhaseLightsVO content = (SchemePhaseLightsVO) jsonViewObject.getContent();
if (Objects.nonNull(content)) { if (Objects.nonNull(content)) {
List<BaseCrossSchemePO> crossSchemeList = content.getCrossSchemeList(); List<BaseCrossSchemePO> crossSchemeList = content.getCrossSchemeList();
...@@ -73,12 +78,13 @@ public class WanJiCommonStaticInfoServiceImpl implements WanJiCommonStaticInfoSe ...@@ -73,12 +78,13 @@ public class WanJiCommonStaticInfoServiceImpl implements WanJiCommonStaticInfoSe
} }
@Override @Override
public Result<PlanSectionVO> planSection(String crossId, String signalId, Integer planNo) { public Result<PlanSectionVO> planSection(String crossId, String signalId, Integer planNo) throws Exception {
Map<String, String> paramMap = new HashMap<>(); String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(crossId);
paramMap.put("crossId", crossId); PlanSectionDTO planSectionDTO = new PlanSectionDTO();
paramMap.put("planNo", String.valueOf(planNo)); planSectionDTO.setCrossId(crossId);
paramMap.put("signalId", signalId); planSectionDTO.setPlanNo(planNo);
JsonViewObject jsonViewObject = rpcService(httpRestUtil, rpcUri, null, JSONObject.toJSONString(paramMap)); JsonViewObject jsonViewObject = utcFeignClientCache.getUtcFeignClientService(manufacturerIdCode).planSection(planSectionDTO);
PlanSectionVO content = (PlanSectionVO) jsonViewObject.getContent(); PlanSectionVO content = (PlanSectionVO) jsonViewObject.getContent();
if (Objects.nonNull(content)) { if (Objects.nonNull(content)) {
if (Objects.nonNull(content)) { if (Objects.nonNull(content)) {
...@@ -99,9 +105,12 @@ public class WanJiCommonStaticInfoServiceImpl implements WanJiCommonStaticInfoSe ...@@ -99,9 +105,12 @@ public class WanJiCommonStaticInfoServiceImpl implements WanJiCommonStaticInfoSe
} }
@Override @Override
public Result<List<CrossSchedulesPO>> schedules(String crossId, String signalId) { public Result<List<CrossSchedulesPO>> schedules(String crossId, String signalId) throws Exception {
Map<String, String> commonParamMap = getCommonParamMap(crossId, signalId); String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(crossId);
JsonViewObject jsonViewObject = rpcService(httpRestUtil, rpcUri, null, JSONObject.toJSONString(commonParamMap)); CrossSchedulesDTO crossSchedulesDTO = new CrossSchedulesDTO();
crossSchedulesDTO.setManufacturerCode(manufacturerIdCode);
crossSchedulesDTO.setCrossIdList(Arrays.asList(crossId));
JsonViewObject jsonViewObject = utcFeignClientCache.getUtcFeignClientService(manufacturerIdCode).crossSchedules(crossSchedulesDTO);
List<CrossSchedulesPO> content = (List<CrossSchedulesPO>) jsonViewObject.getContent(); List<CrossSchedulesPO> content = (List<CrossSchedulesPO>) jsonViewObject.getContent();
if (Objects.nonNull(content)) { if (Objects.nonNull(content)) {
if (!CollectionUtils.isEmpty(content)) { if (!CollectionUtils.isEmpty(content)) {
......
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