删除列车后可再次添加相同编号列车

This commit is contained in:
thesai 2024-02-23 10:43:06 +08:00
parent 01b734ff9c
commit fee0bed151
2 changed files with 21 additions and 13 deletions

View File

@ -244,7 +244,11 @@ func addTrain(c *gin.Context) {
WheelDiameter: req.WheelDiameter,
Speed: req.TrainSpeed,
}
memory.AddTrainStateNew(simulation, rsp, req.ConfigTrain, req.TrainEndsA, req.TrainEndsB, req.MapId)
var err *sys_error.BusinessError = memory.AddTrainStateNew(simulation,
rsp, req.ConfigTrain, req.TrainEndsA, req.TrainEndsB, req.MapId)
if err != nil {
panic(sys_error.New("添加列车失败", err))
}
c.JSON(http.StatusOK, &rsp)
}

View File

@ -35,11 +35,14 @@ func CreateMsgTrainConfig(trainId int, trainLen int64, configTrainData dto.Confi
// 增加列车状态
func AddTrainStateNew(vs *VerifySimulation, status *state_proto.TrainState, configTrainData dto.ConfigTrainData, trainEndsA dto.ConfigTrainEnds,
trainEndsB dto.ConfigTrainEnds, mapId int32) *state_proto.TrainState {
trainEndsB dto.ConfigTrainEnds, mapId int32) *sys_error.BusinessError {
allTrainMap := &vs.Memory.Status.TrainStateMap
_, ok := allTrainMap.Load(status.Id)
value, ok := allTrainMap.Load(status.Id)
if ok {
panic(fmt.Sprintf("列车【%s】已存在", status.Id))
trainState := value.(*state_proto.TrainState)
if trainState.Show {
return sys_error.New(fmt.Sprintf("列车【%s】已存在", status.Id))
}
}
// 显示状态
status.Show = true
@ -108,7 +111,7 @@ func AddTrainStateNew(vs *VerifySimulation, status *state_proto.TrainState, conf
})
// 将信息合并到当前设备状态中
allTrainMap.Store(status.Id, status)
return status
return nil
}
// 增加列车状态
@ -345,12 +348,14 @@ func RemoveAllTrain(vs *VerifySimulation) {
return
}
allTrainMap.Range(func(k any, t any) bool {
train := t.(*state_proto.TrainState)
err := removeTrain(vs, train.Id, train)
if err != nil {
slog.Error("列车id:", train.Id, "移除失败,原因:", err.Error())
}
allTrainMap.Store(train.Id, t)
id := k.(string)
RemoveTrainState(vs, id)
//train := t.(*state_proto.TrainState)
//err := removeTrain(vs, train.Id, train)
//if err != nil {
// slog.Error("列车id:", train.Id, "移除失败,原因:", err.Error())
//}
//allTrainMap.Store(train.Id, t)
return true
})
}
@ -364,8 +369,7 @@ func removeTrain(vs *VerifySimulation, trainId string, train *state_proto.TrainS
return err
}
train.Show = false
fi.RemoveTrainFromWorld(vs.World, trainId)
return nil
return fi.RemoveTrainFromWorld(vs.World, trainId)
}
// 删除列车状态