package model import ( "ArmedPolice/app/common/model" "ArmedPolice/serve/orm" "fmt" ) type WorkRepair struct { *model.WorkRepair } // WorkRepairInfo 维修工单信息 type WorkRepairInfo struct { *model.WorkRepair Title string `json:"title"` EquipmentCode string `json:"equipment_code"` EquipmentTitle string `json:"equipment_title"` Priority int `json:"priority"` Breakdown string `json:"-"` BreakdownTitle string `json:"breakdown_title"` Username string `json:"username"` } type WorkRepairEvaluateInfo struct { Name string `json:"name"` } // Repairs 维修工单信息 func (m *WorkRepair) Repairs(page, pageSize int, count *int64, where ...*model.ModelWhere) ([]*WorkRepairInfo, error) { db := orm.GetDB().Table(m.TableName()+" r"). Select("r.id", "r.order_no", "e.code AS equipment_code", "e.title AS equipment_title", "w.priority", "w.breakdown", //"(SELECT GROUP_CONCAT(s_b.title) FROM (SELECT id, title FROM sys_breakdown) AS s_b WHERE FIND_IN_SET(s_b.id, w.breakdown)) AS breakdown_title", "r.is_evaluate", "r.evaluate_score", "r.status", "u.name AS username", "r.created_at"). Joins(fmt.Sprintf("LEFT JOIN %s AS w ON r.work_id = w.id", model.NewWorkInstance().TableName())). Joins(fmt.Sprintf("LEFT JOIN %s AS e ON w.equipment_id = e.id", model.NewManageEquipment().TableName())). Joins(fmt.Sprintf("LEFT JOIN %s AS u ON w.uid = u.uuid", model.NewSysUser().TableName())). Where("r.is_deleted = ?", model.DeleteStatusForNot) if len(where) > 0 { for _, wo := range where { db = db.Where(wo.Condition, wo.Value) } } out := make([]*WorkRepairInfo, 0) if err := db.Count(count).Error; err != nil { return nil, err } if err := db.Order("r.id " + model.OrderModeToDesc).Offset((page - 1) * pageSize).Limit(pageSize).Scan(&out).Error; err != nil { return nil, err } return out, nil } // Detail 维修工单信息 func (m *WorkRepair) Detail(id uint64) (*WorkRepairInfo, error) { db := orm.GetDB().Table(m.TableName()+" r"). Select("r.id", "r.order_no", "r.work_id", "r.status", "r.created_at"). Where("r.id = ?", id) out := new(WorkRepairInfo) if err := db.Scan(&out).Error; err != nil { return nil, err } return out, nil } func NewWorkRepair() *WorkRepair { return &WorkRepair{model.NewWorkRepair()} }