From c8303f55819e2d8b5a56e6316f79c2250d9b659c Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期日, 08 十月 2023 21:16:09 +0800
Subject: [PATCH] 工序更新时保存使用的工艺参数编号

---
 nsq/msg_handler.go |   54 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 52 insertions(+), 2 deletions(-)

diff --git a/nsq/msg_handler.go b/nsq/msg_handler.go
index b13dd4b..175f3e7 100644
--- a/nsq/msg_handler.go
+++ b/nsq/msg_handler.go
@@ -59,6 +59,7 @@
 				StartTime:      procedure.StartTime,
 				EndTime:        procedure.EndTime,
 				Status:         model.ProcedureStatusWaitProcess,
+				Channel:        procedure.Channel,
 				ProceduresInfo: common.ProductProcedure{},
 			}
 			procedureData, err := json.Marshal(procedure)
@@ -83,7 +84,7 @@
 					return err
 				}
 				for _, procedure := range procedureRecords {
-					err = model.NewProceduresSearch(db).SetWorkOrderId(procedure.WorkOrderID).SetProcedureId(procedure.ProcedureID).Updates(procedure)
+					err = model.NewProceduresSearch(db).SetWorkOrderId(procedure.WorkOrderID).SetProcedureId(procedure.ProcedureID).Upsert(procedure)
 					if err != nil {
 						return err
 					}
@@ -218,10 +219,59 @@
 		logx.Infof("unmarshal process params sync err :%s", err)
 		return err
 	}
-	err = model.NewProcessModelSearch().Save(&processModel)
+	err = model.WithTransaction(func(db *gorm.DB) error {
+		err = model.NewProcessModelSearch().SetOrm(db).SetProduct(processModel.Product).SetProcedure(processModel.Procedure).
+			UpdateByMap(map[string]interface{}{"is_new": 0})
+		if err != nil {
+			return err
+		}
+		processModel.IsNew = true
+		return model.NewProcessModelSearch().SetOrm(db).Create(&processModel)
+	})
+
 	if err != nil {
 		logx.Infof("save process params sync err :%s", err)
 		return err
 	}
 	return nil
 }
+
+type DeviceUpdate struct {
+	Topic string
+}
+
+func (slf *DeviceUpdate) HandleMessage(data []byte) (err error) {
+	logx.Infof("get a device update message :%s", data)
+	var device common.Device
+	err = json.Unmarshal(data, &device)
+	if err != nil {
+		logx.Infof("unmarshal device update msg err :%s", err)
+		return err
+	}
+
+	procedures := make([]string, 0, len(device.DeviceProcedureAttr))
+	for _, attr := range device.DeviceProcedureAttr {
+		procedures = append(procedures, attr.ProcedureName)
+	}
+
+	deviceRecord := &model.Device{
+		DeviceID:         device.ID,
+		Procedures:       strings.Join(procedures, ","),
+		ExtChannelAmount: device.ExtChannelAmount,
+	}
+
+	oldRecord, err := model.NewDeviceSearch().SetDeviceId(device.ID).First()
+	if err == gorm.ErrRecordNotFound {
+		err = model.NewDeviceSearch().Create(deviceRecord)
+	} else {
+		deviceRecord.ID = oldRecord.ID
+		err = model.NewDeviceSearch().Save(deviceRecord)
+	}
+
+	if err != nil {
+		logx.Infof("save device  record err :%s", err)
+		return err
+	}
+
+	return nil
+}

--
Gitblit v1.8.0