From b331c9990a0396301e934daffe095f99d62d1c89 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期三, 27 九月 2023 15:58:49 +0800
Subject: [PATCH] 任务获取修改,状态2只返回已开始和已结束的

---
 nsq/msg_handler.go |  101 ++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 72 insertions(+), 29 deletions(-)

diff --git a/nsq/msg_handler.go b/nsq/msg_handler.go
index af96211..4ea8c9c 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"
@@ -54,10 +55,11 @@
 				WorkOrderID:    task.WorkOrder.WorkOrderID,
 				OrderID:        task.WorkOrder.OrderID,
 				DeviceID:       procedure.DeviceID,
+				ProcedureID:    procedure.ProcedureID,
 				StartTime:      procedure.StartTime,
 				EndTime:        procedure.EndTime,
 				Status:         model.ProcedureStatusWaitProcess,
-				ProcedureData:  "",
+				Channel:        procedure.Channel,
 				ProceduresInfo: common.ProductProcedure{},
 			}
 			procedureData, err := json.Marshal(procedure)
@@ -77,10 +79,23 @@
 		}
 
 		err = model.WithTransaction(func(db *gorm.DB) error {
-			if err = model.NewOrderSearch(db).Save(&orderRecord); err != nil {
-				return err
+			if oldWorkOrder != nil && oldWorkOrder.WorkOrderID != "" {
+				if err = model.NewOrderSearch(db).SetId(oldWorkOrder.ID).Updates(&orderRecord); err != nil {
+					return err
+				}
+				for _, procedure := range procedureRecords {
+					err = model.NewProceduresSearch(db).SetWorkOrderId(procedure.WorkOrderID).SetProcedureId(procedure.ProcedureID).Upsert(procedure)
+					if err != nil {
+						return err
+					}
+				}
+			} else {
+				if err = model.NewOrderSearch(db).Create(&orderRecord); err != nil {
+					return err
+				}
+				return model.NewProceduresSearch(db).CreateBatch(procedureRecords)
 			}
-			return model.NewProceduresSearch(db).CreateBatch(procedureRecords)
+			return nil
 		})
 		if err != nil {
 			logx.Errorf(" save task message error err: %v", err.Error())
@@ -100,37 +115,65 @@
 	err = json.Unmarshal(data, &resp)
 	if err != nil {
 		logx.Errorf("ScheduleTask HandleMessage Unmarshal json err: %v", err.Error())
-		return err
-	}
-	//鍐欏叆鍒版枃浠�
-	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
 	}
-	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)
+	if resp.DeviceId != conf.Conf.System.DeviceId {
+		return nil
 	}
 	//閫氱煡鍥炲鏀跺埌
 	ReceivedMessageChan <- &ReceivedMessage{
 		Topic:   slf.Topic,
 		Message: data,
+	}
+	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
+		}
+		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)
+		}
+	}
+
+	if resp.PlcConfig.Method == "" {
+		return nil
+	}
+
+	resp.PlcConfig.Method.ConvertToEnglish()
+
+	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
 }
@@ -176,7 +219,7 @@
 		logx.Infof("unmarshal process params sync err :%s", err)
 		return err
 	}
-	err = model.NewProcessModelSearch().Create(&processModel)
+	err = model.NewProcessModelSearch().Save(&processModel)
 	if err != nil {
 		logx.Infof("save process params sync err :%s", err)
 		return err

--
Gitblit v1.8.0