Files
ArmedPolice/app/model/work_material.go
2021-11-19 15:34:22 +08:00

47 lines
1.5 KiB
Go

package model
import (
"ArmedPolice/app/common/model"
"ArmedPolice/serve/orm"
"fmt"
)
type WorkMaterial struct {
*model.WorkMaterial
}
// WorkMaterialInfo 器材信息
type WorkMaterialInfo struct {
ID uint64 `json:"-"`
MaterialNumber float64 `json:"material_number"`
MaterialCode string `json:"material_code"`
MaterialTitle string `json:"material_title"`
MaterialPrice float64 `json:"material_price"`
ManufacturerName string `json:"manufacturer_name"`
SupplierName string `json:"supplier_name"`
}
// Materials 器材信息
func (m *WorkMaterial) Materials(workID uint64) ([]*WorkMaterialInfo, error) {
mManageSupplier := model.NewManageSupplier()
out := make([]*WorkMaterialInfo, 0)
db := orm.GetDB().Table(m.TableName()+" w").
Select("w.id", "w.material_number", "m.code AS material_code", "m.title AS material_title",
"m.price AS material_price", "m_s.name AS manufacturer_name", "s.name AS supplier_name").
Joins(fmt.Sprintf("LEFT JOIN %s AS m ON w.material_id = m.id", model.NewManageMaterial().TableName())).
Joins(fmt.Sprintf("LEFT JOIN %s AS s ON w.material_supplier_id = s.id", mManageSupplier.TableName())).
Joins(fmt.Sprintf("LEFT JOIN %s AS m_s ON m.manufacturer_id = m_s.id", mManageSupplier.TableName())).
Where("w.work_id = ?", workID)
if err := db.Scan(&out).Error; err != nil {
return nil, err
}
return out, nil
}
func NewWorkMaterial() *WorkMaterial {
return &WorkMaterial{model.NewWorkMaterial()}
}