Commit 0ed9f9ec authored by hanbing's avatar hanbing

[update] 路口配置,拆分listLaneInfo接口

parent 1b972f6e
...@@ -7,6 +7,9 @@ import com.google.gson.Gson; ...@@ -7,6 +7,9 @@ import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
import net.wanji.common.dto.CrossIdDTO; import net.wanji.common.dto.CrossIdDTO;
import net.wanji.common.framework.rest.JsonViewObject; import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.databus.dao.mapper.CrossLaneLightsMapper;
import net.wanji.databus.dao.mapper.CrossLightsMapper;
import net.wanji.databus.po.CrossLightsPO;
import net.wanji.databus.vo.*; import net.wanji.databus.vo.*;
import net.wanji.feign.service.UtcFeignClients; import net.wanji.feign.service.UtcFeignClients;
import net.wanji.web.dto.*; import net.wanji.web.dto.*;
......
...@@ -3,24 +3,24 @@ package net.wanji.web.service.scheme.impl; ...@@ -3,24 +3,24 @@ package net.wanji.web.service.scheme.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import net.wanji.common.dto.CrossIdDTO; import net.wanji.common.dto.CrossIdDTO;
import net.wanji.databus.dao.mapper.CrossDataRealtimeMapper; import net.wanji.common.enums.LightsAddressEnum;
import net.wanji.databus.dao.mapper.CrossDirDataRealtimeMapper; import net.wanji.databus.dao.mapper.CrossLaneLightsMapper;
import net.wanji.databus.dao.mapper.CrossTurnDataHistMapper; import net.wanji.databus.dao.mapper.CrossLightsMapper;
import net.wanji.databus.po.CrossDataRealtimePO; import net.wanji.databus.dao.mapper.LaneInfoMapper;
import net.wanji.databus.po.CrossDirDataRealtimePO; import net.wanji.databus.po.CrossLaneLightsPO;
import net.wanji.databus.po.CrossLightsPO;
import net.wanji.databus.po.LaneInfoPO;
import net.wanji.web.common.enums.CrossLisghtsLaneDirEnum; import net.wanji.web.common.enums.CrossLisghtsLaneDirEnum;
import net.wanji.web.common.enums.LightsAddressEnum;
import net.wanji.web.common.exception.LightLaneConflictException; import net.wanji.web.common.exception.LightLaneConflictException;
import net.wanji.web.common.exception.RidInfoException; import net.wanji.web.common.exception.RidInfoException;
import net.wanji.web.dto.DirListElement; import net.wanji.web.dto.DirListElement;
import net.wanji.web.dto.LaneListElement; import net.wanji.web.dto.LaneListElement;
import net.wanji.web.dto.LedConfigListElement; import net.wanji.web.dto.LedConfigListElement;
import net.wanji.web.dto.SaveLaneInfoDTO; import net.wanji.web.dto.SaveLaneInfoDTO;
import net.wanji.web.mapper.scheme.*; import net.wanji.web.mapper.scheme.CrossDirInfoMapper;
import net.wanji.web.mapper.scheme.CrossPhaseLightsMapper;
import net.wanji.web.mapper.scheme.LaneSegmentMapper;
import net.wanji.web.po.scheme.CrossDirInfoPO; import net.wanji.web.po.scheme.CrossDirInfoPO;
import net.wanji.web.po.scheme.CrossLaneLightsPO;
import net.wanji.web.po.scheme.CrossLightsPO;
import net.wanji.web.po.scheme.LaneInfoPO;
import net.wanji.web.service.scheme.CrossConfigService; import net.wanji.web.service.scheme.CrossConfigService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -39,7 +39,6 @@ public class CrossConfigServiceImpl implements CrossConfigService { ...@@ -39,7 +39,6 @@ public class CrossConfigServiceImpl implements CrossConfigService {
private final CrossLaneLightsMapper crossLaneLightsMapper; private final CrossLaneLightsMapper crossLaneLightsMapper;
private final LaneSegmentMapper laneSegmentMapper; private final LaneSegmentMapper laneSegmentMapper;
private final CrossLightsMapper crossLightsMapper; private final CrossLightsMapper crossLightsMapper;
private final CrossDataRealtimeMapper crossDataRealtimeMapper;
// 机动车灯数据库类型与前端类型对应关系 // 机动车灯数据库类型与前端类型对应关系
private static final Map<Integer, Integer> MOTOR_VEH_MAP = new HashMap<>(5); private static final Map<Integer, Integer> MOTOR_VEH_MAP = new HashMap<>(5);
...@@ -61,25 +60,17 @@ public class CrossConfigServiceImpl implements CrossConfigService { ...@@ -61,25 +60,17 @@ public class CrossConfigServiceImpl implements CrossConfigService {
} }
private final CrossPhaseLightsMapper crossPhaseLightsMapper; private final CrossPhaseLightsMapper crossPhaseLightsMapper;
private final CrossTurnDataHistMapper crossTurnDataHistMapper;
private final CrossDirDataRealtimeMapper crossDirDataRealtimeMapper;
public CrossConfigServiceImpl(CrossDirInfoMapper crossDirInfoMapper, LaneInfoMapper laneInfoMapper, public CrossConfigServiceImpl(CrossDirInfoMapper crossDirInfoMapper, LaneInfoMapper laneInfoMapper,
CrossLaneLightsMapper crossLaneLightsMapper, LaneSegmentMapper laneSegmentMapper, CrossLaneLightsMapper crossLaneLightsMapper, LaneSegmentMapper laneSegmentMapper,
CrossLightsMapper crossLightsMapper, CrossLightsMapper crossLightsMapper,
CrossDataRealtimeMapper crossDataRealtimeMapper, CrossPhaseLightsMapper crossPhaseLightsMapper) {
CrossPhaseLightsMapper crossPhaseLightsMapper,
CrossTurnDataHistMapper crossTurnDataHistMapper,
CrossDirDataRealtimeMapper crossDirDataRealtimeMapper) {
this.crossDirInfoMapper = crossDirInfoMapper; this.crossDirInfoMapper = crossDirInfoMapper;
this.laneInfoMapper = laneInfoMapper; this.laneInfoMapper = laneInfoMapper;
this.crossLaneLightsMapper = crossLaneLightsMapper; this.crossLaneLightsMapper = crossLaneLightsMapper;
this.laneSegmentMapper = laneSegmentMapper; this.laneSegmentMapper = laneSegmentMapper;
this.crossLightsMapper = crossLightsMapper; this.crossLightsMapper = crossLightsMapper;
this.crossDataRealtimeMapper = crossDataRealtimeMapper;
this.crossPhaseLightsMapper = crossPhaseLightsMapper; this.crossPhaseLightsMapper = crossPhaseLightsMapper;
this.crossTurnDataHistMapper = crossTurnDataHistMapper;
this.crossDirDataRealtimeMapper = crossDirDataRealtimeMapper;
} }
@Override @Override
...@@ -305,9 +296,6 @@ public class CrossConfigServiceImpl implements CrossConfigService { ...@@ -305,9 +296,6 @@ public class CrossConfigServiceImpl implements CrossConfigService {
String crossId = crossIdDTO.getCrossId(); String crossId = crossIdDTO.getCrossId();
SaveLaneInfoDTO saveLaneInfoDTO = new SaveLaneInfoDTO(); SaveLaneInfoDTO saveLaneInfoDTO = new SaveLaneInfoDTO();
saveLaneInfoDTO.setCrossId(crossId); saveLaneInfoDTO.setCrossId(crossId);
// 路口拥堵指数
CrossDataRealtimePO crossDataRealtimePO = crossDataRealtimeMapper.selectByCrossId(crossId);
saveLaneInfoDTO.setCrossIndex(crossDataRealtimePO.getTrafficIndex());
// 构造dirList // 构造dirList
buildDirList(crossId, saveLaneInfoDTO); buildDirList(crossId, saveLaneInfoDTO);
// 构造ledConfigList // 构造ledConfigList
...@@ -382,16 +370,6 @@ public class CrossConfigServiceImpl implements CrossConfigService { ...@@ -382,16 +370,6 @@ public class CrossConfigServiceImpl implements CrossConfigService {
Integer key = entry.getKey(); Integer key = entry.getKey();
DirListElement dirListElement = new DirListElement(); DirListElement dirListElement = new DirListElement();
dirListElement.setDir(key); dirListElement.setDir(key);
// 查询拥堵状态、排队长度和指数
CrossDirDataRealtimePO crossDirDataRealtimePO =
crossDirDataRealtimeMapper.selectByCrossIdAndDirType(crossId, key);
if (crossDirDataRealtimePO == null) {
throw new RuntimeException("没有该路口方向实时数据");
}
dirListElement.setStatus(crossDirDataRealtimePO.getStatus());
dirListElement.setTraffic_index(crossDirDataRealtimePO.getTrafficIndex());
dirListElement.setLength(crossDirDataRealtimePO.getLength());
dirListElement.setDuration(crossDirDataRealtimePO.getDuration());
// 获取是否有行人道 // 获取是否有行人道
CrossDirInfoPO crossDirInfoPO = crossDirInfoMapper.selectByCrossIdAndDirType(crossId, key); CrossDirInfoPO crossDirInfoPO = crossDirInfoMapper.selectByCrossIdAndDirType(crossId, key);
Integer isPedestrian = crossDirInfoPO.getIsPedestrian(); Integer isPedestrian = crossDirInfoPO.getIsPedestrian();
......
...@@ -11,6 +11,20 @@ import net.wanji.web.dto.LightIdDTO; ...@@ -11,6 +11,20 @@ import net.wanji.web.dto.LightIdDTO;
import net.wanji.web.dto.SaveSchemeConfigDTO; import net.wanji.web.dto.SaveSchemeConfigDTO;
import net.wanji.web.mapper.scheme.*; import net.wanji.web.mapper.scheme.*;
import net.wanji.web.po.scheme.*; import net.wanji.web.po.scheme.*;
import net.wanji.web.mapper.scheme.CrossAccompanyPhaseMapper;
import net.wanji.databus.dao.mapper.CrossLaneLightsMapper;
import net.wanji.databus.dao.mapper.CrossLightsMapper;
import net.wanji.web.mapper.scheme.CrossPhaseLightsMapper;
import net.wanji.web.mapper.scheme.CrossPhaseMapper;
import net.wanji.web.mapper.scheme.CrossSchemeMapper;
import net.wanji.databus.dao.mapper.LaneInfoMapper;
import net.wanji.web.po.scheme.CrossAccompanyPhasePO;
import net.wanji.databus.po.CrossLaneLightsPO;
import net.wanji.databus.po.CrossLightsPO;
import net.wanji.web.po.scheme.CrossPhaseLightsPO;
import net.wanji.web.po.scheme.CrossPhasePO;
import net.wanji.web.po.scheme.CrossSchemePO;
import net.wanji.databus.po.LaneInfoPO;
import net.wanji.web.service.scheme.SchemeConfigService; import net.wanji.web.service.scheme.SchemeConfigService;
import net.wanji.web.vo.scheme.LaneIdsVO; import net.wanji.web.vo.scheme.LaneIdsVO;
import net.wanji.web.vo.scheme.LightIdVO; import net.wanji.web.vo.scheme.LightIdVO;
......
package net.wanji.web.vo; package net.wanji.web.vo;
import lombok.Data; import lombok.Data;
import net.wanji.web.po.scheme.CrossLightsPO; import net.wanji.databus.po.CrossLightsPO;
import net.wanji.web.po.scheme.CrossPhaseLightsPO; import net.wanji.web.po.scheme.CrossPhaseLightsPO;
import net.wanji.web.po.scheme.CrossPhasePO; import net.wanji.web.po.scheme.CrossPhasePO;
import net.wanji.web.po.scheme.CrossSchemePO; import net.wanji.web.po.scheme.CrossSchemePO;
......
...@@ -3,7 +3,7 @@ package net.wanji.web.vo.scheme; ...@@ -3,7 +3,7 @@ package net.wanji.web.vo.scheme;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import net.wanji.web.po.scheme.LaneInfoPO; import net.wanji.databus.po.LaneInfoPO;
import java.util.List; import java.util.List;
......
...@@ -4,10 +4,13 @@ import io.swagger.annotations.Api; ...@@ -4,10 +4,13 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; 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.dto.CrossIdDTO; import net.wanji.common.dto.CrossIdDTO;
import net.wanji.common.enums.BaseEnum;
import net.wanji.common.framework.rest.JsonViewObject; import net.wanji.common.framework.rest.JsonViewObject;
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.SendManualDTO; import net.wanji.opt.dto.SendManualDTO;
import net.wanji.opt.dto.strategy.AddOrUpdateSceneDTO; import net.wanji.opt.dto.strategy.AddOrUpdateSceneDTO;
import net.wanji.opt.service.DiagnoService; import net.wanji.opt.service.DiagnoService;
...@@ -123,4 +126,17 @@ public class DiagnoController { ...@@ -123,4 +126,17 @@ public class DiagnoController {
OptEffectVO optEffectVO = diagnoService.optEffect(crossIdAndDirDTO); OptEffectVO optEffectVO = diagnoService.optEffect(crossIdAndDirDTO);
return JsonViewObject.newInstance().success(optEffectVO); return JsonViewObject.newInstance().success(optEffectVO);
} }
@AspectLog(description = "路口信息", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "路口信息", notes = "路口信息", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/listLaneInfo",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = SaveLaneInfoDTO.class),
})
public JsonViewObject listLaneInfo(@RequestBody @Valid CrossIdDTO crossIdDTO) {
SaveLaneInfoDTO saveLaneInfoDTO = diagnoService.listLaneInfo(crossIdDTO);
return JsonViewObject.newInstance().success(saveLaneInfoDTO);
}
} }
\ No newline at end of file
package net.wanji.opt.dao.mapper; package net.wanji.opt.dao.mapper;
import net.wanji.opt.po.base.CrossDirInfoPO;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
...@@ -13,4 +14,8 @@ import java.util.List; ...@@ -13,4 +14,8 @@ import java.util.List;
public interface CrossDirInfoMapper { public interface CrossDirInfoMapper {
List<Integer> selectInDirsByCrossId(String endCrossId); List<Integer> selectInDirsByCrossId(String endCrossId);
CrossDirInfoPO selectByCrossIdAndDirType(String crossId, Integer key);
List<CrossDirInfoPO> selectByCrossId(String crossId);
} }
package net.wanji.opt.dao.mapper;
import net.wanji.opt.po.base.CrossLightsPO;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author hfx
* @date 2023/1/13 14:43
* @desc CrossLightsMapper
*/
@Repository
public interface CrossLightsMapper {
/**
* 查询灯组基础信息列表
* @return
*/
List<CrossLightsPO> listCrossLights();
}
package net.wanji.opt.dao.mapper;
import net.wanji.opt.po.base.LaneInfoPO;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author hfx
* @date 2023/1/13 14:43
* @desc LaneInfoMapper
*/
@Repository
public interface LaneInfoMapper {
/**
* 查询车道基础信息列表
* @return
*/
List<LaneInfoPO> listLaneInfo();
}
package net.wanji.opt.dao.mapper; package net.wanji.opt.dao.mapper;
import net.wanji.opt.po.base.CrossLightsPO;
import net.wanji.opt.po.base.LaneLightsPO; import net.wanji.opt.po.base.LaneLightsPO;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
......
...@@ -2,7 +2,6 @@ package net.wanji.opt.dto; ...@@ -2,7 +2,6 @@ package net.wanji.opt.dto;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import net.wanji.opt.po.base.LaneInfoPO;
import java.util.List; import java.util.List;
......
package net.wanji.opt.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@NoArgsConstructor
@Data
public class DirListElement {
@ApiModelProperty(value = "车道进口方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北", required = true)
private Integer dir;
@ApiModelProperty(value = "交通状态:1畅通;2缓行;3拥堵;4严重拥堵;5未知", required = true)
private Integer status;
@ApiModelProperty(value = "交通指数", required = true)
private Double traffic_index;
@ApiModelProperty(value = "排队长度", required = true)
private Double length;
@ApiModelProperty(value = "持续时间(单位:分钟)",notes = "")
private Integer duration ;
@ApiModelProperty(value = "是否有行人过街:0否;1是", required = true)
private Integer isPersonCross;
private List<LaneListElement> laneList;
@ApiModelProperty(value = "一次过街:oneCross, 出口二次过街:twiceCrossOut 进口二次过街:twiceCrossIn", required = true)
private String personCrossType;
@ApiModelProperty(value = "一次过街灯组代码", required = true)
private String oneCross;
@ApiModelProperty(value = "出口二次过街灯组代码", required = true)
private String twiceCrossOut;
@ApiModelProperty(value = "进口二次过街灯组代码", required = true)
private String twiceCrossIn;
}
\ No newline at end of file
package net.wanji.opt.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@Data
public class LaneListElement {
@ApiModelProperty(value = "车道ID(路口ID_方向_车道类型_序号)", required = true)
private String id;
@ApiModelProperty(value = "车道转向:0未知;1左转;2直行;3右转;4掉头;5直左;6直右;7左直右;8左右;9左转掉头;10直行掉头;11右转掉头;12左直掉头;13直右掉头;14左直右掉头;15左右掉头", required = true)
private Integer direction;
@ApiModelProperty(value = "车道代码", required = true)
private String name;
@ApiModelProperty(value = "1机动车;2非机动车;3公交专用;4可变;5潮汐", required = true)
private Integer laneType;
@ApiModelProperty(value = "灯组代码", required = true)
private String ledNum;
}
\ No newline at end of file
package net.wanji.opt.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@Data
public class LedConfigListElement {
@ApiModelProperty(value = "灯组ID", required = true)
private Integer id;
@ApiModelProperty(value = "灯组代码", required = true)
private String code;
@ApiModelProperty(value = "灯组类型 1机动车;2非机动车;3公交专用;4行人", required = true)
private Integer type;
@ApiModelProperty(value = "信号灯类型: 1:圆饼灯,2: 非机动车灯,3: 左转灯,4: 直行灯,5: 右转灯,6: 掉头灯,7: 公交专用灯,8: 行人灯", required = true)
private Integer signalType;
@ApiModelProperty(value = "灯组位置:1北;2东北;3东;4东南;5南;6西南;7西;8西北;11北一次过街;121北出口二次过街;122北进口二次过街", required = true)
private String address;
@ApiModelProperty(value = "灯组序号", required = true)
private Integer order;
}
\ No newline at end of file
package net.wanji.opt.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@NoArgsConstructor
@Data
public class SaveLaneInfoDTO {
@ApiModelProperty(value = "路口ID", required = true)
private String crossId;
@ApiModelProperty(value = "路口拥堵指数", required = true)
private Double crossIndex;
private List<LedConfigListElement> ledConfigList;
private List<DirListElement> dirList;
}
package net.wanji.opt.po.base;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author hfx
* @date 2023/01/12 13:29:39
* @desc 灯组基础信息
*/
@Data
public class CrossLightsPO {
@ApiModelProperty(name = "灯组ID",notes = "")
private Integer id;
@ApiModelProperty(name = "灯组号",notes = "")
private String lightsNo;
@ApiModelProperty(name = "灯组类型:机动车(1圆饼灯;2左转灯;3直行灯;4右转灯;5掉头灯;);" +
"非机动车(10非机动车灯;11左转灯;12直行灯;13右转灯;14掉头灯);" +
"20行人灯;21行人进口灯;22行人出口灯;" +
"30公交专用灯",notes = "")
private Integer type;
@ApiModelProperty(name = "灯组放行方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北",notes = "")
private Integer dir;
@ApiModelProperty(name = "灯组序号",notes = "")
private Integer sort;
@ApiModelProperty(name = "路口ID",notes = "")
private String crossId;
}
package net.wanji.opt.po.base;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author hfx
* @date 2023/1/13 16:50
* @desc 车道基础信息
*/
@Data
public class LaneInfoPO {
@ApiModelProperty(name = "车道ID",notes = "")
private String id;
@ApiModelProperty(name = "车道代码",notes = "")
private String code;
@ApiModelProperty(name = "车道序号,从左车道开始编号11、12、13...",notes = "")
private Integer sort;
@ApiModelProperty(name = "车道类型:1路段车道;2进口车道;3出口车道;4左转弯待转区;6直行待行区",notes = "")
private Integer type;
@ApiModelProperty(name = "车道方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北",notes = "")
private Integer dir;
@ApiModelProperty(name = "车道转向",notes = "")
private Integer turn;
@ApiModelProperty(name = "车道类别:1机动车;2非机动车;3公交专用;4可变;5潮汐",notes = "")
private Integer category;
@ApiModelProperty(name = "路段编号",notes = "")
private String rid;
@ApiModelProperty(name = "路口ID",notes = "")
private String crossId;
@ApiModelProperty(name = "车道长度",notes = "")
private Double length;
@ApiModelProperty(name = "车道宽度",notes = "")
private Double width;
}
package net.wanji.opt.service; package net.wanji.opt.service;
import net.wanji.opt.dto.CrossLightsDTO; import net.wanji.opt.dto.CrossLightsDTO;
import net.wanji.opt.po.base.CrossLightsPO;
import java.util.List; import java.util.List;
......
...@@ -3,6 +3,7 @@ package net.wanji.opt.service; ...@@ -3,6 +3,7 @@ package net.wanji.opt.service;
import net.wanji.common.dto.CrossIdDTO; import net.wanji.common.dto.CrossIdDTO;
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.SendManualDTO; import net.wanji.opt.dto.SendManualDTO;
import net.wanji.opt.dto.strategy.AddOrUpdateSceneDTO; import net.wanji.opt.dto.strategy.AddOrUpdateSceneDTO;
import net.wanji.opt.vo.CrossIdAndLocationVO; import net.wanji.opt.vo.CrossIdAndLocationVO;
...@@ -29,4 +30,6 @@ public interface DiagnoService { ...@@ -29,4 +30,6 @@ public interface DiagnoService {
void restoreSend(CrossIdDTO crossIdDTO) throws Exception; void restoreSend(CrossIdDTO crossIdDTO) throws Exception;
OptEffectVO optEffect(CrossIdAndDirDTO crossIdAndDirDTO); OptEffectVO optEffect(CrossIdAndDirDTO crossIdAndDirDTO);
SaveLaneInfoDTO listLaneInfo(CrossIdDTO crossIdDTO);
} }
...@@ -2,19 +2,16 @@ package net.wanji.opt.service.impl; ...@@ -2,19 +2,16 @@ package net.wanji.opt.service.impl;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.wanji.common.utils.tool.BeanListUtils; import net.wanji.common.utils.tool.BeanListUtils;
import net.wanji.opt.dao.mapper.CrossLightsMapper; import net.wanji.databus.dao.mapper.CrossLightsMapper;
import net.wanji.opt.dao.mapper.CrossPhaseLightsMapper; import net.wanji.databus.po.CrossLightsPO;
import net.wanji.opt.dto.CrossLightsDTO; import net.wanji.opt.dto.CrossLightsDTO;
import net.wanji.opt.dto.LaneInfoDTO; import net.wanji.opt.dto.LaneInfoDTO;
import net.wanji.opt.po.base.CrossLightsPO;
import net.wanji.opt.po.base.CrossPhaseLightsPO;
import net.wanji.opt.service.CrossLightsService; import net.wanji.opt.service.CrossLightsService;
import net.wanji.opt.service.LaneInfoService; import net.wanji.opt.service.LaneInfoService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
......
...@@ -8,12 +8,24 @@ import com.google.gson.Gson; ...@@ -8,12 +8,24 @@ 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.common.dto.CrossIdDTO; import net.wanji.common.dto.CrossIdDTO;
import net.wanji.common.enums.LightsAddressEnum;
import net.wanji.common.utils.tool.CrossUtil; import net.wanji.common.utils.tool.CrossUtil;
import net.wanji.databus.dao.entity.RidInfoEntity; import net.wanji.databus.dao.entity.RidInfoEntity;
import net.wanji.databus.dao.mapper.*; import net.wanji.databus.dao.mapper.CrossDataHistMapper;
import net.wanji.databus.dao.mapper.CrossDataRealtimeMapper;
import net.wanji.databus.dao.mapper.CrossDirDataHistMapper;
import net.wanji.databus.dao.mapper.CrossDirDataRealtimeMapper;
import net.wanji.databus.dao.mapper.CrossInfoMapper;
import net.wanji.databus.dao.mapper.CrossLaneLightsMapper;
import net.wanji.databus.dao.mapper.CrossLightsMapper;
import net.wanji.databus.dao.mapper.LaneInfoMapper;
import net.wanji.databus.dao.mapper.RidInfoMapper;
import net.wanji.databus.po.CrossDataHistPO; import net.wanji.databus.po.CrossDataHistPO;
import net.wanji.databus.po.CrossDataRealtimePO; import net.wanji.databus.po.CrossDataRealtimePO;
import net.wanji.databus.po.CrossDirDataHistPO; import net.wanji.databus.po.CrossDirDataHistPO;
import net.wanji.databus.po.CrossDirDataRealtimePO;
import net.wanji.databus.po.CrossLightsPO;
import net.wanji.databus.po.LaneInfoPO;
import net.wanji.databus.po.TBaseCrossInfo; import net.wanji.databus.po.TBaseCrossInfo;
import net.wanji.databus.vo.SchemeSendVO; import net.wanji.databus.vo.SchemeSendVO;
import net.wanji.opt.dao.mapper.CrossDirInfoMapper; import net.wanji.opt.dao.mapper.CrossDirInfoMapper;
...@@ -23,10 +35,15 @@ import net.wanji.opt.dao.mapper.CrossSchemeOptLogMapper; ...@@ -23,10 +35,15 @@ import net.wanji.opt.dao.mapper.CrossSchemeOptLogMapper;
import net.wanji.opt.dao.mapper.strategy.SceneMapper; import net.wanji.opt.dao.mapper.strategy.SceneMapper;
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.DirListElement;
import net.wanji.opt.dto.LaneListElement;
import net.wanji.opt.dto.LedConfigListElement;
import net.wanji.opt.dto.OptDataExtend; import net.wanji.opt.dto.OptDataExtend;
import net.wanji.opt.dto.SaveLaneInfoDTO;
import net.wanji.opt.dto.SendManualDTO; import net.wanji.opt.dto.SendManualDTO;
import net.wanji.opt.dto.strategy.AddOrUpdateSceneDTO; import net.wanji.opt.dto.strategy.AddOrUpdateSceneDTO;
import net.wanji.opt.dto.strategy.QuerySceneDTO; import net.wanji.opt.dto.strategy.QuerySceneDTO;
import net.wanji.opt.po.base.CrossDirInfoPO;
import net.wanji.opt.po.base.CrossPhasePO; import net.wanji.opt.po.base.CrossPhasePO;
import net.wanji.opt.po.base.CrossSchemeOptLogPO; import net.wanji.opt.po.base.CrossSchemeOptLogPO;
import net.wanji.opt.po.base.CrossSchemePO; import net.wanji.opt.po.base.CrossSchemePO;
...@@ -41,7 +58,16 @@ import net.wanji.opt.vo.SchemeOptVO; ...@@ -41,7 +58,16 @@ import net.wanji.opt.vo.SchemeOptVO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.*; import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.TreeSet;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -64,14 +90,39 @@ public class DiagnoServiceImpl implements DiagnoService { ...@@ -64,14 +90,39 @@ public class DiagnoServiceImpl implements DiagnoService {
private final FeignProxyService feignProxyService; private final FeignProxyService feignProxyService;
private final CrossDataHistMapper crossDataHistMapper; private final CrossDataHistMapper crossDataHistMapper;
private final CrossDirDataHistMapper crossDirDataHistMapper; private final CrossDirDataHistMapper crossDirDataHistMapper;
private final LaneInfoMapper laneInfoMapper;
private final CrossDirDataRealtimeMapper crossDirDataRealtimeMapper;
private final CrossLaneLightsMapper crossLaneLightsMapper;
private final CrossLightsMapper crossLightsMapper;
private Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create(); private Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
// 机动车灯数据库类型与前端类型对应关系
private static final Map<Integer, Integer> MOTOR_VEH_MAP = new HashMap<>(5);
static {
MOTOR_VEH_MAP.put(1, 1);
MOTOR_VEH_MAP.put(2, 3);
MOTOR_VEH_MAP.put(3, 4);
MOTOR_VEH_MAP.put(4, 5);
MOTOR_VEH_MAP.put(5, 6);
}
// 非机动车灯数据库类型与前端类型对应关系
private static final Map<Integer, Integer> NON_MOTOR_VEH_MAP = new HashMap<>(5);
static {
MOTOR_VEH_MAP.put(10, 2);
MOTOR_VEH_MAP.put(11, 3);
MOTOR_VEH_MAP.put(12, 4);
MOTOR_VEH_MAP.put(13, 5);
MOTOR_VEH_MAP.put(14, 6);
}
public DiagnoServiceImpl(CrossInfoMapper crossInfoMapper, CrossDataRealtimeMapper crossDataRealtimeMapper, public DiagnoServiceImpl(CrossInfoMapper crossInfoMapper, CrossDataRealtimeMapper crossDataRealtimeMapper,
SceneService sceneService, SceneMapper sceneMapper, CrossDirInfoMapper crossDirInfoMapper, SceneService sceneService, SceneMapper sceneMapper, CrossDirInfoMapper crossDirInfoMapper,
RidInfoMapper ridInfoMapper, CrossSchemeOptLogMapper crossSchemeOptLogMapper, RidInfoMapper ridInfoMapper, CrossSchemeOptLogMapper crossSchemeOptLogMapper,
CrossSchemeMapper crossSchemeMapper, CrossPhaseMapper crossPhaseMapper, CrossSchemeMapper crossSchemeMapper, CrossPhaseMapper crossPhaseMapper,
FeignProxyService feignProxyService, CrossDataHistMapper crossDataHistMapper, FeignProxyService feignProxyService, CrossDataHistMapper crossDataHistMapper,
CrossDirDataHistMapper crossDirDataHistMapper) { CrossDirDataHistMapper crossDirDataHistMapper, LaneInfoMapper laneInfoMapper,
CrossDirDataRealtimeMapper crossDirDataRealtimeMapper,
CrossLaneLightsMapper crossLaneLightsMapper, CrossLightsMapper crossLightsMapper) {
this.crossInfoMapper = crossInfoMapper; this.crossInfoMapper = crossInfoMapper;
this.crossDataRealtimeMapper = crossDataRealtimeMapper; this.crossDataRealtimeMapper = crossDataRealtimeMapper;
this.sceneService = sceneService; this.sceneService = sceneService;
...@@ -84,6 +135,10 @@ public class DiagnoServiceImpl implements DiagnoService { ...@@ -84,6 +135,10 @@ public class DiagnoServiceImpl implements DiagnoService {
this.feignProxyService = feignProxyService; this.feignProxyService = feignProxyService;
this.crossDataHistMapper = crossDataHistMapper; this.crossDataHistMapper = crossDataHistMapper;
this.crossDirDataHistMapper = crossDirDataHistMapper; this.crossDirDataHistMapper = crossDirDataHistMapper;
this.laneInfoMapper = laneInfoMapper;
this.crossDirDataRealtimeMapper = crossDirDataRealtimeMapper;
this.crossLaneLightsMapper = crossLaneLightsMapper;
this.crossLightsMapper = crossLightsMapper;
} }
@Override @Override
...@@ -378,6 +433,157 @@ public class DiagnoServiceImpl implements DiagnoService { ...@@ -378,6 +433,157 @@ public class DiagnoServiceImpl implements DiagnoService {
return optEffectVO; return optEffectVO;
} }
@Override
public SaveLaneInfoDTO listLaneInfo(CrossIdDTO crossIdDTO) {
String crossId = crossIdDTO.getCrossId();
SaveLaneInfoDTO saveLaneInfoDTO = new SaveLaneInfoDTO();
saveLaneInfoDTO.setCrossId(crossId);
// 路口拥堵指数
CrossDataRealtimePO crossDataRealtimePO = crossDataRealtimeMapper.selectByCrossId(crossId);
saveLaneInfoDTO.setCrossIndex(crossDataRealtimePO.getTrafficIndex());
// 构造dirList
buildDirList(crossId, saveLaneInfoDTO);
// 构造ledConfigList
buildLedConfigList(crossId, saveLaneInfoDTO);
return saveLaneInfoDTO;
}
private void buildLedConfigList(String crossId, SaveLaneInfoDTO saveLaneInfoDTO) {
saveLaneInfoDTO.setLedConfigList(new ArrayList<>());
List<LedConfigListElement> ledConfigList = saveLaneInfoDTO.getLedConfigList();
// 获取灯组数据
List<CrossLightsPO> crossLightsPOList = crossLightsMapper.selectByCrossId(crossId);
// 赋值给ledConfigList
for (CrossLightsPO crossLightsPO : crossLightsPOList) {
LedConfigListElement ledConfigListElement = new LedConfigListElement();
ledConfigListElement.setId(crossLightsPO.getId());
ledConfigListElement.setOrder(crossLightsPO.getSort());
ledConfigListElement.setCode(crossLightsPO.getLightsNo());
// 处理type
Integer type = crossLightsPO.getType();
if (type > 0 && type < 10) { // 机动车灯
ledConfigListElement.setType(1);
Integer signalType = MOTOR_VEH_MAP.get(type);
ledConfigListElement.setSignalType(signalType);
} else if (type >= 10 && type < 20) { // 非机动车灯
ledConfigListElement.setType(2);
Integer signalType = NON_MOTOR_VEH_MAP.get(type);
ledConfigListElement.setSignalType(signalType);
} else if (type >= 20 && type < 30) { // 行人灯
ledConfigListElement.setType(4);
ledConfigListElement.setSignalType(8);
} else if (type == 30) { // 公交专用灯
ledConfigListElement.setType(3);
ledConfigListElement.setSignalType(7);
}
// 灯组放行方向
Integer dir = crossLightsPO.getDir();
if (type < 20 || type >= 30) { // 非行人灯
String address = LightsAddressEnum.getMsgByCode(dir);
ledConfigListElement.setAddress(address);
} else if (type == 20) { // 一次过街
String s = "" + dir + 1;
setLightAddress(ledConfigListElement, s);
} else if (type == 22) { // 二次过街-出口
String s = "" + dir + 21;
setLightAddress(ledConfigListElement, s);
} else if (type == 21) { // 二次过街-进口
String s = "" + dir + 22;
setLightAddress(ledConfigListElement, s);
}
ledConfigList.add(ledConfigListElement);
}
// 根据灯组序号排序
// ledConfigList.sort(Comparator.comparing(LedConfigListElement::getOrder));
Collections.sort(ledConfigList, Comparator.comparingInt(led -> Integer.valueOf(led.getCode())));
}
private void setLightAddress(LedConfigListElement ledConfigListElement, String s) {
int i = Integer.parseInt(s);
String address = LightsAddressEnum.getMsgByCode(i);
ledConfigListElement.setAddress(address);
}
private void buildDirList(String crossId, SaveLaneInfoDTO saveLaneInfoDTO) {
saveLaneInfoDTO.setDirList(new ArrayList<>());
List<LaneInfoPO> laneInfoPOList = laneInfoMapper.selectBycrossId(crossId);
Map<Integer, List<LaneInfoPO>> collect = laneInfoPOList.stream()
.collect(Collectors.groupingBy(LaneInfoPO::getDir));
for (Map.Entry<Integer, List<LaneInfoPO>> entry : collect.entrySet()) {
Integer key = entry.getKey();
DirListElement dirListElement = new DirListElement();
dirListElement.setDir(key);
// 查询拥堵状态、排队长度和指数
CrossDirDataRealtimePO crossDirDataRealtimePO =
crossDirDataRealtimeMapper.selectByCrossIdAndDirType(crossId, key);
if (crossDirDataRealtimePO == null) {
throw new RuntimeException("没有该路口方向实时数据");
}
dirListElement.setStatus(crossDirDataRealtimePO.getStatus());
dirListElement.setTraffic_index(crossDirDataRealtimePO.getTrafficIndex());
dirListElement.setLength(crossDirDataRealtimePO.getLength());
dirListElement.setDuration(crossDirDataRealtimePO.getDuration());
// 获取是否有行人道
CrossDirInfoPO crossDirInfoPO = crossDirInfoMapper.selectByCrossIdAndDirType(crossId, key);
Integer isPedestrian = crossDirInfoPO.getIsPedestrian();
dirListElement.setIsPersonCross(isPedestrian);
// 构造laneList
List<LaneInfoPO> value = entry.getValue();
List<LaneInfoPO> sortedValue = value.stream().
sorted(Comparator.comparing(LaneInfoPO::getSort)).
collect(Collectors.toList());
List<LaneListElement> laneListElementList = new ArrayList<>();
for (LaneInfoPO laneInfoPO : sortedValue) {
LaneListElement laneListElement = new LaneListElement();
String laneId = laneInfoPO.getId();
laneListElement.setId(laneId);
Integer turn = laneInfoPO.getTurn();
laneListElement.setDirection(turn);
laneListElement.setLaneType(laneInfoPO.getCategory());
laneListElement.setName(laneInfoPO.getCode());
// 根据laneId获取灯组代码
String lightsCode = crossLaneLightsMapper.selectLightsCodeByLaneId(laneId);
if (lightsCode != null) {
laneListElement.setLedNum(lightsCode);
}
laneListElementList.add(laneListElement);
}
dirListElement.setLaneList(laneListElementList);
// 构造行人过街数据
List<CrossLightsPO> crossLightsPOList = crossLightsMapper.selectByCrossIdAndDir(crossId, key);
for (CrossLightsPO crossLightsPO : crossLightsPOList) {
Integer type = crossLightsPO.getType();
String lightsNo = crossLightsPO.getLightsNo();
if (type == 20) { // 一次过街
dirListElement.setPersonCrossType("oneCross");
dirListElement.setOneCross(lightsNo);
} else if (type == 22) { // 二次过街出口灯
dirListElement.setPersonCrossType("twiceCross");
dirListElement.setTwiceCrossOut(lightsNo);
} else if (type == 21) { // 二次过街进口灯
dirListElement.setPersonCrossType("twiceCross");
dirListElement.setTwiceCrossIn(lightsNo);
}
}
List<DirListElement> dirList = saveLaneInfoDTO.getDirList();
dirList.add(dirListElement);
}
// 返回没有车道的方向
List<CrossDirInfoPO> crossDirInfoPOList = crossDirInfoMapper.selectByCrossId(crossId);
for (CrossDirInfoPO crossDirInfoPO : crossDirInfoPOList) {
List<DirListElement> dirList = saveLaneInfoDTO.getDirList();
Integer dirType = crossDirInfoPO.getDirType();
List<LaneInfoPO> laneInfoPOList1 = laneInfoMapper.selectByCrossIdAndDir(crossId, dirType);
if (CollectionUtil.isEmpty(laneInfoPOList1)) {
DirListElement dirListElement = new DirListElement();
dirListElement.setDir(crossDirInfoPO.getDirType());
dirListElement.setIsPersonCross(crossDirInfoPO.getIsPedestrian());
dirList.add(dirListElement);
}
}
}
private List<OptEffectVO.QueueStop> buildQueueStopListDir(List<CrossDirDataHistPO> crossDirDataHistPOList) { private List<OptEffectVO.QueueStop> buildQueueStopListDir(List<CrossDirDataHistPO> crossDirDataHistPOList) {
List<OptEffectVO.QueueStop> queueStopList = new ArrayList<>(); List<OptEffectVO.QueueStop> queueStopList = new ArrayList<>();
for (CrossDirDataHistPO crossDirDataHistPO : crossDirDataHistPOList) { for (CrossDirDataHistPO crossDirDataHistPO : crossDirDataHistPOList) {
......
...@@ -2,10 +2,10 @@ package net.wanji.opt.service.impl; ...@@ -2,10 +2,10 @@ package net.wanji.opt.service.impl;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.wanji.common.utils.tool.BeanListUtils; import net.wanji.common.utils.tool.BeanListUtils;
import net.wanji.opt.dao.mapper.LaneInfoMapper; import net.wanji.databus.dao.mapper.LaneInfoMapper;
import net.wanji.databus.po.LaneInfoPO;
import net.wanji.opt.dao.mapper.LaneLightsMapper; import net.wanji.opt.dao.mapper.LaneLightsMapper;
import net.wanji.opt.dto.LaneInfoDTO; import net.wanji.opt.dto.LaneInfoDTO;
import net.wanji.opt.po.base.LaneInfoPO;
import net.wanji.opt.po.base.LaneLightsPO; import net.wanji.opt.po.base.LaneLightsPO;
import net.wanji.opt.query.LaneQuery; import net.wanji.opt.query.LaneQuery;
import net.wanji.opt.service.LaneInfoService; import net.wanji.opt.service.LaneInfoService;
......
...@@ -8,4 +8,18 @@ ...@@ -8,4 +8,18 @@
WHERE cross_id = #{crossId} and in_out_type = 1 WHERE cross_id = #{crossId} and in_out_type = 1
</select> </select>
<select id="selectByCrossIdAndDirType" resultType="net.wanji.opt.po.base.CrossDirInfoPO">
select
id,dir_type,in_out_type,cross_id,length,is_pedestrian,gmt_create,gmt_modified
from t_base_cross_dir_info
where cross_id = #{crossId} and dir_type = #{key} and in_out_type = 1
</select>
<select id="selectByCrossId" resultType="net.wanji.opt.po.base.CrossDirInfoPO">
select
id,dir_type,in_out_type,cross_id,length,is_pedestrian,gmt_create,gmt_modified
from t_base_cross_dir_info
where cross_id = #{crossId}
</select>
</mapper> </mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="net.wanji.opt.dao.mapper.CrossLightsMapper">
<!-- 通用查询映射结果 -->
<resultMap type="net.wanji.opt.po.base.CrossLightsPO" id="BaseResultMap">
<result property="id" column="id"/>
<result property="lightsNo" column="lights_no"/>
<result property="type" column="type"/>
<result property="dir" column="dir"/>
<result property="sort" column="sort"/>
<result property="crossId" column="cross_id"/>
</resultMap>
<!-- 查询灯组列表信息 -->
<select id="listCrossLights" resultMap="BaseResultMap">
select
id
,lights_no
,type
,dir
,sort
,cross_id
from
t_base_cross_lights
where 1=1
<if test="crossId != null and crossId != ''">
and cross_id = #{crossId}
</if>
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="net.wanji.opt.dao.mapper.LaneInfoMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="net.wanji.opt.po.base.LaneInfoPO">
<result property="id" column="id"/>
<result property="code" column="code"/>
<result property="sort" column="sort"/>
<result property="type" column="type"/>
<result property="dir" column="dir"/>
<result property="turn" column="turn"/>
<result property="category" column="category"/>
<result property="rid" column="rid"/>
<result property="crossId" column="cross_id"/>
<result property="length" column="length"/>
<result property="width" column="width"/>
</resultMap>
<!-- 查询车道基础信息列表 -->
<select id="listLaneInfo" parameterType="String" resultMap="BaseResultMap">
select
id
,code
,sort
,type
,dir
,turn
,category
,rid
,cross_id
,length
,width
from
t_base_lane_info
where 1 = 1
<if test="crossId != null and crossId != '' ">
and cross_id = #{crossId}
</if>
<if test="type != null and type != '' ">
and type = #{type}
</if>
<if test="rid != null and rid != '' ">
and rid = #{rid}
</if>
</select>
</mapper>
...@@ -17,7 +17,12 @@ import net.wanji.utc.po.CrossLightsPO; ...@@ -17,7 +17,12 @@ import net.wanji.utc.po.CrossLightsPO;
import net.wanji.utc.po.ManufacturerInfoPO; import net.wanji.utc.po.ManufacturerInfoPO;
import net.wanji.utc.po.hk.request.HKRequest; import net.wanji.utc.po.hk.request.HKRequest;
import net.wanji.utc.po.hk.request.RealTimeStateInfoQueryPO; import net.wanji.utc.po.hk.request.RealTimeStateInfoQueryPO;
import net.wanji.utc.po.hk.response.*; import net.wanji.utc.po.hk.response.ChannelStatePO;
import net.wanji.utc.po.hk.response.HKResponse;
import net.wanji.utc.po.hk.response.PhaseInfoPO;
import net.wanji.utc.po.hk.response.RealTimeStateInfoListPO;
import net.wanji.utc.po.hk.response.RealTimeStateInfoPO;
import net.wanji.utc.po.hk.response.RingsPO;
import net.wanji.utc.service.runninginfo.HkLightsStatusService; import net.wanji.utc.service.runninginfo.HkLightsStatusService;
import net.wanji.utc.util.PathUtil; import net.wanji.utc.util.PathUtil;
import net.wanji.utc.util.StringUtils; import net.wanji.utc.util.StringUtils;
...@@ -25,7 +30,12 @@ import net.wanji.utc.vo.LightsStatusVO; ...@@ -25,7 +30,12 @@ import net.wanji.utc.vo.LightsStatusVO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.*; import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/** /**
* @author Kent HAN * @author Kent HAN
......
...@@ -5,8 +5,20 @@ import lombok.RequiredArgsConstructor; ...@@ -5,8 +5,20 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.rest.JsonViewObject; import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.utc.common.Result; import net.wanji.utc.common.Result;
import net.wanji.utc.mapper.*; import net.wanji.utc.mapper.CrossLightsMapper;
import net.wanji.utc.po.*; import net.wanji.utc.mapper.CrossPhaseLightsMapper;
import net.wanji.utc.mapper.CrossPhaseMapper;
import net.wanji.utc.mapper.CrossPlanMapper;
import net.wanji.utc.mapper.CrossSchedulesMapper;
import net.wanji.utc.mapper.CrossSchemeMapper;
import net.wanji.utc.mapper.CrossSectionMapper;
import net.wanji.utc.po.CrossLightsPO;
import net.wanji.utc.po.CrossPhaseLightsPO;
import net.wanji.utc.po.CrossPhasePO;
import net.wanji.utc.po.CrossPlanPO;
import net.wanji.utc.po.CrossSchedulesPO;
import net.wanji.utc.po.CrossSchemePO;
import net.wanji.utc.po.CrossSectionPO;
import net.wanji.utc.service.staticinfo.WanJiCommonStaticInfoService; import net.wanji.utc.service.staticinfo.WanJiCommonStaticInfoService;
import net.wanji.utc.util.HttpRestUtil; import net.wanji.utc.util.HttpRestUtil;
import net.wanji.utc.vo.PlanSectionVO; import net.wanji.utc.vo.PlanSectionVO;
......
package net.wanji.web.common.enums; package net.wanji.common.enums;
import java.util.Objects; import java.util.Objects;
......
package net.wanji.web.mapper.scheme; package net.wanji.databus.dao.mapper;
import net.wanji.web.po.scheme.CrossLaneLightsPO; import net.wanji.databus.po.CrossLaneLightsPO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
......
package net.wanji.web.mapper.scheme; package net.wanji.databus.dao.mapper;
import net.wanji.web.po.scheme.CrossLightsPO; import net.wanji.databus.po.CrossLightsPO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.Collection; import java.util.Collection;
...@@ -13,6 +14,7 @@ import java.util.List; ...@@ -13,6 +14,7 @@ import java.util.List;
* @date : 2023-1-3 * @date : 2023-1-3
*/ */
@Repository @Repository
@Primary
public interface CrossLightsMapper { public interface CrossLightsMapper {
void deleteByCrossId(@Param("crossId") String crossId); void deleteByCrossId(@Param("crossId") String crossId);
...@@ -35,4 +37,9 @@ public interface CrossLightsMapper { ...@@ -35,4 +37,9 @@ public interface CrossLightsMapper {
void insertOne(CrossLightsPO crossLightsPO); void insertOne(CrossLightsPO crossLightsPO);
List<CrossLightsPO> listCrossLightsPO(@Param("entity") CrossLightsPO entity); List<CrossLightsPO> listCrossLightsPO(@Param("entity") CrossLightsPO entity);
List<CrossLightsPO> listCrossLights();
void deleteOne(@Param("crossId") String crossId,
@Param("elementId") String elementId);
} }
package net.wanji.web.mapper.scheme; package net.wanji.databus.dao.mapper;
import net.wanji.web.po.scheme.LaneInfoPO; import net.wanji.databus.po.LaneInfoPO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
...@@ -33,4 +33,6 @@ public interface LaneInfoMapper { ...@@ -33,4 +33,6 @@ public interface LaneInfoMapper {
List<LaneInfoPO> selectByLaneIds(@Param("laneIds") List<String> laneIds); List<LaneInfoPO> selectByLaneIds(@Param("laneIds") List<String> laneIds);
String selectPreId(String crossId, Integer dir); String selectPreId(String crossId, Integer dir);
List<LaneInfoPO> listLaneInfo();
} }
package net.wanji.web.po.scheme; package net.wanji.databus.po;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
......
package net.wanji.web.po.scheme; package net.wanji.databus.po;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
......
package net.wanji.web.po.scheme; package net.wanji.databus.po;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="net.wanji.web.mapper.scheme.CrossLaneLightsMapper"> <mapper namespace="net.wanji.databus.dao.mapper.CrossLaneLightsMapper">
<!-- 通用查询映射结果 --> <!-- 通用查询映射结果 -->
<resultMap type="net.wanji.web.po.scheme.CrossLaneLightsPO" id="BaseResultMap"> <resultMap type="net.wanji.databus.po.CrossLaneLightsPO" id="BaseResultMap">
<result property="id" column="id"/> <result property="id" column="id"/>
<result property="lightsId" column="lights_id"/> <result property="lightsId" column="lights_id"/>
<result property="laneId" column="lane_id"/> <result property="laneId" column="lane_id"/>
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="net.wanji.web.mapper.scheme.CrossLightsMapper"> <mapper namespace="net.wanji.databus.dao.mapper.CrossLightsMapper">
<!-- 通用查询映射结果 --> <!-- 通用查询映射结果 -->
<resultMap type="net.wanji.web.po.scheme.CrossLightsPO" id="BaseResultMap"> <resultMap type="net.wanji.databus.po.CrossLightsPO" id="BaseResultMap">
<result property="id" column="id"/> <result property="id" column="id"/>
<result property="lightsNo" column="lights_no"/> <result property="lightsNo" column="lights_no"/>
<result property="type" column="type"/> <result property="type" column="type"/>
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
id, lights_no,type, dir, sort, cross_id, gmt_create, gmt_modified id, lights_no,type, dir, sort, cross_id, gmt_create, gmt_modified
</sql> </sql>
<select id="listCrossLightsPO" parameterType="net.wanji.web.po.scheme.CrossLightsPO" resultMap="BaseResultMap"> <select id="listCrossLightsPO" parameterType="net.wanji.databus.po.CrossLightsPO" resultMap="BaseResultMap">
select select
<include refid="Base_Column_List"></include> <include refid="Base_Column_List"></include>
from t_base_cross_lights from t_base_cross_lights
...@@ -64,6 +64,11 @@ ...@@ -64,6 +64,11 @@
where cross_id = #{crossId} where cross_id = #{crossId}
</delete> </delete>
<delete id="deleteOne">
delete from t_cross_lights
where cross_id = #{crossId} and name = #{elementId}
</delete>
<select id="selectByCrossIdAndLedNum" resultMap="BaseResultMap"> <select id="selectByCrossIdAndLedNum" resultMap="BaseResultMap">
select id, select id,
lights_no, lights_no,
...@@ -128,4 +133,20 @@ ...@@ -128,4 +133,20 @@
</foreach> </foreach>
</select> </select>
<select id="listCrossLights" resultType="net.wanji.databus.po.CrossLightsPO">
select
id
,lights_no
,type
,dir
,sort
,cross_id
from
t_base_cross_lights
where 1=1
<if test="crossId != null and crossId != ''">
and cross_id = #{crossId}
</if>
</select>
</mapper> </mapper>
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="net.wanji.web.mapper.scheme.LaneInfoMapper"> <mapper namespace="net.wanji.databus.dao.mapper.LaneInfoMapper">
<!-- 通用查询映射结果 --> <!-- 通用查询映射结果 -->
<resultMap type="net.wanji.web.po.scheme.LaneInfoPO" id="BaseResultMap"> <resultMap type="net.wanji.databus.po.LaneInfoPO" id="BaseResultMap">
<result property="id" column="id"/> <result property="id" column="id"/>
<result property="code" column="code"/> <result property="code" column="code"/>
<result property="sort" column="sort"/> <result property="sort" column="sort"/>
...@@ -76,4 +76,32 @@ ...@@ -76,4 +76,32 @@
WHERE end_cross_id = #{crossId} and in_dir = #{dir} WHERE end_cross_id = #{crossId} and in_dir = #{dir}
</select> </select>
<!-- 查询车道基础信息列表 -->
<select id="listLaneInfo" parameterType="String" resultMap="BaseResultMap">
select
id
,code
,sort
,type
,dir
,turn
,category
,rid
,cross_id
,length
,width
from
t_base_lane_info
where 1 = 1
<if test="crossId != null and crossId != '' ">
and cross_id = #{crossId}
</if>
<if test="type != null and type != '' ">
and type = #{type}
</if>
<if test="rid != null and rid != '' ">
and rid = #{rid}
</if>
</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