Commit d55f7de6 authored by hanbing's avatar hanbing

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

parent 85c4f39b
......@@ -5,9 +5,10 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import net.wanji.common.annotation.aspect.AspectLog;
import net.wanji.databus.bo.CrossIdBO;
import net.wanji.common.enums.BaseEnum;
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.CrossIdAndSchemeIdDTO;
import net.wanji.opt.dto.SaveLaneInfoDTO;
......@@ -74,8 +75,8 @@ public class DiagnoController {
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = SchemeOptVO.class),
})
public JsonViewObject querySchemeOpt(@RequestBody @Valid CrossIdBO crossIdBO) {
SchemeOptVO schemeOptVO = diagnoService.querySchemeOpt(crossIdBO);
public JsonViewObject querySchemeOpt(@RequestBody @Valid CrossIdAndSchemeIdBO bo) {
SchemeOptVO schemeOptVO = diagnoService.querySchemeOpt(bo);
return JsonViewObject.newInstance().success(schemeOptVO);
}
......
......@@ -30,4 +30,6 @@ public interface CrossSchemeOptLogMapper {
* @return
*/
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;
import net.wanji.databus.bo.CrossIdAndSchemeIdBO;
import net.wanji.databus.bo.CrossIdBO;
import net.wanji.opt.dto.CrossIdAndDirDTO;
import net.wanji.opt.dto.CrossIdAndSchemeIdDTO;
......@@ -21,7 +22,7 @@ public interface DiagnoService {
List<CrossIdAndLocationVO> queryNeighborCross(CrossIdBO crossIdBO);
SchemeOptVO querySchemeOpt(CrossIdBO crossIdBO);
SchemeOptVO querySchemeOpt(CrossIdAndSchemeIdBO bo);
List<SchemeOptVO.PhaseOptTime> queryOptTime(CrossIdAndSchemeIdDTO crossIdAndSchemeIdDTO);
......
......@@ -7,6 +7,7 @@ import com.github.pagehelper.PageInfo;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import lombok.extern.slf4j.Slf4j;
import net.wanji.databus.bo.CrossIdAndSchemeIdBO;
import net.wanji.databus.bo.CrossIdBO;
import net.wanji.common.enums.LightsAddressEnum;
import net.wanji.common.utils.tool.CrossUtil;
......@@ -166,12 +167,14 @@ public class DiagnoServiceImpl implements DiagnoService {
}
@Override
public SchemeOptVO querySchemeOpt(CrossIdBO crossIdBO) {
String crossId = crossIdBO.getCrossId();
public SchemeOptVO querySchemeOpt(CrossIdAndSchemeIdBO bo) {
String crossId = bo.getCrossId();
Integer schemeId = bo.getSchemeId();
SchemeOptVO schemeOptVO = new SchemeOptVO();
schemeOptVO.setCrossId(crossId);
schemeOptVO.setSchemeId(schemeId);
// 选择数据批次时间最大的记录
List<CrossSchemeOptLogPO> maxList = crossSchemeOptLogMapper.selectMaxByCrossId(crossId);
List<CrossSchemeOptLogPO> maxList = crossSchemeOptLogMapper.selectMaxByCrossIdAndSchemeId(crossId, schemeId);
if (CollectionUtil.isNotEmpty(maxList)) {
// 根据相位去重
TreeSet<CrossSchemeOptLogPO> collect = maxList.stream()
......@@ -180,18 +183,17 @@ public class DiagnoServiceImpl implements DiagnoService {
CrossSchemeOptLogPO crossSchemeOptLogPO = maxList.get(0);
String optType = crossSchemeOptLogPO.getOptType();
schemeOptVO.setOptType(Integer.parseInt(optType));
Integer schemeNo = crossSchemeOptLogPO.getSchemeId();
BaseCrossSchemePO baseCrossSchemePO = baseCrossSchemeMapper.selectByCrossIdAndSchemeNo(crossId, schemeNo);
BaseCrossSchemePO baseCrossSchemePO = baseCrossSchemeMapper.selectByCrossIdAndSchemeId(crossId, schemeId);
if (baseCrossSchemePO != null) {
schemeOptVO.setCycle(baseCrossSchemePO.getCycle());
schemeOptVO.setSchemeId(baseCrossSchemePO.getId());
schemeOptVO.setOffset(crossSchemeOptLogPO.getOffset());
}
// 构造调整时间列表
List<SchemeOptVO.PhaseOptTime> phaseOptTimeList = buildPhaseOptTimeList(collect, schemeNo, crossId);
List<SchemeOptVO.PhaseOptTime> phaseOptTimeList = buildPhaseOptTimeList(collect, schemeId, crossId);
schemeOptVO.setPhaseOptTimeList(phaseOptTimeList);
} else {
List<SchemeOptVO.PhaseOptTime> phaseOptTimeList = new ArrayList<>();
initPhaseOptTimeList(schemeId, phaseOptTimeList, crossId);
schemeOptVO.setPhaseOptTimeList(phaseOptTimeList);
}
return schemeOptVO;
......@@ -631,10 +633,10 @@ public class DiagnoServiceImpl implements DiagnoService {
}
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<>();
initPhaseOptTimeList(schemeNo, phaseOptTimeList, crossId);
initPhaseOptTimeList(schemeId, phaseOptTimeList, crossId);
for (CrossSchemeOptLogPO crossSchemeOptLogPO : crossSchemeOptLogPOList) {
for (SchemeOptVO.PhaseOptTime phaseOptTime : phaseOptTimeList) {
String phaseNo1 = crossSchemeOptLogPO.getPhaseNo();
......@@ -651,8 +653,7 @@ public class DiagnoServiceImpl implements DiagnoService {
return phaseOptTimeList;
}
private void initPhaseOptTimeList(Integer schemeNo, List<SchemeOptVO.PhaseOptTime> phaseOptTimeList, String crossId) {
Integer schemeId = baseCrossSchemeMapper.selectIdByCrossIdAndSchemeNo(crossId, schemeNo.toString());
private void initPhaseOptTimeList(Integer schemeId, List<SchemeOptVO.PhaseOptTime> phaseOptTimeList, String crossId) {
CrossPhasePO phasePO = new CrossPhasePO();
phasePO.setCrossId(crossId);
phasePO.setPlanId(schemeId);
......
......@@ -62,6 +62,14 @@
limit 1
</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 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,
......
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 {
List<BaseCrossSchemePO> selectByCrossIdAndPartialSchemeName(String crossId, String schemeName);
List<BaseCrossSchemePO> selectAll();
BaseCrossSchemePO selectByCrossIdAndSchemeId(String crossId, Integer schemeId);
}
......@@ -178,4 +178,11 @@
from t_base_cross_scheme
</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>
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