From e77e66d681cd2676675d194211f171744e23b479 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期四, 14 九月 2023 19:05:54 +0800
Subject: [PATCH] 从云端获取plc配置和plc地址

---
 nsq/msg_handler.go |   67 +++++++++++++++++++++------------
 1 files changed, 42 insertions(+), 25 deletions(-)

diff --git a/nsq/msg_handler.go b/nsq/msg_handler.go
index 36b5b9a..5237309 100644
--- a/nsq/msg_handler.go
+++ b/nsq/msg_handler.go
@@ -11,6 +11,7 @@
 	"apsClient/utils/file"
 	"encoding/json"
 	"fmt"
+	"github.com/mitchellh/mapstructure"
 	"github.com/spf13/cast"
 	"gorm.io/gorm"
 	"strings"
@@ -123,33 +124,49 @@
 		Topic:   slf.Topic,
 		Message: data,
 	}
-	if len(resp.KeyData) == 0 || len(resp.AddressData) == 0 {
-		return nil
-	}
-	//鍐欏叆鍒版枃浠�
-	err = file.WriteFile(fmt.Sprintf("%s%s", constvar.PlcAddressDataPath, constvar.PlcAddressDataKeyFileName), resp.KeyData)
-	if err != nil {
-		return err
-	}
-	err = file.WriteFile(fmt.Sprintf("%s%s", constvar.PlcAddressDataPath, constvar.PlcAddressDataValueFileName), resp.AddressData)
-	if err != nil {
-		return err
-	}
-	//鍐欏叆鍒板唴瀛�
-	keyString := string(resp.KeyData)
-	addressString := string(resp.AddressData)
+	if len(resp.KeyData) != 0 && len(resp.AddressData) != 0 {
+		//鍐欏叆鍒版枃浠�
+		err = file.WriteFile(fmt.Sprintf("%s%s", constvar.PlcAddressDataPath, constvar.PlcAddressDataKeyFileName), resp.KeyData)
+		if err != nil {
+			return err
+		}
+		err = file.WriteFile(fmt.Sprintf("%s%s", constvar.PlcAddressDataPath, constvar.PlcAddressDataValueFileName), resp.AddressData)
+		if err != nil {
+			return err
+		}
+		//鍐欏叆鍒板唴瀛�
+		keyString := string(resp.KeyData)
+		addressString := string(resp.AddressData)
 
-	keys := strings.Split(keyString, "\n")
-	addresses := strings.Split(addressString, "\n")
-	if len(keys) != len(addresses) {
-		logx.Error("plc address message error: key length not equal address length")
-		return nil
+		keys := strings.Split(keyString, "\n")
+		addresses := strings.Split(addressString, "\n")
+		if len(keys) != len(addresses) {
+			logx.Error("plc address message error: key length not equal address length")
+			return nil
+		}
+		for i := 0; i < len(keys); i++ {
+			key := strings.ReplaceAll(keys[i], "\r", "")
+			address := cast.ToInt(strings.ReplaceAll(addresses[i], "\r", ""))
+			plc_address.Set(key, address)
+			logx.Infof("plc address set ok: key:%v, address:%v", key, address)
+		}
 	}
-	for i := 0; i < len(keys); i++ {
-		key := strings.ReplaceAll(keys[i], "\r", "")
-		address := cast.ToInt(strings.ReplaceAll(addresses[i], "\r", ""))
-		plc_address.Set(key, address)
-		logx.Infof("plc address set ok: key:%v, address:%v", key, address)
+
+	var record model.DevicePlc
+	err = mapstructure.Decode(resp.PlcConfig, &record)
+	if err != nil {
+		logx.Infof("decode from PlcAddressList to DevicePlc  Details err:%v", err)
+	}
+	err = mapstructure.Decode(resp.PlcAddressList, &record.Details)
+	if err != nil {
+		logx.Infof("decode from PlcAddressList to DevicePlc  Details err:%v", err)
+	}
+	detail, err := json.Marshal(record.Details)
+	record.Detail = string(detail)
+	record.Id = 1
+	err = model.NewDevicePlcSearch().SetId(record.Id).Save(&record)
+	if err != nil {
+		return err
 	}
 	return nil
 }

--
Gitblit v1.8.0