Commit 66007865 authored by duanruiming's avatar duanruiming

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

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