Commit 8d3da2e4 authored by zhouleilei's avatar zhouleilei

方案优化接口

parent 2c8f6023
...@@ -645,14 +645,14 @@ public class PlanSendServiceImpl implements PlanSendService { ...@@ -645,14 +645,14 @@ public class PlanSendServiceImpl implements PlanSendService {
List<CrossSchemeInfoPO> crossSchemeInfoPOS = baseCrossSchemeMapper.selectSchemeInfoByCrossIdAndSchemeId(crossIdAndTimeDTO.getCrossId(), schemeId); List<CrossSchemeInfoPO> crossSchemeInfoPOS = baseCrossSchemeMapper.selectSchemeInfoByCrossIdAndSchemeId(crossIdAndTimeDTO.getCrossId(), schemeId);
if (ObjectUtil.isNotEmpty(crossSchemeInfoPOS)) { if (ObjectUtil.isNotEmpty(crossSchemeInfoPOS)) {
//根据相位号分组 //根据相位号分组
Map<String, List<CrossSchemeInfoPO>> collect = crossSchemeInfoPOS.stream().collect(Collectors.groupingBy(CrossSchemeInfoPO::getPhaseNo)); LinkedHashMap<String, List<CrossSchemeInfoPO>> collect = crossSchemeInfoPOS.stream().collect(Collectors.groupingBy(CrossSchemeInfoPO::getPhaseNo, LinkedHashMap::new, Collectors.toList()));
Set<String> set = collect.keySet(); Set<String> set = collect.keySet();
for (String s : set) { for (String s : set) {
List<CrossSchemeInfoPO> infoPOS = collect.get(s); List<CrossSchemeInfoPO> infoPOS = collect.get(s);
CrossSchemeInfoPO crossSchemeInfoPO = infoPOS.get(0); CrossSchemeInfoPO crossSchemeInfoPO = infoPOS.get(0);
SaveSchemeConfigDTO.PhaseListElement phaseListElement = new SaveSchemeConfigDTO.PhaseListElement(); SaveSchemeConfigDTO.PhaseListElement phaseListElement = new SaveSchemeConfigDTO.PhaseListElement();
phaseListElement.setPhaseId(Integer.valueOf(crossSchemeInfoPO.getPhaseId())); phaseListElement.setPhaseId(Integer.valueOf(crossSchemeInfoPO.getPhaseId()));
phaseListElement.setPhaseNo(crossSchemeInfoPO.getPhaseTime()); phaseListElement.setPhaseNo(crossSchemeInfoPO.getPhaseNo());
phaseListElement.setGreenTime(Integer.valueOf(crossSchemeInfoPO.getGreenTime())); phaseListElement.setGreenTime(Integer.valueOf(crossSchemeInfoPO.getGreenTime()));
phaseListElement.setYellowTime(Integer.valueOf(crossSchemeInfoPO.getYellowTime())); phaseListElement.setYellowTime(Integer.valueOf(crossSchemeInfoPO.getYellowTime()));
phaseListElement.setRedTime(Integer.valueOf(crossSchemeInfoPO.getRedTime())); phaseListElement.setRedTime(Integer.valueOf(crossSchemeInfoPO.getRedTime()));
...@@ -702,22 +702,22 @@ public class PlanSendServiceImpl implements PlanSendService { ...@@ -702,22 +702,22 @@ public class PlanSendServiceImpl implements PlanSendService {
List<CrossSchemeStageOptLogPO> crossSchedulesPOList = mapper.convertValue(optView.getContent(), new TypeReference<List<CrossSchemeStageOptLogPO>>() { List<CrossSchemeStageOptLogPO> crossSchedulesPOList = mapper.convertValue(optView.getContent(), new TypeReference<List<CrossSchemeStageOptLogPO>>() {
}); });
if (ObjectUtils.isNotEmpty(crossSchedulesPOList)) { if (ObjectUtils.isNotEmpty(crossSchedulesPOList)) {
optPhaseList.addAll(oriPhaseList); for (int i = 0; i < crossSchedulesPOList.size(); i++) {
for (int i = 0; i < optPhaseList.size(); i++) { if (i == oriPhaseList.size()){
if (i == crossSchedulesPOList.size()){
break; break;
} }
CrossSchemeStageOptLogPO optLogPO = crossSchedulesPOList.get(i); CrossSchemeStageOptLogPO optLogPO = crossSchedulesPOList.get(i);
SaveSchemeConfigDTO.PhaseListElement optPhase = optPhaseList.get(i); SaveSchemeConfigDTO.PhaseListElement phaseListElement = oriPhaseList.get(i);
optPhase.setMinGreenTime(0); SaveSchemeConfigDTO.PhaseListElement optPhase = new SaveSchemeConfigDTO.PhaseListElement();
optPhase.setMaxGreenTime(0); BeanUtils.copyProperties(phaseListElement,optPhase);
optPhase.setGreenTime(optLogPO.getPhaseTime()); Integer yellowTime = phaseListElement.getYellowTime();
optPhase.setGreenFlashTime(0); Integer redTime = phaseListElement.getRedTime();
optPhase.setYellowFlashTime(0); //相位时间
optPhase.setRedFlashTime(0); Integer phaseTime = optLogPO.getPhaseTime();
optPhase.setYellowTime(0); //绿灯时间
optPhase.setRedTime(0); int greenTime = phaseTime - yellowTime - redTime;
optPhase.setYellowFlash(0); optPhase.setGreenTime(greenTime);
optPhaseList.add(optPhase);
} }
} }
} }
......
...@@ -18,6 +18,7 @@ import net.wanji.databus.bo.CrossIdBO; ...@@ -18,6 +18,7 @@ import net.wanji.databus.bo.CrossIdBO;
import net.wanji.databus.dao.entity.*; import net.wanji.databus.dao.entity.*;
import net.wanji.databus.dao.mapper.*; import net.wanji.databus.dao.mapper.*;
import net.wanji.databus.dto.CrossSchemeRingsDTO; import net.wanji.databus.dto.CrossSchemeRingsDTO;
import net.wanji.databus.dto.QueryByCrossIdAndTimeDTO;
import net.wanji.databus.po.*; import net.wanji.databus.po.*;
import net.wanji.databus.vo.SchemeOptSendVO; import net.wanji.databus.vo.SchemeOptSendVO;
import net.wanji.databus.vo.SchemeSendVO; import net.wanji.databus.vo.SchemeSendVO;
...@@ -40,7 +41,6 @@ import org.springframework.stereotype.Service; ...@@ -40,7 +41,6 @@ import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.LocalDate;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -234,34 +234,37 @@ public class DiagnoServiceImpl implements DiagnoService { ...@@ -234,34 +234,37 @@ public class DiagnoServiceImpl implements DiagnoService {
@Override @Override
public List<SchemeOptVO.PhaseOptTime> schemeComparison(CrossIdAndSchemeIdDTO crossIdAndSchemeIdDTO) { public List<SchemeOptVO.PhaseOptTime> schemeComparison(CrossIdAndSchemeIdDTO crossIdAndSchemeIdDTO) {
String crossId = crossIdAndSchemeIdDTO.getCrossId(); String crossId = crossIdAndSchemeIdDTO.getCrossId();
Integer schemeId = crossIdAndSchemeIdDTO.getSchemeId();
List<SchemeOptVO.PhaseOptTime> phaseOptTimeList = new ArrayList<>(); List<SchemeOptVO.PhaseOptTime> phaseOptTimeList = new ArrayList<>();
CrossSchemeRingsDTO crossSchemeRingsDTO = new CrossSchemeRingsDTO(); QueryByCrossIdAndTimeDTO queryByCrossIdAndTimeDTO = new QueryByCrossIdAndTimeDTO();
crossSchemeRingsDTO.setCrossId(crossId); queryByCrossIdAndTimeDTO.setCrossId(crossId);
crossSchemeRingsDTO.setPattern(String.valueOf(schemeId)); queryByCrossIdAndTimeDTO.setDatetime(new Date());
//查询路口当前方案
//查询当前路口运行的方案 JsonViewObject jsonViewObjectScheme = utcFeignClients.selectSchemeByParams(queryByCrossIdAndTimeDTO);
LocalDate now = LocalDate.now(); Integer jsonViewObjectSchemeCode = jsonViewObjectScheme.getCode();
int week = now.getDayOfWeek().getValue(); if (jsonViewObjectSchemeCode != 200){
if (week == 7) { log.info("未查询到当前路口号,crossId:{}",crossId);
//表中周日用0表示 return phaseOptTimeList;
week = 0;
} }
//通过路口号和方案号查询方案id ObjectMapper mapper1 = JacksonUtils.getInstance();
CrossNowSchemePO baseCrossSchemePO = baseCrossSchemeMapper.selectByCrossIdAndWeek(crossId,week); BaseCrossSchemePO baseCrossSchemePO = mapper1.convertValue(jsonViewObjectScheme.getContent(), new TypeReference<BaseCrossSchemePO>() {
});
if (ObjectUtils.isEmpty(baseCrossSchemePO)){ if (ObjectUtils.isEmpty(baseCrossSchemePO)){
return phaseOptTimeList; return phaseOptTimeList;
} }
Integer schemeNo = baseCrossSchemePO.getSchemeId(); Integer schemeNo = Integer.valueOf(baseCrossSchemePO.getSchemeNo());
if (ObjectUtil.isEmpty(schemeNo)){ if (ObjectUtil.isEmpty(schemeNo) || schemeNo == 85){
log.info("当前路口为黃闪,crossId:{}",crossId); log.info("当前路口为黃闪,crossId:{}",crossId);
return phaseOptTimeList; return phaseOptTimeList;
} }
schemeNo = (schemeNo+2)/3; List<CrossPhasePO> phasePOList = baseCrossPhaseMapper.selectByCrossIdAndSchemeNo(crossId, schemeNo);
List<CrossPhasePO> phasePOList = baseCrossPhaseMapper.selectByCrossIdAndSchemeId(crossId, schemeNo);
if (ObjectUtils.isEmpty(phasePOList) || ObjectUtils.isEmpty(schemeNo)) { if (ObjectUtils.isEmpty(phasePOList) || ObjectUtils.isEmpty(schemeNo)) {
return phaseOptTimeList; return phaseOptTimeList;
} }
CrossSchemeRingsDTO crossSchemeRingsDTO = new CrossSchemeRingsDTO();
crossSchemeRingsDTO.setCrossId(crossId);
crossSchemeRingsDTO.setPattern(String.valueOf(schemeNo));
JsonViewObject jsonViewObject = utcFeignClients.schemeOptLog(crossSchemeRingsDTO); JsonViewObject jsonViewObject = utcFeignClients.schemeOptLog(crossSchemeRingsDTO);
Integer code = jsonViewObject.getCode(); Integer code = jsonViewObject.getCode();
ObjectMapper mapper = JacksonUtils.getInstance(); ObjectMapper mapper = JacksonUtils.getInstance();
...@@ -282,7 +285,7 @@ public class DiagnoServiceImpl implements DiagnoService { ...@@ -282,7 +285,7 @@ public class DiagnoServiceImpl implements DiagnoService {
} else { } else {
for (CrossPhasePO crossPhasePO : phasePOList) { for (CrossPhasePO crossPhasePO : phasePOList) {
SchemeOptVO.PhaseOptTime phaseOptTime = new SchemeOptVO.PhaseOptTime(); SchemeOptVO.PhaseOptTime phaseOptTime = new SchemeOptVO.PhaseOptTime();
phaseOptTime.setPhaseNo(crossPhasePO.getPhaseNo()); phaseOptTime.setPhaseNo(String.valueOf(crossPhasePO.getSort()));
Integer oriPhaseTime = crossPhasePO.getPhaseTime(); Integer oriPhaseTime = crossPhasePO.getPhaseTime();
phaseOptTime.setOriGreenTime(oriPhaseTime); phaseOptTime.setOriGreenTime(oriPhaseTime);
List<CrossSchemeStageOptLogPO> list = crossSchedulesPOList.stream().filter(x -> x.getPhaseNo().equals(String.valueOf(crossPhasePO.getSort()))).collect(Collectors.toList()); List<CrossSchemeStageOptLogPO> list = crossSchedulesPOList.stream().filter(x -> x.getPhaseNo().equals(String.valueOf(crossPhasePO.getSort()))).collect(Collectors.toList());
...@@ -293,8 +296,7 @@ public class DiagnoServiceImpl implements DiagnoService { ...@@ -293,8 +296,7 @@ public class DiagnoServiceImpl implements DiagnoService {
CrossSchemeStageOptLogPO optLogPO = list.get(0); CrossSchemeStageOptLogPO optLogPO = list.get(0);
Integer optPhaseTime = optLogPO.getPhaseTime(); Integer optPhaseTime = optLogPO.getPhaseTime();
phaseOptTime.setOptGreenTime(optPhaseTime); phaseOptTime.setOptGreenTime(optPhaseTime);
//两个时间的绝对值 int optTime = oriPhaseTime - optPhaseTime;
int optTime = Math.abs(oriPhaseTime - optPhaseTime);
phaseOptTime.setOptTime(optTime); phaseOptTime.setOptTime(optTime);
} }
phaseOptTimeList.add(phaseOptTime); phaseOptTimeList.add(phaseOptTime);
......
...@@ -41,6 +41,9 @@ public interface BaseCrossPhaseMapper { ...@@ -41,6 +41,9 @@ public interface BaseCrossPhaseMapper {
List<CrossPhasePO> selectByCrossIdAndSchemeId(@Param("crossId") String crossId, List<CrossPhasePO> selectByCrossIdAndSchemeId(@Param("crossId") String crossId,
@Param("schemeId") Integer schemeId); @Param("schemeId") Integer schemeId);
List<CrossPhasePO> selectByCrossIdAndSchemeNo(@Param("crossId") String crossId,
@Param("schemeNo") Integer schemeNo);
void update(CrossPhasePO crossPhasePO); void update(CrossPhasePO crossPhasePO);
void insertBatch(List<CrossPhasePO> crossPhaseList); void insertBatch(List<CrossPhasePO> crossPhaseList);
......
...@@ -172,4 +172,18 @@ ...@@ -172,4 +172,18 @@
order by sort order by sort
</select> </select>
<select id="selectByCrossIdAndSchemeNo" resultMap="BaseResultMap">
SELECT
phase.id,phase.phase_no,phase.NAME,phase.sort,phase.cross_id,phase.plan_id,phase.ring_no,phase.group_no,phase.phase_type,phase.control_mode,phase.phase_time,phase.green_time,phase.green_flash_time,phase.yellow_flash_time,phase.red_flash_time,phase.ped_flash_time,phase.yellow_time,phase.red_time,phase.min_green_time,phase.max_green_time,phase.gmt_create,phase.gmt_modified
FROM
t_base_cross_phase phase
LEFT JOIN t_base_cross_scheme scheme ON phase.cross_id = scheme.cross_id
AND phase.plan_id = scheme.id
WHERE
phase.cross_id = #{crossId}
AND scheme.scheme_no = #{schemeNo}
ORDER BY
sort
</select>
</mapper> </mapper>
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