Merge remote-tracking branch 'origin/test' into test
This commit is contained in:
commit
abdf784bd9
@ -148,14 +148,12 @@ public class StationDirectionService {
|
|||||||
private final ButtonThenInterface turnAssistThen = (simulation, stationDirection) -> {
|
private final ButtonThenInterface turnAssistThen = (simulation, stationDirection) -> {
|
||||||
// 总辅助弹起后
|
// 总辅助弹起后
|
||||||
if (!stationDirection.isMainAssistStatus()) {
|
if (!stationDirection.isMainAssistStatus()) {
|
||||||
// 接发辅助、倒计时重置
|
// 辅助状态重置
|
||||||
stationDirection.resetAssistStatus();
|
stationDirection.resetAssistStatus();
|
||||||
// 总辅助抬起后将辅助准备状态
|
|
||||||
stationDirection.setAssistReadyStatus(false);
|
|
||||||
// 相对方向辅助准备状态也恢复
|
// 相对方向辅助准备状态也恢复
|
||||||
StationDirection relativeDirection = getRelativeStationDirection(simulation, stationDirection);
|
StationDirection relativeDirection = getRelativeStationDirection(simulation, stationDirection);
|
||||||
if (relativeDirection != null) {
|
if (relativeDirection != null) {
|
||||||
relativeDirection.setAssistReadyStatus(false);
|
relativeDirection.resetAssistStatus(); // 邻站辅助状态完毕
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -165,16 +163,11 @@ public class StationDirectionService {
|
|||||||
*/
|
*/
|
||||||
private final ButtonThenInterface receiveAssistThen = (simulation, stationDirection) -> {
|
private final ButtonThenInterface receiveAssistThen = (simulation, stationDirection) -> {
|
||||||
// 接辅助完成后,改变接方向
|
// 接辅助完成后,改变接方向
|
||||||
stationDirection.setRunStatus(StationDirection.ReceiveAndDeliverModel.R);
|
|
||||||
stationDirection.setAssistReadyStatus(true);
|
stationDirection.setAssistReadyStatus(true);
|
||||||
// 办理完成后
|
|
||||||
stationDirection.resetAssistStatus();
|
|
||||||
// 邻站修改发方向
|
// 邻站修改发方向
|
||||||
StationDirection adjacentDirection = getRelativeStationDirection(simulation, stationDirection);
|
StationDirection adjacentDirection = getRelativeStationDirection(simulation, stationDirection);
|
||||||
if (adjacentDirection != null) {
|
if (adjacentDirection != null) {
|
||||||
adjacentDirection.setRunStatus(StationDirection.ReceiveAndDeliverModel.D);
|
|
||||||
adjacentDirection.setAssistReadyStatus(true);
|
adjacentDirection.setAssistReadyStatus(true);
|
||||||
adjacentDirection.resetAssistStatus();
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -182,17 +175,26 @@ public class StationDirectionService {
|
|||||||
* 发辅助按钮后续操作
|
* 发辅助按钮后续操作
|
||||||
*/
|
*/
|
||||||
private final ButtonThenInterface deliverAssistThen = (simulation, stationDirection) -> {
|
private final ButtonThenInterface deliverAssistThen = (simulation, stationDirection) -> {
|
||||||
|
if (stationDirection.isReceiveAssistStatus()) { // 原接辅助在按下情况下
|
||||||
// 按下发辅助,弹起接辅助
|
// 按下发辅助,弹起接辅助
|
||||||
stationDirection.setReceiveAssistStatus(false);
|
stationDirection.setReceiveAssistStatus(false);
|
||||||
|
// 重置辅助计时开始时间
|
||||||
|
stationDirection.setAssistTime(simulation.getCorrectSystemTime());
|
||||||
|
// 邻站修改发方向
|
||||||
|
StationDirection adjacentDirection = getRelativeStationDirection(simulation, stationDirection);
|
||||||
|
if (adjacentDirection != null) { // 邻站状态重置
|
||||||
|
adjacentDirection.resetAssistStatus();
|
||||||
|
adjacentDirection.setAssistReadyStatus(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 如果辅助按钮按下时间为空则初始化
|
||||||
|
if (stationDirection.getAssistTime() == null) {
|
||||||
|
stationDirection.setAssistTime(simulation.getCorrectSystemTime());
|
||||||
|
}
|
||||||
// 重新设置倒计时时间
|
// 重新设置倒计时时间
|
||||||
stationDirection.getRemain().set(StationDirection.DEFAULT_DELIVER_DELAY_TIME);
|
stationDirection.getRemain().set(StationDirection.DEFAULT_DELIVER_DELAY_TIME);
|
||||||
// 就绪状态恢复
|
// 就绪状态恢复
|
||||||
stationDirection.setAssistReadyStatus(false);
|
stationDirection.setAssistReadyStatus(false);
|
||||||
// 邻站修改发方向
|
|
||||||
StationDirection adjacentDirection = getRelativeStationDirection(simulation, stationDirection);
|
|
||||||
if (adjacentDirection != null) {
|
|
||||||
adjacentDirection.setAssistReadyStatus(false);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -451,7 +453,7 @@ public class StationDirectionService {
|
|||||||
StationDirection relativeStationDirection = null;
|
StationDirection relativeStationDirection = null;
|
||||||
if (stationDirection.isDataConfig()) {
|
if (stationDirection.isDataConfig()) {
|
||||||
relativeStationDirection = stationDirection.getRelativeStationDirection();
|
relativeStationDirection = stationDirection.getRelativeStationDirection();
|
||||||
} else {
|
} else { // TODO: 待数据统一之后,下方代码可删除 20220714
|
||||||
// 获取邻站实体
|
// 获取邻站实体
|
||||||
Optional<Station> adjacentStationOptional = getAdjacentStationOptional(simulation, stationDirection);
|
Optional<Station> adjacentStationOptional = getAdjacentStationOptional(simulation, stationDirection);
|
||||||
if (adjacentStationOptional.isPresent()) {
|
if (adjacentStationOptional.isPresent()) {
|
||||||
|
@ -62,8 +62,10 @@ public class CiLogic {
|
|||||||
if (stationDirection.monitorRouteChangeStatus()) {
|
if (stationDirection.monitorRouteChangeStatus()) {
|
||||||
stationDirection.modifyRunStatus();
|
stationDirection.modifyRunStatus();
|
||||||
}
|
}
|
||||||
// 如果倒数结束弹起接、发辅助按钮
|
// 如果倒数结束弹起接、发辅助按钮,超过50秒时,不再自动抬起
|
||||||
if (stationDirection.getRemain().decrementAndGet() <= 0) {
|
if (!stationDirection.isAssistReadyStatus()
|
||||||
|
&& !stationDirection.assistDurationPass50(simulation.getCorrectSystemTime())
|
||||||
|
&& stationDirection.getRemain().decrementAndGet() <= 0) {
|
||||||
stationDirection.setDeliverAssistStatus(false);
|
stationDirection.setDeliverAssistStatus(false);
|
||||||
stationDirection.setReceiveAssistStatus(false);
|
stationDirection.setReceiveAssistStatus(false);
|
||||||
stationDirection.getRemain().set(0);
|
stationDirection.getRemain().set(0);
|
||||||
|
@ -1665,6 +1665,7 @@ public class InterlockBuilder2 {
|
|||||||
if (stationDirection.getRunStatus() != null) {
|
if (stationDirection.getRunStatus() != null) {
|
||||||
model = new StationDirection(stationDirection);
|
model = new StationDirection(stationDirection);
|
||||||
} else {
|
} else {
|
||||||
|
// TODO: 待数据统一之后,下方构建代码可删除 20220714
|
||||||
model = new StationDirection(stationDirection.getCode(), stationDirection.getName(), stationDirection.getLabelEnum());
|
model = new StationDirection(stationDirection.getCode(), stationDirection.getName(), stationDirection.getLabelEnum());
|
||||||
}
|
}
|
||||||
// 注入信号灯数据
|
// 注入信号灯数据
|
||||||
|
@ -29,6 +29,11 @@ public class StationDirection extends MapNamedElement {
|
|||||||
*/
|
*/
|
||||||
public static final int DEFAULT_RECEIVE_DELAY_TIME = 15;
|
public static final int DEFAULT_RECEIVE_DELAY_TIME = 15;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 辅助持续时间,当超过此时间,将持续按下
|
||||||
|
*/
|
||||||
|
public static final int DEFAULT_DURATION_TIME = 50;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 车站
|
* 车站
|
||||||
*/
|
*/
|
||||||
@ -174,6 +179,12 @@ public class StationDirection extends MapNamedElement {
|
|||||||
*/
|
*/
|
||||||
private LocalDateTime changeDirectionTime;
|
private LocalDateTime changeDirectionTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 接、发辅助初始操作时间,在接发互相转换时重置,初始、辅助操作就绪后置空
|
||||||
|
*/
|
||||||
|
private LocalDateTime assistTime;
|
||||||
|
|
||||||
|
// TODO: 待数据统一之后,这个构造函数代码可删除 20220714
|
||||||
public StationDirection(String code, String name, DirectionLabelEnum labelEnum) {
|
public StationDirection(String code, String name, DirectionLabelEnum labelEnum) {
|
||||||
this(code, name);
|
this(code, name);
|
||||||
this.labelEnum = labelEnum;
|
this.labelEnum = labelEnum;
|
||||||
@ -228,7 +239,15 @@ public class StationDirection extends MapNamedElement {
|
|||||||
public void modifyRunStatus() {
|
public void modifyRunStatus() {
|
||||||
// 自动模式
|
// 自动模式
|
||||||
if (DirectionRunModel.A.equals(this.runModel)) {
|
if (DirectionRunModel.A.equals(this.runModel)) {
|
||||||
|
List<Route> oldList = this.currentRouteList;
|
||||||
this.currentRouteList = getNowRouteList();
|
this.currentRouteList = getNowRouteList();
|
||||||
|
// 辅助状态下,进路列表发生切换说明方向已发生改变
|
||||||
|
if (this.currentRouteList.equals(oldList) && this.assistReadyStatus) {
|
||||||
|
this.resetAssistStatus();
|
||||||
|
if (this.relativeStationDirection != null) { // 相对车站也重置辅助状态
|
||||||
|
this.relativeStationDirection.resetAssistStatus();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -249,17 +268,8 @@ public class StationDirection extends MapNamedElement {
|
|||||||
* 辅助灯状态
|
* 辅助灯状态
|
||||||
*/
|
*/
|
||||||
public void refreshAssistStatus() {
|
public void refreshAssistStatus() {
|
||||||
// 判断改方动作是否完成
|
|
||||||
if (judgeChangeDirectionReady()) {
|
|
||||||
// 倒计时归零
|
|
||||||
this.remain.set(0);
|
|
||||||
// 发车辅助按钮弹起
|
|
||||||
this.deliverAssistStatus = false;
|
|
||||||
// 接车辅助按钮弹起
|
|
||||||
this.receiveAssistStatus = false;
|
|
||||||
}
|
|
||||||
// 如果总辅助、(接发任意一方按下为白灯)
|
// 如果总辅助、(接发任意一方按下为白灯)
|
||||||
if (this.mainAssistStatus && (this.deliverAssistStatus || this.receiveAssistStatus || this.assistReadyStatus)) {
|
if (this.mainAssistStatus && (this.deliverAssistStatus || this.receiveAssistStatus)) {
|
||||||
this.assistAspect = IndicatorStatusEnum.O;
|
this.assistAspect = IndicatorStatusEnum.O;
|
||||||
} else {
|
} else {
|
||||||
this.assistAspect = IndicatorStatusEnum.F;
|
this.assistAspect = IndicatorStatusEnum.F;
|
||||||
@ -309,6 +319,7 @@ public class StationDirection extends MapNamedElement {
|
|||||||
*
|
*
|
||||||
* @return 对应方向
|
* @return 对应方向
|
||||||
*/
|
*/
|
||||||
|
// TODO: 数据统一之后,获取对应方向代码可删除 20220714
|
||||||
public DirectionLabelEnum getRelativeDirectionLabelEnum() {
|
public DirectionLabelEnum getRelativeDirectionLabelEnum() {
|
||||||
if (this.isDataConfig) {
|
if (this.isDataConfig) {
|
||||||
return this.getRelativeStationDirection().getLabelEnum();
|
return this.getRelativeStationDirection().getLabelEnum();
|
||||||
@ -383,6 +394,17 @@ public class StationDirection extends MapNamedElement {
|
|||||||
this.deliverAssistStatus = false;
|
this.deliverAssistStatus = false;
|
||||||
this.receiveAssistStatus = false;
|
this.receiveAssistStatus = false;
|
||||||
this.remain.set(0);
|
this.remain.set(0);
|
||||||
|
this.assistTime = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 辅助按压时间超过50s
|
||||||
|
*
|
||||||
|
* @return 是否超过50
|
||||||
|
*/
|
||||||
|
public boolean assistDurationPass50(LocalDateTime currentDateTime) {
|
||||||
|
return this.assistTime != null
|
||||||
|
&& this.assistTime.plusSeconds(DEFAULT_DURATION_TIME).isBefore(currentDateTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -400,6 +422,8 @@ public class StationDirection extends MapNamedElement {
|
|||||||
this.deliverAspect = IndicatorStatusEnum.F;
|
this.deliverAspect = IndicatorStatusEnum.F;
|
||||||
this.sectionAspect = IndicatorStatusEnum.F;
|
this.sectionAspect = IndicatorStatusEnum.F;
|
||||||
this.assistAspect = IndicatorStatusEnum.F;
|
this.assistAspect = IndicatorStatusEnum.F;
|
||||||
|
this.assistTime = null;
|
||||||
|
this.changeDirectionTime = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -408,6 +432,7 @@ public class StationDirection extends MapNamedElement {
|
|||||||
private ReceiveAndDeliverModel getDefaultReceiveAndDeliver() {
|
private ReceiveAndDeliverModel getDefaultReceiveAndDeliver() {
|
||||||
if (this.isDataConfig) {
|
if (this.isDataConfig) {
|
||||||
return this.defaultRunStatus;
|
return this.defaultRunStatus;
|
||||||
|
// TODO: 待数据统一之后,下方代码可删除 20220714
|
||||||
} else if (DirectionLabelEnum.X.equals(labelEnum) || DirectionLabelEnum.S.equals(labelEnum)) { // X、S方向为接车方向默认亮起
|
} else if (DirectionLabelEnum.X.equals(labelEnum) || DirectionLabelEnum.S.equals(labelEnum)) { // X、S方向为接车方向默认亮起
|
||||||
return ReceiveAndDeliverModel.R;
|
return ReceiveAndDeliverModel.R;
|
||||||
} else if (DirectionLabelEnum.XF.equals(labelEnum) || DirectionLabelEnum.SF.equals(labelEnum)) { // SF、XF方向默认发车灯亮起
|
} else if (DirectionLabelEnum.XF.equals(labelEnum) || DirectionLabelEnum.SF.equals(labelEnum)) { // SF、XF方向默认发车灯亮起
|
||||||
@ -423,6 +448,7 @@ public class StationDirection extends MapNamedElement {
|
|||||||
private DirectionRunModel getDefaultDirectionRunModel() {
|
private DirectionRunModel getDefaultDirectionRunModel() {
|
||||||
if (this.isDataConfig) {
|
if (this.isDataConfig) {
|
||||||
return this.runModel;
|
return this.runModel;
|
||||||
|
// TODO: 待数据统一之后,下方代码可删除 20220714
|
||||||
} else if (DirectionLabelEnum.XD.equals(labelEnum) || DirectionLabelEnum.SD.equals(labelEnum)) {
|
} else if (DirectionLabelEnum.XD.equals(labelEnum) || DirectionLabelEnum.SD.equals(labelEnum)) {
|
||||||
return DirectionRunModel.S;
|
return DirectionRunModel.S;
|
||||||
} else { // SD、XD
|
} else { // SD、XD
|
||||||
@ -448,25 +474,6 @@ public class StationDirection extends MapNamedElement {
|
|||||||
return isLock;
|
return isLock;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 判断改方是否完成
|
|
||||||
*/
|
|
||||||
private boolean judgeChangeDirectionReady() {
|
|
||||||
boolean isReady;
|
|
||||||
// 根据接、发状态获取进路信息
|
|
||||||
ReceiveAndDeliverModel defaultModel = getDefaultReceiveAndDeliver();
|
|
||||||
// 接方向在判断,发车进路办理后就会取消辅助状态
|
|
||||||
if (ReceiveAndDeliverModel.R.equals(defaultModel)) {
|
|
||||||
// 改方按钮是否按下,代表正在改方
|
|
||||||
// 进路已锁闭,发车已就绪
|
|
||||||
isReady = this.changeDirectionStatus && this.deliverRouteList.stream().anyMatch(Route::isLock);
|
|
||||||
} else {
|
|
||||||
// 发车进路需要判断接车进路是否办理
|
|
||||||
isReady = this.receiveRouteList.stream().anyMatch(Route::isLock);
|
|
||||||
}
|
|
||||||
return isReady;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 自动模式下的接发车判断
|
* 自动模式下的接发车判断
|
||||||
*/
|
*/
|
||||||
@ -512,13 +519,26 @@ public class StationDirection extends MapNamedElement {
|
|||||||
*/
|
*/
|
||||||
private List<Route> getNowRouteList() {
|
private List<Route> getNowRouteList() {
|
||||||
if (this.assistReadyStatus) { // 辅助状态办理完成
|
if (this.assistReadyStatus) { // 辅助状态办理完成
|
||||||
return ReceiveAndDeliverModel.R.equals(this.runStatus) ? this.receiveRouteList : this.deliverRouteList;
|
if (this.receiveAssistStatus) { // 接辅助状态
|
||||||
} else if (ReceiveAndDeliverModel.D.equals(this.defaultRunStatus)) {
|
return this.receiveRouteList;
|
||||||
return this.changeDirectionStatus ? this.receiveRouteList : this.deliverRouteList;
|
} else if (this.deliverAssistStatus) { // 发辅助状态
|
||||||
} else if (ReceiveAndDeliverModel.R.equals(this.defaultRunStatus)) {
|
return this.deliverRouteList;
|
||||||
return this.changeDirectionStatus ? this.deliverRouteList : this.receiveRouteList;
|
} else {
|
||||||
|
return this.currentRouteList; // 原有的进路列表
|
||||||
|
}
|
||||||
|
} else if (this.changeDirectionStatus) { // 改方状态下
|
||||||
|
if (ReceiveAndDeliverModel.D.equals(this.defaultRunStatus)) { // 原发使用接进路列表
|
||||||
|
return this.receiveRouteList;
|
||||||
|
} else { // 原接使用发进路列表
|
||||||
|
return this.deliverRouteList;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (ReceiveAndDeliverModel.D.equals(this.defaultRunStatus)) { // 初始状态下
|
||||||
|
return this.deliverRouteList;
|
||||||
|
} else {
|
||||||
|
return this.receiveRouteList;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -527,14 +547,23 @@ public class StationDirection extends MapNamedElement {
|
|||||||
* @return 运行方向
|
* @return 运行方向
|
||||||
*/
|
*/
|
||||||
private ReceiveAndDeliverModel getNowRunStatus() {
|
private ReceiveAndDeliverModel getNowRunStatus() {
|
||||||
if (this.assistReadyStatus) { // 辅助状态办理完成,不修改接发状态
|
if (this.assistReadyStatus) { // 辅助状态办理完成
|
||||||
return this.runStatus;
|
if (this.receiveAssistStatus) { // 接辅助为接状态
|
||||||
} else if (ReceiveAndDeliverModel.D.equals(this.defaultRunStatus)) {
|
return ReceiveAndDeliverModel.R;
|
||||||
return this.changeDirectionStatus ? ReceiveAndDeliverModel.R : ReceiveAndDeliverModel.D;
|
} else if (this.deliverAssistStatus) { // 发辅助为发状态
|
||||||
} else if (ReceiveAndDeliverModel.R.equals(this.defaultRunStatus)) {
|
return ReceiveAndDeliverModel.D;
|
||||||
return this.changeDirectionStatus ? ReceiveAndDeliverModel.D : ReceiveAndDeliverModel.R;
|
} else {
|
||||||
|
return this.runStatus; // 默认原有状态
|
||||||
|
}
|
||||||
|
} else if (this.changeDirectionStatus) { // 改方状态下
|
||||||
|
if (ReceiveAndDeliverModel.D.equals(this.defaultRunStatus)) { // 原发变接
|
||||||
|
return ReceiveAndDeliverModel.R;
|
||||||
|
} else { // 原接变发
|
||||||
|
return ReceiveAndDeliverModel.D;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return this.defaultRunStatus; // 默认状态
|
||||||
}
|
}
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user