From 743614db00f9b8cd9a97997a743f9c161e493aea Mon Sep 17 00:00:00 2001 From: yinbentan <yinbentan@live.com> Date: 星期三, 10 七月 2024 20:55:28 +0800 Subject: [PATCH] 车间分组配置 --- constvar/const.go | 9 + controllers/request/workshop_manage.go | 25 +++ controllers/response/workshop_manage.go | 8 + controllers/request/system_set.go | 14 -- models/fineness.go | 26 ++- models/workshop_manage.go | 85 ++++++++++- main.go | 2 service/workshop.go | 2 controllers/workshop_manage_controller.go | 212 +++++++++++++++++++++++++----- models/fineness_item.go | 10 10 files changed, 315 insertions(+), 78 deletions(-) diff --git a/constvar/const.go b/constvar/const.go index 16118ac..53a4073 100644 --- a/constvar/const.go +++ b/constvar/const.go @@ -22,7 +22,14 @@ const ( LeftHalfCar CarFlag = iota + 1 //宸﹀崐杞� RightHalfCar //鍙冲崐杞� - AllCar //鍏ㄨ溅缁撴潫 + //AllCar //鍏ㄨ溅缁撴潫 +) + +type WorkshopType int + +const ( + Workshop WorkshopType = iota + 1 // 杞﹂棿淇℃伅 + Group // 鍒嗙粍淇℃伅 ) type CheckItem int diff --git a/controllers/request/system_set.go b/controllers/request/system_set.go index cfe2744..f7db82b 100644 --- a/controllers/request/system_set.go +++ b/controllers/request/system_set.go @@ -49,17 +49,3 @@ RankName string `json:"rankName"` //绛夌骇鍚嶇О RankValue decimal.Decimal `json:"rankValue"` //绛夌骇鍊� } - -// ---------------------------------------杞﹂棿--------------------------------- -type GetWorkshopManage struct { - PageInfo - KeyWord string `json:"keyWord"` - WorkshopName string `json:"workshopName"` //杞﹂棿鍚嶇О - GroupNumber int `json:"groupNumber"` //缁勫埆 -} - -type GetWorkshopManageCar struct { - WorkshopName string `json:"workshopName"` //杞﹂棿鍚嶇О - GroupNumber int `json:"groupNumber"` //缁勫埆 - MarketName string `json:"marketName"` //搴勫彛鍚� -} diff --git a/controllers/request/workshop_manage.go b/controllers/request/workshop_manage.go new file mode 100644 index 0000000..774a5d1 --- /dev/null +++ b/controllers/request/workshop_manage.go @@ -0,0 +1,25 @@ +package request + +import ( + "silkserver/models" +) + +type AddWorkshopManage struct { + models.WorkshopManage + Details []models.WorkshopManage `json:"details"` // 杞﹂棿淇℃伅 +} + +type GetWorkshopManage struct { + PageInfo + KeyWord string `json:"keyWord"` + WorkshopNumber string `json:"workshopNumber"` // 杞﹂棿缂栧彿 + WorkshopName string `json:"workshopName"` //杞﹂棿鍚嶇О + GroupNumber int `json:"groupNumber"` //缁勫埆 +} + +type GetWorkshopManageCar struct { + WorkshopNumber string `json:"workshopNumber"` // 杞﹂棿缂栧彿 + WorkshopName string `json:"workshopName"` //杞﹂棿鍚嶇О + GroupNumber int `json:"groupNumber"` //缁勫埆 + MarketName string `json:"marketName"` //搴勫彛鍚� +} diff --git a/controllers/response/workshop_manage.go b/controllers/response/workshop_manage.go new file mode 100644 index 0000000..c5b42aa --- /dev/null +++ b/controllers/response/workshop_manage.go @@ -0,0 +1,8 @@ +package response + +import "silkserver/models" + +type WorkshopManage struct { + models.WorkshopManage + Details []models.WorkshopManage `json:"details"` // 杞﹂棿淇℃伅 +} diff --git a/controllers/workshop_manage_controller.go b/controllers/workshop_manage_controller.go index 07df3f0..50109a7 100644 --- a/controllers/workshop_manage_controller.go +++ b/controllers/workshop_manage_controller.go @@ -3,6 +3,7 @@ import ( "github.com/gin-gonic/gin" "gorm.io/gorm" + "silkserver/constvar" "silkserver/controllers/request" "silkserver/controllers/response" "silkserver/extend/code" @@ -16,41 +17,117 @@ // SaveWorkshopManage // -// @Tags 绯荤粺璁剧疆/杞﹂棿绠$悊 -// @Summary 淇濆瓨杞﹂棿绠$悊 -// @Produce application/json -// @Param object body models.WorkshopManage true "鍙傛暟" -// @Param Authorization header string true "token" -// @Success 200 {object} util.Response "鎴愬姛" -// @Router /api-jl/v1/system/saveWorkshopManage [post] +// @Tags 绯荤粺璁剧疆/杞﹂棿绠$悊 +// @Summary 淇濆瓨杞﹂棿绠$悊 +// @Produce application/json +// @Param Authorization header string true "token" +// @Param object body request.AddWorkshopManage true "鍙傛暟" +// @Success 200 {object} util.Response "鎴愬姛" +// @Router /api-jl/v1/system/saveWorkshopManage [post] func (slf WorkshopManageController) SaveWorkshopManage(c *gin.Context) { - var workshop models.WorkshopManage - err := c.BindJSON(&workshop) + var param *request.AddWorkshopManage + err := c.BindJSON(¶m) if err != nil { util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�") return } - if workshop.ID > 0 { - err = models.NewWorkshopManageSearch().Save(&workshop) - } else { - err = models.NewWorkshopManageSearch().Create(&workshop) + if param.StartCarNumber > param.EndCarNumber { + util.ResponseFormat(c, code.RequestParamError, "缁撴潫杞﹀彿涓嶈兘灏忎簬寮�濮嬭溅鍙�") + return } + + editIds := make([]uint, len(param.Details)) + for _, detail := range param.Details { + if detail.StartCarNumber > detail.EndCarNumber { + util.ResponseFormat(c, code.RequestParamError, "鍒嗙粍缁撴潫杞﹀彿涓嶈兘灏忎簬鍒嗙粍寮�濮嬭溅鍙�") + return + } + if detail.EndCarNumber > param.EndCarNumber { + util.ResponseFormat(c, code.RequestParamError, "鍒嗙粍缁撴潫杞﹀彿涓嶈兘澶т簬缁撴潫杞﹀彿") + return + } + if detail.ID > 0 { + editIds = append(editIds, detail.ID) + } + } + + info := models.WorkshopManage{ + WorkshopNumber: param.WorkshopNumber, + WorkshopName: param.WorkshopName, + Type: constvar.Workshop, + GroupNumber: param.GroupNumber, + StartCarNumber: param.StartCarNumber, + EndCarNumber: param.EndCarNumber, + CarFlag: param.CarFlag, + Notes: param.Notes, + } + + err = models.WithTransaction(func(tx *gorm.DB) error { + if param.ID > 0 { + info.ID = param.ID + err = models.NewWorkshopManageSearch().Save(&info) + if err != nil { + return err + } + oldDetailsList, err := models.NewWorkshopManageSearch().SetType(constvar.Group).SetWorkshopNumber(param.WorkshopNumber).SetGroupNumber(param.GroupNumber).FindNotTotal() + if err != nil { + return err + } + + for _, oldDetails := range oldDetailsList { + delFlag := true + for _, editId := range editIds { + if oldDetails.ID == editId { + delFlag = false + break + } + } + if delFlag { + err = models.NewWorkshopManageSearch().SetId(int(oldDetails.ID)).Delete() + if err != nil { + return err + } + } + } + } else { + err = models.NewWorkshopManageSearch().Create(&info) + } + if err != nil { + return err + } + + for _, detail := range param.Details { + detail.Type = constvar.Group + detail.WorkshopNumber = param.WorkshopNumber + detail.WorkshopName = param.WorkshopName + detail.ParentID = param.WorkshopNumber + //detail.GroupNumber = param.Workshop.GroupNumber + + if detail.ID > 0 { + err = models.NewWorkshopManageSearch().Save(&detail) + } else { + err = models.NewWorkshopManageSearch().Create(&detail) + } + } + return nil + }) if err != nil { util.ResponseFormat(c, code.SaveFail, "淇濆瓨澶辫触") return } + util.ResponseFormat(c, code.Success, "淇濆瓨鎴愬姛") } // GetWorkshopManageList // -// @Tags 绯荤粺璁剧疆/杞﹂棿绠$悊 -// @Summary 鑾峰彇杞﹂棿绠$悊鍒楄〃 -// @Produce application/json -// @Param Authorization header string true "token" -// @Param object query request.GetPriceStandard true "鍙傛暟" -// @Success 200 {object} util.ResponseList{data=[]models.WorkshopManage} "鎴愬姛" -// @Router /api-jl/v1/system/getWorkshopManageList [post] +// @Tags 绯荤粺璁剧疆/杞﹂棿绠$悊 +// @Summary 鑾峰彇杞﹂棿绠$悊鍒楄〃 +// @Produce application/json +// @Param Authorization header string true "token" +// @Param object query request.GetPriceStandard true "鍙傛暟" +// @Success 200 {object} util.ResponseList{data=[]response.WorkshopManage} "鎴愬姛" +// @Router /api-jl/v1/system/getWorkshopManageList [post] func (slf WorkshopManageController) GetWorkshopManageList(c *gin.Context) { var param request.GetWorkshopManage err := c.BindJSON(¶m) @@ -58,12 +135,49 @@ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�") return } - list, total, err := models.NewWorkshopManageSearch().SetWorkshopName(param.WorkshopName).SetGroupNumber(param.GroupNumber).SetPage(param.Page, param.PageSize).Find() + workshopManageSearch := models.NewWorkshopManageSearch() + if param.Page > 0 && param.PageSize > 0 { + workshopManageSearch.SetPage(param.Page, param.PageSize) + } + workshopManageSearch.SetType(constvar.Workshop).SetWorkshopName(param.WorkshopName).SetGroupNumber(param.GroupNumber) + list, total, err := workshopManageSearch.SetOrder("workshop_number,group_number,start_car_number").Find() if err != nil { util.ResponseFormat(c, code.SelectError, "鏌ヨ澶辫触") return } - util.ResponseFormatList(c, code.Success, list, total) + workshopNumberArr := make([]string, len(list)) + for _, workshopManage := range list { + workshopNumberArr = append(workshopNumberArr, workshopManage.WorkshopNumber) + } + + details, _ := models.NewWorkshopManageSearch().SetType(constvar.Group).SetWorkshopNumberArr(workshopNumberArr). + SetOrder("workshop_number,group_number,start_car_number").FindNotTotal() + + var result []*response.WorkshopManage + for _, info := range list { + var infoTemp response.WorkshopManage + infoTemp.ID = info.ID + infoTemp.CreatedAt = info.CreatedAt + infoTemp.UpdatedAt = info.UpdatedAt + infoTemp.WorkshopNumber = info.WorkshopNumber + infoTemp.WorkshopName = info.WorkshopName + infoTemp.Type = info.Type + infoTemp.ParentID = info.ParentID + infoTemp.GroupNumber = info.GroupNumber + infoTemp.StartCarNumber = info.StartCarNumber + infoTemp.EndCarNumber = info.EndCarNumber + infoTemp.CarFlag = info.CarFlag + infoTemp.Notes = info.Notes + var detailList []models.WorkshopManage + for _, detail := range details { + if info.WorkshopNumber == detail.WorkshopNumber && info.GroupNumber == detail.GroupNumber { + detailList = append(detailList, *detail) + } + } + infoTemp.Details = detailList + result = append(result, &infoTemp) + } + util.ResponseFormatList(c, code.Success, result, total) } // DeleteWorkshopManage @@ -85,7 +199,28 @@ util.ResponseFormat(c, code.RequestParamError, "鏁版嵁杞崲澶辫触") return } - err = models.NewWorkshopManageSearch().SetId(atoi).Delete() + + err = models.WithTransaction(func(tx *gorm.DB) error { + first, err := models.NewWorkshopManageSearch().SetId(atoi).First() + if err != nil { + return err + } + if first.Type == constvar.Group { + err = models.NewWorkshopManageSearch().SetId(atoi).Delete() + } else if first.Type == constvar.Workshop { + workshopManages, err := models.NewWorkshopManageSearch().SetWorkshopNumber(first.WorkshopNumber).SetGroupNumber(first.GroupNumber).FindNotTotal() + if err != nil { + return err + } + for _, detail := range workshopManages { + err = models.NewWorkshopManageSearch().SetId(int(detail.ID)).Delete() + if err != nil { + return err + } + } + } + return nil + }) if err != nil { util.ResponseFormat(c, code.RequestParamError, "鍒犻櫎澶辫触") return @@ -109,7 +244,9 @@ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�") return } - all, err := models.NewWorkshopManageSearch().SetWorkshopName(params.WorkshopName).SetGroupNumber(params.GroupNumber).FindAll() + all, err := models.NewWorkshopManageSearch(). + SetType(constvar.Group).SetWorkshopName(params.WorkshopName).SetGroupNumber(params.GroupNumber). + SetOrder("workshop_number,group_number,start_car_number").FindNotTotal() if err != nil { util.ResponseFormat(c, code.RequestParamError, "鏌ユ壘澶辫触") return @@ -139,7 +276,7 @@ util.ResponseFormat(c, code.RequestParamError, "鏃犳晥鐨勭紪鐮�") return } - all, err := models.NewWorkshopManageSearch().SetWorkshopNumber(number).FindAll() + all, err := models.NewWorkshopManageSearch().SetType(constvar.Group).SetWorkshopNumber(number).FindNotTotal() if err != nil { util.ResponseFormat(c, code.RequestParamError, "鏌ユ壘澶辫触") return @@ -167,34 +304,37 @@ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�") return } - all, err := models.NewWorkshopManageSearch().SetWorkshopName(params.WorkshopName).SetGroupNumber(params.GroupNumber).FindAll() + workshopManageList, err := models.NewWorkshopManageSearch(). + SetType(constvar.Group).SetWorkshopNumber(params.WorkshopNumber).SetWorkshopName(params.WorkshopName).SetGroupNumber(params.GroupNumber). + FindNotTotal() if err != nil { - util.ResponseFormat(c, code.RequestParamError, "鏌ユ壘澶辫触") + util.ResponseFormat(c, code.RequestParamError, "杞﹂棿鍒嗙粍鏌ヨ澶辫触") return } - fineness, err := models.NewFinenessRegisterSearch().SetWorkshopName(params.WorkshopName).SetWorkshopGroup(params.GroupNumber). - SetMarket(params.MarketName).First() + finenessRegisterList, err := models.NewFinenessRegisterSearch(). + SetWorkshopNumber(params.WorkshopNumber).SetWorkshopName(params.WorkshopName).SetWorkshopGroup(params.GroupNumber).SetMarket(params.MarketName). + First() if err != nil { if err == gorm.ErrRecordNotFound { - util.ResponseFormat(c, code.RequestParamError, "褰撳墠搴勫彛,杞﹂棿,缁勫埆涓�,娌℃湁绾ゅ害鐧昏淇℃伅") + util.ResponseFormat(c, code.RequestParamError, "褰撳墠搴勫彛銆佽溅闂淬�佺粍鍒笅,娌℃湁绾ゅ害鐧昏淇℃伅") return } - util.ResponseFormat(c, code.RequestParamError, "鏌ユ壘澶辫触") + util.ResponseFormat(c, code.RequestParamError, "绾ゅ害鐧昏鏌ヨ澶辫触") return } - first, err := models.NewFinenessCheckSearch().SetID(fineness.FinenessCheckID).First() + first, err := models.NewFinenessCheckSearch().SetID(finenessRegisterList.FinenessCheckID).First() if err != nil { - util.ResponseFormat(c, code.RequestParamError, "鏌ユ壘澶辫触") + util.ResponseFormat(c, code.RequestParamError, "绾ゅ害妫�楠屾煡璇㈠け璐�") return } var data response.CarAndLevel data.Level = first.FinenessGrade carNum := make([][]int, 0) - for _, manage := range all { + for _, workshop := range workshopManageList { car := make([]int, 0) - i := manage.StartCarNumber - for ; i <= manage.EndCarNumber; i++ { + i := workshop.StartCarNumber + for ; i <= workshop.EndCarNumber; i++ { car = append(car, i) } if len(car) > 0 { diff --git a/main.go b/main.go index 9ff533d..bbe44dc 100644 --- a/main.go +++ b/main.go @@ -37,6 +37,8 @@ ReadTimeout: 5 * time.Second, WriteTimeout: 5 * time.Second, } + logx.Infof("server start success! \n\n\t- Local: \thttp://localhost:%v/\n\t- Network: \thttp://%v:%v/\n", + conf.WebConf.Port, conf.WebConf.Host, conf.WebConf.Port) //瀹氭椂浠诲姟鍒濆鍖� task.Init() diff --git a/models/fineness.go b/models/fineness.go index 18e6461..3d6ea97 100644 --- a/models/fineness.go +++ b/models/fineness.go @@ -11,13 +11,14 @@ // FinenessRegister 绾ゅ害鐧昏 FinenessRegister struct { gorm.Model - Number string `gorm:"type:varchar(255);not null;comment:缂栧彿" json:"number"` //缂栧彿 - FinenessCheckID uint `gorm:"not null;comment:绾ゅ害妫�楠岃〃ID" json:"finenessCheckID"` //绾ゅ害妫�楠岃〃ID - FinishDate string `gorm:"type:varchar(255);not null;comment:钀戒笣鏃堕棿" json:"finishDate"` //钀戒笣鏃堕棿 - WorkshopNumber string `json:"workshopNumber" gorm:"type:varchar(255);comment:杞﹂棿缂栧彿"` - WorkshopName string `json:"workshopName" gorm:"type:varchar(255);comment:杞﹂棿鍚嶇О"` + Number string `gorm:"type:varchar(255);not null;comment:缂栧彿" json:"number"` //缂栧彿 + FinenessCheckID uint `gorm:"not null;comment:绾ゅ害妫�楠岃〃ID" json:"finenessCheckID"` //绾ゅ害妫�楠岃〃ID + FinishDate string `gorm:"type:varchar(255);not null;comment:钀戒笣鏃堕棿" json:"finishDate"` //钀戒笣鏃堕棿 + WorkshopNumber string `gorm:"type:varchar(255);comment:杞﹂棿缂栧彿" json:"workshopNumber" ` // 杞﹂棿缂栧彿 + WorkshopName string `gorm:"type:varchar(255);comment:杞﹂棿鍚嶇О" json:"workshopName" ` // 杞﹂棿鍚嶇О WorkshopGroup int `gorm:"type:int(11);not null;default:0;comment:杞︾粍" json:"workshopGroup"` //杞︾粍 - Market string `gorm:"type:varchar(255);not null;comment:搴勫彛" json:"market"` //搴勫彛 + MarketNumber string `gorm:"size:255;comment:搴勫彛" json:"marketNumber"` //搴勫彛缂栧彿 + Market string `gorm:"type:varchar(255);not null;comment:搴勫彛" json:"market"` //搴勫彛鍚嶇О Spec string `gorm:"type:varchar(255);not null;comment:瑙勬牸" json:"spec"` //瑙勬牸 Circle uint8 `gorm:"not null;default:0;comment:鍥炴暟" json:"circle"` //鍥炴暟 TotalCircle uint8 `gorm:"not null;default:0;comment:鎬诲洖鏁�" json:"totalCircle"` //鎬诲洖鏁� @@ -80,8 +81,13 @@ return slf } -func (slf *FinenessRegisterSearch) SetWorkshopName(workshop string) *FinenessRegisterSearch { - slf.WorkshopName = workshop +func (slf *FinenessRegisterSearch) SetWorkshopNumber(workshopNumber string) *FinenessRegisterSearch { + slf.WorkshopNumber = workshopNumber + return slf +} + +func (slf *FinenessRegisterSearch) SetWorkshopName(workshopName string) *FinenessRegisterSearch { + slf.WorkshopName = workshopName return slf } @@ -118,6 +124,10 @@ db = db.Where("number like ?", fmt.Sprintf("%%%s%%", slf.Keyword)) } + if slf.WorkshopNumber != "" { + db = db.Where("workshop_number = ?", slf.WorkshopNumber) + } + if slf.WorkshopName != "" { db = db.Where("workshop_name = ?", slf.WorkshopName) } diff --git a/models/fineness_item.go b/models/fineness_item.go index b69cdeb..33a9065 100644 --- a/models/fineness_item.go +++ b/models/fineness_item.go @@ -11,11 +11,11 @@ // FinenessItem 绾ゅ害鐧昏 FinenessItem struct { gorm.Model - FinenessRegisterID uint `gorm:"index" json:"finenessRegisterID"` - Position int `json:"position"` //杞﹀彿 - Fineness float32 `json:"fineness"` //绾ゅ害 - Quantity int `json:"quantity"` //鏁伴噺 - Sum decimal.Decimal `json:"sum"` //绾ゅ害鍚堣 + FinenessRegisterID uint `gorm:"size:11;index" json:"finenessRegisterID"` + Position int `gorm:"size:11;comment:杞﹀彿" json:"position"` // 杞﹀彿 + Fineness float32 `gorm:"comment:绾ゅ害" json:"fineness"` // 绾ゅ害 + Quantity int `gorm:"size:11;comment:鏁伴噺" json:"quantity"` // 鏁伴噺 + Sum decimal.Decimal `gorm:"type:decimal(12,4);comment:绾ゅ害鍚堣" json:"sum"` //绾ゅ害鍚堣 } FinenessItemSearch struct { diff --git a/models/workshop_manage.go b/models/workshop_manage.go index ca05716..88c555f 100644 --- a/models/workshop_manage.go +++ b/models/workshop_manage.go @@ -11,20 +11,25 @@ type ( WorkshopManage struct { gorm.Model - WorkshopNumber string `json:"workshopNumber" gorm:"type:varchar(255);comment:杞﹂棿缂栧彿"` - WorkshopName string `json:"workshopName" gorm:"type:varchar(255);comment:杞﹂棿鍚嶇О"` - GroupNumber int `json:"groupNumber" gorm:"type:int(11);comment:缁勫埆"` - StartCarNumber int `json:"startCarNumber" gorm:"type:int(11);comment:寮�濮嬭溅鍙�"` - EndCarNumber int `json:"endCarNumber" gorm:"type:int(11);comment:缁撴潫杞﹀彿"` - CarFlag constvar.CarFlag `json:"carFlag" gorm:"type:int(1);comment:鍗婅溅鏍囧織"` - Notes string `json:"notes" gorm:"type:varchar(255);comment:澶囨敞"` + WorkshopNumber string `json:"workshopNumber" gorm:"type:varchar(255);comment:杞﹂棿缂栧彿"` + WorkshopName string `json:"workshopName" gorm:"type:varchar(255);comment:杞﹂棿鍚嶇О"` + Type constvar.WorkshopType `json:"type" gorm:"size:1;comment:绫诲瀷(1杞﹂棿銆�2鍒嗙粍)"` // 绫诲瀷(1杞﹂棿銆�2鍒嗙粍) + ParentID string `json:"parentID" gorm:"size:11;comment:杞﹂棿缂栧彿"` + GroupNumber int `json:"groupNumber" gorm:"type:int(11);comment:缁勫埆"` + StartCarNumber int `json:"startCarNumber" gorm:"type:int(11);comment:寮�濮嬭溅鍙�"` + StartCarHalf constvar.CarFlag `json:"startCarHalf" gorm:"type:int(1);comment:寮�濮嬪崐杞︽爣璇�(1宸﹀崐杞︺��2鍙冲崐杞�)"` + EndCarNumber int `json:"endCarNumber" gorm:"type:int(11);comment:缁撴潫杞﹀彿"` + EndCarHalf constvar.CarFlag `json:"endCarHalf" gorm:"type:int(1);comment:缁撴潫鍗婅溅鏍囪瘑(1宸﹀崐杞︺��2鍙冲崐杞�)"` + CarFlag int `json:"carFlag" gorm:"type:int(1);comment:鍗婅溅鏍囧織(0鍏ㄨ溅銆�1鍗婅溅)"` + Notes string `json:"notes" gorm:"type:varchar(255);comment:澶囨敞"` } WorkshopManageSearch struct { WorkshopManage - PageNum int - PageSize int - Order string - Orm *gorm.DB + WorkshopNumberArr []string + PageNum int + PageSize int + Order string + Orm *gorm.DB } ) @@ -51,6 +56,16 @@ return slf } +func (slf *WorkshopManageSearch) SetType(types constvar.WorkshopType) *WorkshopManageSearch { + slf.Type = types + return slf +} + +func (slf *WorkshopManageSearch) SetParentID(parentID string) *WorkshopManageSearch { + slf.ParentID = parentID + return slf +} + func (slf *WorkshopManageSearch) SetWorkshopNumber(workshopNumber string) *WorkshopManageSearch { slf.WorkshopNumber = workshopNumber return slf @@ -58,6 +73,11 @@ func (slf *WorkshopManageSearch) SetWorkshopName(workshopName string) *WorkshopManageSearch { slf.WorkshopName = workshopName + return slf +} + +func (slf *WorkshopManageSearch) SetWorkshopNumberArr(workshopNumberArr []string) *WorkshopManageSearch { + slf.WorkshopNumberArr = workshopNumberArr return slf } @@ -78,8 +98,20 @@ db = db.Where("id = ?", slf.ID) } + if slf.Type > 0 { + db = db.Where("`type` = ?", slf.Type) + } + + if slf.ParentID != "" { + db = db.Where("parent_id = ?", slf.ParentID) + } + if slf.WorkshopNumber != "" { db = db.Where("workshop_number = ?", slf.WorkshopNumber) + } + + if len(slf.WorkshopNumberArr) > 0 { + db = db.Where("workshop_number in (?)", slf.WorkshopNumberArr) } if slf.WorkshopName != "" { @@ -103,6 +135,19 @@ return nil } +func (slf *WorkshopManageSearch) First() (*WorkshopManage, error) { + var ( + record = new(WorkshopManage) + db = slf.build() + ) + + if err := db.First(record).Error; err != nil { + return record, err + } + + return record, nil +} + func (slf *WorkshopManageSearch) Find() ([]*WorkshopManage, int64, error) { var ( records = make([]*WorkshopManage, 0) @@ -116,19 +161,33 @@ if slf.PageNum*slf.PageSize > 0 { db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize) } - if err := db.Order("updated_at desc").Find(&records).Error; err != nil { + if slf.Order != "" { + db = db.Order(slf.Order) + } else { + db = db.Order("updated_at desc") + } + if err := db.Find(&records).Error; err != nil { return records, total, fmt.Errorf("find records err: %v", err) } return records, total, nil } -func (slf *WorkshopManageSearch) FindAll() ([]*WorkshopManage, error) { +func (slf *WorkshopManageSearch) FindNotTotal() ([]*WorkshopManage, error) { var ( records = make([]*WorkshopManage, 0) db = slf.build() ) + if slf.PageNum*slf.PageSize > 0 { + db = db.Offset((slf.PageNum - 1) * slf.PageSize).Limit(slf.PageSize) + } + if slf.Order != "" { + db = db.Order(slf.Order) + } else { + db = db.Order("updated_at desc") + } + if err := db.Find(&records).Error; err != nil { return records, fmt.Errorf("find records err: %v", err) } diff --git a/service/workshop.go b/service/workshop.go index 2624131..8300c3e 100644 --- a/service/workshop.go +++ b/service/workshop.go @@ -3,7 +3,7 @@ import "silkserver/models" func GetWorkshopEndCarMap(workshopNumber string, groupNumber int) (endCarMap map[int]bool, err error) { - records, err := models.NewWorkshopManageSearch().SetWorkshopNumber(workshopNumber).SetGroupNumber(groupNumber).FindAll() + records, err := models.NewWorkshopManageSearch().SetWorkshopNumber(workshopNumber).SetGroupNumber(groupNumber).FindNotTotal() if err != nil { return } -- Gitblit v1.8.0