Commit 46db3d4c authored by zhouleilei's avatar zhouleilei

同步分支代码

parent de3a0da4
......@@ -5,20 +5,22 @@ import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.common.utils.tool.IpAddressUtil;
import net.wanji.common.utils.tool.JacksonUtils;
import net.wanji.common.utils.tool.LocalDateTimeUtil;
import net.wanji.databus.dao.entity.*;
import net.wanji.databus.dao.mapper.*;
import net.wanji.databus.dto.CrossSchemeRingsDTO;
import net.wanji.databus.dto.ExtendPhaseDTO;
import net.wanji.databus.dto.StepingPhaseDTO;
import net.wanji.databus.po.BaseCrossLightsPO;
import net.wanji.databus.po.CrossInfoPO;
import net.wanji.databus.po.SaveToUtcPO;
import net.wanji.databus.vo.*;
import net.wanji.feign.service.common.FeignCommon;
import net.wanji.utc.cache.CrossInfoCache;
import net.wanji.utc.cache.CrossPhaseDirTurnCache;
import net.wanji.utc.cache.CrossSchemePhaseTimeCountCache;
......@@ -28,6 +30,7 @@ import net.wanji.utc.common.typeenum.HttpCode;
import net.wanji.utc.po.hk.request.DelBaseConfigPO;
import net.wanji.utc.service.control.ControlCommandService;
import net.wanji.utc.service.control.ControlCommandStrategyService;
import net.wanji.utc.service.staticinfo.WanJiCommonStaticInfoService;
import net.wanji.utc.task.SignalCommandSyncTask;
import net.wanji.utc.task.SignalStatusTask;
import net.wanji.utc.util.StringUtils;
......@@ -44,11 +47,9 @@ import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Field;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
/**
* @author duanruiming
......@@ -77,6 +78,8 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy
private final SignalCommandPOMapper signalCommandPOMapper;
private final CrossPhaseDirTurnCache crossPhaseDirTurnCache;
private final CrossSchemePhaseTimeCountCache crossSchemePhaseTimeCountCache;
@Resource
WanJiCommonStaticInfoService wanjiCommonStaticInfoService;
@Override
......@@ -684,14 +687,87 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy
@Override
public JsonViewObject schemePhaseGreenTimeOpt(SchemePhaseGreenTimeOptVO vo) throws Exception {
String crossId = vo.getCrossId();
Integer schemeId = vo.getSchemeId();
Integer offset = vo.getOffset();
List<SchemePhaseGreenTimeOptVO.PhaseOptTime> phaseOptTimeList = vo.getPhaseOptTimeList();
// 获取方案环图中,将环图中相位转化为阶段中相位对应关系 需要磊磊存数据 t_scheme_ring_phase_mapping_info
// 将阶段中相位加减绿灯时间转化到环相位中
// 下发临时方案
return null;
ObjectMapper mapper = JacksonUtils.getInstance();
try {
String crossId = vo.getCrossId();
Integer schemeId = vo.getSchemeId();
Integer offset = vo.getOffset();
Integer cycle = vo.getCycle();
List<SchemePhaseGreenTimeOptVO.PhaseOptTime> phaseOptTimeList = vo.getPhaseOptTimeList();
// 获取方案环图中,将平台优化的相位阶段转化为海信相位时间
CrossSchemeRingsDTO crossSchemeRingsDTO = new CrossSchemeRingsDTO();
crossSchemeRingsDTO.setCrossId(crossId);
crossSchemeRingsDTO.setPattern(String.valueOf(schemeId));
JsonViewObject jsonViewObject = wanjiCommonStaticInfoService.selectCrossSchemeRingsToStages(crossSchemeRingsDTO);
if (Objects.nonNull(jsonViewObject) && Objects.equals(200, jsonViewObject.getCode())) {
String contentStr = String.valueOf(jsonViewObject.getContent());
CrossSchemeRingsToStagesPO crossSchemeRingsToStagesPO = mapper.convertValue(contentStr, CrossSchemeRingsToStagesPO.class);
Map<Integer, Integer> phaseTimeMap = new HashMap<>();
if (Objects.nonNull(crossSchemeRingsToStagesPO)) {
List<CrossSchemeRingsToStagesPO.Phase> phaseList = crossSchemeRingsToStagesPO.getPhaseList();
if (!CollectionUtils.isEmpty(phaseList) && !CollectionUtils.isEmpty(phaseOptTimeList)) {
for (SchemePhaseGreenTimeOptVO.PhaseOptTime phaseOptTime : phaseOptTimeList) {
String optPhaseNo = phaseOptTime.getPhaseNo();
Integer optGreenTime = phaseOptTime.getOptGreenTime();
for (CrossSchemeRingsToStagesPO.Phase oriPhase : phaseList) {
String oriPhaseNo = oriPhase.getPhaseNo();
String oriPhaseList = oriPhase.getPhaseList();
Integer oriPhaseTime = oriPhase.getPhaseTime();
if (StringUtils.equals(optPhaseNo, oriPhaseNo)) {
if (StringUtils.isNotBlank(oriPhaseList)) {
for (String s : oriPhaseList.split(",")) {
Integer hisensePhaseNo = Integer.valueOf(s);
if (phaseTimeMap.containsKey(hisensePhaseNo)) {
Integer oriGreen = phaseTimeMap.get(hisensePhaseNo);
phaseTimeMap.put(hisensePhaseNo, oriGreen + optGreenTime);
} else {
phaseTimeMap.put(hisensePhaseNo, oriPhaseTime + optGreenTime);
}
}
}
}
}
}
}
}
// 将相位对应绿信比转成发送格式
String splitSend = "";
if (!phaseTimeMap.isEmpty()) {
LinkedHashMap<Integer, Integer> sortMap = phaseTimeMap.entrySet().stream().sorted(
Map.Entry.comparingByKey()).collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue,
(oldValue, newValue) -> oldValue,
LinkedHashMap::new
));
List<Integer> hisensePhaseTimeList = new ArrayList<>(16);
for (Map.Entry<Integer, Integer> entry : sortMap.entrySet()) {
hisensePhaseTimeList.add(entry.getValue());
}
splitSend = hisensePhaseTimeList.stream().map(String::valueOf).collect(Collectors.joining(","));
}
// 下发临时方案
TempSchemeSendVO tempSchemeSendVO = new TempSchemeSendVO();
tempSchemeSendVO.setCrossId(crossId);
tempSchemeSendVO.setPattern(String.valueOf(schemeId));
tempSchemeSendVO.setCycle(String.valueOf(cycle));
tempSchemeSendVO.setOffset(String.valueOf(offset));
tempSchemeSendVO.setType("9");
tempSchemeSendVO.setSplit(splitSend);
JsonViewObject jsonViewObject1 = tempSchemeDetail(tempSchemeSendVO);
if (Objects.nonNull(jsonViewObject1) && Objects.equals(200, jsonViewObject1.getCode())) {
return JsonViewObject.newInstance().success("方案相位绿灯时间优化下发成功");
} else {
log.error("方案相位绿灯时间优化下发异常:{}", jsonViewObject1);
return JsonViewObject.newInstance().fail("海信临时方案接口远程调用异常");
}
} else {
log.error("根据路口号和方案号查询环转阶段异常:{}", jsonViewObject);
return JsonViewObject.newInstance().fail("根据路口号和方案号查询环转阶段异常");
}
} catch (Exception e) {
log.error("方案相位绿灯时间优化下发异常,异常信息:{}", 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