Commit eac82065 authored by zhouleilei's avatar zhouleilei

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/service/impl/StaticInfoServiceImpl.java
parents ce43e4d4 91ac566e
package net.wanji.utc.hisense.common;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author duanruiming
* @date 2024/11/12 14:16
* @decription 还行通道控制枚举
*/
@AllArgsConstructor
@Getter
public enum ChannelControlEnum {
OTHER(1, "其他相位控制"),
VEHICLE(2, "机动车相位控制"),
PEDESTRIAN(3, "行人相位控制"),
OVERLAP(4, "跟随相位控制");
private Integer code;
private String desc;
public static void main(String[] args) {
String dirTurn = Integer.toBinaryString(77);
String dir = dirTurn.substring(0, 3);
String turn = dirTurn.substring(2);
System.err.println(dir);
System.err.println(turn);
System.err.println(Integer.parseInt(dir, 2));
System.err.println(Integer.parseInt(turn, 2));
}
}
package net.wanji.utc.hisense.common;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Objects;
/**
* @author duanruiming
* @date 2024/11/12 15:14
*/
@Getter
@AllArgsConstructor
public enum HisenseTurnEnum {
// '车道转向:1左转;2直行;3右转;4掉头;5直左;6直右;7左直右;8左右;9左转掉头;10直行掉头;
// 11右转掉头;12左直掉头;13直右掉头;14左直右掉头;15左右掉头', 0 默认没有匹配
TURN_1(1, 1, "左"),
TURN_2(2, 2, "直"),
TURN_3(3, 3, "右"),
TURN_4(4, 4, "调头"),
TURN_5(5, 9, "左调头"),
TURN_6(6, 12, "左直"),
TURN_7(7, 8, "左右"),
TURN_8(8, 6, "直右"),
TURN_9(9, 7, "左直右"),
TURN_10(10, 10, "直调头"),
TURN_11(11, 0, "入口行人"),
TURN_12(12, 0, "出口行人"),
TURN_13(13, 0, "出入口行人"),
TURN_14(14, 12, "左直调头"),
TURN_15(15, 11, "右调头"),
TURN_16(16, 15, "左右调头"),
TURN_17(17, 13, "直右掉头"),
TURN_18(18, 14, "左直右掉头");
private Integer hisenseTurn;
private Integer wjLightsTurn;
private String desc;
public static Integer getWjLightsTurn(Integer hisenseTurn) {
for (HisenseTurnEnum value : HisenseTurnEnum.values()) {
if (Objects.equals(hisenseTurn, value.getHisenseTurn())) {
return value.getWjLightsTurn();
}
}
return 0;
}
}
package net.wanji.utc.hisense.common;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
/**
* @author duanruiming
* @date 2024/11/12 15:04
*/
@Getter
@AllArgsConstructor
public enum HiseseDirEnum {
// '灯组方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北',
ZERO(0,1, "北"),
ONE(1,3, "东"),
TWO(2,5, "南"),
THREE(3,7, "西"),
FOUR(4,2, "东北"),
FIVE(5,4, "东南"),
SIX(6,6, "西南"),
SEVEN(7,8, "西北");
private Integer hisenseDir;
private Integer wjLightsDir;
private String desc;
public static Integer getWjLightsDir(Integer hisenseDir) {
for (HiseseDirEnum value : HiseseDirEnum.values()) {
if (Objects.equals(hisenseDir, value.getHisenseDir())) {
return value.getWjLightsDir();
}
}
return 0;
}
public static void main(String[] args) throws Exception {
String format = String.format("%16s", Integer.toBinaryString(26)).replace(' ', '0');
char[] chars = format.toCharArray();
List<Integer> result = new ArrayList<>();
int length = chars.length;
for (int i = 0; i < length; i++) {
if (chars[i] == '1') {
result.add(length - i);
}
}
Collections.sort(result);
result.forEach(i -> {
System.err.println(i);
});
}
}
...@@ -11,63 +11,63 @@ import lombok.Data; ...@@ -11,63 +11,63 @@ import lombok.Data;
public class VNtcipChannelPhaseDTO { public class VNtcipChannelPhaseDTO {
@TableField("CINTSID") @TableField("CINTSID")
private String cIntsID; private Integer cIntsID;
@TableField("NSTRATEGYNO") @TableField("NSTRATEGYNO")
private String nStrategyNo; private Integer nStrategyNo;
@TableField("NPHASENUMBER") @TableField("NPHASENUMBER")
private String nPhaseNumber; private Integer nPhaseNumber;
// 行人放行时间 // 行人放行时间
@TableField("NPHASEWALK") @TableField("NPHASEWALK")
private String nPhaseWalk; private Integer nPhaseWalk;
// 行人清空时间 // 行人清空时间
@TableField("NPHASEPEDESTRIANCLEAR") @TableField("NPHASEPEDESTRIANCLEAR")
private String nPhasePedestrianClear; private Integer nPhasePedestrianClear;
// 最小绿 // 最小绿
@TableField("NPHASEMINIMUMGREEN") @TableField("NPHASEMINIMUMGREEN")
private String nPhaseMiniNumGreen; private Integer nPhaseMiniNumGreen;
// 单位延长绿 // 单位延长绿
@TableField("NPHASEPASSAGE") @TableField("NPHASEPASSAGE")
private String nPhasePassage; private Integer nPhasePassage;
// 最大绿1 // 最大绿1
@TableField("NPHASEMAXIMUM1") @TableField("NPHASEMAXIMUM1")
private String nPhaseMaxiNum1; private Integer nPhaseMaxiNum1;
// 最大绿2 // 最大绿2
@TableField("NPHASEMAXIMUM2") @TableField("NPHASEMAXIMUM2")
private String nPhaseMaxiNum2; private Integer nPhaseMaxiNum2;
// 相位黄灯时间 // 相位黄灯时间
@TableField("NPHASEYELLOWCHANGE") @TableField("NPHASEYELLOWCHANGE")
private String nPhaseYellowChange; private Integer nPhaseYellowChange;
// 相位红灯清空时间 // 相位红灯清空时间
@TableField("NPHASEREDCLEAR") @TableField("NPHASEREDCLEAR")
private String nPhaseRedClear; private Integer nPhaseRedClear;
// 红灯保护时间 // 红灯保护时间
@TableField("NPHASEREDREVERT") @TableField("NPHASEREDREVERT")
private String nPhaseRedRevert; private Integer nPhaseRedRevert;
// 用到该相位的 ring 表号 // 用到该相位的 ring 表号
@TableField("NPHASERING") @TableField("NPHASERING")
private String nPhaseRing; private Integer nPhaseRing;
// 并发相位 // 并发相位
@TableField("NPHASECONCURRENCY") @TableField("NPHASECONCURRENCY")
private String nPhaseConCurrency; private Integer nPhaseConCurrency;
// 并发相位长度 // 并发相位长度
@TableField("NPHASECONCURRENCYLEN") @TableField("NPHASECONCURRENCYLEN")
private String nPhaseConCurrencyLen; private Integer nPhaseConCurrencyLen;
// 红黄 // 红黄
@TableField("NREDYELLOW") @TableField("NREDYELLOW")
private String nRedYellow; private Integer nRedYellow;
// 绿闪 // 绿闪
@TableField("NGREENFLASH") @TableField("NGREENFLASH")
private String nGreenFlash; private Integer nGreenFlash;
// 安全红灯 // 安全红灯
@TableField("NSAFERED") @TableField("NSAFERED")
private String nSafeRed; private Integer nSafeRed;
// 通道号 // 通道号
@TableField("NCHANNELNUMBER") @TableField("NCHANNELNUMBER")
private String nChannelNumber; private Integer nChannelNumber;
// 通道类型 // 通道类型
@TableField("NCHANNELCONTROLTYPE") @TableField("NCHANNELCONTROLTYPE")
private String nChannelControlType; private Integer nChannelControlType;
// 通道灰度 // 通道灰度
@TableField("NCHANNELDIM") @TableField("NCHANNELDIM")
private String nChannelDim; private Integer nChannelDim;
} }
...@@ -10,6 +10,7 @@ import net.wanji.databus.dao.entity.CrossLightsPO; ...@@ -10,6 +10,7 @@ import net.wanji.databus.dao.entity.CrossLightsPO;
import net.wanji.databus.dao.entity.CrossPlanPO; import net.wanji.databus.dao.entity.CrossPlanPO;
import net.wanji.databus.dao.entity.CrossSchedulesPO; import net.wanji.databus.dao.entity.CrossSchedulesPO;
import net.wanji.databus.dao.entity.CrossSectionPO; import net.wanji.databus.dao.entity.CrossSectionPO;
import net.wanji.databus.dao.entity.*;
import net.wanji.databus.dao.mapper.CrossInfoMapper; import net.wanji.databus.dao.mapper.CrossInfoMapper;
import net.wanji.databus.dao.mapper.ManufacturerInfoMapper; import net.wanji.databus.dao.mapper.ManufacturerInfoMapper;
import net.wanji.databus.dto.*; import net.wanji.databus.dto.*;
...@@ -18,6 +19,9 @@ import net.wanji.databus.po.CrossInfoPOExt; ...@@ -18,6 +19,9 @@ import net.wanji.databus.po.CrossInfoPOExt;
import net.wanji.databus.vo.PlanSectionVO; import net.wanji.databus.vo.PlanSectionVO;
import net.wanji.databus.vo.SchemePhaseLightsVO; import net.wanji.databus.vo.SchemePhaseLightsVO;
import net.wanji.utc.hisense.cache.CrossInfoCache; import net.wanji.utc.hisense.cache.CrossInfoCache;
import net.wanji.utc.hisense.common.ChannelControlEnum;
import net.wanji.utc.hisense.common.HisenseTurnEnum;
import net.wanji.utc.hisense.common.HiseseDirEnum;
import net.wanji.utc.hisense.common.OperationBaseDom; import net.wanji.utc.hisense.common.OperationBaseDom;
import net.wanji.utc.hisense.common.constants.HttpConstants; import net.wanji.utc.hisense.common.constants.HttpConstants;
import net.wanji.utc.hisense.mapper.*; import net.wanji.utc.hisense.mapper.*;
...@@ -33,6 +37,7 @@ import org.dom4j.Document; ...@@ -33,6 +37,7 @@ import org.dom4j.Document;
import org.dom4j.DocumentHelper; import org.dom4j.DocumentHelper;
import org.dom4j.Element; import org.dom4j.Element;
import org.dom4j.Node; import org.dom4j.Node;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
...@@ -101,12 +106,81 @@ public class StaticInfoServiceImpl implements StaticInfoService { ...@@ -101,12 +106,81 @@ public class StaticInfoServiceImpl implements StaticInfoService {
String crossId = schemePhaseLightsDTO.getCrossId(); String crossId = schemePhaseLightsDTO.getCrossId();
Map<String, CrossInfoPO> crossInfoCache = CrossInfoCache.getCrossInfoCache(); Map<String, CrossInfoPO> crossInfoCache = CrossInfoCache.getCrossInfoCache();
CrossInfoPO crossInfoPO = crossInfoCache.get(crossId); CrossInfoPO crossInfoPO = crossInfoCache.get(crossId);
List<CrossLightsPO> crossLightsList = new ArrayList<>(); List<CrossLightsPO> crossLightsList = new ArrayList<>();
List<CrossPhasePO> crossPhaseList = new ArrayList<>();
List<CrossPhaseLightsPO> crossPhaseLightsPOList = new ArrayList<>();
List<CrossSchemePO> crossSchemeList = new ArrayList<>();
List<VNtcipChannelPhaseDTO> vNtcipChannelPhaseDTOS = vNtcipChannelViewMapper.selectChannelPhaseList(crossInfoPO.getCode()); List<VNtcipChannelPhaseDTO> vNtcipChannelPhaseDTOS = vNtcipChannelViewMapper.selectChannelPhaseList(crossInfoPO.getCode());
log.error("======" + vNtcipChannelPhaseDTOS); if (!CollectionUtils.isEmpty(vNtcipChannelPhaseDTOS)) {
for (VNtcipChannelPhaseDTO vNtcipChannelPhaseDTO : vNtcipChannelPhaseDTOS) {
// 1灯组信息
// 通道号
Integer nChannelControlType = vNtcipChannelPhaseDTO.getNChannelControlType();
Integer nChannelNumber = vNtcipChannelPhaseDTO.getNChannelNumber();
Integer nChannelDim = vNtcipChannelPhaseDTO.getNChannelDim();
CrossLightsPO crossLightsPO = getCrossLights(crossId, nChannelControlType, nChannelNumber, nChannelDim); crossLightsList.add(crossLightsPO);;
crossLightsList.add(crossLightsPO);;
// 环相位信息
Integer nPhaseConCurrency = vNtcipChannelPhaseDTO.getNPhaseConCurrency();
String format = String.format("%16s", Integer.toBinaryString(nPhaseConCurrency)).replace(' ', '0');
// 2相位灯组信息
CrossPhaseLightsPO crossPhaseLightsPO = getCrossPhaseLightsPO(crossId, vNtcipChannelPhaseDTO, nChannelNumber);
crossPhaseLightsPOList.add(crossPhaseLightsPO);
// 3
CrossSchemePO crossSchemePO = new CrossSchemePO();
crossSchemePO.setCrossId(crossId);
crossSchemePO.setSchemeNo(null);
crossSchemePO.setName(null);
crossSchemePO.setCycle(null);
crossSchemePO.setCoordPhase(null);
crossSchemePO.setOffset(null);
crossSchemePO.setSource(2);
crossSchemePO.setStatus(0);
}
}
log.error("======" + crossLightsList);
return null; return null;
} }
@NotNull
private static CrossPhaseLightsPO getCrossPhaseLightsPO(String crossId, VNtcipChannelPhaseDTO vNtcipChannelPhaseDTO, Integer nChannelNumber) {
CrossPhaseLightsPO crossPhaseLightsPO = new CrossPhaseLightsPO();
crossPhaseLightsPO.setPhaseId(vNtcipChannelPhaseDTO.getNPhaseNumber());
CrossLightsPO selectEntity = new CrossLightsPO();
selectEntity.setCrossId(crossId);
selectEntity.setLightsNo(String.valueOf(nChannelNumber));
crossPhaseLightsPO.setLightsId(null);
crossPhaseLightsPO.setCrossId(crossId);
return crossPhaseLightsPO;
}
private static CrossLightsPO getCrossLights(String crossId, Integer nChannelControlType, Integer nChannelNumber, Integer nChannelDim) {
CrossLightsPO crossLightsPO = new CrossLightsPO();
crossLightsPO.setLightsNo(String.valueOf(nChannelNumber));
crossLightsPO.setName("海信灯组" + nChannelNumber);
if (Objects.equals(ChannelControlEnum.PEDESTRIAN.getCode(), nChannelControlType)) {
crossLightsPO.setType(3);
}
if (Objects.equals(ChannelControlEnum.VEHICLE.getCode(), nChannelControlType)) {
crossLightsPO.setType(1);
}
String dirTurn = String.format("%8s", Integer.toBinaryString(nChannelDim)).replace(' ', '0');
if (StringUtils.isNotBlank(dirTurn)) {
String dir = dirTurn.substring(0, 3); // 高三位 方向
String turn = dirTurn.substring(3); // 低五位 转向
crossLightsPO.setDir(HiseseDirEnum.getWjLightsDir(Integer.parseInt(dir, 2)));
crossLightsPO.setTurn(HisenseTurnEnum.getWjLightsTurn(Integer.parseInt(turn, 2)));
crossLightsPO.setCrossId(crossId);
}
return crossLightsPO;
}
@Override @Override
public List<PlanSectionVO> planSection(PlanSectionDTO planSectionDTO) throws Exception { public List<PlanSectionVO> planSection(PlanSectionDTO planSectionDTO) throws Exception {
String crossId = planSectionDTO.getCrossId(); String crossId = planSectionDTO.getCrossId();
......
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