From 283433e329dbd8de66f763caa7add995685b9d50 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期三, 06 九月 2023 21:47:09 +0800
Subject: [PATCH] 生产看板下发多次任务后,数据库中相同工单的数据应不重复

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

diff --git a/nsq/msg_handler.go b/nsq/msg_handler.go
index c5d5bf9..6e8df60 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,9 +79,15 @@
 		}
 
 		err = model.WithTransaction(func(db *gorm.DB) error {
+			if err = model.NewOrderSearch(db).SetWorkOrderId(task.WorkOrder.WorkOrderID).Delete(); err != nil {
+				return err
+			}
 			if err = model.NewOrderSearch(db).Save(&orderRecord); err != nil {
 				return err
 			}
+			if err = model.NewProceduresSearch(db).SetProcedureIds(procedureIds).Delete(); err != nil {
+				return err
+			}
 			return model.NewProceduresSearch(db).CreateBatch(procedureRecords)
 		})
 		if err != nil {

--
Gitblit v1.8.0