【修改IBP设备组合逻辑】(消息未修改)

This commit is contained in:
weizhihong 2023-12-06 14:00:55 +08:00
parent 745fb55110
commit 7cb868dcfc
2 changed files with 44 additions and 47 deletions

View File

@ -2,6 +2,7 @@ package memory
import (
"fmt"
"strings"
"sync"
"joylink.club/bj-rtsts-server/dto"
@ -73,6 +74,41 @@ func filterOtherLineDevice(data *graphicData.RtssGraphicStorage) {
otherDeviceIdMap[id] = true
}
}
for _, d := range data.Section {
if otherDeviceIdMap[d.Common.Id] {
continue
}
otherDeviceIdMap[d.Common.Id] = (strings.TrimSpace(d.Code) == "" || d.Code == "G000")
}
// 处理物理区段
var sections []*graphicData.Section
for _, d := range data.Section {
if otherDeviceIdMap[d.Common.Id] {
continue
}
if d.PaRef != nil && otherDeviceIdMap[d.PaRef.Id] {
d.PaRef = nil
}
if d.PbRef != nil && otherDeviceIdMap[d.PbRef.Id] {
d.PbRef = nil
}
var acs []string
for _, id := range d.AxleCountings {
if otherDeviceIdMap[id] {
continue
}
acs = append(acs, id)
}
if len(d.AxleCountings) > 1 && len(acs) == 0 {
continue
}
d.AxleCountings = acs
if otherDeviceIdMap[d.TrackSectionId] {
d.TrackSectionId = ""
}
sections = append(sections, d)
}
data.Section = sections
// 处理计轴
var axleCounts []*graphicData.AxleCounting
for _, d := range data.AxleCountings {
@ -117,32 +153,6 @@ func filterOtherLineDevice(data *graphicData.RtssGraphicStorage) {
turnouts = append(turnouts, d)
}
data.Turnouts = turnouts
// 处理物理区段
var sections []*graphicData.Section
for _, d := range data.Section {
if otherDeviceIdMap[d.Common.Id] {
continue
}
if d.PaRef != nil && otherDeviceIdMap[d.PaRef.Id] {
d.PaRef = nil
}
if d.PbRef != nil && otherDeviceIdMap[d.PbRef.Id] {
d.PbRef = nil
}
var acs []string
for _, id := range d.AxleCountings {
if otherDeviceIdMap[id] {
continue
}
acs = append(acs, id)
}
d.AxleCountings = acs
if otherDeviceIdMap[d.TrackSectionId] {
d.TrackSectionId = ""
}
sections = append(sections, d)
}
data.Section = sections
// 处理信号机
var signals []*graphicData.Signal
for _, d := range data.Signals {

View File

@ -1260,48 +1260,32 @@ func handlerIBPDeviceToStation(station *proto.Station, repo *proto.Repository, i
}
repo.Alarms = append(repo.Alarms, b)
}
empGroup := &proto.ElectronicGroup{Code: "EMP"}
spksGroup := &proto.ElectronicGroup{Code: "SPKS"}
for _, data := range storage.IbpLights { // 指示灯,
b := &proto.Light{
Id: station.Id + "_light_" + data.Code,
Code: data.Code,
}
repo.Lights = append(repo.Lights, b)
// 存入组合类型的
c := &proto.ElectronicComponent{
deviceMap[data.Common.Id] = &proto.ElectronicComponent{
Id: b.Id,
DeviceType: proto.DeviceType_DeviceType_Light,
}
switch data.Code {
case "XEMPD", "SEMPD":
empGroup.Components = append(empGroup.Components, c)
case "SPKSX1D", "SPKSX3D", "SPKSS2D", "SPKSS4D":
spksGroup.Components = append(spksGroup.Components, c)
}
repo.Lights = append(repo.Lights, b)
}
for _, data := range storage.IbpRelatedDevices { // 组信息
for _, c := range data.Combinationtypes {
var group *proto.ElectronicGroup
switch c.Code {
case "EMP":
group = empGroup
case "SPKS":
group = spksGroup
default:
continue
}
group := &proto.ElectronicGroup{Code: c.Code}
for _, d := range c.RefDevices {
deviceType, ok := deviceMap[d]
if !ok {
slog.Debug("IBP组合类型类型不确定id:%s", d)
slog.Debug("IBP组合类型类型不存在设备id:%s", d)
continue
}
group.Components = append(group.Components, deviceType)
}
station.ElectronicGroup = append(station.ElectronicGroup, group)
}
}
station.ElectronicGroup = append(station.ElectronicGroup, empGroup, spksGroup)
}
func converCheckPointUid(data *proto.CheckPoint, uidsMap *StationUidStructure) *proto.CheckPoint {
@ -1394,6 +1378,9 @@ func converRefUid(id string, d proto.DeviceType, uidsMap *StationUidStructure) s
default:
panic(&dto.ErrorDto{Code: dto.ArgumentParseError, Message: "异常的设备类型-" + d.String()})
}
if elementId == nil {
return ""
}
return elementId.Uid
}