Commit d55f7de6 authored by hanbing's avatar hanbing

[add] 诊断优化,当前方案调整时间修改

parent 85c4f39b
...@@ -5,9 +5,10 @@ import io.swagger.annotations.ApiOperation; ...@@ -5,9 +5,10 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses; import io.swagger.annotations.ApiResponses;
import net.wanji.common.annotation.aspect.AspectLog; import net.wanji.common.annotation.aspect.AspectLog;
import net.wanji.databus.bo.CrossIdBO;
import net.wanji.common.enums.BaseEnum; import net.wanji.common.enums.BaseEnum;
import net.wanji.common.framework.rest.JsonViewObject; import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.databus.bo.CrossIdAndSchemeIdBO;
import net.wanji.databus.bo.CrossIdBO;
import net.wanji.opt.dto.CrossIdAndDirDTO; import net.wanji.opt.dto.CrossIdAndDirDTO;
import net.wanji.opt.dto.CrossIdAndSchemeIdDTO; import net.wanji.opt.dto.CrossIdAndSchemeIdDTO;
import net.wanji.opt.dto.SaveLaneInfoDTO; import net.wanji.opt.dto.SaveLaneInfoDTO;
...@@ -74,8 +75,8 @@ public class DiagnoController { ...@@ -74,8 +75,8 @@ public class DiagnoController {
@ApiResponses({ @ApiResponses({
@ApiResponse(code = 200, message = "OK", response = SchemeOptVO.class), @ApiResponse(code = 200, message = "OK", response = SchemeOptVO.class),
}) })
public JsonViewObject querySchemeOpt(@RequestBody @Valid CrossIdBO crossIdBO) { public JsonViewObject querySchemeOpt(@RequestBody @Valid CrossIdAndSchemeIdBO bo) {
SchemeOptVO schemeOptVO = diagnoService.querySchemeOpt(crossIdBO); SchemeOptVO schemeOptVO = diagnoService.querySchemeOpt(bo);
return JsonViewObject.newInstance().success(schemeOptVO); return JsonViewObject.newInstance().success(schemeOptVO);
} }
......
...@@ -30,4 +30,6 @@ public interface CrossSchemeOptLogMapper { ...@@ -30,4 +30,6 @@ public interface CrossSchemeOptLogMapper {
* @return * @return
*/ */
CrossSchemeOptLogPO selectOptStartEntity(@Param("crossId") String crossId, @Param("optReason") String optReason, @Param("optStartTime") long optStartTime); CrossSchemeOptLogPO selectOptStartEntity(@Param("crossId") String crossId, @Param("optReason") String optReason, @Param("optStartTime") long optStartTime);
List<CrossSchemeOptLogPO> selectMaxByCrossIdAndSchemeId(String crossId, Integer schemeId);
} }
package net.wanji.opt.service; package net.wanji.opt.service;
import net.wanji.databus.bo.CrossIdAndSchemeIdBO;
import net.wanji.databus.bo.CrossIdBO; import net.wanji.databus.bo.CrossIdBO;
import net.wanji.opt.dto.CrossIdAndDirDTO; import net.wanji.opt.dto.CrossIdAndDirDTO;
import net.wanji.opt.dto.CrossIdAndSchemeIdDTO; import net.wanji.opt.dto.CrossIdAndSchemeIdDTO;
...@@ -21,7 +22,7 @@ public interface DiagnoService { ...@@ -21,7 +22,7 @@ public interface DiagnoService {
List<CrossIdAndLocationVO> queryNeighborCross(CrossIdBO crossIdBO); List<CrossIdAndLocationVO> queryNeighborCross(CrossIdBO crossIdBO);
SchemeOptVO querySchemeOpt(CrossIdBO crossIdBO); SchemeOptVO querySchemeOpt(CrossIdAndSchemeIdBO bo);
List<SchemeOptVO.PhaseOptTime> queryOptTime(CrossIdAndSchemeIdDTO crossIdAndSchemeIdDTO); List<SchemeOptVO.PhaseOptTime> queryOptTime(CrossIdAndSchemeIdDTO crossIdAndSchemeIdDTO);
......
...@@ -7,6 +7,7 @@ import com.github.pagehelper.PageInfo; ...@@ -7,6 +7,7 @@ import com.github.pagehelper.PageInfo;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.wanji.databus.bo.CrossIdAndSchemeIdBO;
import net.wanji.databus.bo.CrossIdBO; import net.wanji.databus.bo.CrossIdBO;
import net.wanji.common.enums.LightsAddressEnum; import net.wanji.common.enums.LightsAddressEnum;
import net.wanji.common.utils.tool.CrossUtil; import net.wanji.common.utils.tool.CrossUtil;
...@@ -166,12 +167,14 @@ public class DiagnoServiceImpl implements DiagnoService { ...@@ -166,12 +167,14 @@ public class DiagnoServiceImpl implements DiagnoService {
} }
@Override @Override
public SchemeOptVO querySchemeOpt(CrossIdBO crossIdBO) { public SchemeOptVO querySchemeOpt(CrossIdAndSchemeIdBO bo) {
String crossId = crossIdBO.getCrossId(); String crossId = bo.getCrossId();
Integer schemeId = bo.getSchemeId();
SchemeOptVO schemeOptVO = new SchemeOptVO(); SchemeOptVO schemeOptVO = new SchemeOptVO();
schemeOptVO.setCrossId(crossId); schemeOptVO.setCrossId(crossId);
schemeOptVO.setSchemeId(schemeId);
// 选择数据批次时间最大的记录 // 选择数据批次时间最大的记录
List<CrossSchemeOptLogPO> maxList = crossSchemeOptLogMapper.selectMaxByCrossId(crossId); List<CrossSchemeOptLogPO> maxList = crossSchemeOptLogMapper.selectMaxByCrossIdAndSchemeId(crossId, schemeId);
if (CollectionUtil.isNotEmpty(maxList)) { if (CollectionUtil.isNotEmpty(maxList)) {
// 根据相位去重 // 根据相位去重
TreeSet<CrossSchemeOptLogPO> collect = maxList.stream() TreeSet<CrossSchemeOptLogPO> collect = maxList.stream()
...@@ -180,18 +183,17 @@ public class DiagnoServiceImpl implements DiagnoService { ...@@ -180,18 +183,17 @@ public class DiagnoServiceImpl implements DiagnoService {
CrossSchemeOptLogPO crossSchemeOptLogPO = maxList.get(0); CrossSchemeOptLogPO crossSchemeOptLogPO = maxList.get(0);
String optType = crossSchemeOptLogPO.getOptType(); String optType = crossSchemeOptLogPO.getOptType();
schemeOptVO.setOptType(Integer.parseInt(optType)); schemeOptVO.setOptType(Integer.parseInt(optType));
Integer schemeNo = crossSchemeOptLogPO.getSchemeId(); BaseCrossSchemePO baseCrossSchemePO = baseCrossSchemeMapper.selectByCrossIdAndSchemeId(crossId, schemeId);
BaseCrossSchemePO baseCrossSchemePO = baseCrossSchemeMapper.selectByCrossIdAndSchemeNo(crossId, schemeNo);
if (baseCrossSchemePO != null) { if (baseCrossSchemePO != null) {
schemeOptVO.setCycle(baseCrossSchemePO.getCycle()); schemeOptVO.setCycle(baseCrossSchemePO.getCycle());
schemeOptVO.setSchemeId(baseCrossSchemePO.getId());
schemeOptVO.setOffset(crossSchemeOptLogPO.getOffset()); schemeOptVO.setOffset(crossSchemeOptLogPO.getOffset());
} }
// 构造调整时间列表 // 构造调整时间列表
List<SchemeOptVO.PhaseOptTime> phaseOptTimeList = buildPhaseOptTimeList(collect, schemeNo, crossId); List<SchemeOptVO.PhaseOptTime> phaseOptTimeList = buildPhaseOptTimeList(collect, schemeId, crossId);
schemeOptVO.setPhaseOptTimeList(phaseOptTimeList); schemeOptVO.setPhaseOptTimeList(phaseOptTimeList);
} else { } else {
List<SchemeOptVO.PhaseOptTime> phaseOptTimeList = new ArrayList<>(); List<SchemeOptVO.PhaseOptTime> phaseOptTimeList = new ArrayList<>();
initPhaseOptTimeList(schemeId, phaseOptTimeList, crossId);
schemeOptVO.setPhaseOptTimeList(phaseOptTimeList); schemeOptVO.setPhaseOptTimeList(phaseOptTimeList);
} }
return schemeOptVO; return schemeOptVO;
...@@ -631,10 +633,10 @@ public class DiagnoServiceImpl implements DiagnoService { ...@@ -631,10 +633,10 @@ public class DiagnoServiceImpl implements DiagnoService {
} }
private List<SchemeOptVO.PhaseOptTime> buildPhaseOptTimeList( private List<SchemeOptVO.PhaseOptTime> buildPhaseOptTimeList(
Collection<CrossSchemeOptLogPO> crossSchemeOptLogPOList, Integer schemeNo, String crossId) { Collection<CrossSchemeOptLogPO> crossSchemeOptLogPOList, Integer schemeId, String crossId) {
// 初始化列表 // 初始化列表
List<SchemeOptVO.PhaseOptTime> phaseOptTimeList = new ArrayList<>(); List<SchemeOptVO.PhaseOptTime> phaseOptTimeList = new ArrayList<>();
initPhaseOptTimeList(schemeNo, phaseOptTimeList, crossId); initPhaseOptTimeList(schemeId, phaseOptTimeList, crossId);
for (CrossSchemeOptLogPO crossSchemeOptLogPO : crossSchemeOptLogPOList) { for (CrossSchemeOptLogPO crossSchemeOptLogPO : crossSchemeOptLogPOList) {
for (SchemeOptVO.PhaseOptTime phaseOptTime : phaseOptTimeList) { for (SchemeOptVO.PhaseOptTime phaseOptTime : phaseOptTimeList) {
String phaseNo1 = crossSchemeOptLogPO.getPhaseNo(); String phaseNo1 = crossSchemeOptLogPO.getPhaseNo();
...@@ -651,8 +653,7 @@ public class DiagnoServiceImpl implements DiagnoService { ...@@ -651,8 +653,7 @@ public class DiagnoServiceImpl implements DiagnoService {
return phaseOptTimeList; return phaseOptTimeList;
} }
private void initPhaseOptTimeList(Integer schemeNo, List<SchemeOptVO.PhaseOptTime> phaseOptTimeList, String crossId) { private void initPhaseOptTimeList(Integer schemeId, List<SchemeOptVO.PhaseOptTime> phaseOptTimeList, String crossId) {
Integer schemeId = baseCrossSchemeMapper.selectIdByCrossIdAndSchemeNo(crossId, schemeNo.toString());
CrossPhasePO phasePO = new CrossPhasePO(); CrossPhasePO phasePO = new CrossPhasePO();
phasePO.setCrossId(crossId); phasePO.setCrossId(crossId);
phasePO.setPlanId(schemeId); phasePO.setPlanId(schemeId);
......
...@@ -62,6 +62,14 @@ ...@@ -62,6 +62,14 @@
limit 1 limit 1
</select> </select>
<select id="selectMaxByCrossIdAndSchemeId" resultType="net.wanji.opt.po.base.CrossSchemeOptLogPO">
select
<include refid="Base_Column_List"/>
from t_base_cross_scheme_opt_log
where cross_id = #{crossId} and scheme_id = #{schemeId}
and data_batch_time=(SELECT MAX(ABS(data_batch_time)) FROM t_base_cross_scheme_opt_log WHERE cross_id = #{crossId});
</select>
<insert id="insertOne" parameterType="net.wanji.opt.po.base.CrossSchemeOptLogPO"> <insert id="insertOne" parameterType="net.wanji.opt.po.base.CrossSchemeOptLogPO">
insert into t_base_cross_scheme_opt_log (cross_id, scheme_id, dir_type, turn_type, offset, ring_no, phase_no, insert into t_base_cross_scheme_opt_log (cross_id, scheme_id, dir_type, turn_type, offset, ring_no, phase_no,
phase_order_id, ori_green_time, opt_time, opt_type, opt_reason, phase_order_id, ori_green_time, opt_time, opt_type, opt_reason,
......
package net.wanji.databus.bo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* 方案管理-路口配置-获取路口方向列表输入参数
*
* @author Kent HAN
* @date 2022/12/20 10:17
*/
@Data
public class CrossIdAndSchemeIdBO {
@ApiModelProperty(value = "路口ID", required = true)
@NotNull(message = "路口ID不可为空")
private String crossId;
@ApiModelProperty(value = "方案ID", required = true)
private Integer schemeId;
}
...@@ -56,4 +56,6 @@ public interface BaseCrossSchemeMapper { ...@@ -56,4 +56,6 @@ public interface BaseCrossSchemeMapper {
List<BaseCrossSchemePO> selectByCrossIdAndPartialSchemeName(String crossId, String schemeName); List<BaseCrossSchemePO> selectByCrossIdAndPartialSchemeName(String crossId, String schemeName);
List<BaseCrossSchemePO> selectAll(); List<BaseCrossSchemePO> selectAll();
BaseCrossSchemePO selectByCrossIdAndSchemeId(String crossId, Integer schemeId);
} }
...@@ -178,4 +178,11 @@ ...@@ -178,4 +178,11 @@
from t_base_cross_scheme from t_base_cross_scheme
</select> </select>
<select id="selectByCrossIdAndSchemeId" resultType="net.wanji.databus.dao.entity.BaseCrossSchemePO">
select
id,scheme_no,name,cross_id,cycle,coord_phase,offset,source,is_deleted,status,gmt_create,gmt_modified
from t_base_cross_scheme
where cross_id = #{crossId} and id = #{schemeId}
</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