173 lines
5.4 KiB
Go
173 lines
5.4 KiB
Go
package api
|
||
|
||
import (
|
||
"ArmedPolice/app/controller/work"
|
||
"ArmedPolice/app/service"
|
||
"github.com/gin-gonic/gin"
|
||
)
|
||
|
||
/**
|
||
* @apiDefine Work 工单管理
|
||
*/
|
||
|
||
type Work struct{}
|
||
|
||
type (
|
||
// workLaunchForm 工单发起基本信息
|
||
workLaunchForm struct {
|
||
Kind int `json:"kind" form:"kind" binding:"required"` // 类型
|
||
Title string `json:"title" form:"title"`
|
||
EquipmentID uint64 `json:"equipment_id" form:"equipment_id" binding:"required"` // 装备ID
|
||
Breakdowns []uint64 `json:"breakdowns" form:"breakdowns"` // 故障类型
|
||
PlateNumber string `json:"plate_number" form:"plate_number"` // 车牌号
|
||
Priority int `json:"priority" form:"priority" binding:"required"` // 优先级
|
||
IsAssist int `json:"is_assist" form:"is_assist"` // 是否需要上级审批
|
||
Remark string `json:"remark" form:"remark"` // 备注信息
|
||
}
|
||
// workLaunchMaterialForm 工单发起配件信息
|
||
workLaunchMaterialForm struct {
|
||
}
|
||
// workLaunchDistributionForm 工单发起地址信息
|
||
workLaunchDistributionForm struct {
|
||
Name string `json:"name" form:"name" binding:"required"` // 联系人
|
||
Mobile string `json:"mobile" form:"mobile" binding:"required"` // 联系方式
|
||
Address string `json:"address" form:"address" binding:"required"` // 联系地址
|
||
}
|
||
)
|
||
|
||
/**
|
||
* @api {post} /api/v1/work/list 工单信息
|
||
* @apiVersion 1.0.0
|
||
* @apiName WorkList
|
||
* @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) Instance(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)).List(form.MaterialID, form.Kind, form.Page, form.PageSize)
|
||
APIResponse(err, data)(c)
|
||
}
|
||
|
||
func (*Work) Person(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)).Person(form.MaterialID, form.Kind, form.Page, form.PageSize)
|
||
APIResponse(err, data)(c)
|
||
}
|
||
|
||
func (*Work) ToDo(c *gin.Context) {
|
||
|
||
}
|
||
|
||
func (*Work) Detail(c *gin.Context) {
|
||
form := new(IDStringForm)
|
||
|
||
if err := bind(form)(c); err != nil {
|
||
APIFailure(err.(error))(c)
|
||
return
|
||
}
|
||
data, err := work.NewInstance()(getSession()(c).(*service.Session)).Detail(form.Convert())
|
||
APIResponse(err, data)(c)
|
||
}
|
||
|
||
func (*Work) Launch(c *gin.Context) {
|
||
form := &struct {
|
||
workLaunchForm
|
||
Material []*workLaunchMaterialForm `json:"material" form:"material"`
|
||
Address workLaunchDistributionForm `json:"distribution" form:"distribution"`
|
||
}{}
|
||
if err := bind(form)(c); err != nil {
|
||
APIFailure(err.(error))(c)
|
||
return
|
||
}
|
||
err := work.NewInstance()(getSession()(c).(*service.Session)).Launch(&work.InstanceLaunchParams{
|
||
Kind: form.Kind, Title: form.Title, EquipmentID: form.EquipmentID, Breakdowns: form.Breakdowns,
|
||
PlateNumber: form.PlateNumber, Priority: form.Priority, IsAssist: form.IsAssist, Remark: form.Remark,
|
||
})
|
||
APIResponse(err)
|
||
}
|
||
|
||
func (*Work) Examine(c *gin.Context) {
|
||
form := &struct {
|
||
IDStringForm
|
||
Status int `json:"status" form:"status" binding:"required"`
|
||
Remark string `json:"remark" form:"remark"`
|
||
IsAssist int `json:"is_assist" form:"is_assist"`
|
||
}{}
|
||
if err := bind(form)(c); err != nil {
|
||
APIFailure(err.(error))(c)
|
||
return
|
||
}
|
||
err := work.NewInstance()(getSession()(c).(*service.Session)).Examine(form.Convert(), form.Status, form.Remark, form.IsAssist)
|
||
APIResponse(err)
|
||
}
|
||
|
||
func (*Work) Delete(c *gin.Context) {
|
||
form := new(IDStringForm)
|
||
|
||
if err := bind(form)(c); err != nil {
|
||
APIFailure(err.(error))(c)
|
||
return
|
||
}
|
||
err := work.NewInstance()(getSession()(c).(*service.Session)).Delete(form.Convert())
|
||
APIResponse(err)(c)
|
||
}
|
||
|
||
func (*Work) Schedule(c *gin.Context) {
|
||
data, err := work.NewSchedule()(getSession()(c).(*service.Session)).List()
|
||
APIResponse(err, data)(c)
|
||
}
|