Commit 66007865 authored by duanruiming's avatar duanruiming

[update] 缓存移入databus,代码优化

parent 1d1a19ea
...@@ -8,8 +8,12 @@ import net.wanji.common.framework.Constants; ...@@ -8,8 +8,12 @@ import net.wanji.common.framework.Constants;
import net.wanji.common.framework.rest.JsonViewObject; import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.common.utils.tool.BeanListUtils; import net.wanji.common.utils.tool.BeanListUtils;
import net.wanji.common.utils.tool.BeanMapUtils; import net.wanji.common.utils.tool.BeanMapUtils;
import net.wanji.databus.dao.entity.CrossPhasePO; import net.wanji.databus.cache.BaseCrossInfoCache;
import net.wanji.databus.cache.BaseCrossPhaseInfoCache;
import net.wanji.databus.cache.BaseCrossSchemeInfoCache;
import net.wanji.databus.cache.CrossRidInfoCache;
import net.wanji.databus.dao.entity.BaseCrossSchemePO; import net.wanji.databus.dao.entity.BaseCrossSchemePO;
import net.wanji.databus.dao.entity.CrossPhasePO;
import net.wanji.databus.dao.entity.RidInfoEntity; import net.wanji.databus.dao.entity.RidInfoEntity;
import net.wanji.databus.dao.mapper.CrossDirDataRealtimeMapper; import net.wanji.databus.dao.mapper.CrossDirDataRealtimeMapper;
import net.wanji.databus.dao.mapper.CrossTurnDataRealtimeMapper; import net.wanji.databus.dao.mapper.CrossTurnDataRealtimeMapper;
...@@ -23,8 +27,6 @@ import net.wanji.databus.vo.SchemeSendVO; ...@@ -23,8 +27,6 @@ import net.wanji.databus.vo.SchemeSendVO;
import net.wanji.databus.vo.SignalStatusVO; import net.wanji.databus.vo.SignalStatusVO;
import net.wanji.feign.service.UtcFeignClients; import net.wanji.feign.service.UtcFeignClients;
import net.wanji.opt.cache.CrossDirTurnPhaseCache; import net.wanji.opt.cache.CrossDirTurnPhaseCache;
import net.wanji.opt.cache.CrossInfoCache;
import net.wanji.opt.cache.CrossRidInfoCache;
import net.wanji.opt.common.exception.OptServiceException; import net.wanji.opt.common.exception.OptServiceException;
import net.wanji.opt.dao.mapper.CrossSchemeOptLogMapper; import net.wanji.opt.dao.mapper.CrossSchemeOptLogMapper;
import net.wanji.opt.dto.CrossPhaseDTO; import net.wanji.opt.dto.CrossPhaseDTO;
...@@ -45,8 +47,6 @@ import java.time.ZoneOffset; ...@@ -45,8 +47,6 @@ import java.time.ZoneOffset;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static net.wanji.opt.cache.CrossPhaseInfoCache.getCrossPhaseCacheByCrossId;
import static net.wanji.opt.cache.CrossSchemeInfoCache.geteSchemePOCache;
/** /**
* @author hfx * @author hfx
...@@ -65,7 +65,9 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService { ...@@ -65,7 +65,9 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
private final SceneService sceneService; private final SceneService sceneService;
private final CrossTurnDataRealtimeMapper crossTurnDataRealtimeMapper; private final CrossTurnDataRealtimeMapper crossTurnDataRealtimeMapper;
private final CrossDirDataRealtimeMapper crossDirDataRealtimeMapper; private final CrossDirDataRealtimeMapper crossDirDataRealtimeMapper;
private final CrossInfoCache crossInfoCache; private final BaseCrossInfoCache crossInfoCache;
private final BaseCrossSchemeInfoCache baseCrossSchemeInfoCache;
private final BaseCrossPhaseInfoCache baseCrossPhaseInfoCache;
@Value("${crossOptParam.maxVehheadDist}") @Value("${crossOptParam.maxVehheadDist}")
private Double maxVehheadDist; private Double maxVehheadDist;
...@@ -505,7 +507,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService { ...@@ -505,7 +507,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
* @param phaseTimeOptResultMap * @param phaseTimeOptResultMap
* @return * @return
*/ */
public static SchemeSendVO getSchemeSendVO(String crossId, Map<String, CrossPhaseDTO> phaseMap, Map<String, Integer> phaseTimeOptResultMap) throws Exception { public SchemeSendVO getSchemeSendVO(String crossId, Map<String, CrossPhaseDTO> phaseMap, Map<String, Integer> phaseTimeOptResultMap) throws Exception {
String key = String.join(Constants.SystemParam.SEPARATOR_UNDER_LINE, crossId, "1", "s"); String key = String.join(Constants.SystemParam.SEPARATOR_UNDER_LINE, crossId, "1", "s");
CrossPhaseDTO crossPhaseDTO = phaseMap.get(key); CrossPhaseDTO crossPhaseDTO = phaseMap.get(key);
if (Objects.isNull(crossPhaseDTO)) { if (Objects.isNull(crossPhaseDTO)) {
...@@ -513,9 +515,9 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService { ...@@ -513,9 +515,9 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
throw new OptServiceException("当前路口不能获取到运行方案相位信息!"); throw new OptServiceException("当前路口不能获取到运行方案相位信息!");
} }
Integer schemeId = crossPhaseDTO.getSchemeId(); Integer schemeId = crossPhaseDTO.getSchemeId();
BaseCrossSchemePO baseCrossSchemePO = geteSchemePOCache(String.join(Constants.SystemParam.SEPARATOR_UNDER_LINE, crossId, String.valueOf(schemeId))); BaseCrossSchemePO baseCrossSchemePO = baseCrossSchemeInfoCache.getSchemePOCache(String.join(Constants.SystemParam.SEPARATOR_UNDER_LINE, crossId, String.valueOf(schemeId)));
// 当前路口方案号的相位参数 // 当前路口方案号的相位参数
Map<Integer, List<CrossPhasePO>> ringNoPhasePOMap = getCrossPhaseCacheByCrossId(crossId).stream().filter(po -> Objects.equals(schemeId, po.getPlanId())).collect(Collectors.groupingBy(CrossPhasePO::getRingNo)); Map<Integer, List<CrossPhasePO>> ringNoPhasePOMap = baseCrossPhaseInfoCache.getCrossPhaseCacheByCrossId(crossId).stream().filter(po -> Objects.equals(schemeId, po.getPlanId())).collect(Collectors.groupingBy(CrossPhasePO::getRingNo));
SchemeSendVO schemeSendVO = new SchemeSendVO(); SchemeSendVO schemeSendVO = new SchemeSendVO();
List<SchemeSendVO.Pattern> patternList = new ArrayList<>(); List<SchemeSendVO.Pattern> patternList = new ArrayList<>();
......
package net.wanji.opt.service.signalcontrol.impl; package net.wanji.opt.service.signalcontrol.impl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.exception.FeignServiceException; import net.wanji.common.framework.exception.FeignServiceException;
import net.wanji.common.framework.rest.JsonViewObject; import net.wanji.common.framework.rest.JsonViewObject;
...@@ -10,33 +11,30 @@ import net.wanji.opt.cache.CrossDirTurnPhaseCache; ...@@ -10,33 +11,30 @@ import net.wanji.opt.cache.CrossDirTurnPhaseCache;
import net.wanji.opt.dao.mapper.CrossSchemeOptLogMapper; import net.wanji.opt.dao.mapper.CrossSchemeOptLogMapper;
import net.wanji.opt.dto.CrossPhaseDTO; import net.wanji.opt.dto.CrossPhaseDTO;
import net.wanji.opt.po.base.CrossSchemeOptLogPO; import net.wanji.opt.po.base.CrossSchemeOptLogPO;
import net.wanji.opt.service.impl.CrossOptimizeServiceImpl;
import net.wanji.opt.service.signalcontrol.FeignProxyService; import net.wanji.opt.service.signalcontrol.FeignProxyService;
import net.wanji.opt.vo.SchemeOptSendVO; import net.wanji.opt.vo.SchemeOptSendVO;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneOffset; import java.time.ZoneOffset;
import java.util.*; import java.util.*;
import static net.wanji.opt.service.impl.CrossOptimizeServiceImpl.getSchemeSendVO;
/** /**
* @author duanruiming * @author duanruiming
* @date 2023/03/02 9:11 * @date 2023/03/02 9:11
*/ */
@Service @Service
@Slf4j @Slf4j
@RequiredArgsConstructor
public class FeignProxyServiceImpl implements FeignProxyService { public class FeignProxyServiceImpl implements FeignProxyService {
@Autowired private final UtcFeignClients utcFeignClients;
private UtcFeignClients utcFeignClients; private final CrossSchemeOptLogMapper crossSchemeOptLogMapper;
@Autowired private final CrossDirTurnPhaseCache crossDirTurnPhaseCache;
private CrossSchemeOptLogMapper crossSchemeOptLogMapper; private final CrossOptimizeServiceImpl crossOptimizeService;
@Autowired
private CrossDirTurnPhaseCache crossDirTurnPhaseCache;
@Override @Override
public JsonViewObject schemeOptSend(SchemeOptSendVO schemeOptSendVO) throws Exception { public JsonViewObject schemeOptSend(SchemeOptSendVO schemeOptSendVO) throws Exception {
...@@ -59,7 +57,7 @@ public class FeignProxyServiceImpl implements FeignProxyService { ...@@ -59,7 +57,7 @@ public class FeignProxyServiceImpl implements FeignProxyService {
public JsonViewObject schemeOptRestore(String crossId) throws Exception { public JsonViewObject schemeOptRestore(String crossId) throws Exception {
// 下发原始方案 // 下发原始方案
Map<String, CrossPhaseDTO> phaseMap = crossDirTurnPhaseCache.getPhaseDirTurnMap(); Map<String, CrossPhaseDTO> phaseMap = crossDirTurnPhaseCache.getPhaseDirTurnMap();
SchemeSendVO schemeSendVO = getSchemeSendVO(crossId, phaseMap, Collections.EMPTY_MAP); SchemeSendVO schemeSendVO = crossOptimizeService.getSchemeSendVO(crossId, phaseMap, Collections.EMPTY_MAP);
JsonViewObject jsonViewObject = utcFeignClients.schemeSend(schemeSendVO); JsonViewObject jsonViewObject = utcFeignClients.schemeSend(schemeSendVO);
if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) { if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
log.error("诊断优化手动恢复优化方案,UTC服务调用异常!", jsonViewObject); log.error("诊断优化手动恢复优化方案,UTC服务调用异常!", jsonViewObject);
......
package net.wanji.opt.cache; package net.wanji.databus.cache;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.wanji.databus.dao.mapper.BaseCrossInfoMapper; import net.wanji.databus.dao.mapper.BaseCrossInfoMapper;
import net.wanji.databus.po.BaseCrossInfoPO; import net.wanji.databus.po.BaseCrossInfoPO;
import net.wanji.databus.vo.CrossInfoVO; import net.wanji.databus.vo.CrossInfoVO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner; import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -19,7 +20,7 @@ import java.util.stream.Collectors; ...@@ -19,7 +20,7 @@ import java.util.stream.Collectors;
*/ */
@Component @Component
@Slf4j @Slf4j
public class CrossInfoCache implements CommandLineRunner { public class BaseCrossInfoCache implements CommandLineRunner {
@Autowired @Autowired
private BaseCrossInfoMapper baseCrossInfoMapper; private BaseCrossInfoMapper baseCrossInfoMapper;
...@@ -35,6 +36,18 @@ public class CrossInfoCache implements CommandLineRunner { ...@@ -35,6 +36,18 @@ public class CrossInfoCache implements CommandLineRunner {
return crossInfoList; return crossInfoList;
} }
/**
* 通过路口编号查询经纬度
*/
public String getCoordinateByCrossId(String crossId) {
for (BaseCrossInfoPO baseCrossInfoPO : crossInfoList) {
if (StringUtils.equals(crossId, baseCrossInfoPO.getId())) {
return baseCrossInfoPO.getLocation();
}
}
return null;
}
/** /**
* 获取所有信控路口的路口编号 * 获取所有信控路口的路口编号
* *
...@@ -50,7 +63,7 @@ public class CrossInfoCache implements CommandLineRunner { ...@@ -50,7 +63,7 @@ public class CrossInfoCache implements CommandLineRunner {
init(); init();
} }
public void init () { public void init() {
List<BaseCrossInfoPO> baseCrossInfoPOS = baseCrossInfoMapper.selectAll(new CrossInfoVO()); List<BaseCrossInfoPO> baseCrossInfoPOS = baseCrossInfoMapper.selectAll(new CrossInfoVO());
if (!CollectionUtils.isEmpty(baseCrossInfoPOS)) { if (!CollectionUtils.isEmpty(baseCrossInfoPOS)) {
crossInfoList.addAll(baseCrossInfoPOS); crossInfoList.addAll(baseCrossInfoPOS);
......
package net.wanji.opt.cache; package net.wanji.databus.cache;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.wanji.databus.dao.entity.CrossPhasePO; import net.wanji.databus.dao.entity.CrossPhasePO;
...@@ -20,7 +20,7 @@ import java.util.stream.Collectors; ...@@ -20,7 +20,7 @@ import java.util.stream.Collectors;
*/ */
@Component @Component
@Slf4j @Slf4j
public class CrossPhaseInfoCache implements CommandLineRunner { public class BaseCrossPhaseInfoCache implements CommandLineRunner {
@Resource @Resource
BaseCrossPhaseMapper baseCrossPhaseMapper; BaseCrossPhaseMapper baseCrossPhaseMapper;
...@@ -44,7 +44,7 @@ public class CrossPhaseInfoCache implements CommandLineRunner { ...@@ -44,7 +44,7 @@ public class CrossPhaseInfoCache implements CommandLineRunner {
* @param crossId * @param crossId
* @return * @return
*/ */
public static List<CrossPhasePO> getCrossPhaseCacheByCrossId(String crossId) { public List<CrossPhasePO> getCrossPhaseCacheByCrossId(String crossId) {
if (!crossPhaseInfoMap.isEmpty()) { if (!crossPhaseInfoMap.isEmpty()) {
return crossPhaseInfoMap.get(crossId); return crossPhaseInfoMap.get(crossId);
} }
......
package net.wanji.opt.cache; package net.wanji.databus.cache;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.Constants; import net.wanji.common.framework.Constants;
...@@ -19,7 +19,7 @@ import java.util.Map; ...@@ -19,7 +19,7 @@ import java.util.Map;
*/ */
@Component @Component
@Slf4j @Slf4j
public class CrossSchemeInfoCache implements CommandLineRunner { public class BaseCrossSchemeInfoCache implements CommandLineRunner {
@Resource @Resource
BaseCrossSchemeMapper baseCrossSchemeMapper; BaseCrossSchemeMapper baseCrossSchemeMapper;
...@@ -42,7 +42,7 @@ public class CrossSchemeInfoCache implements CommandLineRunner { ...@@ -42,7 +42,7 @@ public class CrossSchemeInfoCache implements CommandLineRunner {
* @param key: crossId_id * @param key: crossId_id
* @return * @return
*/ */
public static BaseCrossSchemePO geteSchemePOCache(String key) { public BaseCrossSchemePO getSchemePOCache(String key) {
if (!crossSchemeInfoMap.isEmpty()) { if (!crossSchemeInfoMap.isEmpty()) {
return crossSchemeInfoMap.get(key); return crossSchemeInfoMap.get(key);
} }
......
package net.wanji.opt.cache; package net.wanji.databus.cache;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.Constants; import net.wanji.common.framework.Constants;
......
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