model repo 用例
This commit is contained in:
parent
7a13df1b0d
commit
f66d826418
|
@ -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
|
||||||
|
}
|
|
@ -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
|
||||||
|
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
|
@ -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; // 关联站台
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
package modelimpl
|
||||||
|
|
||||||
|
import "joylink.club/rtss-core/model"
|
||||||
|
|
||||||
|
type Section struct {
|
||||||
|
model.SectionImpl
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
package modelimpl
|
||||||
|
|
||||||
|
import "joylink.club/rtss-core/model"
|
||||||
|
|
||||||
|
type Station struct {
|
||||||
|
model.StationImpl
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
package modelimpl
|
||||||
|
|
||||||
|
import "joylink.club/rtss-core/model"
|
||||||
|
|
||||||
|
type Turnout struct {
|
||||||
|
model.TurnoutImpl
|
||||||
|
}
|
|
@ -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
|
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
|
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=
|
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 h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
|
||||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
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 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
|
||||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
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 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
|
||||||
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
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 h1:sYAPaelSnxmoTGjgH9ZlYt4pUKrnwvAv4YGXxLZCK6E=
|
||||||
github.com/yohamta/donburi v1.3.9/go.mod h1:5QkyraUjkzbMVTD2b8jaPFy1Uwjm/zdFN1c1lZGaezg=
|
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 h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
|
|
@ -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
|
//go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
|
||||||
args := os.Args
|
args := os.Args
|
||||||
if len(args) >= 2 {
|
if len(args) < 3 {
|
||||||
switch {
|
log.Fatal("usage: go run protodef/main.go [path/to/proto/dir] [goOutDir]")
|
||||||
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, 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()
|
protoFiles := getProtoFiles()
|
||||||
|
log.Println(protoFiles)
|
||||||
// 编译proto文件为Go文件
|
// 编译proto文件为Go文件
|
||||||
if err := compileProto(protoFiles); err != nil {
|
if err := compileProto(protoFiles); err != nil {
|
||||||
log.Fatalf("编译proto文件失败:%v", err)
|
log.Fatalf("编译proto文件失败:%v", err)
|
||||||
|
@ -57,7 +66,7 @@ func getProtoFiles() []string {
|
||||||
// 编译proto文件为Go文件
|
// 编译proto文件为Go文件
|
||||||
func compileProto(protoFiles []string) error {
|
func compileProto(protoFiles []string) error {
|
||||||
for _, fileName := range protoFiles {
|
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())
|
fmt.Println(cmd.String())
|
||||||
cmd.Stdout = os.Stdout
|
cmd.Stdout = os.Stdout
|
||||||
cmd.Stderr = os.Stderr
|
cmd.Stderr = os.Stderr
|
||||||
|
|
|
@ -1,6 +1,11 @@
|
||||||
package repo
|
package repo
|
||||||
|
|
||||||
|
import "joylink.club/rtss-core/model"
|
||||||
|
|
||||||
type Repo interface {
|
type Repo interface {
|
||||||
// 模型仓库id
|
// 模型仓库id
|
||||||
Id() string
|
Id() string
|
||||||
|
GetStationByUid(uid string) model.Station
|
||||||
|
GetSectionByUid(uid string) model.Section
|
||||||
|
GetTurnoutByUid(uid string) model.Turnout
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue