feat:完善项目

This commit is contained in:
henry
2021-11-09 18:38:57 +08:00
parent 47fe7e5bad
commit fb77e15579
6 changed files with 110 additions and 35 deletions

View File

@ -23,15 +23,20 @@ type WorkInstanceInfo struct {
CreatedAt time.Time `json:"created_at"`
}
// WorkbenchCondition 工作台条件
type WorkbenchCondition struct {
UID string
RoleIDs []string
}
// Instances 基本信息
func (m *WorkInstance) Instances(page, pageSize int, count *int64, where ...*model.ModelWhere) ([]*WorkInstanceInfo, error) {
db := orm.GetDB().Table(m.TableName()+" AS w").
Select("w.id", "w.title", "e.code AS equipment_code", "e.title AS equipment_title", "w.priority",
"GROUP_CONCAT(b.title) AS breakdown_title", "w.status", "w.created_at").
"(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",
"w.status", "w.created_at").
Joins(fmt.Sprintf("LEFT JOIN %s AS e ON w.equipment_id = e.id", model.NewManageEquipment().TableName())).
Joins(fmt.Sprintf("LEFT JOIN %s AS b ON FIND_IN_SET(b.id, w.breakdown)", model.NewSysBreakdown().TableName())).
Where("w.is_deleted = ?", model.DeleteStatusForNot).
Group("w.id")
Where("w.is_deleted = ?", model.DeleteStatusForNot)
if len(where) > 0 {
for _, wo := range where {
@ -40,9 +45,10 @@ func (m *WorkInstance) Instances(page, pageSize int, count *int64, where ...*mod
}
out := make([]*WorkInstanceInfo, 0)
if err := orm.GetDB().Table(m.TableName()).Where("is_deleted = ?", model.DeleteStatusForNot).Count(count).Error; err != nil {
if err := db.Count(count).Error; err != nil {
return nil, err
}
if err := db.Order("w.id " + model.OrderModeToDesc).Offset((page - 1) * pageSize).Limit(pageSize).Scan(&out).Error; err != nil {
return nil, err
}
@ -51,16 +57,14 @@ func (m *WorkInstance) Instances(page, pageSize int, count *int64, where ...*mod
// Persons 个人信息
func (m *WorkInstance) Persons(uid uint64, kind model.WorkScheduleKind, page, pageSize int, count *int64, where ...*model.ModelWhere) ([]*WorkInstanceInfo, error) {
mWorkProgress := model.NewWorkProgress()
mWorkSchedule := model.NewWorkSchedule()
db := orm.GetDB().Table(model.NewWorkProgress().TableName()+" AS p").
Select("w.id", "w.title", "e.code AS equipment_code", "e.title AS equipment_title", "w.priority",
"GROUP_CONCAT(b.title) AS breakdown_title", "w.status", "w.created_at").
"(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",
"w.status", "w.created_at").
Joins(fmt.Sprintf("LEFT JOIN %s AS w ON p.work_id = w.id", m.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 b ON FIND_IN_SET(b.id, w.breakdown)", model.NewSysBreakdown().TableName())).
Joins(fmt.Sprintf("LEFT JOIN (SELECT id FROM %s WHERE kind = %d ORDER BY stage ASC, step ASC limit 1) AS s ON p.schedule_id = s.id",
mWorkSchedule.TableName(), kind)).
Where("p.is_deleted = ? AND w.is_deleted = ?", model.DeleteStatusForNot, model.DeleteStatusForNot).
@ -75,7 +79,7 @@ func (m *WorkInstance) Persons(uid uint64, kind model.WorkScheduleKind, page, pa
}
out := make([]*WorkInstanceInfo, 0)
if err := orm.GetDB().Table(mWorkProgress.TableName()).Where("is_deleted = ?", model.DeleteStatusForNot).Count(count).Error; err != nil {
if err := db.Count(count).Error; err != nil {
return nil, err
}
if err := db.Order("w.id " + model.OrderModeToDesc).Offset((page - 1) * pageSize).Limit(pageSize).Scan(&out).Error; err != nil {
@ -84,6 +88,31 @@ func (m *WorkInstance) Persons(uid uint64, kind model.WorkScheduleKind, page, pa
return out, nil
}
// Workbench 个人信息
func (m *WorkInstance) Workbench(condition *WorkbenchCondition, page, pageSize int, count *int64, where ...*model.ModelWhere) ([]*WorkInstanceInfo, error) {
db := orm.GetDB().Table(m.TableName()+" AS w").
Select("w.id", "w.title", "e.code AS equipment_code", "e.title AS equipment_title", "w.priority",
"(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",
"w.status", "w.created_at").
Joins(fmt.Sprintf("LEFT JOIN %s AS e ON w.equipment_id = e.id", model.NewManageEquipment().TableName())).
Where("w.is_deleted = ?", model.DeleteStatusForNot)
if len(where) > 0 {
for _, wo := range where {
db = db.Where(wo.Condition, wo.Value)
}
}
out := make([]*WorkInstanceInfo, 0)
//if err := orm.GetDB().Table(mWorkProgress.TableName()).Where("is_deleted = ?", model.DeleteStatusForNot).Count(count).Error; err != nil {
// return nil, err
//}
if err := db.Order("w.id " + model.OrderModeToDesc).Offset((page - 1) * pageSize).Limit(pageSize).Scan(&out).Error; err != nil {
return nil, err
}
return out, nil
}
func NewWorkInstance() *WorkInstance {
return &WorkInstance{model.NewWorkInstance()}
}