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