diff --git a/app/api/user.go b/app/api/user.go index 3f2c169..cb1522b 100644 --- a/app/api/user.go +++ b/app/api/user.go @@ -355,13 +355,13 @@ func (*User) Frozen(c *gin.Context) { * * @apiParam {String} id ID * -* @apiSuccess (200) {Number} code 成功响应状态码! -* @apiSuccess (200) {String} msg 成功提示 * @apiSuccess (200) {Object} data 数据信息 * @apiSuccess (200) {String} data.id 角色ID * @apiSuccess (200) {String} data.name 角色名称 * @apiSuccess (200) {String} data.parent_id 角色父集ID * @apiSuccess (200) {Object} data.children 子集 +* @apiSuccess (200) {Number} code 成功响应状态码! +* @apiSuccess (200) {String} msg 成功提示 * * @apiSuccessExample {json} Success response: * HTTPS 200 OK diff --git a/app/api/work.go b/app/api/work.go index 5888fc4..da22b28 100644 --- a/app/api/work.go +++ b/app/api/work.go @@ -94,6 +94,51 @@ func (*Work) Instance(c *gin.Context) { APIResponse(err, data)(c) } +/** +* @api {post} /api/v1/work/person 个人申请信息 +* @apiVersion 1.0.0 +* @apiName WorkPerson +* @apiGroup Work +* +* @apiHeader {string} x-token token +* @apiHeader {string} Content-Type=application/json 传输方式 +* +* @apiParam {String} [material_id=0] 装备ID +* @apiParam {String} [kind=0] 工单类型 +* @apiParam {Number} current 当前页 +* @apiParam {Number} page_size 页展示数 +* +* @apiSuccess (200) {Number} code 成功响应状态码! +* @apiSuccess (200) {String} msg 成功提示 +* @apiSuccess (200) {Array} data 数据信息 +* @apiSuccess (200) {String} data.id ID +* @apiSuccess (200) {String} data.title 标题名称 +* @apiSuccess (200) {String} data.material_code 装备编码 +* @apiSuccess (200) {String} data.material_title 装备名称 +* @apiSuccess (200) {String} data.breakdown_title 故障信息 +* @apiSuccess (200) {Number} data.priority 紧急状态(1:普通,2:紧急,3:非常紧急) +* @apiSuccess (200) {Number} data.status 状态(0:进行中,1:已完成) +* @apiSuccess (200) {Time} data.created_at 创建时间 +* +* @apiSuccessExample {json} Success response: +* HTTPS 200 OK +* { +* "code": 200 +* "msg": "ok" +* "data": [ +* { +* "id": "m9Qa2ZaOvE", +* "title": "刹车盘", +* "material_code": "装备编码", +* "material_title": "装备名称", +* "breakdown_title": "发动机,刹车盘", +* "priority": 1, +* "status": 0, +* "created_at": "2021-11-05T14:24:07+08:00", +* } +* ] +* } + */ func (*Work) Person(c *gin.Context) { form := &struct { MaterialID uint64 `json:"material_id" form:"material_id"` @@ -108,8 +153,18 @@ func (*Work) Person(c *gin.Context) { APIResponse(err, data)(c) } -func (*Work) ToDo(c *gin.Context) { - +func (*Work) Workbench(c *gin.Context) { + form := &struct { + MaterialID uint64 `json:"material_id" form:"material_id"` + Kind int `json:"kind" form:"kind"` + PageForm + }{} + if err := bind(form)(c); err != nil { + APIFailure(err.(error))(c) + return + } + data, err := work.NewInstance()(getSession()(c).(*service.Session)).Workbench(form.MaterialID, form.Kind, form.Page, form.PageSize) + APIResponse(err, data)(c) } func (*Work) Detail(c *gin.Context) { diff --git a/app/controller/work/instance.go b/app/controller/work/instance.go index 8960f58..2ebac8f 100644 --- a/app/controller/work/instance.go +++ b/app/controller/work/instance.go @@ -125,8 +125,17 @@ func (c *Instance) Person(materialID uint64, kind, page, pageSize int) (*basic.P } // Workbench 工作台 -func (c *Instance) Workbench() { +func (c *Instance) Workbench(materialID uint64, kind, page, pageSize int) (*basic.PageDataResponse, error) { + // 查询用户角色信息 + mSysUserRole := model.NewSysUserRole() + roleIDs := make([]string, 0) + err := model2.Pluck(mSysUserRole.SysUserRole, "id", &roleIDs, model2.NewWhere("uid", c.UID)) + + if err != nil { + return nil, err + } + return nil, nil } func (c *Instance) Detail(id uint64) (interface{}, error) { diff --git a/app/controller/work/person.go b/app/controller/work/person.go deleted file mode 100644 index 23df462..0000000 --- a/app/controller/work/person.go +++ /dev/null @@ -1,20 +0,0 @@ -package work - -import ( - "ArmedPolice/app/controller/basic" - "ArmedPolice/app/service" -) - -type Person struct{ *service.Session } - -type PersonHandle func(session *service.Session) *Person - -func (c *Person) List() (*basic.PageDataResponse, error) { - return &basic.PageDataResponse{Data: nil, Count: 0}, nil -} - -func NewPerson() PersonHandle { - return func(session *service.Session) *Person { - return &Person{session} - } -} diff --git a/app/model/work_instance.go b/app/model/work_instance.go index 47054db..906f339 100644 --- a/app/model/work_instance.go +++ b/app/model/work_instance.go @@ -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()} } diff --git a/router/router.go b/router/router.go index 043b1c9..dce42a3 100644 --- a/router/router.go +++ b/router/router.go @@ -95,6 +95,8 @@ func (this *Router) registerAPI() { userV1.POST("/password/tradition", _api.PasswordTradition) userV1.POST("/activate", _api.Activate) userV1.POST("/frozen", _api.Frozen) + userV1.POST("/role", _api.Role) + userV1.POST("/role/bind", _api.RoleBind) } // Menu 菜单管理 menuV1 := v1.Group("/menu")