From f67698f7abf35689f24fdb17827249de79034a95 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期四, 10 八月 2023 17:23:12 +0800
Subject: [PATCH] 服务单增加筛选条件

---
 model/serviceOrder.go |   74 +++++++++++++++++++++++++++---------
 1 files changed, 55 insertions(+), 19 deletions(-)

diff --git a/model/serviceOrder.go b/model/serviceOrder.go
index 4e30c5a..2e4ae18 100644
--- a/model/serviceOrder.go
+++ b/model/serviceOrder.go
@@ -6,6 +6,7 @@
 	"errors"
 	"fmt"
 	"gorm.io/gorm"
+	"gorm.io/gorm/clause"
 )
 
 type (
@@ -32,25 +33,24 @@
 		PriorityLevel   PriorityLevel `gorm:"foreignKey:PriorityLevelId"`
 		AppointmentTime string        `gorm:"appointment_time" json:"appointmentTime"` // 棰勭害涓婇棬鏃堕棿
 		SaleChanceId    int           `gorm:"sale_leads" json:"saleChanceId"`          // 閿�鍞満浼歩d
-
-		SaleChance     SaleChance `gorm:"foreignKey:SaleChanceId"`
-		FaultTypeId    int        `gorm:"severity_id" json:"faultTypeId"` // 鏁呴殰绫诲埆id
-		FaultType      FaultType  `gorm:"foreignKey:FaultTypeId"`
-		SeverityId     int        `gorm:"severity_id" json:"severity"` // 涓ラ噸绋嬪害id
-		Severity       Severity   `gorm:"foreignKey:SeverityId"`
-		Status         int        `gorm:"status" json:"status"`              // 澶勭悊鐘舵��
-		ExpectTime     string     `gorm:"expect_time" json:"expectTime"`     // 甯屾湜澶勭悊鏃堕棿
-		RealTime       string     `gorm:"real_time" json:"realTime"`         // 瀹為檯澶勭悊鏃堕棿
-		CarFare        float64    `gorm:"car_fare" json:"carFare"`           // 浜ら�氳垂
-		ChargeAmount   float64    `gorm:"charge_amount" json:"chargeAmount"` // 鏀惰垂閲戦
-		TimeSpentId    int        `gorm:"time_spent_id" json:"timeSpentId"`  // 鑺辫垂鏃堕棿
-		TimeSpent      TimeSpent  `gorm:"foreignKey:TimeSpentId"`
-		FaqId          int        `gorm:"problem_id" json:"faqId"` // 甯歌闂id
-		Faq            Faq        `gorm:"foreignKey:FaqId"`
-		ProblemDesc    string     `gorm:"problem_desc" json:"problemDesc"`       // 闂鎻忚堪
-		Solution       string     `gorm:"solution" json:"solution"`              // 瑙e喅鏂规硶
-		SolutionRemark string     `gorm:"solution_remark" json:"solutionRemark"` // 鍐呴儴澶囨敞
-		Remark         string     `gorm:"remark" json:"remark"`                  // 澶囨敞
+		SaleChance      SaleChance    `gorm:"foreignKey:SaleChanceId"`
+		FaultTypeId     int           `gorm:"severity_id" json:"faultTypeId"` // 鏁呴殰绫诲埆id
+		FaultType       FaultType     `gorm:"foreignKey:FaultTypeId"`
+		SeverityId      int           `gorm:"severity_id" json:"severity"` // 涓ラ噸绋嬪害id
+		Severity        Severity      `gorm:"foreignKey:SeverityId"`
+		Status          int           `gorm:"status" json:"status"`              // 澶勭悊鐘舵��
+		ExpectTime      string        `gorm:"expect_time" json:"expectTime"`     // 甯屾湜澶勭悊鏃堕棿
+		RealTime        string        `gorm:"real_time" json:"realTime"`         // 瀹為檯澶勭悊鏃堕棿
+		CarFare         float64       `gorm:"car_fare" json:"carFare"`           // 浜ら�氳垂
+		ChargeAmount    float64       `gorm:"charge_amount" json:"chargeAmount"` // 鏀惰垂閲戦
+		TimeSpentId     int           `gorm:"time_spent_id" json:"timeSpentId"`  // 鑺辫垂鏃堕棿
+		TimeSpent       TimeSpent     `gorm:"foreignKey:TimeSpentId"`
+		FaqId           int           `gorm:"problem_id" json:"faqId"` // 甯歌闂id
+		Faq             Faq           `gorm:"foreignKey:FaqId"`
+		ProblemDesc     string        `gorm:"problem_desc" json:"problemDesc"`       // 闂鎻忚堪
+		Solution        string        `gorm:"solution" json:"solution"`              // 瑙e喅鏂规硶
+		SolutionRemark  string        `gorm:"solution_remark" json:"solutionRemark"` // 鍐呴儴澶囨敞
+		Remark          string        `gorm:"remark" json:"remark"`                  // 澶囨敞
 	}
 
 	// ServiceOrderSearch 鏈嶅姟鍗曟悳绱㈡潯浠�
@@ -94,6 +94,22 @@
 			Preload("Severity").
 			Preload("Faq")
 	}
+	switch slf.KeywordType {
+	case constvar.ServiceOrderKeywordClientName:
+		db = db.Joins("Client", clause.LeftJoin).Where("Client.name like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
+	case constvar.ServiceOrderKeywordOrderNumber:
+		db = db.Where("service_number = ?", fmt.Sprintf("%%%s%%", slf.Keyword))
+	case constvar.ServiceOrderKeywordSubject:
+		db = db.Where("subject = ?", fmt.Sprintf("%%%s%%", slf.Keyword))
+	case constvar.ServiceOrderKeywordRealProcessTime:
+		db = db.Where("real_time = ?", fmt.Sprintf("%%%s%%", slf.Keyword))
+	case constvar.ServiceOrderKeywordServiceMan:
+		db = db.Joins("left join user on user.id = service_order.service_man_id").Where("user.username like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
+	case constvar.ServiceOrderKeywordServiceType:
+		db = db.Joins("ServiceType", clause.LeftJoin).Where("ServiceType.name like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
+	case constvar.ServiceOrderKeywordFaultType:
+		db = db.Joins("FaultType", clause.LeftJoin).Where("FaultType.name like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
+	}
 
 	return db
 }
@@ -125,6 +141,26 @@
 	return slf
 }
 
+func (slf *ServiceOrderSearch) SetPage(page, size int) *ServiceOrderSearch {
+	slf.PageNum, slf.PageSize = page, size
+	return slf
+}
+
+func (slf *ServiceOrderSearch) SetKeywordType(keyword constvar.ServiceOrderKeywordType) *ServiceOrderSearch {
+	slf.KeywordType = keyword
+	return slf
+}
+
+func (slf *ServiceOrderSearch) SetQueryClass(queryClass constvar.ServiceOrderQueryClass) *ServiceOrderSearch {
+	slf.QueryClass = queryClass
+	return slf
+}
+
+func (slf *ServiceOrderSearch) SetKeyword(keyword string) *ServiceOrderSearch {
+	slf.Keyword = keyword
+	return slf
+}
+
 func (slf *ServiceOrderSearch) SetPreload(preload bool) *ServiceOrderSearch {
 	slf.Preload = preload
 	return slf

--
Gitblit v1.8.0