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