调整repo定义
城轨和国铁分开
This commit is contained in:
parent
07248c0fec
commit
1101edd1d3
@ -4,17 +4,13 @@ package message;
|
||||
|
||||
option go_package = "./repo/dto";
|
||||
|
||||
message Repo {
|
||||
// 城轨数据
|
||||
message CgRepo {
|
||||
string id = 1;
|
||||
oneof data {
|
||||
CGData cgData = 2;
|
||||
GTData gtData = 3;
|
||||
}
|
||||
}
|
||||
|
||||
// 国铁数据
|
||||
message GTData {
|
||||
|
||||
// 线路数据
|
||||
repeated Line lines = 2;
|
||||
// 监控盘(IBP/PSL/MKX等)数据,线路相关数据会引用这里
|
||||
repeated JKP jkps = 3;
|
||||
}
|
||||
|
||||
// 列车运行方向(Train Running Direction)
|
||||
@ -25,14 +21,6 @@ enum TRD {
|
||||
Downward = 1;
|
||||
}
|
||||
|
||||
// 城轨数据
|
||||
message CGData {
|
||||
// 线路数据
|
||||
repeated Line lines = 1;
|
||||
// 监控盘(IBP/PSL/MKX等)数据,线路相关数据会引用这里
|
||||
repeated JKP jkps = 2;
|
||||
}
|
||||
|
||||
// 城轨线路数据
|
||||
message Line {
|
||||
// 所在城市
|
||||
@ -179,11 +167,12 @@ message DevidingPoint {
|
||||
// 所属设备集中站id
|
||||
repeated uint32 ecsIds = 6;
|
||||
}
|
||||
// 设备
|
||||
message Device {
|
||||
// 设备类型
|
||||
|
||||
// 模型
|
||||
message Model {
|
||||
// 模型类型
|
||||
enum Type {
|
||||
// 错误未知类型
|
||||
// 未知无效
|
||||
Unknown = 0;
|
||||
// 区段
|
||||
Section = 1;
|
||||
@ -192,39 +181,32 @@ message Device {
|
||||
// 信号机
|
||||
Signal = 3;
|
||||
}
|
||||
// 设备端点(区段、道岔)
|
||||
enum Port {
|
||||
A = 0;
|
||||
B = 1;
|
||||
C = 2;
|
||||
}
|
||||
// 设备id
|
||||
// 模型id
|
||||
uint32 id = 1;
|
||||
// 设备类型
|
||||
// 模型类型
|
||||
Type type = 2;
|
||||
}
|
||||
|
||||
// 区段端点
|
||||
message SectionPort {
|
||||
// 区段类型
|
||||
enum SectionType {
|
||||
// 区段
|
||||
Section = 0;
|
||||
// 道岔
|
||||
Turnout = 1;
|
||||
}
|
||||
// 端点类型
|
||||
enum PortType {
|
||||
enum Type {
|
||||
A = 0;
|
||||
B = 1;
|
||||
C = 2;
|
||||
}
|
||||
// 元素类型
|
||||
// enum ElementType {
|
||||
// // 区段
|
||||
// Section = 0;
|
||||
// // 道岔
|
||||
// Turnout = 1;
|
||||
// }
|
||||
// 类型
|
||||
SectionType type = 1;
|
||||
Model.Type type = 1;
|
||||
// 区段/道岔 id
|
||||
uint32 id = 2;
|
||||
// 端点
|
||||
PortType port = 3;
|
||||
Type port = 3;
|
||||
}
|
||||
// 信号机
|
||||
message Signal {
|
||||
@ -272,6 +254,8 @@ message Signal {
|
||||
Model model = 3;
|
||||
// 所属设备集中站id
|
||||
uint32 ecsId = 4;
|
||||
// 列车运行方向(上下行)
|
||||
TRD trd = 5;
|
||||
}
|
||||
// 道岔
|
||||
message Turnout {
|
||||
@ -318,6 +302,8 @@ message Section {
|
||||
SectionPort bsp = 5;
|
||||
// 所属设备集中站id
|
||||
uint32 ecsId = 6;
|
||||
// 列车运行方向(上下行)
|
||||
TRD trd = 7;
|
||||
}
|
||||
// 屏蔽门
|
||||
message Psd {
|
||||
@ -478,7 +464,7 @@ message Lamp {
|
||||
// 设备电子元件组合
|
||||
message DeviceEcc {
|
||||
// 设备类型
|
||||
Device.Type deviceType = 1;
|
||||
Model.Type deviceType = 1;
|
||||
// 设备编号
|
||||
string deviceCode = 2;
|
||||
// 电子元件组合
|
@ -2,7 +2,7 @@ package repo
|
||||
|
||||
import "joylink.club/rtsssimulation/repo/model"
|
||||
|
||||
type Repo interface {
|
||||
type CgRepo interface {
|
||||
// 模型仓库id
|
||||
Id() string
|
||||
// 通过uid查询模型对象
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -122,20 +122,9 @@ func (m *IdMapping) checkUidAndAdd(idmap *idMap) (existed *idMap, uidExisted boo
|
||||
return
|
||||
}
|
||||
|
||||
// 构建id映射
|
||||
func BuildIdMapping(msgs *dto.Repo, errRecord *ErrorRecord) *IdMapping {
|
||||
if cg := msgs.GetCgData(); cg != nil {
|
||||
return BuildCgIdMapping(cg, errRecord)
|
||||
} else if gt := msgs.GetGtData(); gt != nil {
|
||||
return BuildGtIdMapping(gt)
|
||||
}
|
||||
errRecord.AddError("构建id映射表错误: 没有数据")
|
||||
return nil
|
||||
}
|
||||
|
||||
// 构建城轨id映射
|
||||
func BuildCgIdMapping(cg *dto.CGData, errRecord *ErrorRecord) *IdMapping {
|
||||
if cg == nil {
|
||||
func BuildIdMapping(msgs *dto.CgRepo, errRecord *ErrorRecord) *IdMapping {
|
||||
if msgs == nil {
|
||||
errRecord.AddError("构建城轨id映射表错误: 未关联任何数据")
|
||||
return nil
|
||||
}
|
||||
@ -144,14 +133,14 @@ func BuildCgIdMapping(cg *dto.CGData, errRecord *ErrorRecord) *IdMapping {
|
||||
uidMap: make(map[string]*idMap),
|
||||
}
|
||||
lineSet := make(map[string]struct{})
|
||||
for _, l := range cg.Lines {
|
||||
for _, l := range msgs.Lines {
|
||||
if _, ok := lineSet[l.City+l.LineId]; ok {
|
||||
errRecord.AddError(fmt.Sprintf("构建城轨id映射表错误: 线路重复:%s_%s", l.City, l.LineId))
|
||||
return nil
|
||||
}
|
||||
lineSet[l.City+l.LineId] = struct{}{}
|
||||
}
|
||||
for _, line := range cg.Lines {
|
||||
for _, line := range msgs.Lines {
|
||||
buildXhbz(idMapping, line, errRecord)
|
||||
if errRecord.HasError() {
|
||||
return nil
|
||||
@ -221,7 +210,7 @@ func buildXhbz(idMapping *IdMapping, line *dto.Line, errRecord *ErrorRecord) {
|
||||
}
|
||||
}
|
||||
// 物理区段
|
||||
for _, ps := range xhbz.PhysicalSections {
|
||||
for _, ps := range xhbz.Sections {
|
||||
eid := ps.Id
|
||||
if checkFieldEmpty(did, eid, ps.Code, errPrefix, "物理区段编号", errRecord) {
|
||||
continue
|
||||
@ -478,7 +467,3 @@ func checkRepeatOrAddIdMap(idm *idMap, idMapping *IdMapping, prefix string, errR
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func BuildGtIdMapping(gt *dto.GTData) *IdMapping {
|
||||
panic("未实现")
|
||||
}
|
||||
|
@ -7,16 +7,16 @@ import (
|
||||
)
|
||||
|
||||
type repoManager struct {
|
||||
repoMap map[string]Repo
|
||||
repoMap map[string]CgRepo
|
||||
lock sync.Mutex
|
||||
}
|
||||
|
||||
var defaultManager = &repoManager{
|
||||
repoMap: make(map[string]Repo),
|
||||
repoMap: make(map[string]CgRepo),
|
||||
}
|
||||
|
||||
// 获取或构建模型仓库
|
||||
func GetOrBuildRepo(id string, dc func(errRecord *ErrorRecord) *dto.Repo) (Repo, *ErrorRecord) {
|
||||
func GetOrBuildRepo(id string, dc func(errRecord *ErrorRecord) *dto.CgRepo) (CgRepo, *ErrorRecord) {
|
||||
manager := defaultManager
|
||||
manager.lock.Lock()
|
||||
defer manager.lock.Unlock()
|
||||
|
@ -15,7 +15,7 @@ type repo struct {
|
||||
turnoutMap map[string]*impl.Turnout // 道岔map,key为uid
|
||||
}
|
||||
|
||||
func BuildFrom(msgs *dto.Repo) (Repo, *ErrorRecord) {
|
||||
func BuildFrom(msgs *dto.CgRepo) (CgRepo, *ErrorRecord) {
|
||||
errRecord := NewErrorRecord()
|
||||
idMapping := BuildIdMapping(msgs, errRecord)
|
||||
if errRecord.HasError() {
|
||||
|
Loading…
Reference in New Issue
Block a user