model repo 用例
This commit is contained in:
parent
7a13df1b0d
commit
f66d826418
33
example/build_repo_example/main.go
Normal file
33
example/build_repo_example/main.go
Normal file
@ -0,0 +1,33 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"joylink.club/rtss-core/example/data_proto"
|
||||
"joylink.club/rtss-core/model"
|
||||
)
|
||||
|
||||
var (
|
||||
_stationMap = make(map[uint32]*data_proto.Station)
|
||||
_sectionMap = make(map[uint32]*data_proto.Section)
|
||||
_turnoutMap = make(map[uint32]*data_proto.Turnout)
|
||||
)
|
||||
|
||||
func main() {
|
||||
rtssGraphicStorage := data_proto.GetLineSytle1()
|
||||
// log.Println(rtssGraphicStorage.Stations)
|
||||
// log.Println(rtssGraphicStorage.Section)
|
||||
// log.Println(rtssGraphicStorage.Turnouts)
|
||||
for _, station := range rtssGraphicStorage.Stations {
|
||||
_stationMap[station.Common.Id] = station
|
||||
}
|
||||
for _, section := range rtssGraphicStorage.Section {
|
||||
if section.CentralizedStations == nil || len(section.CentralizedStations) == 0 || _stationMap[section.CentralizedStations[0]] == nil {
|
||||
continue
|
||||
}
|
||||
_sectionMap[section.Common.Id] = section
|
||||
model.NewSection(getSectionUid(section))
|
||||
}
|
||||
}
|
||||
|
||||
func getSectionUid(section *data_proto.Section) string {
|
||||
return _stationMap[section.CentralizedStations[0]].Code + "-" + section.Code
|
||||
}
|
39
example/data_proto/line_style.go
Normal file
39
example/data_proto/line_style.go
Normal file
@ -0,0 +1,39 @@
|
||||
package data_proto
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"google.golang.org/protobuf/proto"
|
||||
)
|
||||
|
||||
// / 线路样式1
|
||||
// / xxxxxxxxxx xxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxx
|
||||
// / x x x
|
||||
// / x x x
|
||||
// / x x x
|
||||
// / x x
|
||||
// / x x x
|
||||
// / x x x
|
||||
// / x x x
|
||||
// / xxxxxxxxxx xxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
func GetLineSytle1() *RtssGraphicStorage {
|
||||
basePath, _ := os.Getwd()
|
||||
filename := filepath.Join(basePath, "example/data_proto/linestyle1.base64")
|
||||
bs, err := os.ReadFile(filename)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
protobytes, err := base64.StdEncoding.DecodeString(string(bs))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
rtssGraphicStorage := RtssGraphicStorage{}
|
||||
err = proto.Unmarshal(protobytes, &rtssGraphicStorage)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return &rtssGraphicStorage
|
||||
}
|
1
example/data_proto/linestyle1.base64
Normal file
1
example/data_proto/linestyle1.base64
Normal file
File diff suppressed because one or more lines are too long
7709
example/data_proto/stationLayoutGraphics.pb.go
Normal file
7709
example/data_proto/stationLayoutGraphics.pb.go
Normal file
File diff suppressed because it is too large
Load Diff
758
example/data_proto/stationLayoutGraphics.proto
Normal file
758
example/data_proto/stationLayoutGraphics.proto
Normal file
@ -0,0 +1,758 @@
|
||||
syntax = "proto3";
|
||||
|
||||
|
||||
package graphicData;
|
||||
option go_package = "joylink.club/rtss-core/example/data_proto";
|
||||
|
||||
message RtssGraphicStorage {
|
||||
Canvas canvas = 1;
|
||||
// repeated Link links = 2;
|
||||
// repeated IscsFan iscsFans = 3;
|
||||
repeated Platform Platforms = 4;
|
||||
repeated Station stations = 5;
|
||||
// repeated Rect rects = 6;
|
||||
repeated Train train = 7;
|
||||
repeated Signal signals = 8;
|
||||
repeated Turnout turnouts = 9;
|
||||
repeated Section section = 10;
|
||||
repeated Polygon polygons = 11;
|
||||
repeated TrainWindow trainWindows = 12;
|
||||
repeated AxleCounting axleCountings = 13;
|
||||
repeated Separator separators = 14;
|
||||
repeated SectionLink sectionLinks = 15;
|
||||
repeated AxleCountingSection axleCountingSections = 16;
|
||||
repeated LogicSection logicSections = 17;
|
||||
repeated StopPosition stopPositions = 18;
|
||||
repeated SpksSwitch spksSwitchs = 19;
|
||||
repeated EsbButton esbButtons = 20; // 紧急关闭按钮
|
||||
repeated GatedBox gateBoxs = 21; // 站台开门/关门/发车按钮整合控制箱
|
||||
repeated Transponder transponders = 22; // 应答器
|
||||
repeated Slope slopes = 23; // 坡度
|
||||
// repeated CalculateLink CalculateLink = 24; // 计算link信息
|
||||
repeated SlopeKiloMarker slopeKiloMarker = 25; //坡度公里标
|
||||
repeated CurvatureKiloMarker curvatureKiloMarker = 26; //曲度公里标
|
||||
repeated Curvature curvatures = 27; // 曲度
|
||||
repeated TrackSection trackSections = 28; //轨道区段
|
||||
repeated TrackLogicSection trackLogicSections = 29; //轨道逻辑区段
|
||||
//UniqueIdType UniqueIdPrefix = 30;//设备唯一编码--前缀
|
||||
UniqueIdOfStationLayout UniqueIdPrefix = 31;//地图唯一信息
|
||||
repeated KilometerConvert kilometerConvertList = 32;//公里标转换列表
|
||||
repeated ScreenDoor screenDoors = 33;
|
||||
repeated StationRelateDevice stationRelateDeviceList = 34; // 关联设备列表
|
||||
repeated SectionCodePoint sectionCodePointList = 35; // 物理区段码位表
|
||||
ScreenDoorConfig screenDoorConfig = 36;//屏蔽门的配置--子屏蔽门的数量和编组列表
|
||||
repeated Beacon beacons = 37; // 信标
|
||||
GenerateAxleCountingConfig generateAxleCountingConfig = 38;//一键生成计轴的配置
|
||||
repeated DepartureTimer departureTimers = 39; // 发车计时器
|
||||
repeated AutoReturnBox autoReturnBoxs = 40; // 自动折返按钮箱
|
||||
repeated ConcentrationDividingLine concentrationDividingLines = 41; // 集中区分割线
|
||||
repeated OtherLine otherLineList = 42; // 其他线设备列表
|
||||
repeated IbpBox ibpBoxs = 43; // ibp地图打开按钮
|
||||
repeated PslBox pslBoxs = 44; // psl地图打开按钮
|
||||
repeated CarWashing carWashings = 45; // 洗车机
|
||||
repeated GarageDoor garageDoors = 46; // 车库门
|
||||
repeated GarageDoor floodGates = 47; // 防淹门
|
||||
//repeated GarageDoorBox garageDoorBoxes = 48; //车库门Psl开启按钮
|
||||
LianSuoData lianSuoData = 49; // 联锁映射数据
|
||||
repeated HoldButton holdButtons = 50; // 扣车按钮
|
||||
repeated UnattengedButton unattengedButtons = 51; //无人折返按钮
|
||||
}
|
||||
|
||||
message Canvas {
|
||||
// 画布宽
|
||||
int32 width = 1;
|
||||
// 画布高
|
||||
int32 height = 2;
|
||||
// 背景色
|
||||
string backgroundColor = 3;
|
||||
// 视口变换
|
||||
Transform viewportTransform = 4;
|
||||
//画布格子背景
|
||||
Grid gridBackground = 5;
|
||||
}
|
||||
|
||||
//格子背景
|
||||
message Grid {
|
||||
bool hasGrid = 1;
|
||||
string lineColor = 2; // 线色
|
||||
int32 space = 3; //间隔
|
||||
}
|
||||
|
||||
message Point {
|
||||
// x坐标
|
||||
float x = 1;
|
||||
// y坐标
|
||||
float y = 2;
|
||||
}
|
||||
|
||||
//变换
|
||||
message Transform {
|
||||
// 位移
|
||||
Point position = 1;
|
||||
// 缩放
|
||||
Point scale = 2;
|
||||
// 旋转弧度
|
||||
float rotation = 3;
|
||||
// 歪斜
|
||||
Point skew = 4;
|
||||
}
|
||||
|
||||
//子元素变换
|
||||
message ChildTransform {
|
||||
// 子元素名称
|
||||
string name = 1;
|
||||
// 子元素变换
|
||||
Transform transform = 2;
|
||||
}
|
||||
// 公共属性
|
||||
message CommonInfo {
|
||||
// string oldid = 1;
|
||||
string graphicType = 2;
|
||||
Transform transform = 3;
|
||||
repeated ChildTransform childTransforms = 4;
|
||||
uint32 id = 5;
|
||||
}
|
||||
|
||||
// message Link {
|
||||
// CommonInfo common = 1;
|
||||
// string code = 2;
|
||||
// bool curve = 3; // 是否曲线
|
||||
// int32 segmentsCount = 4; // 曲线分段数
|
||||
// int32 lineWidth = 5; // 线宽
|
||||
// string lineColor = 6; // 线色
|
||||
// repeated Point points = 7; // 点坐标列表
|
||||
// }
|
||||
|
||||
// message Rect {
|
||||
// CommonInfo common = 1;
|
||||
// string code = 2;
|
||||
// int32 lineWidth = 3; // 线宽
|
||||
// string lineColor = 4; // 线色
|
||||
// float width = 5; //宽度
|
||||
// float height = 6; //高度
|
||||
// int32 radius = 7; //圆角半径
|
||||
// Point point = 8; // 画第一个点的坐标
|
||||
// }
|
||||
|
||||
message Polygon {
|
||||
enum PolygonType {
|
||||
ConcentrationDividingLine = 0;
|
||||
}
|
||||
CommonInfo common = 1;
|
||||
string code = 2; // 编号
|
||||
PolygonType polygonType = 3; // 多边形类型
|
||||
repeated Point points = 4; // 点列表
|
||||
}
|
||||
|
||||
message ConcentrationDividingLine {
|
||||
CommonInfo common = 1;
|
||||
string code = 2; // 编号
|
||||
repeated Point points = 3; // 点列表
|
||||
//string oldrefLeftStationId = 4;//左边关联的集中站id
|
||||
//string oldrefRightStationId = 5;//右边关联的集中站id
|
||||
repeated NodeConWithSec nodeConWithSecs = 6;// 集中区分割线与区段的交点
|
||||
bool isOtherLineConcentrationDividingLine = 7;//集中区分割线绘制在其它线的边界处
|
||||
uint32 refLeftStationId = 8;//左边关联的集中站id
|
||||
uint32 refRightStationId = 9;//右边关联的集中站id
|
||||
}
|
||||
|
||||
message NodeConWithSec {
|
||||
RelatedRef leftSection = 1;
|
||||
RelatedRef rightSection = 2;
|
||||
}
|
||||
|
||||
message Platform {
|
||||
enum TypeOfPlatform {
|
||||
Unknown = 0;
|
||||
up = 1;
|
||||
down = 2;
|
||||
}
|
||||
CommonInfo common = 1;
|
||||
string code = 2;
|
||||
//bool hasdoor = 3; // 是否有屏蔽门
|
||||
//string direction = 4; // 屏蔽门上下
|
||||
// int32 index = 5; //索引
|
||||
//int32 refStationIndex = 6; //关联车站索引
|
||||
// repeated string centralizedStations = 7; // 集中站列表
|
||||
//repeated RelatedRef platformRef = 8; //站台关联的车站和物理区段
|
||||
//string oldrefStationId = 9; //关联的车站的id
|
||||
//string oldrefSectionId = 10; //关联的物理区段id
|
||||
string refEsbRelayCode = 11;//关联的紧急停车继电器的编号
|
||||
TypeOfPlatform type = 12; //站台的上下行
|
||||
uint32 refStationId = 13; //关联的车站的id
|
||||
uint32 refSectionId = 14; //关联的物理区段id
|
||||
}
|
||||
|
||||
message ScreenDoor {
|
||||
CommonInfo common = 1;
|
||||
string code = 2;
|
||||
//int32 sonDoorAmount = 3; //子屏蔽门的数量
|
||||
//string oldrefPlatformId = 4; //关联的站台
|
||||
//repeated ScreenDoorGroup screenDoorGroupList = 5;//编组列表
|
||||
uint32 refPlatformId = 6; //关联的站台
|
||||
}
|
||||
|
||||
message ScreenDoorConfig {
|
||||
int32 sonDoorAmount = 1; //子屏蔽门的数量
|
||||
repeated ScreenDoorGroup screenDoorGroupList = 2;//编组列表
|
||||
}
|
||||
|
||||
message ScreenDoorGroup {
|
||||
int32 trainGroupAmount = 1; //列车编组数量
|
||||
int32 startSmallDoor = 2; //起始的屏蔽门编号
|
||||
int32 endSmallDoor = 3; //结束的屏蔽门编号
|
||||
}
|
||||
|
||||
message Station {
|
||||
CommonInfo common = 1;
|
||||
string code = 2;//车站站名
|
||||
// bool hasControl = 3; // 是否有控制
|
||||
bool concentrationStations = 4; //是否集中站
|
||||
// string kilometerCode = 5; //公里标
|
||||
KilometerSystem kilometerSystem = 6; //公里标
|
||||
// int32 index = 7;
|
||||
//string refIbpMapCode = 8; // 关联IBP地图Code
|
||||
string stationName = 9; //车站名
|
||||
string stationNameAcronym = 10; // 车站名拼音简写
|
||||
bool depots = 11; //是否车辆段
|
||||
//repeated string oldmanageStations = 12; // 如果是集中站——管理的车站-id
|
||||
repeated uint32 manageStations = 13; // 如果是集中站——管理的车站-id
|
||||
}
|
||||
|
||||
message TrainWindow {
|
||||
CommonInfo common = 1;
|
||||
string code = 2;
|
||||
int32 sectionId = 3;
|
||||
}
|
||||
|
||||
message AxleCounting {
|
||||
enum TypeDetectionPoint {
|
||||
AxleCounting = 0;
|
||||
SectionBoundary = 1;
|
||||
}
|
||||
CommonInfo common = 1;
|
||||
string code = 2; // 名称
|
||||
KilometerSystem kilometerSystem = 3; //公里标
|
||||
repeated RelatedRef axleCountingRef = 4; // 计轴关联的非岔区物理区段和道岔,设备id和端口
|
||||
// int32 index = 5; //计轴的索引编号
|
||||
//bool invent = 6; //是否虚拟计轴--一般是最末端
|
||||
TypeDetectionPoint type = 7; //检测点的类型:计轴、区段边界
|
||||
//repeated string oldcentralizedStations = 8; // 集中站Id列表
|
||||
repeated uint32 centralizedStations = 9; // 集中站Id列表
|
||||
}
|
||||
|
||||
message GenerateAxleCountingConfig {
|
||||
//repeated string oldbbConnect = 1; //需要在道岔bb连接处生成计轴的道岔id(填一个就行)
|
||||
//repeated string oldnoGenerateGroup = 2;//指定的道岔组不生成计轴
|
||||
repeated uint32 bbConnect = 3; //需要在道岔bb连接处生成计轴的道岔id(填一个就行)
|
||||
repeated uint32 noGenerateGroup = 4;//指定的道岔组不生成计轴
|
||||
}
|
||||
|
||||
// message Train {
|
||||
// CommonInfo common = 1;
|
||||
// string code = 2;
|
||||
// }
|
||||
|
||||
// message IscsFan {
|
||||
// CommonInfo common = 1;
|
||||
// string code = 2;
|
||||
// }
|
||||
|
||||
message Turnout { //(后端不关注)
|
||||
|
||||
enum SwitchMachineType {
|
||||
Unknown = 0;
|
||||
ZDJ9_Single = 1;
|
||||
ZDJ9_Double = 2;
|
||||
}
|
||||
|
||||
CommonInfo common = 1;
|
||||
string code = 2;
|
||||
repeated Point pointA = 6; // A端坐标列表
|
||||
repeated Point pointB = 7; // B端坐标列表
|
||||
repeated Point pointC = 8; // C端坐标列表
|
||||
RelatedRef paRef = 9; // 道岔A端关联的设备
|
||||
RelatedRef pbRef = 10; // 道岔B端关联的设备
|
||||
RelatedRef pcRef = 11; // 道岔C端关联的设备
|
||||
// KilometerSystem kilometerSystem = 12; // 道岔公里标
|
||||
repeated KilometerSystem kilometerSystem = 13; // 道岔公里标
|
||||
// int32 index = 14; //索引
|
||||
//string oldpaTrackSectionId = 15; // A端轨道区段id
|
||||
//string oldpbTrackSectionId = 16; // B端轨道区段id
|
||||
//string oldpcTrackSectionId = 17; // C端轨道区段id
|
||||
SwitchMachineType switchMachineType = 18; // 转辙机类型
|
||||
//repeated string oldcentralizedStations = 19; // 集中站Id列表
|
||||
repeated uint32 centralizedStations = 20; // 集中站Id列表
|
||||
uint32 paTrackSectionId = 21; // A端轨道区段id
|
||||
uint32 pbTrackSectionId = 22; // B端轨道区段id
|
||||
uint32 pcTrackSectionId = 23; // C端轨道区段id
|
||||
}
|
||||
|
||||
|
||||
message KilometerSystem {
|
||||
/** 左右行 **/
|
||||
enum Direction {
|
||||
LEFT = 0;
|
||||
RIGHT = 1;
|
||||
}
|
||||
int64 kilometer = 1; //公里标mm
|
||||
string coordinateSystem = 2; //坐标系
|
||||
Direction direction = 3; //左右行
|
||||
}
|
||||
|
||||
message Signal {
|
||||
CommonInfo common = 1;
|
||||
string code = 2;
|
||||
bool mirror = 3;
|
||||
// int64 kilometer = 4;
|
||||
// string coordinateSystem = 5;
|
||||
KilometerSystem kilometerSystem = 6;
|
||||
// int32 index = 7; //索引
|
||||
RelatedRef refDev = 8; //关联设备(区段/道岔)
|
||||
//repeated string oldcentralizedStations = 9; // 集中站Id列表
|
||||
// 信号机模型类型枚举
|
||||
// 从左向右,最左边为靠近灯座的灯
|
||||
// 如果没有说明,默认不封灯,无引导
|
||||
// F-封 D-单 Y-有、带 Y-引导
|
||||
// H-红 L-绿 U-黄 A-蓝 B-白
|
||||
enum Model{
|
||||
HL = 0; //2XH-1 红绿
|
||||
HLU_FU = 1; //2XH-1 红绿黄,封黄灯,无引导
|
||||
HLU_DU_YY = 2; //3XH-1 红绿黄,不封灯,有单黄,带引导
|
||||
HLU_YY = 3; //3XH-2或JDXH 红绿黄,不封灯,无单黄,带引导
|
||||
HLU_FL_DU_YY = 4;//3XH-3 红绿黄,封绿灯,有单黄,带引导
|
||||
HLU_DU = 5; //3XH-4 红绿黄,不封灯,有单黄,无引导
|
||||
AB = 6; //DXCH 蓝白
|
||||
HBU_DU = 7; //JCKXH 红白黄,不封灯,有单黄,无引导
|
||||
}
|
||||
// 信号机模型类型
|
||||
Model mt = 10;
|
||||
//string belongStation = 11; // 所属车站(缩写)
|
||||
Direction direction = 12; // 上下行
|
||||
repeated uint32 centralizedStations = 13; // 集中站Id列表
|
||||
}
|
||||
|
||||
/** 上下行(区段/信号机) */
|
||||
enum Direction {
|
||||
UP = 0;
|
||||
DOWN = 1;
|
||||
}
|
||||
|
||||
/** 物理区段(包含岔区和非岔区) */
|
||||
message Section {
|
||||
enum SectionType {
|
||||
Physical = 0;
|
||||
TurnoutPhysical = 2;
|
||||
}
|
||||
|
||||
enum RunningDirection {
|
||||
AtoB = 0;
|
||||
BtoA = 1;
|
||||
BOTH = 2;
|
||||
}
|
||||
|
||||
|
||||
CommonInfo common = 1;
|
||||
string code = 2; // 编号
|
||||
repeated Point points = 3; // 点列表
|
||||
RelatedRef paRef = 4; // 区段A端关联的设备(非岔区)(后端不关注)
|
||||
RelatedRef pbRef = 5; // 区段B端关联的设备(非岔区)(后端不关注)
|
||||
SectionType sectionType = 6; // 区段类型
|
||||
//repeated string oldaxleCountings = 7; // 区段对应的计轴
|
||||
// int32 index = 8; // 索引
|
||||
//string oldtrackSectionId = 9; // 下属轨道区段id
|
||||
bool isCurve = 10; // 是否曲线
|
||||
int32 segmentsCount = 12; // 曲线分段数
|
||||
//repeated string oldcentralizedStations = 13; // 集中站Id列表
|
||||
RunningDirection normalRunningDirection = 14; //常规运行方向
|
||||
bool isTurnBackZone = 15; // 是否为折返区域
|
||||
Direction direction = 16; // 上下行
|
||||
repeated uint32 axleCountings = 17; // 区段对应的计轴
|
||||
uint32 trackSectionId = 18; // 下属轨道区段id
|
||||
repeated uint32 centralizedStations = 19; // 集中站Id列表
|
||||
}
|
||||
|
||||
//关联设备
|
||||
message RelatedRef {
|
||||
enum DeviceType {
|
||||
Section = 0;
|
||||
Turnout = 1;
|
||||
TrainWindow = 2;
|
||||
AxleCounting = 3;
|
||||
SectionLink = 4;
|
||||
signal = 5;
|
||||
station = 6;
|
||||
ScreenDoor = 7;
|
||||
SignalFaultAlarm = 8;
|
||||
Breakers = 9;//断路器
|
||||
PowerScreen = 10;//电源屏
|
||||
GarageDoor = 11;
|
||||
CarWashing = 12;
|
||||
FloodGate = 13;
|
||||
}
|
||||
|
||||
enum DevicePort {
|
||||
A = 0;
|
||||
B = 1;
|
||||
C = 2;
|
||||
}
|
||||
|
||||
DeviceType deviceType = 1; //关联的设备类型
|
||||
//string oldid = 2; //关联的设备ID
|
||||
DevicePort devicePort = 3; //关联的设备端口
|
||||
uint32 id = 4;
|
||||
}
|
||||
|
||||
//计轴区段与道岔的位置关系
|
||||
message TurnoutPosRef {
|
||||
//string oldid = 1; //道岔的ID
|
||||
int32 position = 2; //道岔的正反为,0是定位,1是反位
|
||||
uint32 id = 3;
|
||||
}
|
||||
|
||||
message Separator { // 分隔符
|
||||
CommonInfo common = 1;
|
||||
string code = 2;
|
||||
string separatorType = 3;
|
||||
}
|
||||
|
||||
message Transponder { // 应答器
|
||||
enum TransponderTypeEnum {
|
||||
FB = 0; // 固定应答器
|
||||
WB = 1; // 轮径校正应答器
|
||||
DB = 2; // 休眠唤醒应答器
|
||||
VB = 3; // 主信号应答器
|
||||
IB = 4; // 预告应答器
|
||||
}
|
||||
CommonInfo common = 1;
|
||||
string code = 2;
|
||||
// int32 transponderType = 3; // 作废
|
||||
// int32 index = 4; // 索引编号
|
||||
KilometerSystem kilometerSystem = 5; //公里标
|
||||
RelatedRef TransponderRef = 6; //关联关系
|
||||
//repeated string oldcentralizedStations = 7; // 集中站Id列表
|
||||
// bytes fixedTelegram = 8;//无源应答器固定报文
|
||||
TransponderTypeEnum type = 9;//应答器类型
|
||||
repeated uint32 centralizedStations = 10; // 集中站Id列表
|
||||
string fixedTelegram = 11; //应答器固定报文
|
||||
string fixedUserTelegram = 12; //应答器固定用户报文
|
||||
string originalCode = 13; //应答器原编号(厂商提供数据编号)
|
||||
}
|
||||
|
||||
message SimpleRef {
|
||||
enum DeviceType {
|
||||
Turnout = 0;
|
||||
AxleCounting = 1;
|
||||
}
|
||||
DeviceType deviceType = 1;
|
||||
//string oldid = 2;
|
||||
uint32 id = 3;
|
||||
}
|
||||
|
||||
message SectionLink {
|
||||
CommonInfo common = 1;
|
||||
string code = 2;
|
||||
repeated Point points = 3;
|
||||
bool up = 4; // 是否上行
|
||||
SimpleRef aSimRef =
|
||||
5; // SectionLink A端连接设备(构建关系 AxleCounting/Turnout) //端点
|
||||
SimpleRef bSimRef =
|
||||
6; // SectionLink B端连接设备(构建关系 AxleCounting/Turnout) //端点
|
||||
RelatedRef aRef =
|
||||
7; // SectionLink A端连接设备(端口关系 SectionLink/Turnout)
|
||||
RelatedRef bRef = 8; // SectionLink B端连接设备(端口关系
|
||||
// SectionLink/Turnout)
|
||||
// int32 index = 9; // 索引编号
|
||||
}
|
||||
|
||||
message AxleCountingSection { // 计轴区段
|
||||
CommonInfo common = 1;
|
||||
string code = 2; // 名称
|
||||
repeated Point points = 3;
|
||||
RelatedRef paRef = 4; // 计轴区段A端关联的计轴
|
||||
RelatedRef pbRef = 5; // 计轴区段B端关联的计轴
|
||||
repeated TurnoutPosRef turnoutPos = 6; //关联道岔的正反位--0是定位,1是反位
|
||||
// int32 index = 7; //计轴区段的索引编号
|
||||
}
|
||||
|
||||
message LogicSection { // 逻辑区段
|
||||
CommonInfo common = 1;
|
||||
string code = 2; // 名称
|
||||
repeated Point points = 3;
|
||||
//string oldaxleSectionId = 4; // 关联的计轴区段Id
|
||||
// int32 index = 5; // 索引编号
|
||||
//string oldturnoutId = 6; // 关联的岔芯对应的道岔id,此时该逻辑区段为该道岔C端关联的轨道link
|
||||
uint32 axleSectionId = 7; // 关联的计轴区段Id
|
||||
uint32 turnoutId = 8; // 关联的岔芯对应的道岔id,此时该逻辑区段为该道岔C端关联的轨道link
|
||||
}
|
||||
|
||||
message TrackSection { //轨道区段
|
||||
enum TrackSectionType {
|
||||
NORMAL = 0; //非岔区
|
||||
FORK = 1; //岔区
|
||||
}
|
||||
CommonInfo common = 1;
|
||||
repeated Point points = 2;
|
||||
string code = 3; //名称
|
||||
// int32 index = 4; //索引
|
||||
TrackSectionType type = 5; //类型
|
||||
string destinationCode = 6; //目的地码
|
||||
//repeated string oldtrackLogicSection = 7; //下属的逻辑区段id(非岔区)
|
||||
// //关联的物理设备id(物理区段/道岔)由另一端(物理区段/道岔处理)
|
||||
bool isCurve = 8; // 是否曲线
|
||||
int32 segmentsCount = 9; // 曲线分段数
|
||||
repeated uint32 trackLogicSection = 10; //下属的逻辑区段id(非岔区)
|
||||
}
|
||||
|
||||
message TrackLogicSection { //轨道逻辑区段
|
||||
CommonInfo common = 1;
|
||||
repeated Point points = 2;
|
||||
string code = 3; //名称
|
||||
int32 length = 4; //长度(mm)
|
||||
}
|
||||
|
||||
message StopPosition {
|
||||
enum CoachNum {
|
||||
Four = 0;
|
||||
Six = 1;
|
||||
Eight = 2;
|
||||
}
|
||||
CommonInfo common = 1;
|
||||
string code = 2;
|
||||
bool flip = 3; // 是否翻转(前端显示)
|
||||
CoachNum coachNum = 4; //编组数量
|
||||
// int32 index = 5; //索引
|
||||
KilometerSystem kilometerSystem = 6;
|
||||
RelatedRef refDev = 7; // 关联设备(区段)
|
||||
}
|
||||
|
||||
message SpksSwitch {
|
||||
CommonInfo common = 1;
|
||||
string code = 2;
|
||||
bool flip = 3; // 是否翻转(前端显示)
|
||||
// int32 index = 4; //索引
|
||||
// int32 refStand = 5; //关联站台索引
|
||||
//repeated string oldrefSections = 6; // 关联物理区段id
|
||||
//string oldrefStand = 7; // 关联站台
|
||||
// repeated uint32 refSections = 8; // 关联物理区段id
|
||||
uint32 refStand = 9; // 关联站台
|
||||
}
|
||||
|
||||
message EsbButton {
|
||||
CommonInfo common = 1;
|
||||
string code = 2;
|
||||
bool flip = 3; // 是否翻转(前端显示)
|
||||
// int32 index = 4; //索引
|
||||
// int32 refStand = 5; // 关联站台索引
|
||||
//string oldrefStand = 6; // 关联站台
|
||||
uint32 refStand = 7; // 关联站台
|
||||
//string refEsbButtonMapCode = 8; // 关联紧急关闭按钮地图Code--关联PSL地图
|
||||
}
|
||||
|
||||
message GatedBox {
|
||||
CommonInfo common = 1;
|
||||
string code = 2;
|
||||
bool flip = 3; // 是否翻转(前端显示)
|
||||
// int32 index = 4; //索引
|
||||
//string oldrefScreenDoor = 5; // 关联屏蔽门
|
||||
string refGatedBoxMapCode = 6; // 关联门控箱地图Code
|
||||
uint32 refScreenDoor = 7; // 关联屏蔽门
|
||||
}
|
||||
|
||||
message IbpBox {
|
||||
CommonInfo common = 1;
|
||||
string code = 2;
|
||||
string refIbpMapCode = 3; // 关联Ibp地图Code
|
||||
uint32 refStationId = 4; // 关联车站id
|
||||
}
|
||||
|
||||
message PslBox {
|
||||
CommonInfo common = 1;
|
||||
string code = 2;
|
||||
string refPslMapCode = 3; // 关联Psl地图Code
|
||||
uint32 refPlatformId = 4; // 关联站台id
|
||||
}
|
||||
|
||||
/** 坡度公里标 */
|
||||
message SlopeKiloMarker {
|
||||
CommonInfo common = 1;
|
||||
string code = 2;
|
||||
repeated KilometerSystem kilometerSystem = 4; //公里标数据
|
||||
}
|
||||
|
||||
/** 曲度公里标 */
|
||||
message CurvatureKiloMarker {
|
||||
CommonInfo common = 1;
|
||||
string code = 2;
|
||||
repeated KilometerSystem kilometerSystem = 4; //公里标数据
|
||||
}
|
||||
/** 车库门 */
|
||||
message GarageDoor {
|
||||
CommonInfo common = 1;
|
||||
string code = 2;
|
||||
uint32 linkSection = 3; //关联区段
|
||||
repeated uint32 centralizedStations = 4; // 集中站Id列表;
|
||||
string refPslMapCode = 5; // 关联的Psl地图的code(名称)
|
||||
}
|
||||
/** 洗车机 */
|
||||
message CarWashing {
|
||||
CommonInfo common = 1;
|
||||
string code = 2;
|
||||
uint32 linkSection = 3; //关联区段
|
||||
repeated uint32 centralizedStations = 4; // 集中站Id列表;
|
||||
uint32 duanNum = 5; //段数
|
||||
uint32 width = 6; // 洗车机宽度
|
||||
}
|
||||
/** 信标 */
|
||||
message Beacon {
|
||||
enum BeaconType {
|
||||
Static = 0;
|
||||
Dynamic = 1;
|
||||
}
|
||||
CommonInfo common = 1;
|
||||
string code = 2;
|
||||
BeaconType type = 3;
|
||||
bool flip = 4;
|
||||
}
|
||||
|
||||
message Slope {
|
||||
CommonInfo common = 1;
|
||||
repeated Point points = 2;
|
||||
sint32 slopeNumber = 3; //坡度的值--正负代表上下坡
|
||||
//repeated string oldrefDeviceId = 4; // 坡度关联的(坡度公里标)
|
||||
repeated uint32 refDeviceId = 5; // 坡度关联的(坡度公里标)
|
||||
}
|
||||
|
||||
message Curvature {
|
||||
CommonInfo common = 1;
|
||||
repeated Point points = 2;
|
||||
sint32 curvatureNumber = 3; //曲线的半径--正代表外侧;负代表内侧
|
||||
//repeated string oldrefDeviceId = 4; // 曲线关联的(曲度公里标)
|
||||
repeated uint32 refDeviceId = 5; // 曲线关联的(曲度公里标)
|
||||
}
|
||||
|
||||
// 计算link结构
|
||||
// message CalculateLink {
|
||||
// CommonInfo common = 1;
|
||||
// repeated Point points = 2;
|
||||
// int32 length = 3; //长度,mm
|
||||
// RelatedRef aRelatedRef = 4; // A端(最小端)关联的端点 (道岔端点)
|
||||
// RelatedRef bRelatedRef = 5; // B端(最大端)关联的端点 (道岔端点)
|
||||
// repeated DevicePosition devicePositions = 6; //设备在link上的位置
|
||||
// int32 index = 7; // link唯一标识
|
||||
// message DevicePosition {
|
||||
// int32 offset = 1;
|
||||
// string deviceId = 2;
|
||||
// string deviceType = 3;
|
||||
// }
|
||||
// }
|
||||
/** 发车计时器 */
|
||||
message DepartureTimer {
|
||||
CommonInfo common = 1;
|
||||
string code = 2;
|
||||
//string oldrefStand = 3; // 关联站台
|
||||
string runDirection = 4; //运行方向
|
||||
uint32 refStand = 5; // 关联站台
|
||||
}
|
||||
|
||||
message AutoReturnBox {
|
||||
CommonInfo common = 1;
|
||||
string code = 2;
|
||||
bool flip = 3; // 是否翻转(前端显示)
|
||||
int32 index = 4; //索引
|
||||
//string oldrefStand = 5; // 关联站台
|
||||
uint32 refStand = 6; // 关联站台
|
||||
}
|
||||
|
||||
message UniqueIdOfStationLayout {
|
||||
string city = 1;//城市
|
||||
string lineId = 2;//线路号
|
||||
string mainCoordinateSystem = 3;//地图的公里标主坐标系
|
||||
}
|
||||
|
||||
//公里标转换
|
||||
message KilometerConvert {
|
||||
KilometerSystem kmA = 1;
|
||||
KilometerSystem kmB = 2;
|
||||
bool sameTrend = 3; //相同趋势(同增同减)?
|
||||
}
|
||||
|
||||
/* 车站关联的设备列表 */
|
||||
message StationRelateDevice {
|
||||
string code = 1;//设备编号
|
||||
repeated DeviceCombinationtype combinationtypes = 2; //组合类型
|
||||
RelatedRef.DeviceType deviceType = 3;//设备类型
|
||||
}
|
||||
message DeviceCombinationtype {
|
||||
string code = 1;
|
||||
//repeated string oldrefDevices = 2;//车站关联的设备
|
||||
repeated uint32 refDevices = 3;//车站关联的设备
|
||||
}
|
||||
|
||||
message SectionCodePoint {
|
||||
//string oldCentralizedStation = 1; // 集中站id
|
||||
//repeated string oldsectionIds = 2; //物理区段id列表
|
||||
repeated uint32 sectionIds = 3; //物理区段id列表
|
||||
uint32 centralizedStation = 4; // 集中站id
|
||||
}
|
||||
|
||||
// 列车信息
|
||||
message Train {
|
||||
enum TrainModel { // 车型
|
||||
A = 0;
|
||||
B = 1;
|
||||
C = 2;
|
||||
D = 3;
|
||||
}
|
||||
TrainModel trainModel = 1; // 车型
|
||||
int32 carriageLength = 2; // 列车车厢长度
|
||||
int32 totalLength = 3; // 总长度
|
||||
// int32 minDiameter = 4; // 车轮的最小直径
|
||||
// int32 maxDiameter = 5; // 车轮的最大直径
|
||||
string trainSets = 6; // 编组
|
||||
// common.TrainDynamicConfig dynamicConfig = 7; //动力学参数
|
||||
// string trainControlMapCode = 8;
|
||||
int32 trainControlMapId = 9;
|
||||
|
||||
}
|
||||
|
||||
// 其他线
|
||||
message OtherLine {
|
||||
string name = 1;
|
||||
//repeated string oldids = 2; // 设备id列表
|
||||
repeated uint32 ids = 3; // 设备id列表
|
||||
}
|
||||
// 设备联锁编号
|
||||
message LianSuoIndexData {
|
||||
uint32 id = 1; // 设备id
|
||||
uint32 index = 2; //设备联锁编号
|
||||
}
|
||||
// 设备联锁映射数据
|
||||
message LianSuoData {
|
||||
repeated LianSuoIndexData stations = 1;
|
||||
repeated LianSuoIndexData switchs = 2;
|
||||
repeated LianSuoIndexData screenDoors = 3;
|
||||
repeated LianSuoIndexData signals = 4;
|
||||
repeated LianSuoIndexData sections = 5;
|
||||
repeated LianSuoIndexData floodGates = 6;
|
||||
repeated LianSuoIndexData spksSwitchs = 7;
|
||||
repeated LianSuoIndexData garageDoors = 8;
|
||||
repeated LianSuoIndexData carWashing = 9;
|
||||
repeated LianSuoIndexData esbButtons = 10;
|
||||
repeated LianSuoIndexData holdButtons = 11;
|
||||
repeated LianSuoIndexData unattengedButtons = 12;
|
||||
}
|
||||
// 无人折返按钮
|
||||
message UnattengedButton {
|
||||
CommonInfo common = 1;
|
||||
string code = 2;
|
||||
bool flip = 3; // 是否翻转(前端显示)
|
||||
uint32 refStand = 4; // 关联站台
|
||||
}
|
||||
// 扣车按钮
|
||||
message HoldButton {
|
||||
CommonInfo common = 1;
|
||||
string code = 2;
|
||||
bool flip = 3; // 是否翻转(前端显示)
|
||||
uint32 refStand = 4; // 关联站台
|
||||
}
|
7
example/model_impl/section.go
Normal file
7
example/model_impl/section.go
Normal file
@ -0,0 +1,7 @@
|
||||
package modelimpl
|
||||
|
||||
import "joylink.club/rtss-core/model"
|
||||
|
||||
type Section struct {
|
||||
model.SectionImpl
|
||||
}
|
7
example/model_impl/station.go
Normal file
7
example/model_impl/station.go
Normal file
@ -0,0 +1,7 @@
|
||||
package modelimpl
|
||||
|
||||
import "joylink.club/rtss-core/model"
|
||||
|
||||
type Station struct {
|
||||
model.StationImpl
|
||||
}
|
7
example/model_impl/turnout.go
Normal file
7
example/model_impl/turnout.go
Normal file
@ -0,0 +1,7 @@
|
||||
package modelimpl
|
||||
|
||||
import "joylink.club/rtss-core/model"
|
||||
|
||||
type Turnout struct {
|
||||
model.TurnoutImpl
|
||||
}
|
39
example/repository/repo.go
Normal file
39
example/repository/repo.go
Normal file
@ -0,0 +1,39 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
modelimpl "joylink.club/rtss-core/example/model_impl"
|
||||
"joylink.club/rtss-core/model"
|
||||
"joylink.club/rtss-core/repo"
|
||||
)
|
||||
|
||||
type Repository struct {
|
||||
id string
|
||||
stationMap map[string]*modelimpl.Station
|
||||
sectionMap map[string]*modelimpl.Section
|
||||
turnoutMap map[string]*modelimpl.Turnout
|
||||
}
|
||||
|
||||
func NewRepository(id string) repo.Repo {
|
||||
return &Repository{
|
||||
id: id,
|
||||
stationMap: make(map[string]*modelimpl.Station),
|
||||
sectionMap: make(map[string]*modelimpl.Section),
|
||||
turnoutMap: make(map[string]*modelimpl.Turnout),
|
||||
}
|
||||
}
|
||||
|
||||
func (r *Repository) Id() string {
|
||||
return r.id
|
||||
}
|
||||
|
||||
func (r *Repository) GetStationByUid(uid string) model.Station {
|
||||
return r.stationMap[uid]
|
||||
}
|
||||
|
||||
func (r *Repository) GetSectionByUid(uid string) model.Section {
|
||||
return r.sectionMap[uid]
|
||||
}
|
||||
|
||||
func (r *Repository) GetTurnoutByUid(uid string) model.Turnout {
|
||||
return r.turnoutMap[uid]
|
||||
}
|
5
go.mod
5
go.mod
@ -1,6 +1,9 @@
|
||||
module joylink.club/rtss-core
|
||||
|
||||
require joylink.club/ecs v0.1.0
|
||||
require (
|
||||
google.golang.org/protobuf v1.34.2
|
||||
joylink.club/ecs v0.1.0
|
||||
)
|
||||
|
||||
require github.com/yohamta/donburi v1.3.9 // indirect
|
||||
|
||||
|
6
go.sum
6
go.sum
@ -2,11 +2,17 @@ gitea.joylink.club/joylink/jl-ecs v0.1.0 h1:+qQw0VN4dSnAuerqCl34bQTfLEZA+foGUUG5
|
||||
gitea.joylink.club/joylink/jl-ecs v0.1.0/go.mod h1:i/tBVZV1hoFNZCxmZXeUIa9sHwJcbgpj3zA9xtcQkyA=
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
|
||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
|
||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
|
||||
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||
github.com/yohamta/donburi v1.3.9 h1:sYAPaelSnxmoTGjgH9ZlYt4pUKrnwvAv4YGXxLZCK6E=
|
||||
github.com/yohamta/donburi v1.3.9/go.mod h1:5QkyraUjkzbMVTD2b8jaPFy1Uwjm/zdFN1c1lZGaezg=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
|
||||
google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
|
26
model/station.go
Normal file
26
model/station.go
Normal file
@ -0,0 +1,26 @@
|
||||
package model
|
||||
|
||||
type Station interface {
|
||||
RtssModel
|
||||
IsCentralized() bool
|
||||
}
|
||||
|
||||
type StationImpl struct {
|
||||
uid string
|
||||
centralized bool
|
||||
}
|
||||
|
||||
func NewStation(uid string, centralized bool) Station {
|
||||
return &StationImpl{
|
||||
uid: uid,
|
||||
centralized: centralized,
|
||||
}
|
||||
}
|
||||
|
||||
func (s *StationImpl) Uid() string {
|
||||
return s.uid
|
||||
}
|
||||
|
||||
func (s *StationImpl) IsCentralized() bool {
|
||||
return s.centralized
|
||||
}
|
@ -21,18 +21,27 @@ func main() {
|
||||
//先安装以下插件
|
||||
//go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
|
||||
args := os.Args
|
||||
if len(args) >= 2 {
|
||||
switch {
|
||||
case args[1] == "component": //go run . component 编译组件proto
|
||||
{
|
||||
protocPath = filepath.Join(basePath, "protoc-23.1", "bin", "win64", "protoc")
|
||||
protoFolder = filepath.Join(basePath, "src", args[1])
|
||||
goOutDir = "../"
|
||||
}
|
||||
}
|
||||
if len(args) < 3 {
|
||||
log.Fatal("usage: go run protodef/main.go [path/to/proto/dir] [goOutDir]")
|
||||
}
|
||||
protoFolder = filepath.Join(basePath, args[1])
|
||||
goOutDir = args[2]
|
||||
|
||||
log.Println(protoFolder, goOutDir)
|
||||
// if len(args) >= 2 {
|
||||
// switch {
|
||||
// case args[1] == "component": //go run . component 编译组件proto
|
||||
// {
|
||||
// protocPath = filepath.Join(basePath, "protoc-23.1", "bin", "win64", "protoc")
|
||||
// protoFolder = filepath.Join(basePath, "src", args[1])
|
||||
// goOutDir = "../"
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// protoFolder = filepath.Join(basePath)
|
||||
protoFiles := getProtoFiles()
|
||||
log.Println(protoFiles)
|
||||
// 编译proto文件为Go文件
|
||||
if err := compileProto(protoFiles); err != nil {
|
||||
log.Fatalf("编译proto文件失败:%v", err)
|
||||
@ -57,7 +66,7 @@ func getProtoFiles() []string {
|
||||
// 编译proto文件为Go文件
|
||||
func compileProto(protoFiles []string) error {
|
||||
for _, fileName := range protoFiles {
|
||||
cmd := exec.Command(protocPath, "-I="+protoFolder, fmt.Sprintf("--go_out=%s", goOutDir), fileName)
|
||||
cmd := exec.Command(protocPath, "-I="+protoFolder, fmt.Sprintf("--go_out=%s", goOutDir), "--go_opt=paths=source_relative", fileName)
|
||||
fmt.Println(cmd.String())
|
||||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
|
@ -1,6 +1,11 @@
|
||||
package repo
|
||||
|
||||
import "joylink.club/rtss-core/model"
|
||||
|
||||
type Repo interface {
|
||||
// 模型仓库id
|
||||
Id() string
|
||||
GetStationByUid(uid string) model.Station
|
||||
GetSectionByUid(uid string) model.Section
|
||||
GetTurnoutByUid(uid string) model.Turnout
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user