From a303829fe0c19d5683d8dddb5a9a8d0001d40ef5 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期五, 20 十月 2023 22:48:07 +0800 Subject: [PATCH] 保存全部plc地址 --- nsq/msg_handler.go | 12 ++++++++++-- model/device_plc.go | 10 ++++++++++ service/device_plc.go | 3 ++- main.go | 2 ++ 4 files changed, 24 insertions(+), 3 deletions(-) diff --git a/main.go b/main.go index ceb0a08..7acd081 100644 --- a/main.go +++ b/main.go @@ -39,6 +39,8 @@ "production_progress", "work_order", "task_status_sync", + "device", + "device_plc", } agent := serf.InitAgent("apsClient", syncTables, sqlitex.GetDB()) diff --git a/model/device_plc.go b/model/device_plc.go index 4136ecb..0f35260 100644 --- a/model/device_plc.go +++ b/model/device_plc.go @@ -13,6 +13,7 @@ // DevicePlc 璁惧鐨凱LC閰嶇疆 DevicePlc struct { gorm.Model + DeviceID string `gorm:"unique;column:device_id;type:varchar(255);not null;default ''" json:"deviceID"` //璁惧缂栧彿 Brand string `gorm:"type:varchar(191)" json:"brand"` Method constvar.PlcMethod `gorm:"type:varchar(191)" json:"method"` Address string `gorm:"type:varchar(191)" json:"address"` //plc ip鍦板潃锛� method = modbusTCP鐢� @@ -84,6 +85,11 @@ return slf } +func (slf *DevicePlcSearch) SetDeviceId(deviceId string) *DevicePlcSearch { + slf.DeviceID = deviceId + return slf +} + func (slf *DevicePlcSearch) build() *gorm.DB { var db = slf.Orm.Table(slf.TableName()) @@ -91,6 +97,10 @@ db = db.Where("id = ?", slf.ID) } + if slf.DeviceID != "" { + db = db.Where("device_id = ?", slf.DeviceID) + } + if slf.Order != "" { db = db.Order(slf.Order) } diff --git a/nsq/msg_handler.go b/nsq/msg_handler.go index 1f32e77..d0cea52 100644 --- a/nsq/msg_handler.go +++ b/nsq/msg_handler.go @@ -297,8 +297,16 @@ } detail, err := json.Marshal(record.Details) record.Detail = string(detail) - record.ID = 1 - err = model.NewDevicePlcSearch().SetId(record.ID).Save(&record) + + oldPlcRecord, err := model.NewDevicePlcSearch().SetDeviceId(msg.ID).First() + if err == gorm.ErrRecordNotFound { + err = model.NewDevicePlcSearch().Create(&record) + } else if record.Port != oldPlcRecord.Port || + record.Method != oldPlcRecord.Method || + record.Address != oldPlcRecord.Address || + record.Detail != oldPlcRecord.Detail { + err = model.NewDevicePlcSearch().SetDeviceId(msg.ID).Save(&record) + } if err != nil { return err } diff --git a/service/device_plc.go b/service/device_plc.go index 90c3e51..fc5fadc 100644 --- a/service/device_plc.go +++ b/service/device_plc.go @@ -1,6 +1,7 @@ package service import ( + "apsClient/conf" "apsClient/model" "apsClient/model/request" "apsClient/pkg/ecode" @@ -18,7 +19,7 @@ } func (slf DevicePlcService) GetDevicePlc() (*model.DevicePlc, int) { - DevicePlc, err := model.NewDevicePlcSearch().SetOrder("id desc").First() + DevicePlc, err := model.NewDevicePlcSearch().SetDeviceId(conf.Conf.System.DeviceId).First() if err == gorm.ErrRecordNotFound { return &model.DevicePlc{ Brand: "", -- Gitblit v1.8.0