zhangqian
2024-04-07 a8914a16b23e93f6bfd12bcfd5cbe8b24cf7eb84
models/location.go
@@ -13,7 +13,7 @@
      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
      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:位置类型"`                 //位置类型
@@ -25,18 +25,22 @@
      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:"-"`                                    //拼接名称
      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
   }
)
@@ -67,8 +71,19 @@
   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
}
@@ -92,7 +107,7 @@
   return slf
}
func (slf *LocationSearch) SetParentId(parentId string) *LocationSearch {
func (slf *LocationSearch) SetParentId(parentId int) *LocationSearch {
   slf.ParentId = parentId
   return slf
}
@@ -102,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 != "" {
@@ -125,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
@@ -301,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)
}