diff --git a/app/common/init.go b/app/common/init.go index 0cd4a98..e6dd5d1 100644 --- a/app/common/init.go +++ b/app/common/init.go @@ -5,6 +5,7 @@ import ( "ArmedPolice/config" "ArmedPolice/lib" "ArmedPolice/serve/orm" + "ArmedPolice/utils" "fmt" ) @@ -72,7 +73,10 @@ func initModel() { } } function( - &synchronized{iModel: model.NewSysTenant()}, + &synchronized{iModel: model.NewSysTenant(), iValues: func() interface{} { + snowflake, _ := utils.NewSnowflake(1) + return &model.SysTenant{Key: utils.IntToString(snowflake.GetID()), Name: "中国武警总队", Remark: "中国武警总队"} + }}, &synchronized{iModel: model.NewSysConfig(), iValues: func() interface{} { values := make([]*structForSysConfig, 0) @@ -94,8 +98,8 @@ func initModel() { }}, &synchronized{iModel: model.NewSysMenu()}, &synchronized{iModel: model.NewSysAuth()}, &synchronized{iModel: model.NewSysUser(), iValues: func() interface{} { - return &model.SysUser{Account: "admin", Name: "超级管理员", Mobile: "13888888888", Password: "123456", - IsAdmin: model.SysUserAdministratorForAdmin, Remark: "超级管理员"} + return &model.SysUser{ModelTenant: model.ModelTenant{TenantID: 1}, Account: "admin", Name: "超级管理员", + Mobile: "13888888888", Password: "123456", IsAdmin: model.SysUserAdministratorForAdmin, Remark: "超级管理员"} }}, &synchronized{iModel: model.NewSysRole(), iValues: func() interface{} { out := make([]*model.SysRole, 0) @@ -154,6 +158,7 @@ func initModel() { &synchronized{iModel: model.NewWorkRepair()}, &synchronized{iModel: model.NewWorkRepairDetail()}, ) } + func initCacheMode() { db := orm.GetDB() @@ -179,6 +184,16 @@ func initCacheMode() { config.SystemConfig[v.Key] = v.Value } }}, + &caches{iModel: model.NewSysBreakdown(), iValues: func() interface{} { + out := make([]*model.SysBreakdown, 0) + _ = model.Find(model.NewSysBreakdown(), &out) + return out + }, toCache: func(values interface{}) { + out := values.([]*model.SysBreakdown) + for _, v := range out { + config.SystemBreakdown[v.ID] = v.Title + } + }}, ) } diff --git a/app/controller/config/breakdown.go b/app/controller/config/breakdown.go index 9205c0f..9e42d72 100644 --- a/app/controller/config/breakdown.go +++ b/app/controller/config/breakdown.go @@ -5,6 +5,8 @@ import ( "ArmedPolice/app/controller/basic" "ArmedPolice/app/model" "ArmedPolice/app/service" + "ArmedPolice/config" + "time" ) type Breakdown struct{ *service.Session } @@ -69,15 +71,23 @@ func (c *Breakdown) Form(id uint64, title, remark string) error { mSysBreakdown := model.NewSysBreakdown() if id > 0 { - mSysBreakdown.ID = mSysBreakdown.ID + mSysBreakdown.ID = id - return model2.Updates(mSysBreakdown.SysBreakdown, map[string]interface{}{ - "title": title, "remark": remark, - }) + if err := model2.Updates(mSysBreakdown.SysBreakdown, map[string]interface{}{ + "title": title, "remark": remark, "updated_at": time.Now(), + }); err != nil { + return err + } + } else { + mSysBreakdown.Title = title + mSysBreakdown.Remark = remark + + if err := model2.Create(mSysBreakdown.SysBreakdown); err != nil { + return err + } } - mSysBreakdown.Title = title - mSysBreakdown.Remark = remark - return model2.Create(mSysBreakdown.SysBreakdown) + config.SystemBreakdown[id] = title + return nil } // Delete 删除操作 diff --git a/app/controller/dashboard/instance.go b/app/controller/dashboard/instance.go index 2fa0008..6491848 100644 --- a/app/controller/dashboard/instance.go +++ b/app/controller/dashboard/instance.go @@ -51,17 +51,25 @@ func (c *Instance) Workbench(limit int) ([]*instanceInfoForWorkbench, error) { if err != nil { return nil, err } + // 筛选用户可操作的流程信息 + condition := &model.WorkbenchCondition{ + UID: c.UIDToString(), RoleIDs: roleIDs, + } + + if condition.WorkSchedule, err = model.NewWorkSchedule().WorkSchedules(model2.WorkScheduleKindForRepair, condition); err != nil { + return nil, err + } mWorkInstance := model.NewWorkInstance() out := make([]*model.WorkInstanceInfo, 0) - if out, err = mWorkInstance.Workbench(&model.WorkbenchCondition{ - UID: c.UIDToString(), RoleIDs: roleIDs, - }, limit); err != nil { + if out, err = mWorkInstance.Workbench(condition, limit); err != nil { return nil, err } list := make([]*instanceInfoForWorkbench, 0) + mSysBreakdown := model.NewSysBreakdown() + for _, v := range out { mWorkInstance.SetID(v.ID) @@ -69,7 +77,7 @@ func (c *Instance) Workbench(limit int) ([]*instanceInfoForWorkbench, error) { CommonIDString: basic.CommonIDString{ID: mWorkInstance.GetEncodeID()}, EquipmentCode: v.EquipmentCode, EquipmentTitle: v.EquipmentTitle, - BreakdownTitle: v.BreakdownTitle, + BreakdownTitle: mSysBreakdown.BreakdownTitle(v.Breakdown), Username: v.Username, CreatedAt: v.CreatedAt, }) diff --git a/app/controller/work/instance.go b/app/controller/work/instance.go index e92c6e8..b564b32 100644 --- a/app/controller/work/instance.go +++ b/app/controller/work/instance.go @@ -209,8 +209,11 @@ func (c *Instance) List(equipmentCode, equipmentTitle string, kind, page, pageSi } list := make([]*InstanceInfo, 0) + mSysBreakdown := model.NewSysBreakdown() + for _, v := range out { mWorkInstance.ID = v.ID + v.BreakdownTitle = mSysBreakdown.BreakdownTitle(v.Breakdown) list = append(list, &InstanceInfo{ CommonIDString: basic.CommonIDString{ID: mWorkInstance.GetEncodeID()}, WorkInstanceInfo: v, @@ -243,8 +246,11 @@ func (c *Instance) Person(equipmentCode, equipmentTitle string, kind, page, page } list := make([]*InstanceInfo, 0) + mSysBreakdown := model.NewSysBreakdown() + for _, v := range out { mWorkInstance.ID = v.ID + v.BreakdownTitle = mSysBreakdown.BreakdownTitle(v.Breakdown) list = append(list, &InstanceInfo{ CommonIDString: basic.CommonIDString{ID: mWorkInstance.GetEncodeID()}, WorkInstanceInfo: v, @@ -277,19 +283,28 @@ func (c *Instance) Workbench(equipmentCode, equipmentTitle string, kind, page, p if kind > 0 { where = append(where, model2.NewWhere("w.kind", kind)) } + // 筛选用户可操作的流程信息 + condition := &model.WorkbenchCondition{ + UID: c.UIDToString(), RoleIDs: roleIDs, + } + + if condition.WorkSchedule, err = model.NewWorkSchedule().WorkSchedules(model2.WorkScheduleKindForRepair, condition); err != nil { + return nil, err + } var count int64 out := make([]*model.WorkInstanceInfo, 0) - if out, err = mWorkInstance.Workbenchs(&model.WorkbenchCondition{ - UID: c.UIDToString(), RoleIDs: roleIDs, - }, page, pageSize, &count, where...); err != nil { + if out, err = mWorkInstance.Workbenchs(condition, page, pageSize, &count, where...); err != nil { return nil, err } list := make([]*InstanceInfo, 0) + mSysBreakdown := model.NewSysBreakdown() + for _, v := range out { mWorkInstance.ID = v.ID + v.BreakdownTitle = mSysBreakdown.BreakdownTitle(v.Breakdown) list = append(list, &InstanceInfo{ CommonIDString: basic.CommonIDString{ID: mWorkInstance.GetEncodeID()}, WorkInstanceInfo: v, @@ -313,6 +328,7 @@ func (c *Instance) Detail(id uint64) (*InstanceDetailInfo, error) { out.CommonIDString = basic.CommonIDString{ ID: mWorkInstance.GetEncodeID(), } + out.WorkInstanceInfo.BreakdownTitle = model.NewSysBreakdown().BreakdownTitle(out.WorkInstanceInfo.Breakdown) out.EquipmentID = (&model2.Model{ID: out.WorkInstanceInfo.EquipmentID}).GetEncodeID() out.ScheduleID = (&model2.Model{ID: out.WorkInstanceInfo.ScheduleID}).GetEncodeID() // 位置信息 diff --git a/app/controller/work/repair.go b/app/controller/work/repair.go index bcbad26..5864954 100644 --- a/app/controller/work/repair.go +++ b/app/controller/work/repair.go @@ -54,7 +54,11 @@ func (c *Repair) List(orderNo, equipmentCode, equipmentTitle string, page, pageS } list := make([]*RepairInfo, 0) + mSysBreakdown := model.NewSysBreakdown() + for _, v := range out { + v.BreakdownTitle = mSysBreakdown.BreakdownTitle(v.Breakdown) + list = append(list, &RepairInfo{ CommonIDString: basic.CommonIDString{ID: v.GetEncodeID()}, WorkRepairInfo: v, @@ -92,7 +96,7 @@ func (c *Repair) Detail(id uint64) (*RepairDetailInfo, error) { // 器材信息 materials := make([]*model.WorkMaterialInfo, 0) - if materials, err = model.NewWorkMaterial().Materials(id); err != nil { + if materials, err = model.NewWorkMaterial().Materials(repair.WorkID); err != nil { return nil, err } // 采购信息 diff --git a/app/model/sys_breakdown.go b/app/model/sys_breakdown.go index 6f586b9..f0df20b 100644 --- a/app/model/sys_breakdown.go +++ b/app/model/sys_breakdown.go @@ -1,11 +1,32 @@ package model -import "ArmedPolice/app/common/model" +import ( + "ArmedPolice/app/common/model" + "ArmedPolice/config" + "ArmedPolice/utils" + "strings" +) type SysBreakdown struct { *model.SysBreakdown } +// BreakdownTitle 故障信息 +func (m *SysBreakdown) BreakdownTitle(breakdown string) string { + src := strings.Split(breakdown, ",") + out := make([]string, 0) + + for _, v := range src { + data, has := config.SystemBreakdown[utils.StringToUnit64(v)] + + if !has { + continue + } + out = append(out, data) + } + return strings.Join(out, ",") +} + func NewSysBreakdown() *SysBreakdown { return &SysBreakdown{} } diff --git a/app/model/work_instance.go b/app/model/work_instance.go index 11f23f7..9d6ac85 100644 --- a/app/model/work_instance.go +++ b/app/model/work_instance.go @@ -22,6 +22,7 @@ type ( EquipmentID uint64 `json:"-"` EquipmentCode string `json:"equipment_code"` EquipmentTitle string `json:"equipment_title"` + Breakdown string `json:"-"` BreakdownTitle string `json:"breakdown_title"` ScheduleID uint64 `json:"-"` ScheduleTitle string `json:"schedule_title"` @@ -44,8 +45,9 @@ type ( // WorkbenchCondition 工作台条件 type WorkbenchCondition struct { - UID string - RoleIDs []string + UID string + RoleIDs []string + WorkSchedule []uint64 } func (m *WorkbenchCondition) roleInfo() string { @@ -55,11 +57,24 @@ func (m *WorkbenchCondition) roleInfo() string { return strings.Join(m.RoleIDs, ",") } +func (m *WorkbenchCondition) workScheduleInfo() string { + if len(m.WorkSchedule) <= 0 { + return "''" + } + out := make([]string, 0) + + for _, v := range m.WorkSchedule { + out = append(out, fmt.Sprintf("%d", v)) + } + return strings.Join(out, ",") +} + // Detail 详细信息 func (m *WorkInstance) Detail(id uint64) (*WorkInstanceInfo, error) { db := orm.GetDB().Table(m.TableName()+" AS w"). Select("w.id", "w.kind", "w.title", "w.equipment_id", "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.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", "w.schedule AS schedule_id", "s.title AS schedule_title", "supplier.name AS supplier_name", "w.distribution", "w.plate_number", "w.remark", "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 s ON w.schedule = s.id", model.NewWorkSchedule().TableName())). @@ -78,7 +93,8 @@ func (m *WorkInstance) Detail(id uint64) (*WorkInstanceInfo, error) { 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.order_no", "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.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", "s.title AS schedule_title", "w.status", "u.name AS username", "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 s ON w.schedule = s.id", model.NewWorkSchedule().TableName())). @@ -106,7 +122,8 @@ func (m *WorkInstance) Instances(page, pageSize int, count *int64, where ...*mod func (m *WorkInstance) Persons(uid uint64, page, pageSize int, count *int64, where ...*model.ModelWhere) ([]*WorkInstanceInfo, error) { db := orm.GetDB().Table(m.TableName()+" AS w"). Select("w.id", "w.order_no", "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.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", "s.title AS schedule_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 s ON w.schedule = s.id", model.NewWorkSchedule().TableName())). @@ -132,27 +149,30 @@ func (m *WorkInstance) Persons(uid uint64, page, pageSize int, count *int64, whe func (m *WorkInstance) Workbench(condition *WorkbenchCondition, limit int, where ...*model.ModelWhere) ([]*WorkInstanceInfo, error) { mWorkSchedule := model.NewWorkSchedule() - _condition := fmt.Sprintf(`CASE %s -WHEN %d THEN -(SELECT GROUP_CONCAT(a.id) FROM (SELECT id FROM %s WHERE target = %d AND target_value IN (%s)) AS a) -WHEN %d THEN -(SELECT GROUP_CONCAT(a.id) FROM (SELECT id FROM %s WHERE target = %d AND target_value IN (%s)) AS a) -ELSE "" END`, "s.target", - model.WorkScheduleTargetForPerson, - mWorkSchedule.TableName(), model.WorkScheduleTargetForPerson, condition.UID, - model.WorkScheduleTargetForRole, - mWorkSchedule.TableName(), model.WorkScheduleTargetForRole, condition.roleInfo()) + // _condition := fmt.Sprintf(`CASE %s + //WHEN %d THEN + //(SELECT GROUP_CONCAT(a.id) FROM (SELECT id FROM %s WHERE target = %d AND target_value IN (%s)) AS a) + //WHEN %d THEN + //(SELECT GROUP_CONCAT(a.id) FROM (SELECT id FROM %s WHERE target = %d AND target_value IN (%s)) AS a) + //ELSE "" END`, "s.target", + // model.WorkScheduleTargetForPerson, + // mWorkSchedule.TableName(), model.WorkScheduleTargetForPerson, condition.UID, + // model.WorkScheduleTargetForRole, + // mWorkSchedule.TableName(), model.WorkScheduleTargetForRole, condition.roleInfo()) db := orm.GetDB().Table(m.TableName()+" AS w"). Select("w.id", "w.order_no", "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.breakdown", + // TODO:因mysql与sqlite3中Find_In_Set不兼容,故只能将其注释,更改为组合查询 + //"(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", "s.title AS schedule_title", "w.status", "u.name AS username", "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 s ON w.schedule = s.id", mWorkSchedule.TableName())). Joins(fmt.Sprintf("LEFT JOIN %s AS u ON w.uid = u.uuid", model.NewSysUser().TableName())). Where("w.is_deleted = ?", model.DeleteStatusForNot). Where("w.status = ?", model.WorkInstanceStatusForOngoing). - Where(fmt.Sprintf("FIND_IN_SET(w.schedule, %s)", _condition)) + //Where(fmt.Sprintf("w.schedule IN (%s)", _condition)) + Where("w.schedule IN (?)", condition.WorkSchedule) if len(where) > 0 { for _, wo := range where { @@ -171,27 +191,29 @@ ELSE "" END`, "s.target", func (m *WorkInstance) Workbenchs(condition *WorkbenchCondition, page, pageSize int, count *int64, where ...*model.ModelWhere) ([]*WorkInstanceInfo, error) { mWorkSchedule := model.NewWorkSchedule() - _condition := fmt.Sprintf(`CASE %s -WHEN %d THEN -(SELECT GROUP_CONCAT(a.id) FROM (SELECT id FROM %s WHERE target = %d AND target_value IN (%s)) AS a) -WHEN %d THEN -(SELECT GROUP_CONCAT(a.id) FROM (SELECT id FROM %s WHERE target = %d AND target_value IN (%s)) AS a) -ELSE "" END`, "s.target", - model.WorkScheduleTargetForPerson, - mWorkSchedule.TableName(), model.WorkScheduleTargetForPerson, condition.UID, - model.WorkScheduleTargetForRole, - mWorkSchedule.TableName(), model.WorkScheduleTargetForRole, condition.roleInfo()) + // _condition := fmt.Sprintf(`CASE %s + //WHEN %d THEN + //(SELECT GROUP_CONCAT(a.id) FROM (SELECT id FROM %s WHERE target = %d AND target_value IN (%s)) AS a) + //WHEN %d THEN + //(SELECT GROUP_CONCAT(a.id) FROM (SELECT id FROM %s WHERE target = %d AND target_value IN (%s)) AS a) + //ELSE "" END`, "s.target", + // model.WorkScheduleTargetForPerson, + // mWorkSchedule.TableName(), model.WorkScheduleTargetForPerson, condition.UID, + // model.WorkScheduleTargetForRole, + // mWorkSchedule.TableName(), model.WorkScheduleTargetForRole, condition.roleInfo()) db := orm.GetDB().Table(m.TableName()+" AS w"). Select("w.id", "w.order_no", "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.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", "s.title AS schedule_title", "w.status", "u.name AS username", "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 s ON w.schedule = s.id", mWorkSchedule.TableName())). Joins(fmt.Sprintf("LEFT JOIN %s AS u ON w.uid = u.uuid", model.NewSysUser().TableName())). Where("w.is_deleted = ?", model.DeleteStatusForNot). Where("w.status = ?", model.WorkInstanceStatusForOngoing). - Where(fmt.Sprintf("FIND_IN_SET(w.schedule, %s)", _condition)) + //Where(fmt.Sprintf("w.schedule IN (%s)", _condition)) + Where("w.schedule IN (?)", condition.WorkSchedule) if len(where) > 0 { for _, wo := range where { diff --git a/app/model/work_repair.go b/app/model/work_repair.go index fa9bff9..323bf7c 100644 --- a/app/model/work_repair.go +++ b/app/model/work_repair.go @@ -17,6 +17,7 @@ type WorkRepairInfo struct { 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"` } @@ -29,7 +30,8 @@ type WorkRepairEvaluateInfo struct { 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", - "(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.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())). @@ -55,11 +57,8 @@ func (m *WorkRepair) Repairs(page, pageSize int, count *int64, where ...*model.M // Detail 维修工单信息 func (m *WorkRepair) Detail(id uint64) (*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", - "(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", + Select("r.id", "r.order_no", "r.work_id", "r.status", "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())). Where("r.id = ?", id) out := new(WorkRepairInfo) diff --git a/app/model/work_schedule.go b/app/model/work_schedule.go index 87f9c3a..c1c23c4 100644 --- a/app/model/work_schedule.go +++ b/app/model/work_schedule.go @@ -146,6 +146,27 @@ FROM %s AS s WHERE s.is_deleted = %d ORDER BY s.kind ASC, s.stage ASC, s.step A return out, err } +// WorkSchedules 工作流程信息 +func (m *WorkSchedule) WorkSchedules(kind model.WorkScheduleKind, condition *WorkbenchCondition) ([]uint64, error) { + sql := `SELECT id FROM %s WHERE +(CASE target +WHEN %d THEN +( SELECT GROUP_CONCAT( a.id SEPARATOR ',' ) FROM ( SELECT id FROM work_schedule WHERE target = 1 AND target_value IN (%s)) AS a ) +WHEN %d THEN +(SELECT GROUP_CONCAT( a.id SEPARATOR ',' ) FROM ( SELECT id FROM work_schedule WHERE target = 2 AND target_value IN (%s)) AS a ) +ELSE "" END) != '' AND kind = %d +AND is_deleted = %d` + + out := make([]uint64, 0) + + err := orm.GetDB().Raw(fmt.Sprintf(sql, m.TableName(), + model.WorkScheduleTargetForPerson, condition.UID, + model.WorkScheduleTargetForRole, condition.roleInfo(), + kind, model.DeleteStatusForNot)).Pluck("id", &out).Error + + return out, err +} + func NewWorkSchedule() *WorkSchedule { return &WorkSchedule{model.NewWorkSchedule()} } diff --git a/config/system.go b/config/system.go index acb6fe2..72d6694 100644 --- a/config/system.go +++ b/config/system.go @@ -1,6 +1,10 @@ package config -var SystemConfig = map[string]interface{}{} +var ( + // SystemConfig 系统配置 + SystemConfig = make(map[string]interface{}, 0) + SystemBreakdown = make(map[uint64]string, 0) +) //png,jpg,csv,xls,xlsx,pcm,wav,amr,mp3,mp4,json