From b555874608be2e4bb40cceba60b497c04caef842 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期二, 12 九月 2023 14:17:51 +0800
Subject: [PATCH] 三菱协议更改

---
 nsq/msg_handler.go |   38 ++++++++++++++++++++++++++++----------
 1 files changed, 28 insertions(+), 10 deletions(-)

diff --git a/nsq/msg_handler.go b/nsq/msg_handler.go
index 00c63d5..180f1b5 100644
--- a/nsq/msg_handler.go
+++ b/nsq/msg_handler.go
@@ -49,15 +49,16 @@
 		}
 
 		procedureRecords := make([]*model.Procedures, 0, len(task.Procedures))
+		procedureIds := make([]string, 0, len(task.Procedures))
 		for _, procedure := range task.Procedures {
 			procedureRecord := model.Procedures{
 				WorkOrderID:    task.WorkOrder.WorkOrderID,
 				OrderID:        task.WorkOrder.OrderID,
 				DeviceID:       procedure.DeviceID,
+				ProcedureID:    procedure.ProcedureID,
 				StartTime:      procedure.StartTime,
 				EndTime:        procedure.EndTime,
 				Status:         model.ProcedureStatusWaitProcess,
-				ProcedureData:  "",
 				ProceduresInfo: common.ProductProcedure{},
 			}
 			procedureData, err := json.Marshal(procedure)
@@ -66,6 +67,7 @@
 			}
 			procedureRecord.ProcedureData = string(procedureData)
 			procedureRecords = append(procedureRecords, &procedureRecord)
+			procedureIds = append(procedureIds, procedure.ProcedureID)
 		}
 
 		var orderRecord model.Order
@@ -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).Updates(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())
@@ -101,6 +116,14 @@
 	if err != nil {
 		logx.Errorf("ScheduleTask HandleMessage Unmarshal json err: %v", err.Error())
 		return nil
+	}
+	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 {
 		return nil
@@ -129,11 +152,6 @@
 		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)
-	}
-	//閫氱煡鍥炲鏀跺埌
-	ReceivedMessageChan <- &ReceivedMessage{
-		Topic:   slf.Topic,
-		Message: data,
 	}
 	return nil
 }
@@ -179,7 +197,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