From 44a78f184ca10fba46df2567496895e179d4ac6c Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期日, 08 十月 2023 11:47:47 +0800
Subject: [PATCH] 增加更新工艺参数接口

---
 model/procedures.go |   31 +++++++++++++++++++++++++++++++
 1 files changed, 31 insertions(+), 0 deletions(-)

diff --git a/model/procedures.go b/model/procedures.go
index 8d893e6..c4229a3 100644
--- a/model/procedures.go
+++ b/model/procedures.go
@@ -7,6 +7,7 @@
 	"encoding/json"
 	"fmt"
 	"gorm.io/gorm"
+	"gorm.io/gorm/clause"
 )
 
 type (
@@ -36,6 +37,7 @@
 		EndTimeMin   int64
 		StatusNot    ProcedureStatus
 		ProcedureIds []string
+		Channels     []int32
 	}
 )
 
@@ -133,6 +135,16 @@
 	return slf
 }
 
+func (slf *ProceduresSearch) SetChannels(channels []int32) *ProceduresSearch {
+	slf.Channels = channels
+	return slf
+}
+
+func (slf *ProceduresSearch) SetChannel(channel int32) *ProceduresSearch {
+	slf.Channel = channel
+	return slf
+}
+
 func (slf *ProceduresSearch) build() *gorm.DB {
 	var db = slf.Orm.Model(&Procedures{})
 
@@ -180,6 +192,10 @@
 		db = db.Where("procedure_id = ?", slf.ProcedureID)
 	}
 
+	if len(slf.Channels) > 0 {
+		db = db.Where("channel in ?", slf.Channels)
+	}
+
 	return db
 }
 
@@ -205,6 +221,21 @@
 	return nil
 }
 
+func (slf *ProceduresSearch) Upsert(record *Procedures) error {
+	var db = slf.build()
+	old, err := slf.First()
+	if err != gorm.ErrRecordNotFound && old.ID != 0 {
+		record.ID = old.ID
+	}
+	if err := db.Clauses(clause.OnConflict{
+		UpdateAll: true,
+	}).Create(&record).Error; err != nil {
+		return fmt.Errorf("save err: %v, record: %+v", err, record)
+	}
+
+	return nil
+}
+
 func (slf *ProceduresSearch) Updates(record *Procedures) error {
 	var db = slf.build()
 

--
Gitblit v1.8.0