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

@ -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

View File

@ -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) {

View File

@ -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) {

View File

@ -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}
}
}

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()}
}