Commit 0303b83b authored by hanbing's avatar hanbing

方案管理-灯组配置,安装位置数类型由数字改为字符串

parent ef60234e
package net.wanji.web.common.enums;
import java.util.Objects;
/**
* 灯组位置枚举
*
* @author Kent HAN
* @date 2023/1/5 8:54
*/
public enum LightsAddressEnum {
ONE(1, "北"),
TWO(2, "东北"),
THREE(3, "东"),
FOUR(4, "东南"),
FIVE(5, "南"),
SIX(6, "西南"),
SEVEN(7, "西"),
EIGHT(8, "西北"),
ONE_ONE(11, "北一次过街"),
ONE_TWO_ONE(121, "北出口二次过街"),
ONE_TWO_TWO(122, "北进口二次过街"),
TWO_ONE(21, "东北一次过街"),
TWO_TWO_ONE(221, "东北出口二次过街"),
TWO_TWO_TWO(222, "东北进口二次过街"),
THREE_ONE(31, "东一次过街"),
THREE_TWO_ONE(321, "东出口二次过街"),
THREE_TWO_TWO(322, "东进口二次过街"),
FOUR_ONE(41, "东南一次过街"),
FOUR_TWO_ONE(421, "东南出口二次过街"),
FOUR_TWO_TWO(422, "东南进口二次过街"),
FIVE_ONE(51, "南一次过街"),
FIVE_TWO_ONE(521, "南出口二次过街"),
FIVE_TWO_TWO(522, "南进口二次过街"),
SIX_ONE(61, "西南一次过街"),
SIX_TWO_ONE(621, "西南出口二次过街"),
SIX_TWO_TWO(622, "西南进口二次过街"),
SEVEN_ONE(71, "西一次过街"),
SEVEN_TWO_ONE(721, "西出口二次过街"),
SEVEN_TWO_TWO(722, "西进口二次过街"),
EIGHT_ONE(81, "西北一次过街"),
EIGHT_TWO_ONE(821, "西北出口二次过街"),
EIGHT_TWO_TWO(822, "西北进口二次过街");
private final int code;
private final String msg;
LightsAddressEnum(int code, String msg) {
this.code = code;
this.msg = msg;
}
public static String getMsgByCode(int code) {
for (LightsAddressEnum value : LightsAddressEnum.values()) {
if (value.code == code) {
return value.msg;
}
}
return null;
}
public static Integer getCodeByMsg(String msg) {
for (LightsAddressEnum value : LightsAddressEnum.values()) {
if (Objects.equals(value.msg, msg)) {
return value.code;
}
}
return null;
}
public String getMsg() {
return msg;
}
}
...@@ -18,7 +18,7 @@ public class LedConfigListElement { ...@@ -18,7 +18,7 @@ public class LedConfigListElement {
@ApiModelProperty(value = "信号灯类型: 1:圆饼灯,2: 非机动车灯,3: 左转灯,4: 直行灯,5: 右转灯,6: 掉头灯,7: 公交专用灯,8: 行人灯", required = true) @ApiModelProperty(value = "信号灯类型: 1:圆饼灯,2: 非机动车灯,3: 左转灯,4: 直行灯,5: 右转灯,6: 掉头灯,7: 公交专用灯,8: 行人灯", required = true)
private Integer signalType; private Integer signalType;
@ApiModelProperty(value = "灯组位置:1北;2东北;3东;4东南;5南;6西南;7西;8西北;11北一次过街;121北出口二次过街;122北进口二次过街", required = true) @ApiModelProperty(value = "灯组位置:1北;2东北;3东;4东南;5南;6西南;7西;8西北;11北一次过街;121北出口二次过街;122北进口二次过街", required = true)
private Integer address; private String address;
@ApiModelProperty(value = "灯组序号", required = true) @ApiModelProperty(value = "灯组序号", required = true)
private Integer order; private Integer order;
} }
package net.wanji.web.service.scheme.impl; package net.wanji.web.service.scheme.impl;
import net.wanji.web.common.enums.LightsAddressEnum;
import net.wanji.web.dto.CrossIdDTO; import net.wanji.web.dto.CrossIdDTO;
import net.wanji.web.dto.DirListElement; import net.wanji.web.dto.DirListElement;
import net.wanji.web.dto.LaneListElement; import net.wanji.web.dto.LaneListElement;
...@@ -136,8 +137,9 @@ public class CrossConfigServiceImpl implements CrossConfigService { ...@@ -136,8 +137,9 @@ public class CrossConfigServiceImpl implements CrossConfigService {
// 灯组类型 // 灯组类型
setType(ledConfigListElement, crossLightsPO); setType(ledConfigListElement, crossLightsPO);
// 灯组放行方向 // 灯组放行方向
Integer address = ledConfigListElement.getAddress(); String address = ledConfigListElement.getAddress();
if (address < 10) { // 非行人灯 Integer addressCode = LightsAddressEnum.getCodeByMsg(address);
if (addressCode < 10) { // 非行人灯
Integer dir = ADDRESS_DIR_MAP.get(address); Integer dir = ADDRESS_DIR_MAP.get(address);
crossLightsPO.setDir(dir); crossLightsPO.setDir(dir);
} else { // 行人灯 } else { // 行人灯
...@@ -155,7 +157,7 @@ public class CrossConfigServiceImpl implements CrossConfigService { ...@@ -155,7 +157,7 @@ public class CrossConfigServiceImpl implements CrossConfigService {
private static void setType(LedConfigListElement ledConfigListElement, CrossLightsPO crossLightsPO) { private static void setType(LedConfigListElement ledConfigListElement, CrossLightsPO crossLightsPO) {
Integer type = ledConfigListElement.getType(); Integer type = ledConfigListElement.getType();
Integer signalType = ledConfigListElement.getSignalType(); Integer signalType = ledConfigListElement.getSignalType();
Integer address = ledConfigListElement.getAddress(); String address = ledConfigListElement.getAddress();
if (type == 1) { // 机动车灯 if (type == 1) { // 机动车灯
if (signalType == 1) { if (signalType == 1) {
// 圆饼灯 // 圆饼灯
...@@ -182,11 +184,12 @@ public class CrossConfigServiceImpl implements CrossConfigService { ...@@ -182,11 +184,12 @@ public class CrossConfigServiceImpl implements CrossConfigService {
crossLightsPO.setType(30); crossLightsPO.setType(30);
} }
} else if (type == 4) { // 行人 } else if (type == 4) { // 行人
if (address >= 10 && address <= 99) { // 两位数为一次过街 Integer addressCode = LightsAddressEnum.getCodeByMsg(address);
if (addressCode >= 10 && addressCode <= 99) { // 两位数为一次过街
crossLightsPO.setType(20); crossLightsPO.setType(20);
} else if (address >= 100 && address % 10 == 1) { // 三位数为二次过街,个位是1表示出口 } else if (addressCode >= 100 && addressCode % 10 == 1) { // 三位数为二次过街,个位是1表示出口
crossLightsPO.setType(22); crossLightsPO.setType(22);
} else if (address >= 100 && address % 10 == 2) { // 三位数为二次过街,个位是2表示进口 } else if (addressCode >= 100 && addressCode % 10 == 2) { // 三位数为二次过街,个位是2表示进口
crossLightsPO.setType(21); crossLightsPO.setType(21);
} }
} }
...@@ -272,21 +275,19 @@ public class CrossConfigServiceImpl implements CrossConfigService { ...@@ -272,21 +275,19 @@ public class CrossConfigServiceImpl implements CrossConfigService {
} }
// 灯组放行方向转换为灯组位置 // 灯组放行方向转换为灯组位置
Integer dir = crossLightsPO.getDir(); Integer dir = crossLightsPO.getDir();
Integer address = DIR_ADDRESS_MAP.get(dir); Integer addressCode = DIR_ADDRESS_MAP.get(dir);
if (type < 20 || type >= 30) { // 非行人灯 if (type < 20 || type >= 30) { // 非行人灯
String address = LightsAddressEnum.getMsgByCode(addressCode);
ledConfigListElement.setAddress(address); ledConfigListElement.setAddress(address);
} else if (type == 20) { // 一次过街 } else if (type == 20) { // 一次过街
String s = "" + dir + 1; String s = "" + dir + 1;
int i = Integer.parseInt(s); setLightAddress(ledConfigListElement, s);
ledConfigListElement.setAddress(i);
} else if (type == 22) { // 二次过街-出口 } else if (type == 22) { // 二次过街-出口
String s = "" + dir + 21; String s = "" + dir + 21;
int i = Integer.parseInt(s); setLightAddress(ledConfigListElement, s);
ledConfigListElement.setAddress(i);
} else if (type == 21) { // 二次过街-进口 } else if (type == 21) { // 二次过街-进口
String s = "" + dir + 22; String s = "" + dir + 22;
int i = Integer.parseInt(s); setLightAddress(ledConfigListElement, s);
ledConfigListElement.setAddress(i);
} }
ledConfigList.add(ledConfigListElement); ledConfigList.add(ledConfigListElement);
} }
...@@ -294,6 +295,12 @@ public class CrossConfigServiceImpl implements CrossConfigService { ...@@ -294,6 +295,12 @@ public class CrossConfigServiceImpl implements CrossConfigService {
ledConfigList.sort(Comparator.comparing(LedConfigListElement::getOrder)); ledConfigList.sort(Comparator.comparing(LedConfigListElement::getOrder));
} }
private static 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) { private void buildDirList(String crossId, SaveLaneInfoDTO saveLaneInfoDTO) {
saveLaneInfoDTO.setDirList(new ArrayList<>()); saveLaneInfoDTO.setDirList(new ArrayList<>());
List<LaneInfoPO> laneInfoPOList = laneInfoMapper.selectBycrossId(crossId); List<LaneInfoPO> laneInfoPOList = laneInfoMapper.selectBycrossId(crossId);
......
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