From a8914a16b23e93f6bfd12bcfd5cbe8b24cf7eb84 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期日, 07 四月 2024 21:49:01 +0800
Subject: [PATCH] 发货支持仓库传参

---
 models/location.go |  120 +++++++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 90 insertions(+), 30 deletions(-)

diff --git a/models/location.go b/models/location.go
index 1b147a5..bcae4ac 100644
--- a/models/location.go
+++ b/models/location.go
@@ -11,31 +11,36 @@
 	// Location 浣嶇疆
 	Location struct {
 		WmsModel
-		Id                   int                           `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
-		Name                 string                        `json:"name" gorm:"index;type:varchar(255);not null;comment:浣嶇疆鍚嶇О"` //浣嶇疆鍚嶇О
-		ParentId             string                        `json:"parentId" gorm:"type:varchar(255)"`                         //涓婄骇id
-		CompanyId            int                           `json:"companyId" gorm:"type:int"`                                 //鍏徃id
-		Company              Company                       `json:"company" gorm:"foreignKey:CompanyId"`                       //鍏徃
-		Type                 constvar.LocationType         `json:"type" gorm:"type:int(11);comment:浣嶇疆绫诲瀷"`                     //浣嶇疆绫诲瀷
-		CountFrequency       int                           `json:"countFrequency" gorm:"type:tinyint;comment:鐩樼偣棰戠巼锛堝ぉ锛�"`        //鐩樼偣棰戠巼锛堝ぉ锛�
-		IsScrapLocation      bool                          `json:"isScrapLocation" gorm:"type:tinyint;comment:鏄惁鎶ュ簾浣嶇疆"`        //鏄惁鎶ュ簾浣嶇疆
-		IsReturnLocation     bool                          `json:"isReturnLocation" gorm:"type:tinyint;comment:鏄惁閫�璐т綅缃�"`       //鏄惁閫�璐т綅缃�
-		ReplenishLocation    bool                          `json:"replenishLocation" gorm:"type:tinyint;comment:鏄惁琛ュ厖浣嶇疆"`      //鏄惁琛ュ厖浣嶇疆
-		ForceRemovalStrategy constvar.ForceRemovalStrategy `json:"forceRemovalStrategy" gorm:"type:tinyint;comment:涓嬫灦绛栫暐"`     //涓嬫灦绛栫暐
-		Notes                string                        `json:"notes" gorm:"type:varchar(255);comment:澶栭儴澶囨敞"`               //澶栭儴澶囨敞
-		RecentlyCount        string                        `json:"recentlyCount" gorm:"type:varchar(255);comment:鏈�杩戠洏鐐�"`       //鏈�杩戠洏鐐�
-		NextCount            string                        `json:"nextCount" gorm:"type:varchar(255);comment:涓嬫鐩樼偣"`           //涓嬫鐩樼偣
+		Id        int    `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
+		Name      string `json:"name" gorm:"index;type:varchar(255);not null;comment:浣嶇疆鍚嶇О"` //浣嶇疆鍚嶇О
+		ParentId  int    `json:"parentId" gorm:"type:int;comment:涓婄骇id"`                     //涓婄骇id
+		CompanyId int    `json:"companyId" gorm:"type:int"`                                 //鍏徃id
+		//Company              Company                       `json:"company" gorm:"foreignKey:CompanyId"`                       //鍏徃
+		Type                 constvar.LocationType         `json:"type" gorm:"type:int(11);comment:浣嶇疆绫诲瀷"`                 //浣嶇疆绫诲瀷
+		CountFrequency       int                           `json:"countFrequency" gorm:"type:tinyint;comment:鐩樼偣棰戠巼锛堝ぉ锛�"`    //鐩樼偣棰戠巼锛堝ぉ锛�
+		IsScrapLocation      bool                          `json:"isScrapLocation" gorm:"type:tinyint;comment:鏄惁鎶ュ簾浣嶇疆"`    //鏄惁鎶ュ簾浣嶇疆
+		IsReturnLocation     bool                          `json:"isReturnLocation" gorm:"type:tinyint;comment:鏄惁閫�璐т綅缃�"`   //鏄惁閫�璐т綅缃�
+		ReplenishLocation    bool                          `json:"replenishLocation" gorm:"type:tinyint;comment:鏄惁琛ュ厖浣嶇疆"`  //鏄惁琛ュ厖浣嶇疆
+		ForceRemovalStrategy constvar.ForceRemovalStrategy `json:"forceRemovalStrategy" gorm:"type:tinyint;comment:涓嬫灦绛栫暐"` //涓嬫灦绛栫暐
+		Notes                string                        `json:"notes" gorm:"type:varchar(255);comment:澶栭儴澶囨敞"`           //澶栭儴澶囨敞
+		RecentlyCount        string                        `json:"recentlyCount" gorm:"type:varchar(255);comment:鏈�杩戠洏鐐�"`   //鏈�杩戠洏鐐�
+		NextCount            string                        `json:"nextCount" gorm:"type:varchar(255);comment:涓嬫鐩樼偣"`       //涓嬫鐩樼偣
+		JointName            string                        `json:"jointName" gorm:"type:varchar(255);comment:鎷兼帴鍚嶇О"`       //鎷兼帴鍚嶇О
+		Children             []*Location                   `json:"children" gorm:"-"`
+		WarehouseId          int                           `json:"warehouseId" gorm:"type:int;not null;default:0;comment:浠撳簱ID"` //浠撳簱ID
+		Warehouse            Warehouse                     `json:"warehouse" gorm:"foreignKey:WarehouseId"`                     //浠撳簱
 	}
 
 	LocationSearch struct {
 		Location
-		Order    string
-		PageNum  int
-		PageSize int
-		Keyword  string
-		Orm      *gorm.DB
-		Preload  bool
-		Parents  []string
+		Order      string
+		PageNum    int
+		PageSize   int
+		Keyword    string
+		Orm        *gorm.DB
+		Preload    bool
+		JointNames []string
+		Ids        []int
 	}
 )
 
@@ -62,12 +67,23 @@
 	return slf
 }
 
-func (slf *LocationSearch) SetID(id int) *LocationSearch {
-	slf.Id = id
+func (slf *LocationSearch) SetID(ID int) *LocationSearch {
+	slf.Id = ID
 	return slf
 }
-func (slf *LocationSearch) SetParents(ids []string) *LocationSearch {
-	slf.Parents = ids
+
+func (slf *LocationSearch) SetIds(ids []int) *LocationSearch {
+	slf.Ids = ids
+	return slf
+}
+
+func (slf *LocationSearch) SetJointName(code string) *LocationSearch {
+	slf.JointName = code
+	return slf
+}
+
+func (slf *LocationSearch) SetJointNames(codes []string) *LocationSearch {
+	slf.JointNames = codes
 	return slf
 }
 
@@ -91,7 +107,7 @@
 	return slf
 }
 
-func (slf *LocationSearch) SetParentId(parentId string) *LocationSearch {
+func (slf *LocationSearch) SetParentId(parentId int) *LocationSearch {
 	slf.ParentId = parentId
 	return slf
 }
@@ -101,11 +117,20 @@
 	return slf
 }
 
+func (slf *LocationSearch) SetIsScrapLocation(isScrapLocation bool) *LocationSearch {
+	slf.IsScrapLocation = isScrapLocation
+	return slf
+}
+
 func (slf *LocationSearch) build() *gorm.DB {
 	var db = slf.Orm.Table(slf.TableName())
 
 	if slf.Id != 0 {
 		db = db.Where("id = ?", slf.Id)
+	}
+
+	if len(slf.Ids) > 0 {
+		db = db.Where("id in (?)", slf.Ids)
 	}
 
 	if slf.Order != "" {
@@ -124,14 +149,25 @@
 		db = db.Where("type=?", slf.Type)
 	}
 
-	if slf.ParentId != "" {
+	if slf.ParentId > 0 {
 		db = db.Where("parent_id=?", slf.ParentId)
 	}
 	if slf.CompanyId != 0 {
 		db = db.Where("company_id=?", slf.CompanyId)
 	}
-	if len(slf.Parents) != 0 {
-		db = db.Where("parent_id in (?)", slf.Parents)
+	if slf.JointName != "" {
+		db = db.Where("joint_name like ?", slf.JointName+"%")
+	}
+	if len(slf.JointNames) != 0 {
+		db = db.Where("joint_name in (?)", slf.JointNames)
+	}
+
+	if slf.IsScrapLocation {
+		db = db.Where("is_scrap_location = ?", slf.IsScrapLocation)
+	}
+
+	if slf.Preload {
+		db = db.Preload("Warehouse")
 	}
 
 	return db
@@ -300,10 +336,34 @@
 		records = make([]*Location, 0)
 		db      = slf.build()
 	)
-	err := db.Find(&records)
+	err := db.Find(&records).Error
 	if err != nil {
 		fmt.Println(err)
 		return records, fmt.Errorf("func FindAll err: %v", err)
 	}
 	return records, nil
 }
+
+// InitDefaultData 鍒濆鍖栨暟鎹�
+func (slf *LocationSearch) InitDefaultData() error {
+	var (
+		db          = slf.Orm.Table(slf.TableName())
+		total int64 = 0
+	)
+	if err := db.Count(&total).Error; err != nil {
+		return err
+	}
+	if total != 0 {
+		return nil
+	}
+	locations := make([]*Location, 0)
+	locations = append(locations, &Location{Name: "渚涘簲鍟嗕綅缃�", Type: 1, JointName: "渚涘簲鍟嗕綅缃�"})
+	locations = append(locations, &Location{Name: "瑙嗗浘", Type: 2, JointName: "瑙嗗浘"})
+	locations = append(locations, &Location{Name: "瀹㈡埛浣嶇疆", Type: 4, JointName: "瀹㈡埛浣嶇疆"})
+	locations = append(locations, &Location{Name: "搴撳瓨鎹熷け", Type: 5, JointName: "搴撳瓨鎹熷け"})
+	locations = append(locations, &Location{Name: "鐢熶骇", Type: 6, JointName: "鐢熶骇"})
+	locations = append(locations, &Location{Name: "涓浆浣嶇疆", Type: 7, JointName: "涓浆浣嶇疆"})
+	locations = append(locations, &Location{Name: "鎶ュ簾浣嶇疆", Type: 8, JointName: "鎶ュ簾浣嶇疆", IsScrapLocation: true})
+	locations = append(locations, &Location{Name: "搴撳瓨鐩樼偣", Type: 9, JointName: "搴撳瓨鐩樼偣"})
+	return slf.CreateBatch(locations)
+}

--
Gitblit v1.8.0