123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- package final
- import (
- "errors"
- "fmt"
- "zhiyuan/pkg/db"
- "github.com/gin-gonic/gin"
- )
- type FinalMaterialItem struct {
- ID int64 `json:"id" prop:"add:false"`
- MaterialId int64 `json:"material_id" label:"表" type:"int" prop:"add" search:"="`
- Name string `json:"name" label:"项目名称" type:"string" prop:"add" search:"like"`
- MatTypeId int64 `json:"mattype_id" label:"选材类型" type:"int" prop:"add" search:"="`
- MatId int64 `json:"mat_id" type:"int" prop:"edit" search:"="`
- Num float64 `json:"num" label:"数量" type:"float" prop:"edit" default:"0"`
- Remark string `json:"remark" label:"备注" type:"string" prop:"edit"`
- DeletedAt int64 `json:"deleted_at" prop:"add:false select:false"`
- CreatedAt int64 `json:"created_at" prop:"add:false"`
- UpdatedAt int64 `json:"updated_at" prop:"add:false"`
- db.BaseModel
- }
- func (FinalMaterialItem) TableName() string {
- return "zy_final_material_item"
- }
- func (model FinalMaterialItem) ListPrivilege(c *gin.Context, data map[string]interface{}, s *db.Select) bool {
- return true
- }
- func (FinalMaterialItem) OnePrivilege(c *gin.Context, id int64) bool {
- return true
- }
- func (FinalMaterialItem) AddPrivilege(c *gin.Context, data map[string]interface{}, post map[string]interface{}) error {
- return nil
- }
- func (FinalMaterialItem) EditPrivilege(c *gin.Context, id int64, data map[string]interface{}, post map[string]interface{}) error {
- var model FinalMaterialItem
- db.GetModel(map[string]interface{}{
- "id": id,
- "deleted_at": 0,
- }, &model)
- if model.ID == 0 {
- return errors.New("项目状态异常")
- }
- var material FinalMaterial
- db.GetModel(map[string]interface{}{
- "id": model.MaterialId,
- "deleted_at": 0,
- }, &material)
- if material.ID == 0 || material.State != 0 {
- return errors.New("材料单状态异常")
- }
- supplierid := model.SelectSupplier()
- matid, _ := db.ToInt64(data["mat_id"])
- if matid != 0 {
- var mat FinalMat
- db.GetModel(map[string]interface{}{
- "id": matid,
- "deleted_at": 0,
- }, &mat)
- if mat.ID == 0 {
- return errors.New("材料不存在")
- }
- if supplierid != 0 && mat.SupplierId != supplierid {
- return errors.New("请选择同一个材料商的材料")
- }
- }
- return nil
- }
- func (FinalMaterialItem) DelPrivilege(c *gin.Context, id int64) error {
- return nil
- }
- func (FinalMaterialItem) Page() bool {
- return false
- }
- func (FinalMaterialItem) Count() bool {
- return true
- }
- func (model FinalMaterialItem) LeftJoin(data map[string]interface{}, s *db.Select) []db.JoinModel {
- return []db.JoinModel{}
- }
- func (model FinalMaterialItem) SelectSupplier() int64 {
- items := make([]FinalMaterialItem, 0)
- db.GetModel(map[string]interface{}{
- "id != ": model.ID,
- "material_id": model.MaterialId,
- "deleted_at": 0,
- }, &items)
- for _, v := range items {
- if v.MatId != 0 {
- var mat FinalMat
- db.GetModel(map[string]interface{}{
- "id": v.MatId,
- "deleted_at": 0,
- }, &mat)
- if mat.ID != 0 {
- return mat.SupplierId
- }
- }
- }
- return 0
- }
- type FinalMaterialItemMobile struct {
- Typename string `json:"type_name" label:"类型名称" prop:"select:finalmattype.name" search:"like"`
- Unit string `json:"unit" label:"单位" prop:"select:finalmattype.unit" search:"like"`
- MatName string `json:"mat_name" type:"string" prop:"select:concat(finalmat.brand,'\\t',finalmat.series,'\\t',finalmat.model,'\\t',finalmat.specs,'\\t',finalmat.color)"`
- MatPrice float64 `json:"mat_price" type:"float" prop:"select:finalmat.price"`
- SupplierId int64 `json:"supplier_id" type:"string" prop:"select:finalmat.supplier_id"`
- SupplierName string `json:"supplier_name" type:"string" prop:"select:supplier.username"`
- SupplierPhone string `json:"supplier_phone" type:"string" prop:"select:supplier.phone"`
- SupplierHeadImgUrl string `json:"supplier_headimgurl" type:"string" prop:"select:supplier.headimgurl"`
- FinalMaterialItem
- }
- func (model FinalMaterialItemMobile) EditPrivilege(c *gin.Context, id int64, data map[string]interface{}, post map[string]interface{}) error {
- return model.FinalMaterialItem.EditPrivilege(c, id, data, post)
- }
- func (model FinalMaterialItemMobile) GroupBy() string {
- return fmt.Sprintf("`%s`.`id`", model.TableName())
- }
- func (model FinalMaterialItemMobile) LeftJoin(data map[string]interface{}, s *db.Select) []db.JoinModel {
- return append(model.FinalMaterialItem.LeftJoin(data, s), db.JoinModel{
- Model: FinalMatType{},
- As: "finalmattype",
- On: []string{"`finalmattype`.`id` = " + model.TableName() + ".`mattype_id` AND `finalmattype`.`deleted_at` = 0"},
- }, db.JoinModel{
- Model: FinalMat{},
- As: "finalmat",
- On: []string{"`finalmat`.`id` = " + model.TableName() + ".`mat_id` AND `finalmat`.`deleted_at` = 0"},
- }, db.JoinModel{
- Model: JoinAdmin{},
- As: "supplier",
- On: []string{"`supplier`.`id` = `finalmat`.`supplier_id` AND `supplier`.`deleted_at` = 0"},
- })
- }
- type FinalMaterialItemSupplier struct {
- Name string `json:"name" label:"名称" prop:"select:finalmaterialtype.name"`
- Type int64 `json:"type" label:"类别" prop:"select:finalmaterialtype.type"`
- SiteId float64 `json:"site_id" label:"预算" prop:"select:finalmaterial.site_id"`
- Budget float64 `json:"budget" label:"预算" prop:"select:finalmaterial.budget"`
- BudgetType int64 `json:"budget_type" label:"预算类型" prop:"select:finalmaterial.budget_type"`
- Total float64 `json:"total" label:"金额" prop:"select:finalmaterial.total"`
- State int64 `json:"state" label:"状态" prop:"select:finalmaterial.state"`
- ReceiptDate int64 `json:"receipt_date" label:"配送日期" prop:"select:finalmaterial.receipt_date"`
- FinalMaterialItemMobile
- }
- func (model FinalMaterialItemSupplier) GroupBy() string {
- return fmt.Sprintf("`%s`.`id`", model.TableName())
- }
- func (model FinalMaterialItemSupplier) LeftJoin(data map[string]interface{}, s *db.Select) []db.JoinModel {
- return append(model.FinalMaterialItemMobile.LeftJoin(data, s), db.JoinModel{
- Model: FinalMaterial{},
- As: "finalmaterial",
- On: []string{"`finalmaterial`.`id` = " + model.TableName() + ".`material_id` AND `finalmaterial`.`deleted_at` = 0"},
- }, db.JoinModel{
- Model: FinalMaterialType{},
- As: "finalmaterialtype",
- On: []string{"`finalmaterialtype`.`id` = `finalmaterial`.`type_id` AND `finalmaterialtype`.`deleted_at` = 0"},
- })
- }
|