Commit 296a7e1e authored by duanruiming's avatar duanruiming

[update] 优化东土实时数据调用

parent 5ff31eb2
package net.wanji.utc.dt.cache;
import net.wanji.utc.dt.pojo.dtconvert.LightsInfoPojo;
import net.wanji.utc.dt.pojo.dtconvert.PhaseInfoPojo;
import net.wanji.utc.dt.pojo.dtconvert.PhaseStageInfoPojo;
import net.wanji.utc.dt.pojo.dtconvert.SchemeInfoPojo;
import net.wanji.utc.dt.pojo.dtconvert.*;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* @author duanruiming
......@@ -20,4 +18,8 @@ public class SignalDataCache {
public static final Map<String, List<PhaseStageInfoPojo>> phaseStageInfoCache = new HashMap<>();
public static final Map<String, List<PhaseInfoPojo>> phaseInfoCache = new HashMap<>();
public static final Map<String, List<LightsInfoPojo>> lightInfoCache = new HashMap<>();
public static final Map<String, List<String>> realTimeLightCache = new ConcurrentHashMap<>();
public static final Map<String, List<RunningStatusPojo>> runningStatusCache = new ConcurrentHashMap<>();
}
......@@ -32,9 +32,9 @@ public class DTSignalStatusServiceImpl implements SignalStatusService {
@Override
public List<SignalStatusLogPO> runningStatusAlarm(String crossId) throws Exception {
List<String> lightsStatus = getLightsStatusInfoPojos(crossId);
List<String> lightsStatus = SignalDataCache.realTimeLightCache.get(crossId);
List<FaultInfoPojo> faultInfoPojos = getFaultInfoPojos(crossId);
List<RunningStatusPojo> runningStatusPojos = getRunningStatusPojos(crossId);
List<RunningStatusPojo> runningStatusPojos = SignalDataCache.runningStatusCache.get(crossId);
return getSignalStatus(crossId, faultInfoPojos, runningStatusPojos);
}
......@@ -57,7 +57,7 @@ public class DTSignalStatusServiceImpl implements SignalStatusService {
return signalStatusLogPOS;
}
private List<RunningStatusPojo> getRunningStatusPojos(String crossId) throws Exception {
public static List<RunningStatusPojo> getRunningStatusPojos(String crossId) throws Exception {
List<RunningStatusPojo> runningStatusPojos = new ArrayList<>();
CrossInfoPO crossInfoPO = DTControlCommandServiceImpl.checkCrossId(crossId);
String message = String.format(Constants.COMMAND_COMMON, Constants.COMMAND_QUERY, Constants.COMMAND_RUNNING_STATUS);
......@@ -87,7 +87,7 @@ public class DTSignalStatusServiceImpl implements SignalStatusService {
return runningStatusPojos;
}
private List<String> getLightsStatusInfoPojos(String crossId) throws Exception {
public static List<String> getLightsStatusInfoPojos(String crossId) throws Exception {
List<String> lightsStatusList = new ArrayList<>();
CrossInfoPO crossInfoPO = DTControlCommandServiceImpl.checkCrossId(crossId);
String message = String.format(Constants.COMMAND_COMMON, Constants.COMMAND_QUERY, Constants.COMMAND_LIGHT_STATUS);
......@@ -132,9 +132,9 @@ public class DTSignalStatusServiceImpl implements SignalStatusService {
@Override
public List<LightsStatusVO> lightStatus(String crossId) throws Exception {
List<String> lightsStatus = getLightsStatusInfoPojos(crossId);
List<String> lightsStatus = SignalDataCache.realTimeLightCache.get(crossId);
List<PhaseStageStatusPojo> phaseStageStatusPojos = getPhaseStageStatus(crossId);
List<RunningStatusPojo> runningStatusPojos = getRunningStatusPojos(crossId);
List<RunningStatusPojo> runningStatusPojos = SignalDataCache.runningStatusCache.get(crossId);
return getLightsStatusVOs(crossId, lightsStatus, phaseStageStatusPojos, runningStatusPojos);
}
......
package net.wanji.utc.dt.task;
import net.wanji.databus.po.CrossInfoPO;
import net.wanji.utc.dt.cache.CrossInfoCache;
import net.wanji.utc.dt.cache.SignalDataCache;
import net.wanji.utc.dt.pojo.dtconvert.RunningStatusPojo;
import net.wanji.utc.dt.service.impl.DTSignalStatusServiceImpl;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
* @author duanruiming
* @date 2023/08/16 13:50
*/
@Component
public class RealTimeTask {
@Resource(name = "commonThreadPoolExecutor")
ThreadPoolTaskExecutor commonThreadPoolExecutor;
@Scheduled(initialDelay = 60 * 1000, fixedRate = 60 * 1000)
public void getRealTimeLightStatus() throws Exception {
Map<String, CrossInfoPO> crossInfoCache = CrossInfoCache.getCrossInfoCache();
if (!crossInfoCache.isEmpty()) {
for (Map.Entry<String, CrossInfoPO> entry : crossInfoCache.entrySet()) {
String crossId = entry.getKey();
commonThreadPoolExecutor.execute(() -> {
try {
List<String> lightsStatusInfoPojos = DTSignalStatusServiceImpl.getLightsStatusInfoPojos(crossId);
SignalDataCache.realTimeLightCache.put(crossId, lightsStatusInfoPojos);
List<RunningStatusPojo> runningStatusPojos = DTSignalStatusServiceImpl.getRunningStatusPojos(crossId);
SignalDataCache.runningStatusCache.put(crossId, runningStatusPojos);
} catch (Exception e) {
throw new RuntimeException(e);
}
});
}
}
}
}
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