Commit 3b0b1adc authored by duanruiming's avatar duanruiming

[update] 相位倒计时优化

parent f521d5f5
...@@ -10,10 +10,7 @@ import net.wanji.utc.dt.common.enums.ControlModelEnum; ...@@ -10,10 +10,7 @@ import net.wanji.utc.dt.common.enums.ControlModelEnum;
import net.wanji.utc.dt.common.enums.ControlTypeEnum; import net.wanji.utc.dt.common.enums.ControlTypeEnum;
import net.wanji.utc.dt.common.enums.PhaseLightColorEnum; import net.wanji.utc.dt.common.enums.PhaseLightColorEnum;
import net.wanji.utc.dt.netty.NettyClient; import net.wanji.utc.dt.netty.NettyClient;
import net.wanji.utc.dt.pojo.dtconvert.FaultInfoPojo; import net.wanji.utc.dt.pojo.dtconvert.*;
import net.wanji.utc.dt.pojo.dtconvert.PhaseStageStatusPojo;
import net.wanji.utc.dt.pojo.dtconvert.RunningStatusPojo;
import net.wanji.utc.dt.pojo.dtconvert.SchemeInfoPojo;
import net.wanji.utc.dt.pojo.netty.MessageResultPojo; import net.wanji.utc.dt.pojo.netty.MessageResultPojo;
import net.wanji.utc.dt.service.SignalStatusService; import net.wanji.utc.dt.service.SignalStatusService;
import net.wanji.utc.dt.util.CommonUtils; import net.wanji.utc.dt.util.CommonUtils;
...@@ -32,7 +29,7 @@ import java.util.stream.Collectors; ...@@ -32,7 +29,7 @@ import java.util.stream.Collectors;
public class DTSignalStatusServiceImpl implements SignalStatusService { public class DTSignalStatusServiceImpl implements SignalStatusService {
@Override @Override
public List<SignalStatusLogPO> runningStatusAlarm(String crossId) throws Exception{ public List<SignalStatusLogPO> runningStatusAlarm(String crossId) throws Exception {
List<String> lightsStatus = getLightsStatusInfoPojos(crossId); List<String> lightsStatus = getLightsStatusInfoPojos(crossId);
List<FaultInfoPojo> faultInfoPojos = getFaultInfoPojos(crossId); List<FaultInfoPojo> faultInfoPojos = getFaultInfoPojos(crossId);
List<RunningStatusPojo> runningStatusPojos = getRunningStatusPojos(crossId); List<RunningStatusPojo> runningStatusPojos = getRunningStatusPojos(crossId);
...@@ -109,7 +106,7 @@ public class DTSignalStatusServiceImpl implements SignalStatusService { ...@@ -109,7 +106,7 @@ public class DTSignalStatusServiceImpl implements SignalStatusService {
return lightsStatusList; return lightsStatusList;
} }
private List<FaultInfoPojo> getFaultInfoPojos(String crossId) throws Exception{ private List<FaultInfoPojo> getFaultInfoPojos(String crossId) throws Exception {
CrossInfoPO crossInfoPO = DTControlCommandServiceImpl.checkCrossId(crossId); CrossInfoPO crossInfoPO = DTControlCommandServiceImpl.checkCrossId(crossId);
String message = String.format(Constants.COMMAND_COMMON, Constants.COMMAND_QUERY, Constants.COMMAND_FAULT_LIST); String message = String.format(Constants.COMMAND_COMMON, Constants.COMMAND_QUERY, Constants.COMMAND_FAULT_LIST);
String faultSign = Constants.COMMAND_FAULT_LIST.concat(Constants.COMMAND_QUERY_REPLY); String faultSign = Constants.COMMAND_FAULT_LIST.concat(Constants.COMMAND_QUERY_REPLY);
...@@ -139,7 +136,7 @@ public class DTSignalStatusServiceImpl implements SignalStatusService { ...@@ -139,7 +136,7 @@ public class DTSignalStatusServiceImpl implements SignalStatusService {
return getLightsStatusVOs(crossId, lightsStatus, phaseStageStatusPojos, runningStatusPojos); return getLightsStatusVOs(crossId, lightsStatus, phaseStageStatusPojos, runningStatusPojos);
} }
private List<PhaseStageStatusPojo> getPhaseStageStatus(String crossId) throws Exception{ private List<PhaseStageStatusPojo> getPhaseStageStatus(String crossId) throws Exception {
List<PhaseStageStatusPojo> phaseStageStatusPojos = new ArrayList<>(); List<PhaseStageStatusPojo> phaseStageStatusPojos = new ArrayList<>();
CrossInfoPO crossInfoPO = DTControlCommandServiceImpl.checkCrossId(crossId); CrossInfoPO crossInfoPO = DTControlCommandServiceImpl.checkCrossId(crossId);
String message = String.format(Constants.COMMAND_COMMON, Constants.COMMAND_QUERY, Constants.COMMAND_PHASE_STAGE_STATUS); String message = String.format(Constants.COMMAND_COMMON, Constants.COMMAND_QUERY, Constants.COMMAND_PHASE_STAGE_STATUS);
...@@ -177,7 +174,8 @@ public class DTSignalStatusServiceImpl implements SignalStatusService { ...@@ -177,7 +174,8 @@ public class DTSignalStatusServiceImpl implements SignalStatusService {
private List<LightsStatusVO> getLightsStatusVOs(String crossId, List<String> lightsStatus, List<PhaseStageStatusPojo> phaseStageStatusPojos, List<RunningStatusPojo> runningStatusPojos) { private List<LightsStatusVO> getLightsStatusVOs(String crossId, List<String> lightsStatus, List<PhaseStageStatusPojo> phaseStageStatusPojos, List<RunningStatusPojo> runningStatusPojos) {
List<LightsStatusVO> lightsStatusVOS = new ArrayList<>(runningStatusPojos.size()); List<LightsStatusVO> lightsStatusVOS = new ArrayList<>(runningStatusPojos.size());
for (RunningStatusPojo runningStatusPojo : runningStatusPojos) { for (int j = 0; j < runningStatusPojos.size(); j++) {
RunningStatusPojo runningStatusPojo = runningStatusPojos.get(j);
LightsStatusVO lightsStatusVO = new LightsStatusVO(); LightsStatusVO lightsStatusVO = new LightsStatusVO();
String controlModel = String.valueOf(ControlModelEnum.getWjControlMode(runningStatusPojo.getControlMode().substring(2, 4))); String controlModel = String.valueOf(ControlModelEnum.getWjControlMode(runningStatusPojo.getControlMode().substring(2, 4)));
lightsStatusVO.setCrossId(crossId); lightsStatusVO.setCrossId(crossId);
...@@ -187,27 +185,58 @@ public class DTSignalStatusServiceImpl implements SignalStatusService { ...@@ -187,27 +185,58 @@ public class DTSignalStatusServiceImpl implements SignalStatusService {
if (!CollectionUtils.isEmpty(phaseStageStatusPojos)) { if (!CollectionUtils.isEmpty(phaseStageStatusPojos)) {
phaseStageStatusPojo = phaseStageStatusPojos.get(0); phaseStageStatusPojo = phaseStageStatusPojos.get(0);
} }
lightsStatusVO.setCycleCountDown(phaseStageStatusPojo.getRemainTime());
lightsStatusVO.setCyclePhaseCountDown(phaseStageStatusPojo.getRemainTime());
Integer currentSchemeId = runningStatusPojo.getSchemeId(); Integer currentSchemeId = runningStatusPojo.getSchemeId();
Integer currentPhaseStageId = runningStatusPojo.getPhaseStageId(); Integer currentPhaseStageId = runningStatusPojo.getPhaseStageId();
List<SchemeInfoPojo> schemeInfoPojos = SignalDataCache.schemeInfoCache.get(crossId); List<SchemeInfoPojo> schemeInfoPojos = SignalDataCache.schemeInfoCache.get(crossId);
if (!CollectionUtils.isEmpty(schemeInfoPojos)) { if (!CollectionUtils.isEmpty(schemeInfoPojos)) {
for (SchemeInfoPojo schemeInfoPojo : schemeInfoPojos) { for (SchemeInfoPojo schemeInfoPojo : schemeInfoPojos) {
if (Objects.equals(schemeInfoPojo.getSchemeId(), currentSchemeId)) { if (Objects.equals(schemeInfoPojo.getSchemeId(), currentSchemeId)) {
lightsStatusVO.setSchemeId(String.valueOf(currentSchemeId)); List<Integer> phaseStageTimeChain = schemeInfoPojo.getPhaseStageTimeChain();
lightsStatusVO.setCycleLen(schemeInfoPojo.getCycle()); List<Integer> phaseStageChain = schemeInfoPojo.getPhaseStageChain();
lightsStatusVO.setPhaseId(String.valueOf(currentPhaseStageId)); List<PhaseStageInfoPojo> phaseStageInfoPojos = SignalDataCache.phaseStageInfoCache.get(crossId);
// List<SchemeInfoPojo.SchemeStagePojo> stageInfoList = SchemeInfoPojo.getStageInfoList(schemeInfoPojo); if (!CollectionUtils.isEmpty(phaseStageInfoPojos)) {
// List<PhaseStageInfoPojo> phaseStageInfoPojos = SignalDataCache.phaseStageInfoCache.get(crossId); for (int l = 0; l < phaseStageInfoPojos.size(); l++) {
// if (!CollectionUtils.isEmpty(phaseStageInfoPojos)) { PhaseStageInfoPojo phaseStageInfoPojo = phaseStageInfoPojos.get(l);
// for (PhaseStageInfoPojo phaseStageInfoPojo : phaseStageInfoPojos) { if (Objects.equals(phaseStageInfoPojo.getPhaseStageId(), currentPhaseStageId)) {
// if (Objects.equals(phaseStageInfoPojo.getPhaseStageId(), currentPhaseStageId)) { // 通过阶段好号取阶段时间
// List<Integer> phaseList = phaseStageInfoPojo.getPhaseList(); Integer phaseStageTime = 0;
// lightsStatusVO.setPhaseId(phaseId); for (int i = 0; i < phaseStageChain.size(); i++) {
// } Integer phaseStage = phaseStageChain.get(i);
// } if (Objects.equals(currentPhaseStageId, phaseStage)) {
// } phaseStageTime = phaseStageTimeChain.get(i);
}
}
// 通过相位号获取过度时间
List<Integer> phaseList = phaseStageInfoPojo.getPhaseList();
List<PhaseInfoPojo> phaseInfoPojos = SignalDataCache.phaseInfoCache.get(crossId);
Integer redTime = 0;
for (PhaseInfoPojo phaseInfoPojo : phaseInfoPojos) {
if (phaseInfoPojo.getPhaseId() == phaseList.get(0)) {
redTime = phaseInfoPojo.getRedTime();
}
}
lightsStatusVO.setSchemeId(String.valueOf(currentSchemeId));
lightsStatusVO.setCycleLen(schemeInfoPojo.getCycle());
lightsStatusVO.setCycleCountDown(phaseStageStatusPojo.getRemainTime());
// 当相位剩余时间小于0是,运行的第二个阶段
int realRemainTime = phaseStageStatusPojo.getRemainTime() - (phaseStageTime - redTime);
if (realRemainTime >= 0) {
lightsStatusVO.setPhaseId(String.valueOf(currentPhaseStageId));
lightsStatusVO.setCyclePhaseCountDown(realRemainTime);
} else {
PhaseStageInfoPojo nextPhaseStageInfoPojo = null;
if (l + 1 <= phaseStageInfoPojos.size()) {
nextPhaseStageInfoPojo = phaseStageInfoPojos.get(l + 1);
} else {
nextPhaseStageInfoPojo = phaseStageInfoPojos.get(0);
}
lightsStatusVO.setPhaseId(String.valueOf(nextPhaseStageInfoPojo.getPhaseStageId()));
lightsStatusVO.setCyclePhaseCountDown(phaseStageStatusPojo.getRemainTime() + (phaseStageTime - redTime));
}
}
}
}
Map<String, Object> dirLampGroupMap = new HashMap<>(); Map<String, Object> dirLampGroupMap = new HashMap<>();
if (!CollectionUtils.isEmpty(lightsStatus)) { if (!CollectionUtils.isEmpty(lightsStatus)) {
for (int i = 0; i < lightsStatus.size(); i++) { for (int i = 0; i < lightsStatus.size(); i++) {
......
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