Commit 7e048636 authored by duanruiming's avatar duanruiming

[update] UTC模拟灯态优化

parent e5dc6b07
...@@ -9,7 +9,8 @@ public class BasicEnum { ...@@ -9,7 +9,8 @@ public class BasicEnum {
public enum ManufacturerEnum { public enum ManufacturerEnum {
HK("海康", "HK"), HK("海康", "HK"),
DT("东土", "DT"), DT("东土", "DT"),
HISENSE("海信", "HISENSE"); HISENSE("海信", "HISENSE"),
STATIC("静态方案灯态", "STATIC");
private String nick; private String nick;
private String code; private String code;
......
...@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON; ...@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.utils.tool.JacksonUtils; import net.wanji.common.utils.tool.JacksonUtils;
import net.wanji.databus.dao.entity.CrossLightsStatusHistPO; import net.wanji.databus.dao.entity.CrossLightsStatusHistPO;
import net.wanji.databus.dao.mapper.CrossInfoMapper; import net.wanji.databus.dao.mapper.CrossInfoMapper;
...@@ -37,6 +38,7 @@ import java.util.stream.Collectors; ...@@ -37,6 +38,7 @@ import java.util.stream.Collectors;
*/ */
@RequiredArgsConstructor @RequiredArgsConstructor
@Service @Service
@Slf4j
public class SignalStatusServiceImpl implements SignalStatusService { public class SignalStatusServiceImpl implements SignalStatusService {
private final ManufacturerInfoMapper manufacturerInfoMapper; private final ManufacturerInfoMapper manufacturerInfoMapper;
private final CrossInfoMapper crossInfoMapper; private final CrossInfoMapper crossInfoMapper;
...@@ -51,6 +53,7 @@ public class SignalStatusServiceImpl implements SignalStatusService { ...@@ -51,6 +53,7 @@ public class SignalStatusServiceImpl implements SignalStatusService {
@Transactional @Transactional
public List<SignalStatusLogPO> runningStatusAlarm() throws Exception { public List<SignalStatusLogPO> runningStatusAlarm() throws Exception {
List<SignalStatusLogPO> resList = new ArrayList<>(); List<SignalStatusLogPO> resList = new ArrayList<>();
try {
BasicEnum.ManufacturerEnum[] manufacturerEnums = BasicEnum.ManufacturerEnum.values(); BasicEnum.ManufacturerEnum[] manufacturerEnums = BasicEnum.ManufacturerEnum.values();
for (BasicEnum.ManufacturerEnum manufacturerEnum : manufacturerEnums) { for (BasicEnum.ManufacturerEnum manufacturerEnum : manufacturerEnums) {
List<BaseCrossInfo> baseCrossInfoList = getBaseCrossInfoList(manufacturerEnum); List<BaseCrossInfo> baseCrossInfoList = getBaseCrossInfoList(manufacturerEnum);
...@@ -82,6 +85,10 @@ public class SignalStatusServiceImpl implements SignalStatusService { ...@@ -82,6 +85,10 @@ public class SignalStatusServiceImpl implements SignalStatusService {
} }
} }
} }
} catch (Exception e) {
log.error("运行状态、告警服务异常", e);
throw new Exception(e);
}
return resList; return resList;
} }
......
...@@ -12,6 +12,7 @@ import net.wanji.utc.cache.CrossInfoCache; ...@@ -12,6 +12,7 @@ import net.wanji.utc.cache.CrossInfoCache;
import net.wanji.utc.cache.UtcFeignClientCache; 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 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;
...@@ -37,6 +38,9 @@ public class WanJiCommonRunningStatusServiceImpl implements WanJiCommonRunningSt ...@@ -37,6 +38,9 @@ public class WanJiCommonRunningStatusServiceImpl implements WanJiCommonRunningSt
List<SignalStatusLogPO> result = new ArrayList<>(); List<SignalStatusLogPO> result = new ArrayList<>();
for (String crossId : crossIdList) { for (String crossId : crossIdList) {
String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(crossId); String manufacturerIdCode = crossInfoCache.getManufacturerCodeByCrossId(crossId);
if (StringUtils.isEmpty(manufacturerIdCode)) {
continue;
}
JsonViewObject jsonViewObject = utcFeignClientCache.getUtcFeignClientService(manufacturerIdCode).runningStatusAlarm(crossId); JsonViewObject jsonViewObject = utcFeignClientCache.getUtcFeignClientService(manufacturerIdCode).runningStatusAlarm(crossId);
if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) { if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
throw new Exception("获取运行状态、告警数据远程服务调用异常,异常信息" + jsonViewObject.getMessage()); throw new Exception("获取运行状态、告警数据远程服务调用异常,异常信息" + jsonViewObject.getMessage());
......
...@@ -105,6 +105,10 @@ public class SignalStatus4StaticSchemeTask { ...@@ -105,6 +105,10 @@ public class SignalStatus4StaticSchemeTask {
if (Objects.nonNull(crossSchemePO)) { if (Objects.nonNull(crossSchemePO)) {
String schemeNo = crossSchemePO.getSchemeNo(); String schemeNo = crossSchemePO.getSchemeNo();
if (StringUtils.isNotBlank(schemeNo)) { if (StringUtils.isNotBlank(schemeNo)) {
if (isNotNextSchemeNo(crossSchemePO)) {
continue;
}
List<CrossSchemePhaseCountDownDTO> crossSchemePhaseCountDownList = CrossSchemePhaseTimeCountCache.crossSchemePhaseCountDownList; List<CrossSchemePhaseCountDownDTO> crossSchemePhaseCountDownList = CrossSchemePhaseTimeCountCache.crossSchemePhaseCountDownList;
for (CrossSchemePhaseCountDownDTO crossSchemePhaseCountDownDTO : crossSchemePhaseCountDownList) { for (CrossSchemePhaseCountDownDTO crossSchemePhaseCountDownDTO : crossSchemePhaseCountDownList) {
if (StringUtils.equalsIgnoreCase(schemeNo, crossSchemePhaseCountDownDTO.getSchemeNo()) && if (StringUtils.equalsIgnoreCase(schemeNo, crossSchemePhaseCountDownDTO.getSchemeNo()) &&
...@@ -133,6 +137,21 @@ public class SignalStatus4StaticSchemeTask { ...@@ -133,6 +137,21 @@ public class SignalStatus4StaticSchemeTask {
} }
} }
private boolean isNotNextSchemeNo(CrossSchemePO crossSchemePO) {
if (Objects.nonNull(crossSchemePO)) {
String schemeNo = crossSchemePO.getSchemeNo();
String crossId = crossSchemePO.getCrossId();
LightsStatusVO lightsStatusVO = currentCrossLightStatusCache.get(crossId);
if (Objects.nonNull(lightsStatusVO)) {
String currentSchemeNo = lightsStatusVO.getSchemeId();
if (StringUtils.equalsIgnoreCase(schemeNo, currentSchemeNo)) {
return true;
}
}
}
return false;
}
private static Integer getCurrentSchemeId(List<CrossSectionPO> crossSectionPOS, LocalTime currentTime, Integer currentPlanId) { private static Integer getCurrentSchemeId(List<CrossSectionPO> crossSectionPOS, LocalTime currentTime, Integer currentPlanId) {
if (!CollectionUtils.isEmpty(crossSectionPOS)) { if (!CollectionUtils.isEmpty(crossSectionPOS)) {
List<CrossSectionPO> currentPlanIdSectionList = crossSectionPOS.stream().filter(po -> Objects.equals(currentPlanId, po.getPlanId())).collect(Collectors.toList()); List<CrossSectionPO> currentPlanIdSectionList = crossSectionPOS.stream().filter(po -> Objects.equals(currentPlanId, po.getPlanId())).collect(Collectors.toList());
...@@ -178,7 +197,7 @@ public class SignalStatus4StaticSchemeTask { ...@@ -178,7 +197,7 @@ public class SignalStatus4StaticSchemeTask {
} }
private static void getRedCountDown(String crossId, LightsStatusVO lightsStatusVO, String schemeId) { private static void getRedCountDown(String crossId, LightsStatusVO lightsStatusVO, String schemeId) throws Exception {
Map<String, Object> phaseMap = new HashMap<>(); Map<String, Object> phaseMap = new HashMap<>();
List<CrossPhaseDirTurnPojo> crossPhaseDirTurnCache = CrossPhaseDirTurnCache.getCrossPhaseDirTurnCache(crossId); List<CrossPhaseDirTurnPojo> crossPhaseDirTurnCache = CrossPhaseDirTurnCache.getCrossPhaseDirTurnCache(crossId);
List<PhaseCountDownDTO> phaseCountDownList = getPhaseCountDownList(crossId, schemeId); List<PhaseCountDownDTO> phaseCountDownList = getPhaseCountDownList(crossId, schemeId);
...@@ -351,7 +370,11 @@ public class SignalStatus4StaticSchemeTask { ...@@ -351,7 +370,11 @@ public class SignalStatus4StaticSchemeTask {
} else { } else {
lightsStatusVO.setCyclePhaseCountDown(lightsStatusVO.getCyclePhaseCountDown() - 1); lightsStatusVO.setCyclePhaseCountDown(lightsStatusVO.getCyclePhaseCountDown() - 1);
Integer cycleCountDown = lightsStatusVO.getCycleCountDown(); Integer cycleCountDown = lightsStatusVO.getCycleCountDown();
if (cycleCountDown >= 2) {
lightsStatusVO.setCycleCountDown(--cycleCountDown); lightsStatusVO.setCycleCountDown(--cycleCountDown);
} else {
lightsStatusVO.setCycleCountDown(lightsStatusVO.getCycleLen());
}
} }
} }
......
...@@ -97,22 +97,25 @@ public class SignalStatusTask { ...@@ -97,22 +97,25 @@ public class SignalStatusTask {
try { try {
if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerInfoPO.getCode())) { if (StringUtils.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerInfoPO.getCode())) {
lightsStatusVOS = hkLightsStatusService.getHkLightsStatus(crossId); lightsStatusVOS = hkLightsStatusService.getHkLightsStatus(crossId);
} else if (StringUtils.equals(BasicEnum.ManufacturerEnum.DT.getCode(), manufacturerInfoPO.getCode())){ } else if (StringUtils.equals(BasicEnum.ManufacturerEnum.DT.getCode(), manufacturerInfoPO.getCode())) {
JsonViewObject jsonViewObject = utcDTFeignClients.lightStatus(crossId); JsonViewObject jsonViewObject = utcDTFeignClients.lightStatus(crossId);
lightsStatusVOS = mapper.convertValue(jsonViewObject.getContent(), new TypeReference<List<LightsStatusVO>>() {}); lightsStatusVOS = mapper.convertValue(jsonViewObject.getContent(), new TypeReference<List<LightsStatusVO>>() {
} else if (StringUtils.endsWithIgnoreCase(BasicEnum.ManufacturerEnum.HISENSE.getCode(), manufacturerInfoPO.getCode())){ });
} else if (StringUtils.endsWithIgnoreCase(BasicEnum.ManufacturerEnum.HISENSE.getCode(), manufacturerInfoPO.getCode())) {
JsonViewObject jsonViewObject = utcHisenseFeignClients.lightStatus(crossId); JsonViewObject jsonViewObject = utcHisenseFeignClients.lightStatus(crossId);
lightsStatusVOS = mapper.convertValue(jsonViewObject.getContent(), new TypeReference<List<LightsStatusVO>>() {}); lightsStatusVOS = mapper.convertValue(jsonViewObject.getContent(), new TypeReference<List<LightsStatusVO>>() {
});
} else if (StringUtils.endsWithIgnoreCase(BasicEnum.ManufacturerEnum.STATIC.getCode(), manufacturerInfoPO.getCode())) {
LightsStatusVO lightsStatusVO = SignalStatus4StaticSchemeTask.currentCrossLightStatusCache.get(crossId);
if (Objects.nonNull(lightsStatusVO)) {
lightsStatusVOS = new ArrayList<>();
lightsStatusVOS.add(lightsStatusVO);
}
} }
} catch (Exception e) { } catch (Exception e) {
log.error("灯态异常"); log.error("获取厂商灯态异常", e);
//throw new Exception(e);
//lightsStatusVOS = new ArrayList<>();
//LightsStatusVO lightsStatusVO = SignalStatus4StaticSchemeTask.currentCrossLightStatusCache.get(crossId);
//lightsStatusVOS.add(lightsStatusVO);
} }
List<Map.Entry<String, RealTimeDataWebSocket>> value = entry.getValue(); List<Map.Entry<String, RealTimeDataWebSocket>> value = entry.getValue();
if (!CollectionUtils.isEmpty(lightsStatusVOS)) { if (!CollectionUtils.isEmpty(lightsStatusVOS)) {
for (LightsStatusVO lightsStatusVO : lightsStatusVOS) { for (LightsStatusVO lightsStatusVO : lightsStatusVOS) {
...@@ -157,6 +160,7 @@ public class SignalStatusTask { ...@@ -157,6 +160,7 @@ public class SignalStatusTask {
/** /**
* 计算控制倒计时 * 计算控制倒计时
*
* @param crossId * @param crossId
* @param lightsStatusVO * @param lightsStatusVO
*/ */
...@@ -200,6 +204,7 @@ public class SignalStatusTask { ...@@ -200,6 +204,7 @@ public class SignalStatusTask {
/** /**
* 插入路口灯态历史表 * 插入路口灯态历史表
*
* @param crossId 路口ID * @param crossId 路口ID
* @param json 灯态JSON字符串 * @param json 灯态JSON字符串
* @throws Exception 异常处理 * @throws Exception 异常处理
......
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