【跳转IBP盘UID存储结构】
This commit is contained in:
parent
b4269a3711
commit
e3aa8ddc03
@ -30,7 +30,7 @@ type stationUidStructure struct {
|
||||
CurvatureIds map[string]*elementIdStructure
|
||||
ButtonIds map[string]*elementIdStructure
|
||||
StationIds map[string]*elementIdStructure
|
||||
IBPIds map[string]*elementIdStructure
|
||||
IBPIds map[string]map[string]*elementIdStructure
|
||||
}
|
||||
|
||||
type relayUidStructure struct {
|
||||
@ -75,7 +75,7 @@ func initStationUid(data *graphicData.RtssGraphicStorage) *stationUidStructure {
|
||||
CurvatureIds: make(map[string]*elementIdStructure, len(data.Curvatures)),
|
||||
ButtonIds: make(map[string]*elementIdStructure, len(data.EsbButtons)),
|
||||
StationIds: make(map[string]*elementIdStructure, len(data.Stations)),
|
||||
IBPIds: make(map[string]*elementIdStructure, len(data.Stations)),
|
||||
IBPIds: make(map[string]map[string]*elementIdStructure, len(data.Stations)),
|
||||
}
|
||||
city, lineId, _ := getUIdPrefix(data.UniqueIdPrefix)
|
||||
// 初始化计轴信息
|
||||
@ -192,30 +192,32 @@ func initIBPUid(gus *stationUidStructure, city, lineId string, station *graphicD
|
||||
}
|
||||
return p + "_" + code
|
||||
}
|
||||
uidMap := make(map[string]*elementIdStructure, len(data.IbpButtons)+len(data.IbpKeys)+len(data.IbpAlarms)+len(data.IbpLights))
|
||||
for _, d := range data.IbpButtons { // ibp按钮
|
||||
gus.IBPIds[d.Common.Id] = &elementIdStructure{
|
||||
uidMap[d.Common.Id] = &elementIdStructure{
|
||||
CommonId: d.Common.Id,
|
||||
Uid: GenerateElementUid(city, lineId, []string{station.Code}, getCode(d.Common.Id, d.Code)),
|
||||
}
|
||||
}
|
||||
for _, d := range data.IbpKeys { // ibp钥匙
|
||||
gus.IBPIds[d.Common.Id] = &elementIdStructure{
|
||||
uidMap[d.Common.Id] = &elementIdStructure{
|
||||
CommonId: d.Common.Id,
|
||||
Uid: GenerateElementUid(city, lineId, []string{station.Code}, getCode(d.Common.Id, d.Code)),
|
||||
}
|
||||
}
|
||||
for _, d := range data.IbpAlarms { // ibp报警器
|
||||
gus.IBPIds[d.Common.Id] = &elementIdStructure{
|
||||
uidMap[d.Common.Id] = &elementIdStructure{
|
||||
CommonId: d.Common.Id,
|
||||
Uid: GenerateElementUid(city, lineId, []string{station.Code}, getCode(d.Common.Id, d.Code)),
|
||||
}
|
||||
}
|
||||
for _, d := range data.IbpLights { // ibp指示灯
|
||||
gus.IBPIds[d.Common.Id] = &elementIdStructure{
|
||||
uidMap[d.Common.Id] = &elementIdStructure{
|
||||
CommonId: d.Common.Id,
|
||||
Uid: GenerateElementUid(city, lineId, []string{station.Code}, getCode(d.Common.Id, d.Code)),
|
||||
}
|
||||
}
|
||||
gus.IBPIds[station.Code] = uidMap
|
||||
}
|
||||
|
||||
// 初始化继电器柜 UID
|
||||
@ -305,7 +307,9 @@ func buildRepositoryAllUidsMap(mapIds []int32, repo *repository.Repository) map[
|
||||
saveToAllUidMap(u.SlopeIds)
|
||||
saveToAllUidMap(u.CurvatureIds)
|
||||
saveToAllUidMap(u.ButtonIds)
|
||||
saveToAllUidMap(u.IBPIds)
|
||||
for _, ids := range u.IBPIds {
|
||||
saveToAllUidMap(ids)
|
||||
}
|
||||
continue
|
||||
}
|
||||
}
|
||||
@ -344,9 +348,6 @@ func getUidMapByType(uidData any, m interface{}) map[string]*elementIdStructure
|
||||
return (uidData.(*relayUidStructure)).RelayIds
|
||||
case *graphicData.EsbButton:
|
||||
return (uidData.(*stationUidStructure)).ButtonIds
|
||||
// Ibp相关
|
||||
case *graphicData.IBPButton, *graphicData.IbpAlarm, *graphicData.IbpKey, *graphicData.IbpLight:
|
||||
return (uidData.(*stationUidStructure)).IBPIds
|
||||
default:
|
||||
panic(&dto.ErrorDto{Code: dto.ArgumentParseError, Message: "类型未映射字段"})
|
||||
}
|
||||
@ -369,3 +370,27 @@ func QueryUidByMidAndComId(mapId int32, comId string, m interface{}) string {
|
||||
}
|
||||
panic(&dto.ErrorDto{Code: dto.DataNotExist, Message: fmt.Sprintf("地图【id:%d】不存在【comId:%s】缓存", mapId, comId)})
|
||||
}
|
||||
|
||||
// 根据地图、车站CODE、设备类型获取UID集合
|
||||
func QueryIBPUidMapByType(mapId int32, stationCode string, m interface{}) map[string]*elementIdStructure {
|
||||
uidData, ok := giUidMap.Load(mapId)
|
||||
if !ok {
|
||||
panic(&dto.ErrorDto{Code: dto.DataNotExist, Message: fmt.Sprintf("地图【id:%d】不存在uid缓存", mapId)})
|
||||
}
|
||||
switch m.(type) {
|
||||
// Ibp相关
|
||||
case *graphicData.IBPButton, *graphicData.IbpAlarm, *graphicData.IbpKey, *graphicData.IbpLight:
|
||||
return (uidData.(*stationUidStructure)).IBPIds[stationCode]
|
||||
default:
|
||||
panic(&dto.ErrorDto{Code: dto.ArgumentParseError, Message: "类型未映射字段"})
|
||||
}
|
||||
}
|
||||
|
||||
// 根据地图的comId获取UID
|
||||
func QueryIBPUidByMidAndComId(mapId int32, comId, stationCode string, m interface{}) string {
|
||||
uidMap := QueryIBPUidMapByType(mapId, stationCode, m)
|
||||
if uidMap[comId] != nil {
|
||||
return uidMap[comId].Uid
|
||||
}
|
||||
panic(&dto.ErrorDto{Code: dto.DataNotExist, Message: fmt.Sprintf("地图【id:%d】不存在【comId:%s】缓存", mapId, comId)})
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user