From 3eb9fa1f708998e5e48ce401b9bef9e95eeec6b1 Mon Sep 17 00:00:00 2001 From: weizhihong Date: Thu, 10 Aug 2023 14:18:55 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E4=BF=AE=E6=94=B9=E5=88=97=E8=BD=A6?= =?UTF-8?q?=E5=81=8F=E7=A7=BB=E4=BF=A1=E6=81=AF=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/simulation.go | 9 +- ats/verify/protos/state/device_state.pb.go | 127 +++++++++----- ats/verify/simulation/simulation_manage.go | 46 ++--- .../wayside/memory/wayside_memory_map.go | 161 +++++++++++++++++- .../wayside/memory/wayside_memory_train.go | 35 +--- .../model/device/switch_device_model.go | 2 + .../model/section/physical_section_model.go | 2 + bj-rtss-message | 2 +- db/dbquery/category.gen.go | 6 +- db/dbquery/drafting.gen.go | 6 +- db/dbquery/published_gi.gen.go | 6 +- db/model/category.gen.go | 1 + db/model/drafting.gen.go | 2 +- db/model/published_gi.gen.go | 2 +- dto/category.go | 1 + dto/drafting.go | 2 +- dto/simulation.go | 6 + service/category.go | 3 +- 18 files changed, 293 insertions(+), 126 deletions(-) diff --git a/api/simulation.go b/api/simulation.go index 7ec48b8..7ecebb4 100644 --- a/api/simulation.go +++ b/api/simulation.go @@ -203,10 +203,11 @@ func addTrain(c *gin.Context) { } id := strconv.Itoa(i) rsp := &state.TrainState{ - Id: id, - HeadLinkId: req.HeadLinkId, - HeadLinkOffset: req.HeadLinkOffset, - Up: req.Up, + Id: id, + HeadDeviceId: req.Id, + HeadOffset: req.HeadOffset, + DevicePort: req.DevicePort, + Up: req.Up, } memory.AddTrainState(simulation, rsp) c.JSON(http.StatusOK, &rsp) diff --git a/ats/verify/protos/state/device_state.pb.go b/ats/verify/protos/state/device_state.pb.go index 511733e..1cf6d16 100644 --- a/ats/verify/protos/state/device_state.pb.go +++ b/ats/verify/protos/state/device_state.pb.go @@ -473,6 +473,12 @@ type TrainState struct { TrainLength int64 `protobuf:"varint,23,opt,name=trainLength,proto3" json:"trainLength,omitempty"` // 列车是否显示 Show bool `protobuf:"varint,24,opt,name=show,proto3" json:"show,omitempty"` + // 列车车头所在设备ID + HeadDeviceId string `protobuf:"bytes,25,opt,name=headDeviceId,proto3" json:"headDeviceId,omitempty"` + // 列车车头所在设备偏移量 + HeadOffset int64 `protobuf:"varint,26,opt,name=headOffset,proto3" json:"headOffset,omitempty"` + // 设备端口 + DevicePort string `protobuf:"bytes,27,opt,name=devicePort,proto3" json:"devicePort,omitempty"` } func (x *TrainState) Reset() { @@ -675,6 +681,27 @@ func (x *TrainState) GetShow() bool { return false } +func (x *TrainState) GetHeadDeviceId() string { + if x != nil { + return x.HeadDeviceId + } + return "" +} + +func (x *TrainState) GetHeadOffset() int64 { + if x != nil { + return x.HeadOffset + } + return 0 +} + +func (x *TrainState) GetDevicePort() string { + if x != nil { + return x.DevicePort + } + return "" +} + // 仿真运行时状态变化量,当前时刻与上一时刻比较得到 type VariationStatus struct { state protoimpl.MessageState @@ -911,7 +938,7 @@ var file_device_state_proto_rawDesc = []byte{ 0x72, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x1e, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xce, 0x06, 0x0a, 0x0a, 0x54, 0x72, 0x61, 0x69, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xb2, 0x07, 0x0a, 0x0a, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x75, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x68, 0x65, 0x61, 0x64, 0x4c, 0x69, @@ -964,52 +991,58 @@ var file_device_state_proto_rawDesc = []byte{ 0x65, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x17, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x68, 0x6f, 0x77, 0x18, 0x18, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x04, 0x73, 0x68, 0x6f, 0x77, 0x22, 0xe7, 0x01, 0x0a, 0x0f, 0x56, 0x61, 0x72, - 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x35, 0x0a, 0x0c, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x72, - 0x61, 0x69, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x54, 0x72, - 0x61, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x0d, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x3b, 0x0a, 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x52, 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0xb4, 0x01, 0x0a, 0x10, 0x41, 0x6c, 0x6c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x31, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x69, 0x6e, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0a, - 0x74, 0x72, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x0b, 0x73, 0x77, - 0x69, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x52, 0x0b, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x12, 0x37, 0x0a, 0x0c, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x73, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x94, 0x01, 0x0a, 0x13, 0x50, 0x75, - 0x73, 0x68, 0x65, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, - 0x61, 0x6c, 0x6c, 0x12, 0x34, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x56, - 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x09, - 0x76, 0x61, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x35, 0x0a, 0x09, 0x61, 0x6c, 0x6c, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x2e, 0x41, 0x6c, 0x6c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x09, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x2a, 0x37, 0x0a, 0x0b, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x07, 0x0a, 0x03, 0x41, 0x6e, 0x79, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x78, 0x6c, 0x65, - 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x10, 0x02, 0x12, 0x0a, 0x0a, - 0x06, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x10, 0x03, 0x42, 0x54, 0x0a, 0x25, 0x63, 0x6c, 0x75, - 0x62, 0x2e, 0x6a, 0x6f, 0x79, 0x6c, 0x69, 0x6e, 0x6b, 0x2e, 0x62, 0x6a, 0x72, 0x74, 0x73, 0x73, - 0x2e, 0x61, 0x74, 0x73, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x73, 0x42, 0x10, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x5a, 0x19, 0x2e, 0x2f, 0x61, 0x74, 0x73, 0x2f, 0x76, 0x65, 0x72, 0x69, - 0x66, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x28, 0x08, 0x52, 0x04, 0x73, 0x68, 0x6f, 0x77, 0x12, 0x22, 0x0a, 0x0c, 0x68, 0x65, 0x61, 0x64, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x68, 0x65, 0x61, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, + 0x68, 0x65, 0x61, 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0a, 0x68, 0x65, 0x61, 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1e, 0x0a, 0x0a, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x22, 0xe7, 0x01, 0x0a, + 0x0f, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x35, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x72, 0x61, 0x69, 0x6e, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, + 0x72, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x64, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, + 0x38, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0d, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x3b, 0x0a, 0x0e, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb4, 0x01, 0x0a, 0x10, 0x41, 0x6c, 0x6c, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x31, 0x0a, 0x0a, 0x74, + 0x72, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x11, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x34, + 0x0a, 0x0b, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x37, 0x0a, 0x0c, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, + 0x0c, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x94, 0x01, + 0x0a, 0x13, 0x50, 0x75, 0x73, 0x68, 0x65, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x34, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x52, 0x09, 0x76, 0x61, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x35, 0x0a, + 0x09, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x41, 0x6c, 0x6c, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x09, 0x61, 0x6c, 0x6c, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x2a, 0x37, 0x0a, 0x0b, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x6e, 0x79, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, + 0x41, 0x78, 0x6c, 0x65, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x10, + 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x10, 0x03, 0x42, 0x54, 0x0a, + 0x25, 0x63, 0x6c, 0x75, 0x62, 0x2e, 0x6a, 0x6f, 0x79, 0x6c, 0x69, 0x6e, 0x6b, 0x2e, 0x62, 0x6a, + 0x72, 0x74, 0x73, 0x73, 0x2e, 0x61, 0x74, 0x73, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x42, 0x10, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x5a, 0x19, 0x2e, 0x2f, 0x61, 0x74, 0x73, 0x2f, + 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/ats/verify/simulation/simulation_manage.go b/ats/verify/simulation/simulation_manage.go index d1a9c20..3dca331 100644 --- a/ats/verify/simulation/simulation_manage.go +++ b/ats/verify/simulation/simulation_manage.go @@ -1,19 +1,20 @@ package simulation import ( - "joylink.club/bj-rtsts-server/ats/verify/protos/graphicData" - "joylink.club/bj-rtsts-server/ats/verify/simulation/wayside/model/device" "net" "strings" + "joylink.club/bj-rtsts-server/ats/verify/simulation/wayside/model/device" + "fmt" + "net/http" + "strconv" + "sync" + "go.uber.org/zap" "joylink.club/bj-rtsts-server/ats/verify/protos/state" "joylink.club/bj-rtsts-server/config" "joylink.club/bj-rtsts-server/dynamics" - "net/http" - "strconv" - "sync" "joylink.club/bj-rtsts-server/ats/verify/simulation/wayside/memory" "joylink.club/bj-rtsts-server/dto" @@ -41,7 +42,7 @@ func init() { for _, simulation := range GetSimulationArr() { sta, ok := simulation.Memory.Status.TrainStateMap.Load(strconv.Itoa(int(info.Number))) if ok { - memory.UpdateTrainState(simulation, convert(info, *sta.(*state.TrainState), memory.QueryMapVerifyStructure(simulation.MapId))) + memory.UpdateTrainState(simulation, convert(info, sta.(*state.TrainState), memory.QueryMapVerifyStructure(simulation.MapId))) break } } @@ -119,30 +120,15 @@ func GetSimulationArr() []*memory.VerifySimulation { return result } -func convert(info *dynamics.TrainInfo, sta state.TrainState, vs *memory.VerifyStructure) *state.TrainState { +func convert(info *dynamics.TrainInfo, sta *state.TrainState, vs *memory.VerifyStructure) *state.TrainState { zap.S().Debugf("原始消息:[%d-%d-%d]", info.Number, info.Link, info.LinkOffset) - modeller := vs.LinkModelMap[int32(info.Link)] - model := modeller.(*device.LinkModel) - for i, dp := range model.DevicePositions { - if uint32(dp.Offset) >= info.LinkOffset { - var linkRef *graphicData.RelatedRef - if i == 0 { - linkRef = model.SectionLinkMap[dp.Device.GetGraphicId()] - } else { - linkRef = model.SectionLinkMap[model.DevicePositions[i-1].Device.GetGraphicId()] - } - switch linkRef.DevicePort { - case 0: - sta.HeadLinkId = linkRef.GetId() - sta.HeadLinkOffset = int64(info.LinkOffset - uint32(dp.Offset)) - case 1: - sta.HeadLinkId = linkRef.GetId() - sta.HeadLinkOffset = int64(uint32(model.DevicePositions[i+1].Offset) - info.LinkOffset) - } - break - } - } - zap.S().Debugf("转换后的消息:[%d-%s-%d]", info.Number, sta.HeadLinkId, sta.HeadLinkOffset) + sta.HeadLinkId = strconv.Itoa(int(info.Link)) + sta.HeadLinkOffset = int64(info.LinkOffset) + id, port, offset := memory.QueryDeviceByCalcLink(vs, int32(info.Link), sta.HeadLinkOffset) + zap.S().Debugf("转换后的消息:[%d-%s-%d]", info.Number, id, sta.HeadLinkOffset) + sta.HeadDeviceId = id + sta.DevicePort = port + sta.HeadOffset = offset sta.Slope = int32(info.Slope) sta.Upslope = info.UpSlope sta.RunningUp = info.Up @@ -157,7 +143,7 @@ func convert(info *dynamics.TrainInfo, sta state.TrainState, vs *memory.VerifySt sta.TailSensorSpeed2 = info.TailSpeed2 * 3.6 sta.HeadRadarSpeed = info.HeadRadarSpeed * 3.6 sta.TailRadarSpeed = info.TailRadarSpeed * 3.6 - return &sta + return sta } func dynamicsRun(verifySimulation *memory.VerifySimulation) { diff --git a/ats/verify/simulation/wayside/memory/wayside_memory_map.go b/ats/verify/simulation/wayside/memory/wayside_memory_map.go index 7dae56a..f1634d8 100644 --- a/ats/verify/simulation/wayside/memory/wayside_memory_map.go +++ b/ats/verify/simulation/wayside/memory/wayside_memory_map.go @@ -16,6 +16,7 @@ import ( "joylink.club/bj-rtsts-server/ats/verify/simulation/wayside/model/section" "joylink.club/bj-rtsts-server/db/dbquery" "joylink.club/bj-rtsts-server/db/model" + "joylink.club/bj-rtsts-server/dto" ) // 仿真存储集合 ID @@ -82,7 +83,7 @@ func PublishMapVerifyStructure(graphic *model.PublishedGi) *VerifyStructure { // 初始化地图结构 initGraphicStructure(graphicStorage, verifyStructure, graphicInfoMap) // 构建设备间的关联关系(8.8 注释掉构建逻辑) - // buildDeviceRef(graphicInfoMap, verifyStructure) + buildDeviceRef(graphicInfoMap, verifyStructure) graphicDataMap.Store(graphic.ID, verifyStructure) return verifyStructure } @@ -106,6 +107,152 @@ func QueryMapVerifyStructure(mapId int32) *VerifyStructure { } } +// 根据区段,道岔偏移量返回linkID和link相对偏移量 +func QueryMapCalcLinkByDeviceInfo(mapId int32, id string, devicePort string, offset int64) (int32, int64) { + vm := QueryMapVerifyStructure(mapId) + sm := vm.PhysicalSectionModelMap[id] + tm := vm.SwitchDeviceModelMap[id] + if sm == nil && tm == nil { + panic(dto.ErrorDto{Code: dto.DataNotExist, Message: fmt.Sprintf("不存在ID【%s】的设备", id)}) + } + if sm != nil { // 区段添加 + sectionModel := sm.(*section.PhysicalSectionModel) + pointA := sectionModel.PortAxlePoints[face.A.Name()] + pointB := sectionModel.PortAxlePoints[face.B.Name()] + if pointA == nil && pointB == nil { + panic(dto.ErrorDto{Code: dto.DataNotExist, Message: fmt.Sprintf("区段【%s】计轴缺失", sectionModel.GraphicId)}) + } + // 获取计轴信息 + axlePointMap := make(map[string]*ref.DevicePosition) + // 确定link信息 + var linkId int32 + for k, v := range vm.LinkModelMap { + lm := v.(*device.LinkModel) + for _, p := range lm.DevicePositions { + if sectionModel.AxlePoints[p.Device.GetIndex()] != nil { + axlePointMap[p.Device.GetIndex()] = p + } + } + // 如果已经找到计轴则退出 + if len(axlePointMap) > 0 { + linkId = k + break + } + } + if len(axlePointMap) == 0 { + panic(dto.ErrorDto{Code: dto.DataNotExist, Message: fmt.Sprintf("未找到【%s】所在link", id)}) + } + // 计算相对位置 + if pointA != nil && pointB != nil { + linkA := axlePointMap[pointA.GetIndex()] + linkB := axlePointMap[pointB.GetIndex()] + if linkA == nil { + panic(dto.ErrorDto{Code: dto.DataNotExist, Message: fmt.Sprintf("link【%s】缺失计轴【%s】", id, pointA.GetGraphicId())}) + } + if linkB == nil { + panic(dto.ErrorDto{Code: dto.DataNotExist, Message: fmt.Sprintf("link【%s】缺失计轴【%s】", id, pointB.GetGraphicId())}) + } + if linkA.Offset > linkB.Offset { + return linkId, int64(linkA.Offset) - offset + } else { + return linkId, int64(linkA.Offset) + offset + } + } else if pointA != nil { + linkA := axlePointMap[pointA.GetIndex()] + if linkA == nil { + panic(dto.ErrorDto{Code: dto.DataNotExist, Message: fmt.Sprintf("link【%s】缺失计轴【%s】", id, pointA.GetGraphicId())}) + } + return linkId, int64(linkA.Offset) + offset + } else { + panic(dto.ErrorDto{Code: dto.DataNotExist, Message: fmt.Sprintf("link【%s】缺失计轴【%s】", id, pointA.GetGraphicId())}) + } + } else { + turnoutModel := tm.(*device.SwitchDeviceModel) + var link *device.LinkModel + var linkId int32 + var isStart bool + for i, v := range vm.LinkModelMap { + lm := v.(*device.LinkModel) + linkId = i + if lm.ARelatedSwitchRef.SwitchDevice.GetIndex() == turnoutModel.Index && lm.ARelatedSwitchRef.Port.Name() == devicePort { + isStart = true + link = lm + } else if lm.BRelatedSwitchRef.SwitchDevice.GetIndex() == turnoutModel.Index && lm.BRelatedSwitchRef.Port.Name() == devicePort { + link = lm + break + } + } + for _, v := range link.DevicePositions { + if v.Device.GetIndex() == turnoutModel.GetIndex() { + if isStart { + return linkId, int64(v.Offset) + offset + } else { + return linkId, int64(v.Offset) - offset + } + } + } + } + panic(dto.ErrorDto{Code: dto.DataNotExist, Message: fmt.Sprintf("未找到【%s】所在link", id)}) +} + +// 根据linkID和link相对偏移量返回区段,道岔偏移量 +// 设备ID、端口、偏移量 +func QueryMapDeviceByCalcLink(mapId int32, id int32, offset int64) (string, string, int64) { + vm := QueryMapVerifyStructure(mapId) + return QueryDeviceByCalcLink(vm, id, offset) +} + +func QueryDeviceByCalcLink(vm *VerifyStructure, id int32, offset int64) (string, string, int64) { + lm := vm.LinkModelMap[id] + if lm == nil { + panic(dto.ErrorDto{Code: dto.DataNotExist, Message: fmt.Sprintf("未找到link【%d】", id)}) + } + linkModel := lm.(*device.LinkModel) + if offset > int64(linkModel.Length) { + panic(dto.ErrorDto{Code: dto.DataNotExist, Message: fmt.Sprintf("偏移超出link范围【%d】", id)}) + } + var devicePosition *ref.DevicePosition + for _, v := range linkModel.DevicePositions { + if v.Offset > int32(offset) { + break + } else { + devicePosition = v + } + } + sm := vm.PhysicalSectionModelMap[devicePosition.Device.GetIndex()] + tm := vm.SwitchDeviceModelMap[devicePosition.Device.GetIndex()] + if sm == nil && tm == nil { + panic(dto.ErrorDto{Code: dto.DataNotExist, Message: fmt.Sprintf("不存在ID【%s】的设备", devicePosition.Device.GetIndex())}) + } + if sm != nil { + sectionModel := sm.(*section.PhysicalSectionModel) + // 判断AB走向 + pointA := sectionModel.PortAxlePoints[face.A.Name()] + pointB := sectionModel.PortAxlePoints[face.B.Name()] + if pointA == nil && pointB == nil { + panic(dto.ErrorDto{Code: dto.DataNotExist, Message: fmt.Sprintf("区段【%s】计轴缺失", sectionModel.GraphicId)}) + } + if pointA.GetIndex() == devicePosition.Device.GetIndex() { // A-B走向 + return sectionModel.Index, "", offset - int64(devicePosition.Offset) + } else if pointB.GetIndex() == devicePosition.Device.GetIndex() { // B-A走向,偏移为A - offset + for _, v := range linkModel.DevicePositions { + if v.Device.GetIndex() == pointA.GetIndex() { + return sectionModel.Index, "", int64(devicePosition.Offset) - offset + } + } + } + panic(dto.ErrorDto{Code: dto.DataNotExist, Message: fmt.Sprintf("区段【%s】计轴缺失", sectionModel.GraphicId)}) + } else { + if linkModel.ARelatedSwitchRef.SwitchDevice.GetIndex() == devicePosition.Device.GetIndex() { // 起始点 + return devicePosition.Device.GetIndex(), linkModel.ARelatedSwitchRef.Port.Name(), offset - int64(devicePosition.Offset) + } else if linkModel.BRelatedSwitchRef.SwitchDevice.GetIndex() == devicePosition.Device.GetIndex() { // 结束点 + return devicePosition.Device.GetIndex(), linkModel.BRelatedSwitchRef.Port.Name(), int64(devicePosition.Offset) - offset + } else { + panic(dto.ErrorDto{Code: dto.DataNotExist, Message: fmt.Sprintf("不存在ID【%s】的设备", devicePosition.Device.GetIndex())}) + } + } +} + // 初始化地图结构 func initGraphicStructure(graphicData *graphicData.RtssGraphicStorage, verifyStructure *VerifyStructure, graphicDataMap *GraphicInfoMapStructure) { // 初始化计轴信息 @@ -225,6 +372,7 @@ func initGraphicTurnout(turnouts []*graphicData.Turnout, data *VerifyStructure, Index: id, }, KilometerSystems: t.GetKilometerSystem(), + AxlePoints: make(map[string]*device.AxlePointDeviceModel), } } } @@ -270,9 +418,10 @@ func initGraphicPhysicalSections(physicalSections []*graphicData.Section, data * GraphicId: s.Common.Id, Index: id, }, - SwitchArea: len(s.AxleCountings) > 2, - AxlePoints: make(map[string]face.AxlePointDeviceModeller), - AxleSections: make(map[string]face.AxleSectionModeller), + SwitchArea: len(s.AxleCountings) > 2, + AxlePoints: make(map[string]face.AxlePointDeviceModeller), + AxleSections: make(map[string]face.AxleSectionModeller), + PortAxlePoints: make(map[string]face.AxlePointDeviceModeller), } } } @@ -427,6 +576,7 @@ func buildTurnoutDeviceRef(verifyStructure *VerifyStructure) { buildTurnoutCommMethod(s, s.SwitchRefA, face.A) buildTurnoutCommMethod(s, s.SwitchRefB, face.B) } + } func buildTurnoutCommMethod(s *section.LinkSectionModel, linkSwitch *ref.SwitchRef, p face.PortEnum) { @@ -543,6 +693,8 @@ func buildAxlePointDeviceRef(mapData *GraphicInfoMapStructure, verifyStructure * zap.S().Warnf("id为[%s]的计轴检测点关联的道岔[%s]不存在", id, relatedRef.Id) } switchDeviceModel := (verifyStructure.SwitchDeviceModelMap[strconv.Itoa(int(turnout.Index))]).(*device.SwitchDeviceModel) + // 道岔端口对应的计轴 + switchDeviceModel.AxlePoints[relatedRef.DevicePort.String()] = axlePointDeviceModel axlePointDeviceModel.SwitchDevices[switchDeviceModel.Index] = &ref.SwitchRef{ SwitchDevice: switchDeviceModel, Port: face.PortEnum(relatedRef.DevicePort), @@ -556,6 +708,7 @@ func buildAxlePointDeviceRef(mapData *GraphicInfoMapStructure, verifyStructure * if physicalSectionModel.SwitchArea { zap.S().Warnf("id为[%s]的计轴检测点proto数据关联岔区物理区段[%s]不存在", id, relatedRef.Id) } + physicalSectionModel.PortAxlePoints[relatedRef.DevicePort.String()] = axlePointDeviceModel switch relatedRef.DevicePort { case graphicData.RelatedRef_A: axlePointDeviceModel.LinePhysicalSectionA = physicalSectionModel diff --git a/ats/verify/simulation/wayside/memory/wayside_memory_train.go b/ats/verify/simulation/wayside/memory/wayside_memory_train.go index c1811d1..e035ac7 100644 --- a/ats/verify/simulation/wayside/memory/wayside_memory_train.go +++ b/ats/verify/simulation/wayside/memory/wayside_memory_train.go @@ -2,13 +2,13 @@ package memory import ( "fmt" - "go.uber.org/zap" - "joylink.club/bj-rtsts-server/ats/verify/simulation/wayside/model/device" "math" "net/http" "strconv" "sync" + "go.uber.org/zap" + "joylink.club/bj-rtsts-server/dto" "joylink.club/bj-rtsts-server/dynamics" @@ -27,39 +27,16 @@ func AddTrainState(simulation *VerifySimulation, status *state.TrainState) { status.Show = true //向动力学发送初始化请求 trainIndex, _ := strconv.ParseUint(status.Id, 10, 16) - var linkIndex uint64 - var linkOffset uint32 - vs := QueryMapVerifyStructure(simulation.MapId) -Outer: - for _, modeller := range vs.LinkModelMap { - link := modeller.(*device.LinkModel) - for dId, sl := range link.SectionLinkMap { - if sl.Id != status.HeadLinkId { - continue - } - linkIndex, _ = strconv.ParseUint(link.Index, 10, 16) - for i, dp := range link.DevicePositions { - if dp.Device.GetGraphicId() == dId { - switch sl.DevicePort { - case 0: - linkOffset = uint32(dp.Offset) + uint32(status.HeadLinkOffset) - case 1: - linkOffset = uint32(link.DevicePositions[i+1].Offset) - uint32(status.HeadLinkOffset) - } - break Outer - } - } - } - } + linkId, loffset := QueryMapCalcLinkByDeviceInfo(simulation.MapId, status.Id, status.DevicePort, status.HeadOffset) httpCode, _, err := dynamics.SendInitTrainReq(&dynamics.InitTrainInfo{ TrainIndex: uint16(trainIndex), - LinkIndex: uint16(linkIndex), - LinkOffset: linkOffset, + LinkIndex: uint16(linkId), + LinkOffset: uint32(loffset), Speed: uint16(math.Round(float64(status.Speed * 10))), Up: status.Up, }) zap.S().Debugf("添加列车:[%d-%s-%d]", trainIndex, status.HeadLinkId, status.HeadLinkOffset) - zap.S().Debugf("列车初始化:[%d-%d-%d]", trainIndex, linkIndex, linkOffset) + zap.S().Debugf("列车初始化:[%d-%d-%d]", trainIndex, linkId, loffset) if err != nil || httpCode != http.StatusOK { panic(dto.ErrorDto{Code: dto.LogicError, Message: fmt.Sprintf("动力学接口调用失败:[%d][%s]", httpCode, err)}) } diff --git a/ats/verify/simulation/wayside/model/device/switch_device_model.go b/ats/verify/simulation/wayside/model/device/switch_device_model.go index e2dc320..eb60aea 100644 --- a/ats/verify/simulation/wayside/model/device/switch_device_model.go +++ b/ats/verify/simulation/wayside/model/device/switch_device_model.go @@ -19,6 +19,8 @@ type SwitchDeviceModel struct { LinkRefB *ref.LinkRef //道岔C端连接的link LinkRefC *ref.LinkRef + // 道岔相连的计轴信息 + AxlePoints map[string]*AxlePointDeviceModel } // 获取道岔端口关联的轨道 diff --git a/ats/verify/simulation/wayside/model/section/physical_section_model.go b/ats/verify/simulation/wayside/model/section/physical_section_model.go index 9bfde61..32f033a 100644 --- a/ats/verify/simulation/wayside/model/section/physical_section_model.go +++ b/ats/verify/simulation/wayside/model/section/physical_section_model.go @@ -14,6 +14,8 @@ type PhysicalSectionModel struct { //该物理区段中包含的所有计轴区段 //key-图形id AxleSections map[string]face.AxleSectionModeller + // 端口对应的计轴信息 + PortAxlePoints map[string]face.AxlePointDeviceModeller } // 添加计轴检测点 diff --git a/bj-rtss-message b/bj-rtss-message index 7bc8fe7..269cba2 160000 --- a/bj-rtss-message +++ b/bj-rtss-message @@ -1 +1 @@ -Subproject commit 7bc8fe711369ec3be8b0dcfe8c96ab7ec48990c9 +Subproject commit 269cba242ab05d5c664386075386eb6a624bc861 diff --git a/db/dbquery/category.gen.go b/db/dbquery/category.gen.go index 5cc890c..8c41b76 100644 --- a/db/dbquery/category.gen.go +++ b/db/dbquery/category.gen.go @@ -32,6 +32,7 @@ func newCategory(db *gorm.DB, opts ...gen.DOOption) category { _category.Config = field.NewString(tableName, "config") _category.CreatedAt = field.NewTime(tableName, "created_at") _category.UpdateAt = field.NewTime(tableName, "update_at") + _category.Code = field.NewString(tableName, "code") _category.fillFieldMap() @@ -47,6 +48,7 @@ type category struct { Config field.String // 厂家配置 CreatedAt field.Time // 创建时间 UpdateAt field.Time // 修改时间 + Code field.String // 编码 fieldMap map[string]field.Expr } @@ -68,6 +70,7 @@ func (c *category) updateTableName(table string) *category { c.Config = field.NewString(table, "config") c.CreatedAt = field.NewTime(table, "created_at") c.UpdateAt = field.NewTime(table, "update_at") + c.Code = field.NewString(table, "code") c.fillFieldMap() @@ -84,12 +87,13 @@ func (c *category) GetFieldByName(fieldName string) (field.OrderExpr, bool) { } func (c *category) fillFieldMap() { - c.fieldMap = make(map[string]field.Expr, 5) + c.fieldMap = make(map[string]field.Expr, 6) c.fieldMap["id"] = c.ID c.fieldMap["name"] = c.Name c.fieldMap["config"] = c.Config c.fieldMap["created_at"] = c.CreatedAt c.fieldMap["update_at"] = c.UpdateAt + c.fieldMap["code"] = c.Code } func (c category) clone(db *gorm.DB) category { diff --git a/db/dbquery/drafting.gen.go b/db/dbquery/drafting.gen.go index 8b9b4da..e509a51 100644 --- a/db/dbquery/drafting.gen.go +++ b/db/dbquery/drafting.gen.go @@ -33,7 +33,7 @@ func newDrafting(db *gorm.DB, opts ...gen.DOOption) drafting { _drafting.CreatorID = field.NewInt32(tableName, "creator_id") _drafting.CreatedAt = field.NewTime(tableName, "created_at") _drafting.UpdateAt = field.NewTime(tableName, "update_at") - _drafting.Category = field.NewInt32(tableName, "category") + _drafting.Category = field.NewString(tableName, "category") _drafting.fillFieldMap() @@ -50,7 +50,7 @@ type drafting struct { CreatorID field.Int32 // 创建人id CreatedAt field.Time // 创建时间 UpdateAt field.Time // 修改时间 - Category field.Int32 // 厂家id + Category field.String // 厂家编码 fieldMap map[string]field.Expr } @@ -73,7 +73,7 @@ func (d *drafting) updateTableName(table string) *drafting { d.CreatorID = field.NewInt32(table, "creator_id") d.CreatedAt = field.NewTime(table, "created_at") d.UpdateAt = field.NewTime(table, "update_at") - d.Category = field.NewInt32(table, "category") + d.Category = field.NewString(table, "category") d.fillFieldMap() diff --git a/db/dbquery/published_gi.gen.go b/db/dbquery/published_gi.gen.go index 0df396a..309ddab 100644 --- a/db/dbquery/published_gi.gen.go +++ b/db/dbquery/published_gi.gen.go @@ -32,7 +32,7 @@ func newPublishedGi(db *gorm.DB, opts ...gen.DOOption) publishedGi { _publishedGi.Proto = field.NewBytes(tableName, "proto") _publishedGi.UserID = field.NewInt32(tableName, "user_id") _publishedGi.PublishAt = field.NewTime(tableName, "publish_at") - _publishedGi.Category = field.NewInt32(tableName, "category") + _publishedGi.Category = field.NewString(tableName, "category") _publishedGi.Note = field.NewString(tableName, "note") _publishedGi.Status = field.NewInt32(tableName, "status") @@ -50,7 +50,7 @@ type publishedGi struct { Proto field.Bytes // 图形界面数据 UserID field.Int32 // 发布用户id PublishAt field.Time // 发布时间 - Category field.Int32 // 厂家信息 + Category field.String // 厂家信息 Note field.String // 发布描述 Status field.Int32 // 显示状态 @@ -74,7 +74,7 @@ func (p *publishedGi) updateTableName(table string) *publishedGi { p.Proto = field.NewBytes(table, "proto") p.UserID = field.NewInt32(table, "user_id") p.PublishAt = field.NewTime(table, "publish_at") - p.Category = field.NewInt32(table, "category") + p.Category = field.NewString(table, "category") p.Note = field.NewString(table, "note") p.Status = field.NewInt32(table, "status") diff --git a/db/model/category.gen.go b/db/model/category.gen.go index 32d619e..f8075ce 100644 --- a/db/model/category.gen.go +++ b/db/model/category.gen.go @@ -17,6 +17,7 @@ type Category struct { Config string `gorm:"column:config;comment:厂家配置" json:"config"` // 厂家配置 CreatedAt time.Time `gorm:"column:created_at;not null;comment:创建时间" json:"created_at"` // 创建时间 UpdateAt time.Time `gorm:"column:update_at;comment:修改时间" json:"update_at"` // 修改时间 + Code string `gorm:"column:code;comment:编码" json:"code"` // 编码 } // TableName Category's table name diff --git a/db/model/drafting.gen.go b/db/model/drafting.gen.go index a849186..336317f 100644 --- a/db/model/drafting.gen.go +++ b/db/model/drafting.gen.go @@ -18,7 +18,7 @@ type Drafting struct { CreatorID int32 `gorm:"column:creator_id;not null;comment:创建人id" json:"creator_id"` // 创建人id CreatedAt time.Time `gorm:"column:created_at;not null;comment:创建时间" json:"created_at"` // 创建时间 UpdateAt time.Time `gorm:"column:update_at;comment:修改时间" json:"update_at"` // 修改时间 - Category int32 `gorm:"column:category;comment:厂家id" json:"category"` // 厂家id + Category string `gorm:"column:category;comment:厂家编码" json:"category"` // 厂家编码 } // TableName Drafting's table name diff --git a/db/model/published_gi.gen.go b/db/model/published_gi.gen.go index fcb9c68..78ba129 100644 --- a/db/model/published_gi.gen.go +++ b/db/model/published_gi.gen.go @@ -17,7 +17,7 @@ type PublishedGi struct { Proto []byte `gorm:"column:proto;not null;comment:图形界面数据" json:"proto"` // 图形界面数据 UserID int32 `gorm:"column:user_id;not null;comment:发布用户id" json:"user_id"` // 发布用户id PublishAt time.Time `gorm:"column:publish_at;not null;comment:发布时间" json:"publish_at"` // 发布时间 - Category int32 `gorm:"column:category;comment:厂家信息" json:"category"` // 厂家信息 + Category string `gorm:"column:category;comment:厂家信息" json:"category"` // 厂家信息 Note string `gorm:"column:note;comment:发布描述" json:"note"` // 发布描述 Status int32 `gorm:"column:status;default:1;comment:显示状态" json:"status"` // 显示状态 } diff --git a/dto/category.go b/dto/category.go index cd7cf97..60f5d45 100644 --- a/dto/category.go +++ b/dto/category.go @@ -7,6 +7,7 @@ type PageCategoryReqDto struct { type CategoryDto struct { Id int `json:"id" form:"id"` + Code string `json:"code" form:"code"` Name string `json:"name" form:"name"` Config string `json:"config" form:"config"` } diff --git a/dto/drafting.go b/dto/drafting.go index 49616bc..95b54fb 100644 --- a/dto/drafting.go +++ b/dto/drafting.go @@ -8,7 +8,7 @@ type PageDraftingReqDto struct { type DraftingDto struct { Id int `json:"id" form:"id"` Name string `json:"name" form:"name"` - Category int32 `json:"category" form:"category"` + Category string `json:"category" form:"category"` Proto []byte `json:"proto" from:"proto"` } diff --git a/dto/simulation.go b/dto/simulation.go index 3b2b8eb..ca43da7 100644 --- a/dto/simulation.go +++ b/dto/simulation.go @@ -26,6 +26,12 @@ type AddTrainReqDto struct { HeadLinkId string `json:"headLinkId" form:"headLinkId"` //车头所在link内的偏移量,单位为mm HeadLinkOffset int64 `json:"headLinkOffset" form:"headLinkOffset"` + //物理区段、道岔ID + Id string `json:"id" form:"id"` + //道岔端口 + DevicePort string `json:"devicePort" form:"devicePort"` + //车头所在link内的偏移量,单位为mm + HeadOffset int64 `json:"headOffset" form:"headOffset"` } // 为仿真添加测试车请求 diff --git a/service/category.go b/service/category.go index 6dc6531..b5255a7 100644 --- a/service/category.go +++ b/service/category.go @@ -30,7 +30,7 @@ func ListCategoryQuery(query *dto.PageCategoryReqDto) ([]*model.Category, error) if query.Name != "" { dq = dq.Where(d.Name.Like(fmt.Sprintf("%%%s%%", query.Name))) } - records, err := dq.Debug().Select(d.ID, d.Name, d.UpdateAt, d.CreatedAt).Find() + records, err := dq.Debug().Select(d.ID, d.Code, d.Name, d.UpdateAt, d.CreatedAt).Find() if err != nil { panic(err) } @@ -44,6 +44,7 @@ func CreateCategory(dto *dto.CategoryDto) (*model.Category, error) { } d := model.Category{ Name: dto.Name, + Code: dto.Code, Config: dto.Config, CreatedAt: time.Now(), UpdateAt: time.Now(),