Commit b08e5d7c authored by 陈子龙's avatar 陈子龙

Merge branch 'dev-czl' into dev

parents 8033565d 0c41a7f3
...@@ -17,3 +17,24 @@ type WorkOrder struct { ...@@ -17,3 +17,24 @@ type WorkOrder struct {
UpdateUser string `json:"update_user" xorm:"update_user"` // 修改人 UpdateUser string `json:"update_user" xorm:"update_user"` // 修改人
UpdateTime time.Time `json:"update_time" xorm:"update_time" ` // 修改时间 UpdateTime time.Time `json:"update_time" xorm:"update_time" ` // 修改时间
} }
type WorkOrderIssuance struct {
Id int `json:"id" xorm:"pk autoincr" ` // id
OrderId int `json:"order_id" xorm:"order_id"` // 工单id
PushObj string `json:"push_obj" xorm:"push_obj"` // 下发对象
OrderState int `json:"order_state" xorm:"order_state"` // 工单状态(1待处置 2已完成 3已关闭)
ReasonClosure string `json:"reason_closure" xorm:"reason_closure"` // 关闭原因
CreateUser string `json:"create_user" xorm:"create_user" ` // 创建人
CreateTime time.Time `json:"create_time" xorm:"create_time" ` // 创建时间
CompleteTime time.Time `json:"complete_time" xorm:"complete_time" ` // 完成时间
}
type WorkOrderMe struct {
Id int `json:"id" xorm:"pk autoincr" ` // id
OrderId int `json:"order_id" xorm:"order_id"` // 工单id
OrderIssuanceId int `json:"order_issuance_id" xorm:"order_issuance_id"` // 工单下发表id
SystemAccount string `json:"system_account" xorm:"system_account"` // 用户账号
OrderState int `json:"order_state" xorm:"order_state"` // 工单状态(1待处置 2已完成 3已关闭)
CompleteTime time.Time `json:"complete_time" xorm:"complete_time" ` // 完成时间
ResultFeedback string `json:"result_feedback" xorm:"result_feedback" ` // 结果反馈
}
package request
type AddWorkOrderReq struct {
OrderName string `json:"order_name" binding:"required"` // 工单名称
OrderLevel int `json:"order_level" binding:"oneof=1 2 3"` // 工单等级(1紧急任务 2重要任务 3一般任务)
OrderDesc string `json:"order_desc" binding:"required"` // 工单描述
PushObj PushObj `json:"push_obj" binding:"required,dive"` // 推送对象
TimingType int `json:"timing_type" binding:"oneof=1 2 3"` // 定时类型(1手动下发 2按周 3自定义时间)
TimingWeekly TimingWeekly `json:"timing_weekly"` // 按周规则
TimingCustom []TimingCustom `json:"timing_custom"` // 自定义时间规则
}
// 推送对象
type PushObj struct {
PushMethod int `json:"push_method" binding:"oneof=1 2 3"` // 推送方式(1钉钉 2短信 3all)
UserObj []UserObj `json:"user_obj" binding:"oneof=1 2 3,dive"` // 用户对象
}
type UserObj struct {
SystemAccount string `json:"system_account" binding:"required"` // 账号
UserName string `json:"user_name"` // 姓名
Phone string `json:"phone"` // 联系方式
}
// 按周
type TimingWeekly struct {
Week []int `json:"week"` // 周日期(1周一 2周二 3周三 4周四 5周五 6周六 7周日)
PointTime string `json:"point_time"` // 时间点
}
// 自定义
type TimingCustom struct {
DateFrom string `json:"date_from"` // 日期从
DateTo string `json:"date_to"` // 日期至
PointTime string `json:"point_time"` // 时间点
}
type EditWorkOrderReq struct {
Id int `json:"id" binding:"required"` // 主键id
OrderLevel int `json:"order_level" binding:"oneof=1 2 3"` // 工单等级(1紧急任务 2重要任务 3一般任务)
OrderDesc string `json:"order_desc" binding:"required"` // 工单描述
PushObj PushObj `json:"push_obj" binding:"required,dive"` // 推送对象
TimingType int `json:"timing_type" binding:"oneof=1 2 3"` // 定时类型(1手动下发 2按周 3自定义时间)
TimingWeekly TimingWeekly `json:"timing_weekly"` // 按周规则
TimingCustom []TimingCustom `json:"timing_custom"` // 自定义时间规则
}
type StateWorkOrderReq struct {
Id int `json:"id" binding:"required"` // 主键id
TimingState int `json:"timing_state" binding:"oneof=0 1"` // 定时状态(0禁用 1启用)
}
type DelWorkOrderReq struct {
Id []int `json:"id" binding:"required"` // 主键ID
}
type ListWorkOrderManageReq struct {
Search string `json:"search" form:"search"` //关键词
OrderLevel int `json:"order_level" form:"order_level" binding:"oneof=0 1 2 3"` //工单等级(0全部 1紧急任务 2重要任务 3一般任务)
TimingType int `json:"timing_type" form:"timing_type" binding:"oneof=0 1 2 3"` //定时类型(0全部 1手动下发 2按周 3自定义时间)
CreateDateFrom string `json:"create_date_from" form:"create_date_from" ` // 创建时间从
CreateDateTo string `json:"create_date_to" form:"create_date_to" ` // 创建时间至
Pagination
}
type PushWorkOrderReq struct {
Id int `json:"id" binding:"required"` // 主键id
PushObj PushObj `json:"push_obj" binding:"required,dive"` // 推送对象
}
type CloseWorkOrderReq struct {
Id int `json:"id" binding:"required"` // 主键id
ReasonClosure string `json:"reason_closure" binding:"required"` // 关闭原因
}
type ListWorkOrderReq struct {
Search string `json:"search" form:"search"` //关键词
OrderLevel int `json:"order_level" form:"order_level" binding:"oneof=0 1 2 3"` //工单等级(0全部 1紧急任务 2重要任务 3一般任务)
OrderState int `json:"order_state" form:"order_state" binding:"oneof=0 1 2 3"` //工单状态(0全部 1待处置 2已完成 3已关闭)
CreateDateFrom string `json:"create_date_from" form:"create_date_from" ` // 创建时间从
CreateDateTo string `json:"create_date_to" form:"create_date_to" ` // 创建时间至
CompleteTimeFrom string `json:"complete_time_from" form:"complete_time_from" ` // 完成时间从
CompleteTimeTo string `json:"complete_time_to" form:"complete_time_to" ` // 完成时间至
Id int `json:"id" form:"id" ` // 工单管理主键id
Pagination
}
type FeedbackWorkOrderReq struct {
Id int `json:"id" binding:"required"` // 主键id
OrderIssuanceId int `json:"order_issuance_id" binding:"required"` // 下发工单表id
ResultFeedback string `json:"result_feedback" binding:"required"` // 结果反馈
}
package response
import (
"gitlab.wodcloud.com/smart-operation/so-operation-api/src/bean/vo/request"
"time"
)
type WorkOrderRes struct {
Id int `json:"id"` // 主键id
OrderName string `json:"order_name"` // 工单名称
OrderLevel int `json:"order_level"` // 工单等级(1紧急任务 2重要任务 3一般任务)
OrderDesc string `json:"order_desc"` // 工单描述
PushObj request.PushObj `json:"push_obj" ` // 推送对象
TimingState int `json:"timing_state"` // 定时状态(0禁用 1启用)
TimingType int `json:"timing_type"` // 定时类型(1手动下发 2按周 3自定义时间)
TimingRule interface{} `json:"timing_rule"` // 定时规则
CreateUser string `json:"create_user"` // 创建人
CreateTime time.Time `json:"create_time"` // 创建时间
UpdateUser string `json:"update_user"` // 修改人
UpdateTime time.Time `json:"update_time"` // 修改时间
}
type WorkOrderListRes struct {
Id int `json:"id"` // 主键id
OrderName string `json:"order_name"` // 工单名称
OrderLevel int `json:"order_level"` // 工单等级(1紧急任务 2重要任务 3一般任务)
OrderCnt int `json:"order_cnt"` // 实例工单数
PushObj string `json:"push_obj" ` // 推送对象
TimingType int `json:"timing_type"` // 定时类型(1手动下发 2按周 3自定义时间)
TimingState int `json:"timing_state"` // 定时状态(0禁用 1启用)
CreateUser string `json:"create_user"` // 创建人
CreateTime time.Time `json:"create_time"` // 创建时间
}
type WorkOrderIssuanceListRes struct {
Id int `json:"id"` // 主键id
OrderId int `json:"order_id"` // 工单id
OrderName string `json:"order_name"` // 工单名称
OrderLevel int `json:"order_level"` // 工单等级(1紧急任务 2重要任务 3一般任务)
OrderState int `json:"order_state"` // 工单状态(1待处置 2已完成 3已关闭)
PushObj string `json:"push_obj" ` // 推送对象
CreateUser string `json:"create_user"` // 创建人
CreateTime string `json:"create_time"` // 创建时间
CompleteTime string `json:"complete_time"` // 完成时间
StateCnt int `json:"state_cnt"` // 完成数量
AllCnt int `json:"all_cnt"` // 全部数量
}
type WorkOrderIssuanceRes struct {
Id int `json:"id"` // 主键id
OrderId int `json:"order_id"` // 工单id
OrderName string `json:"order_name"` // 工单名称
OrderLevel int `json:"order_level"` // 工单等级(1紧急任务 2重要任务 3一般任务)
OrderDesc string `json:"order_desc"` // 工单描述
OrderState int `json:"order_state"` // 工单状态(1待处置 2已完成 3已关闭)
PushObj request.PushObj `json:"push_obj" ` // 推送对象
CreateUser string `json:"create_user"` // 创建人
CreateTime string `json:"create_time"` // 创建时间
CompleteTime string `json:"complete_time"` // 完成时间
WorkOrderMe []WorkOrderMe `json:"work_order_me"` // 工单反馈
}
type WorkOrderIssuance struct {
Id int `json:"id"` // 主键id
OrderId int `json:"order_id"` // 工单id
OrderName string `json:"order_name"` // 工单名称
OrderLevel int `json:"order_level"` // 工单等级(1紧急任务 2重要任务 3一般任务)
OrderDesc string `json:"order_desc"` // 工单描述
OrderState int `json:"order_state"` // 工单状态(1待处置 2已完成 3已关闭)
PushObj string `json:"push_obj" ` // 推送对象
CreateUser string `json:"create_user"` // 创建人
CreateTime string `json:"create_time"` // 创建时间
CompleteTime string `json:"complete_time"` // 完成时间
}
type WorkOrderMe struct {
Id int `json:"id"` // id
OrderId int `json:"order_id"` // 工单id
OrderIssuanceId int `json:"order_issuance_id"` // 工单下发表id
SystemAccount string `json:"system_account"` // 用户账号
OrderState int `json:"order_state"` // 工单状态(1待处置 2已完成 3已关闭)
CompleteTime string `json:"complete_time"` // 完成时间
ResultFeedback string `json:"result_feedback"` // 结果反馈
}
type WorkOrderMeListRes struct {
Id int `json:"id"` // 主键id
OrderId int `json:"order_id"` // 工单id
OrderIssuanceId int `json:"order_issuance_id"` // 工单下发表id
OrderName string `json:"order_name"` // 工单名称
OrderLevel int `json:"order_level"` // 工单等级(1紧急任务 2重要任务 3一般任务)
OrderState int `json:"order_state"` // 工单状态(1待处置 2已完成 3已关闭)
PushObj string `json:"push_obj" ` // 推送对象
CreateUser string `json:"create_user"` // 创建人
CreateTime string `json:"create_time"` // 创建时间
CompleteTime string `json:"complete_time"` // 完成时间
}
package controller package controller
import ( import (
"errors"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/spf13/cast"
"gitlab.wodcloud.com/smart-operation/so-operation-api/src/bean/vo/request"
"gitlab.wodcloud.com/smart-operation/so-operation-api/src/pkg/beagle/resp" "gitlab.wodcloud.com/smart-operation/so-operation-api/src/pkg/beagle/resp"
"gitlab.wodcloud.com/smart-operation/so-operation-api/src/service"
"gitlab.wodcloud.com/smart-operation/so-operation-api/src/util"
) )
// AddWorkOrderManage 新增业务工单管理 // AddWorkOrderManage 新增业务工单管理
func AddWorkOrderManage(c *gin.Context) { func AddWorkOrderManage(c *gin.Context) {
//var req request.AddTaskManageReq var req request.AddWorkOrderReq
//if err := c.ShouldBindJSON(&req); err != nil { if err := c.ShouldBindJSON(&req); err != nil {
// SendJsonResponse(c, resp.InvalidParam.WithError(err), nil) SendJsonResponse(c, resp.InvalidParam.WithError(err), nil)
// return return
//} }
////参数校验
//if err := util.ValidateSimple(req, "TaskName,HostGroupId"); err != nil { workOrderManageSvc := service.WorkOrderManageSvc{}
// SendJsonResponse(c, resp.InvalidParam.WithError(err), nil) err := workOrderManageSvc.AddWorkOrderManage(req)
// return if err != nil {
//} SendJsonResponse(c, err, nil)
// return
//taskManageSvc := service.TaskManageSvc{} }
//err := taskManageSvc.AddTaskManage(req) SendJsonResponse(c, resp.OK, nil)
//if err != nil { }
// SendJsonResponse(c, err, nil)
// return // EditWorkOrderManage 编辑业务工单管理
//} func EditWorkOrderManage(c *gin.Context) {
var req request.EditWorkOrderReq
if err := c.ShouldBindJSON(&req); err != nil {
SendJsonResponse(c, resp.InvalidParam.WithError(err), nil)
return
}
//参数校验
if err := util.ValidateSimple(req, "Id,HostGroupId"); err != nil {
SendJsonResponse(c, resp.InvalidParam.WithError(err), nil)
return
}
workOrderManageSvc := service.WorkOrderManageSvc{}
err := workOrderManageSvc.EditWorkOrderManage(req)
if err != nil {
SendJsonResponse(c, err, nil)
return
}
SendJsonResponse(c, resp.OK, nil) SendJsonResponse(c, resp.OK, nil)
} }
// // StateWorkOrderManage 定时是否启用
//// EditTaskManage 编辑任务 func StateWorkOrderManage(c *gin.Context) {
//func EditTaskManage(c *gin.Context) { var req request.StateWorkOrderReq
// var req request.EditTaskManageReq if err := c.ShouldBindJSON(&req); err != nil {
// if err := c.ShouldBindJSON(&req); err != nil { SendJsonResponse(c, resp.InvalidParam.WithError(err), nil)
// SendJsonResponse(c, resp.InvalidParam.WithError(err), nil) return
// return }
// } //参数校验
// //参数校验 if err := util.ValidateSimple(req, "Id,HostGroupId"); err != nil {
// if err := util.ValidateSimple(req, "Id,HostGroupId"); err != nil { SendJsonResponse(c, resp.InvalidParam.WithError(err), nil)
// SendJsonResponse(c, resp.InvalidParam.WithError(err), nil) return
// return }
// }
// workOrderManageSvc := service.WorkOrderManageSvc{}
// taskManageSvc := service.TaskManageSvc{} err := workOrderManageSvc.StateWorkOrderManage(req)
// err := taskManageSvc.EditTaskManage(req) if err != nil {
// if err != nil { SendJsonResponse(c, err, nil)
// SendJsonResponse(c, err, nil) return
// return }
// } SendJsonResponse(c, resp.OK, nil)
// SendJsonResponse(c, resp.OK, nil) }
//}
// // DelWorkOrderManage 删除
//// DelTaskManage 删除任务 func DelWorkOrderManage(c *gin.Context) {
//func DelTaskManage(c *gin.Context) { var req request.DelWorkOrderReq
// var req request.DelTaskManageReq if err := c.ShouldBindJSON(&req); err != nil {
// if err := c.ShouldBindJSON(&req); err != nil { SendJsonResponse(c, resp.InvalidParam.WithError(err), nil)
// SendJsonResponse(c, resp.InvalidParam.WithError(err), nil) return
// return }
// } //参数校验
// //参数校验 if err := util.ValidateSimple(req, "Id"); err != nil {
// if err := util.ValidateSimple(req, "Id"); err != nil { SendJsonResponse(c, resp.InvalidParam.WithError(err), nil)
// SendJsonResponse(c, resp.InvalidParam.WithError(err), nil) return
// return }
// }
// workOrderManageSvc := service.WorkOrderManageSvc{}
// taskManageSvc := service.TaskManageSvc{} err := workOrderManageSvc.DelWorkOrderManage(req)
// err := taskManageSvc.DelTaskManage(req) if err != nil {
// if err != nil { SendJsonResponse(c, err, nil)
// SendJsonResponse(c, err, nil) return
// return }
// } SendJsonResponse(c, resp.OK, nil)
// SendJsonResponse(c, resp.OK, nil) }
//}
// // DetailsWorkOrderManage 详情
//// DetailsTaskManage 任务详情 func DetailsWorkOrderManage(c *gin.Context) {
//func DetailsTaskManage(c *gin.Context) { var (
// var ( err error
// err error id string
// id string )
// )
// if id = c.Query("id"); id == "" {
// if id = c.Query("id"); id == "" { id = c.Param("id")
// id = c.Param("id") }
// } if id == "" {
// if id == "" { SendJsonResponse(c, resp.InvalidParam.WithError(errors.New("id为空")), nil)
// SendJsonResponse(c, resp.InvalidParam.WithError(errors.New("id为空")), nil) return
// return }
// }
// workOrderManageSvc := service.WorkOrderManageSvc{}
// taskManageSvc := service.TaskManageSvc{} data, err := workOrderManageSvc.DetailsWorkOrderManage(cast.ToInt(id))
// data, err := taskManageSvc.DetailsTaskManage(cast.ToInt(id)) if err != nil {
// if err != nil { SendJsonResponse(c, err, nil)
// SendJsonResponse(c, err, nil) return
// return }
// } SendJsonResponse(c, resp.OK, data)
// SendJsonResponse(c, resp.OK, data) }
//}
// // ListWorkOrderManage 列表
//// ListTaskManage 任务列表 func ListWorkOrderManage(c *gin.Context) {
//func ListTaskManage(c *gin.Context) { var req request.ListWorkOrderManageReq
// var req request.ListTaskManageReq if err := c.ShouldBind(&req); err != nil {
// if err := c.ShouldBind(&req); err != nil { SendJsonResponse(c, resp.InvalidParam.WithError(err), nil)
// SendJsonResponse(c, resp.InvalidParam.WithError(err), nil) return
// return }
// }
// workOrderManageSvc := service.WorkOrderManageSvc{}
// taskManageSvc := service.TaskManageSvc{} total, list, err := workOrderManageSvc.ListWorkOrderManage(req)
// total, list, err := taskManageSvc.ListTaskManage(req) if err != nil {
// if err != nil { SendJsonPageResponse(c, err, nil, 0)
// SendJsonPageResponse(c, err, nil, 0) return
// return }
// } SendJsonPageResponse(c, resp.OK, list, total)
// SendJsonPageResponse(c, resp.OK, list, total) }
//}
// PushWorkOrderManage 手动下发
func PushWorkOrderManage(c *gin.Context) {
var req request.PushWorkOrderReq
if err := c.ShouldBindJSON(&req); err != nil {
SendJsonResponse(c, resp.InvalidParam.WithError(err), nil)
return
}
workOrderManageSvc := service.WorkOrderManageSvc{}
err := workOrderManageSvc.PushWorkOrderManage(req)
if err != nil {
SendJsonResponse(c, err, nil)
return
}
SendJsonResponse(c, resp.OK, nil)
}
// CloseWorkOrderIssuance 关闭工单
func CloseWorkOrderIssuance(c *gin.Context) {
var req request.CloseWorkOrderReq
if err := c.ShouldBindJSON(&req); err != nil {
SendJsonResponse(c, resp.InvalidParam.WithError(err), nil)
return
}
workOrderManageSvc := service.WorkOrderManageSvc{}
err := workOrderManageSvc.CloseWorkOrderIssuance(req)
if err != nil {
SendJsonResponse(c, err, nil)
return
}
SendJsonResponse(c, resp.OK, nil)
}
// ListWorkOrderIssuance 业务工单下发列表
func ListWorkOrderIssuance(c *gin.Context) {
var req request.ListWorkOrderReq
if err := c.ShouldBind(&req); err != nil {
SendJsonResponse(c, resp.InvalidParam.WithError(err), nil)
return
}
workOrderManageSvc := service.WorkOrderManageSvc{}
total, list, err := workOrderManageSvc.ListWorkOrderIssuance(req)
if err != nil {
SendJsonPageResponse(c, err, nil, 0)
return
}
SendJsonPageResponse(c, resp.OK, list, total)
}
// DetailsWorkOrderIssuance 业务工单下发详情
func DetailsWorkOrderIssuance(c *gin.Context) {
var (
err error
id string
)
if id = c.Query("id"); id == "" {
id = c.Param("id")
}
if id == "" {
SendJsonResponse(c, resp.InvalidParam.WithError(errors.New("id为空")), nil)
return
}
workOrderManageSvc := service.WorkOrderManageSvc{}
data, err := workOrderManageSvc.DetailsWorkOrderIssuance(cast.ToInt(id))
if err != nil {
SendJsonResponse(c, err, nil)
return
}
SendJsonResponse(c, resp.OK, data)
}
// FeedbackWorkOrderMe 处置反馈
func FeedbackWorkOrderMe(c *gin.Context) {
var req request.FeedbackWorkOrderReq
if err := c.ShouldBindJSON(&req); err != nil {
SendJsonResponse(c, resp.InvalidParam.WithError(err), nil)
return
}
workOrderManageSvc := service.WorkOrderManageSvc{}
err := workOrderManageSvc.FeedbackWorkOrderMe(req)
if err != nil {
SendJsonResponse(c, err, nil)
return
}
SendJsonResponse(c, resp.OK, nil)
}
// ListWorkOrderMe 我的业务工单列表
func ListWorkOrderMe(c *gin.Context) {
var req request.ListWorkOrderReq
if err := c.ShouldBind(&req); err != nil {
SendJsonResponse(c, resp.InvalidParam.WithError(err), nil)
return
}
workOrderManageSvc := service.WorkOrderManageSvc{}
total, list, err := workOrderManageSvc.ListWorkOrderMe(req)
if err != nil {
SendJsonPageResponse(c, err, nil, 0)
return
}
SendJsonPageResponse(c, resp.OK, list, total)
}
...@@ -26,16 +26,15 @@ var ( ...@@ -26,16 +26,15 @@ var (
DbSessionStartError = Resp{Code: 5010007, Msg: "数据库事务开启失败"} DbSessionStartError = Resp{Code: 5010007, Msg: "数据库事务开启失败"}
DbDataCheckError = Resp{Code: 5010008, Msg: "数据去重验证失败"} DbDataCheckError = Resp{Code: 5010008, Msg: "数据去重验证失败"}
EsConnectError = Resp{Code: 5010009, Msg: "es连接失败"} EsConnectError = Resp{Code: 5010009, Msg: "es连接失败"}
AddSheetError = Resp{Code: 5010010, Msg: "新建sheet失败"}
UnableAccountLock = Resp{Code: 5010011, Msg: "暂无账号锁定"}
CmdExecError = Resp{Code: 5010012, Msg: "执行shell命令失败"}
FileExecError = Resp{Code: 5010013, Msg: "文件执行失败"}
YamlAnalysisError = Resp{Code: 5010014, Msg: "yaml解析错误"}
MarshalError = Resp{Code: 5010015, Msg: "文件解析错误"}
// 文件上传 AddSheetError = Resp{Code: 5000001, Msg: "新建sheet失败"}
UploadFileError = Resp{Code: 6000001, Msg: "文件上传失败"} UnableAccountLock = Resp{Code: 5000002, Msg: "暂无账号锁定"}
GetFileStreamError = Resp{Code: 6000002, Msg: "获取文件流失败"} CmdExecError = Resp{Code: 5000003, Msg: "执行shell命令失败"}
ReadFileError = Resp{Code: 6000003, Msg: "读取文件失败"} FileExecError = Resp{Code: 5000004, Msg: "文件执行失败"}
FailedToParseFile = Resp{Code: 6000004, Msg: "解析文件失败"} YamlAnalysisError = Resp{Code: 5000005, Msg: "yaml解析错误"}
MarshalError = Resp{Code: 5000006, Msg: "文件解析错误"}
UploadFileError = Resp{Code: 5000007, Msg: "文件上传失败"}
GetFileStreamError = Resp{Code: 5000008, Msg: "获取文件流失败"}
ReadFileError = Resp{Code: 5000009, Msg: "读取文件失败"}
FailedToParseFile = Resp{Code: 5000010, Msg: "解析文件失败"}
) )
...@@ -13,33 +13,27 @@ func InitWorkOrderRouter(e *gin.Engine) { ...@@ -13,33 +13,27 @@ func InitWorkOrderRouter(e *gin.Engine) {
//业务工单管理 //业务工单管理
manage := so.Group("/work_order_manage") manage := so.Group("/work_order_manage")
{ {
manage.POST("/add", controller.AddWorkOrderManage) // 新增 manage.POST("/add", controller.AddWorkOrderManage) // 新增
//manage.PUT("/edit", controller.EditTaskManage) // 编辑 manage.PUT("/edit", controller.EditWorkOrderManage) // 编辑
//manage.DELETE("/del", controller.DelTaskManage) // 删除 manage.PUT("/state", controller.StateWorkOrderManage) // 定时是否启用
//manage.GET("/details", controller.DetailsTaskManage) // 详情 manage.DELETE("/del", controller.DelWorkOrderManage) // 删除
//manage.GET("/list", controller.ListTaskManage) // 列表 manage.GET("/details", controller.DetailsWorkOrderManage) // 详情
//manage.POST("/exec/script", controller.ExecScript) // 立即执行 manage.GET("/list", controller.ListWorkOrderManage) // 列表
manage.POST("/push", controller.PushWorkOrderManage) // 手动下发
} }
////任务历史 //业务工单列表
//taskHistory := so.Group("/task_history") list := so.Group("/work_order_issuance")
//{ {
// taskHistory.GET("/list", controller.TaskHistoryList) // 任务历史列表 list.PUT("/close", controller.CloseWorkOrderIssuance) // 关闭工单
// taskHistory.GET("/task_info_list", controller.TaskInfoList) // 任务历史详情列表 list.GET("/list", controller.ListWorkOrderIssuance) // 业务工单下发列表
// taskHistory.GET("/task_exec_log", controller.TaskExecLog) // 任务执行日志 list.GET("/details", controller.DetailsWorkOrderIssuance) // 业务工单下发详情
//} }
//
////主机管理 //我的业务工单
//host := so.Group("/host_manage") me := so.Group("/work_order_me")
//{ {
// host.POST("/add", controller.AddHostManage) // 新增 me.PUT("/feedback", controller.FeedbackWorkOrderMe) // 处置反馈
// host.PUT("/edit", controller.EditHostManage) // 编辑 me.GET("/list", controller.ListWorkOrderMe) // 我的业务工单列表
// host.DELETE("/del", controller.DelHostManage) // 删除 }
// host.GET("/details", controller.DetailsHostManage) // 详情
// host.GET("/page_list", controller.PageListHostManage) // 列表
// host.POST("/state", controller.StateHostManage) // 状态检测
// host.GET("/ip_exception_list", controller.HostIpExceptionList) // 主机ip异常列表
// host.GET("/export", controller.ExportIp) // 导出ip列表
// host.GET("/list", controller.ListHostManage) // 主机分组列表-不分页
//}
} }
package service
import (
"errors"
"fmt"
json "github.com/json-iterator/go"
"gitlab.wodcloud.com/smart-operation/so-operation-api/src/bean/entity"
"gitlab.wodcloud.com/smart-operation/so-operation-api/src/bean/vo/request"
"gitlab.wodcloud.com/smart-operation/so-operation-api/src/bean/vo/response"
"gitlab.wodcloud.com/smart-operation/so-operation-api/src/common/client"
"gitlab.wodcloud.com/smart-operation/so-operation-api/src/pkg/beagle/resp"
"time"
)
type WorkOrderManageSvc struct {
User *entity.SystemUser
}
// AddWorkOrderManage 新增业务工单
func (w *WorkOrderManageSvc) AddWorkOrderManage(req request.AddWorkOrderReq) (err error) {
var timingWeekly, timingCustom, pushObj []byte
db, err := client.GetDbClient()
if err != nil {
err = resp.DbConnectError.WithError(err)
return
}
// 校验 工单名称 是否重复
has, err := db.Table("work_order_manage").Where("order_name = ?", req.OrderName).Exist()
if has {
err = resp.DbDataCheckError.WithError(errors.New("工单名称重复"))
return
}
if err != nil {
err = resp.DbSelectError.WithError(err)
return
}
pushObj, err = json.Marshal(req.PushObj)
if err != nil {
err = resp.FAIL.WithError(err)
return
}
workOrder := entity.WorkOrder{
OrderName: req.OrderName,
OrderLevel: req.OrderLevel,
OrderDesc: req.OrderDesc,
PushObj: fmt.Sprintf("%s", pushObj),
TimingType: req.TimingType,
CreateUser: "",
CreateTime: time.Now(),
UpdateUser: "",
UpdateTime: time.Now(),
}
if req.TimingType == 2 {
timingWeekly, err = json.Marshal(req.TimingWeekly)
if err != nil {
err = resp.FAIL.WithError(err)
return
}
workOrder.TimingRule = fmt.Sprintf("%s", timingWeekly)
} else if req.TimingType == 3 {
timingCustom, err = json.Marshal(req.TimingCustom)
if err != nil {
err = resp.FAIL.WithError(err)
return
}
workOrder.TimingRule = fmt.Sprintf("%s", timingCustom)
}
_, err = db.Table("work_order_manage").Insert(&workOrder)
if err != nil {
err = resp.DbInsertError.WithError(err)
return
}
return
}
// EditWorkOrderManage 编辑业务工单管理
func (w *WorkOrderManageSvc) EditWorkOrderManage(req request.EditWorkOrderReq) (err error) {
var timingWeekly, timingCustom, pushObj []byte
db, err := client.GetDbClient()
if err != nil {
err = resp.DbConnectError.WithError(err)
return
}
pushObj, err = json.Marshal(req.PushObj)
if err != nil {
err = resp.FAIL.WithError(err)
return
}
workOrder := entity.WorkOrder{
OrderLevel: req.OrderLevel,
OrderDesc: req.OrderDesc,
PushObj: fmt.Sprintf("%s", pushObj),
TimingType: req.TimingType,
UpdateUser: "",
UpdateTime: time.Now(),
}
if req.TimingType == 2 {
timingWeekly, err = json.Marshal(req.TimingWeekly)
if err != nil {
err = resp.FAIL.WithError(err)
return
}
workOrder.TimingRule = fmt.Sprintf("%s", timingWeekly)
} else if req.TimingType == 3 {
timingCustom, err = json.Marshal(req.TimingCustom)
if err != nil {
err = resp.FAIL.WithError(err)
return
}
workOrder.TimingRule = fmt.Sprintf("%s", timingCustom)
}
_, err = db.Table("work_order_manage").Where("id = ?", req.Id).
Cols("order_level,order_desc,order_cnt,push_obj,timing_type,timing_rule").Update(&workOrder)
if err != nil {
err = resp.DbUpdateError.WithError(err)
return
}
return
}
// StateWorkOrderManage 编辑业务工单管理
func (w *WorkOrderManageSvc) StateWorkOrderManage(req request.StateWorkOrderReq) (err error) {
db, err := client.GetDbClient()
if err != nil {
err = resp.DbConnectError.WithError(err)
return
}
_, err = db.Table("work_order_manage").Where("id = ?", req.Id).
Cols("timing_state").Update(&entity.WorkOrder{TimingState: req.TimingState})
if err != nil {
err = resp.DbUpdateError.WithError(err)
return
}
return
}
// DelWorkOrderManage 删除
func (w *WorkOrderManageSvc) DelWorkOrderManage(req request.DelWorkOrderReq) (err error) {
db, err := client.GetDbClient()
if err != nil {
err = resp.DbConnectError.WithError(err)
return
}
_, err = db.Table("work_order_manage").In("id", req.Id).Delete(&entity.WorkOrder{})
if err != nil {
err = resp.DbDeleteError.WithError(err)
return
}
return
}
// DetailsWorkOrderManage 详情
func (w *WorkOrderManageSvc) DetailsWorkOrderManage(id int) (taskManageRes response.WorkOrderRes, err error) {
db, err := client.GetDbClient()
if err != nil {
err = resp.DbConnectError.WithError(err)
return
}
//查询任务详情
var workOrder entity.WorkOrder
finder := db.Table("work_order_manage").Where("id = ?", id)
_, err = finder.Get(&workOrder)
if err != nil {
err = resp.DbSelectError.WithError(err)
return
}
err = json.Unmarshal([]byte(workOrder.PushObj), &taskManageRes.PushObj)
if err != nil {
err = resp.FAIL.WithError(err)
return
}
err = json.Unmarshal([]byte(workOrder.TimingRule), &taskManageRes.TimingRule)
if err != nil {
err = resp.FAIL.WithError(err)
return
}
taskManageRes.Id = workOrder.Id
taskManageRes.OrderName = workOrder.OrderName
taskManageRes.OrderLevel = workOrder.OrderLevel
taskManageRes.OrderDesc = workOrder.OrderDesc
taskManageRes.TimingState = workOrder.TimingState
taskManageRes.TimingType = workOrder.TimingType
taskManageRes.CreateUser = workOrder.CreateUser
taskManageRes.CreateTime = workOrder.CreateTime
taskManageRes.UpdateUser = workOrder.UpdateUser
taskManageRes.UpdateUser = workOrder.UpdateUser
taskManageRes.UpdateTime = workOrder.UpdateTime
return
}
// ListWorkOrderManage 列表
func (w *WorkOrderManageSvc) ListWorkOrderManage(req request.ListWorkOrderManageReq) (total int64, workOrderListRes []response.WorkOrderListRes, err error) {
db, err := client.GetDbClient()
if err != nil {
err = resp.DbConnectError.WithError(err)
return
}
finder := db.Table("work_order_manage")
if req.Search != "" {
finder.Where(fmt.Sprintf("order_name LIKE %s", "%"+req.Search+"%"))
}
if req.OrderLevel != 0 {
finder.Where("order_level = ?", req.OrderLevel)
}
if req.TimingType != 0 {
finder.Where("timing_type = ?", req.TimingType)
}
if req.CreateDateFrom != "" {
finder.Where("create_time >= ?", req.CreateDateFrom)
}
if req.CreateDateTo != "" {
finder.Where("create_time <= ?", req.CreateDateTo)
}
finder.OrderBy("create_time")
//查询任务
total, err = finder.Select("id,order_name,order_level,order_cnt,push_obj,timing_type,timing_state,create_user,create_time").
Limit(req.PageSize, (req.Page-1)*req.PageSize).FindAndCount(&workOrderListRes)
if err != nil {
err = resp.DbSelectError.WithError(err)
return
}
for k, v := range workOrderListRes {
var pushObj request.PushObj
err = json.Unmarshal([]byte(v.PushObj), &pushObj)
if err != nil {
err = resp.FAIL.WithError(err)
return
}
workOrderListRes[k].PushObj = pushObj.UserObj[0].UserName
for i := 1; i < len(pushObj.UserObj); i++ {
workOrderListRes[k].PushObj = workOrderListRes[k].PushObj + "、" + pushObj.UserObj[i].UserName
}
}
return
}
// PushWorkOrderManage 手动下发
func (w *WorkOrderManageSvc) PushWorkOrderManage(req request.PushWorkOrderReq) (err error) {
db, err := client.GetDbClient()
if err != nil {
err = resp.DbConnectError.WithError(err)
return
}
session := db.NewSession()
defer session.Close()
session.Begin()
//pushObj := req.PushObj.UserObj[0].UserName
//for i := 1; i < len(req.PushObj.UserObj); i++ {
// pushObj = pushObj + "、" + req.PushObj.UserObj[i].UserName
//}
pushObj, err := json.Marshal(req.PushObj)
if err != nil {
err = resp.FAIL.WithError(err)
return
}
//新增 下发工单表 数据
workOrderIssuance := entity.WorkOrderIssuance{
OrderId: req.Id,
PushObj: fmt.Sprintf("%s", pushObj),
OrderState: 1,
CreateUser: "admin",
CreateTime: time.Now(),
}
_, err = session.Table("work_order_issuance").Insert(&workOrderIssuance)
if err != nil {
err = resp.DbInsertError.WithError(err)
session.Rollback()
return
}
for _, v := range req.PushObj.UserObj {
//新增 个人业务工单表 数据
workOrderMe := entity.WorkOrderMe{
OrderId: req.Id,
OrderIssuanceId: workOrderIssuance.Id,
SystemAccount: v.SystemAccount,
OrderState: 1,
}
_, err = session.Table("work_order_me").Insert(&workOrderMe)
if err != nil {
err = resp.DbInsertError.WithError(err)
session.Rollback()
return
}
}
//发消息通知 czl..
//修改库表实例工单数
_, err = session.Table("work_order_manage").Where("id = ?", req.Id).Incr("order_cnt").Update(&entity.WorkOrder{})
if err != nil {
err = resp.DbUpdateError.WithError(err)
session.Rollback()
return
}
session.Commit()
return
}
// CloseWorkOrderIssuance 关闭工单
func (w *WorkOrderManageSvc) CloseWorkOrderIssuance(req request.CloseWorkOrderReq) (err error) {
db, err := client.GetDbClient()
if err != nil {
err = resp.DbConnectError.WithError(err)
return
}
session := db.NewSession()
defer session.Close()
session.Begin()
//修改 下发工单表 数据
_, err = session.Table("work_order_issuance").Where("id = ?", req.Id).Cols("order_state,reason_closure").
Update(&entity.WorkOrderIssuance{
OrderState: 3,
ReasonClosure: req.ReasonClosure,
})
if err != nil {
err = resp.DbInsertError.WithError(err)
session.Rollback()
return
}
//修改 个人业务工单表 数据
_, err = session.Table("work_order_me").Where("order_issuance_id = ?", req.Id).Cols("order_state").
Update(&entity.WorkOrderMe{
OrderState: 3,
})
if err != nil {
err = resp.DbInsertError.WithError(err)
session.Rollback()
return
}
session.Commit()
return
}
// ListWorkOrderIssuance 业务工单下发列表
func (w *WorkOrderManageSvc) ListWorkOrderIssuance(req request.ListWorkOrderReq) (total int64, workOrderIssuanceListRes []response.WorkOrderIssuanceListRes, err error) {
db, err := client.GetDbClient()
if err != nil {
err = resp.DbConnectError.WithError(err)
return
}
finder := db.Table("work_order_issuance").Alias("woi").
Join("INNER", "work_order_manage wom", "woi.order_id = wom.id")
if req.Search != "" {
finder.Where(fmt.Sprintf("wom.order_name LIKE %s", "%"+req.Search+"%"))
}
if req.OrderLevel != 0 {
finder.Where("wom.order_level = ?", req.OrderLevel)
}
if req.OrderState != 0 {
finder.Where("woi.order_state = ?", req.OrderState)
}
if req.CreateDateFrom != "" {
finder.Where("woi.create_time >= ?", req.CreateDateFrom)
}
if req.CreateDateTo != "" {
finder.Where("woi.create_time <= ?", req.CreateDateTo)
}
if req.CompleteTimeFrom != "" {
finder.Where("woi.complete_time <= ?", req.CompleteTimeFrom)
}
if req.CompleteTimeTo != "" {
finder.Where("woi.complete_time <= ?", req.CompleteTimeTo)
}
if req.Id != 0 {
finder.Where("wom.id = ?", req.Id)
}
finder.OrderBy("woi.create_time")
//查询任务
total, err = finder.Select("woi.\"id\",woi.order_id,wom.order_name,wom.order_level,woi.order_state,woi.push_obj,woi.create_user,woi.create_time,woi.complete_time,"+
"(select count(1) from work_order_me wome where wome.order_issuance_id = woi.id and wome.order_state = woi.order_state) as state_cnt,"+
"(select count(1) from work_order_me wome where wome.order_issuance_id = woi.id) as all_cnt").
Limit(req.PageSize, (req.Page-1)*req.PageSize).FindAndCount(&workOrderIssuanceListRes)
if err != nil {
err = resp.DbSelectError.WithError(err)
return
}
for k, v := range workOrderIssuanceListRes {
var pushObj request.PushObj
err = json.Unmarshal([]byte(v.PushObj), &pushObj)
if err != nil {
err = resp.FAIL.WithError(err)
return
}
workOrderIssuanceListRes[k].PushObj = pushObj.UserObj[0].UserName
for i := 1; i < len(pushObj.UserObj); i++ {
workOrderIssuanceListRes[k].PushObj = workOrderIssuanceListRes[k].PushObj + "、" + pushObj.UserObj[i].UserName
}
}
return
}
// DetailsWorkOrderIssuance 业务工单下发详情
func (w *WorkOrderManageSvc) DetailsWorkOrderIssuance(id int) (workOrderIssuanceRes response.WorkOrderIssuanceRes, err error) {
db, err := client.GetDbClient()
if err != nil {
err = resp.DbConnectError.WithError(err)
return
}
var workOrderIssuance response.WorkOrderIssuance
finder := db.Table("work_order_issuance").Alias("woi").
Join("INNER", "work_order_manage wom", "woi.order_id = wom.ID").Where("woi.id = ?", id)
_, err = finder.Select("woi.\"id\",woi.order_id,wom.order_name,wom.order_level,wom.order_desc,woi.order_state,woi.push_obj,woi.create_user,woi.create_time,woi.complete_time").
Get(&workOrderIssuance)
if err != nil {
err = resp.DbSelectError.WithError(err)
return
}
//var workOrderMe entity.WorkOrderMe
finder1 := db.Table("work_order_me").Where("order_issuance_id = ?", id)
err = finder1.Find(&workOrderIssuanceRes.WorkOrderMe)
if err != nil {
err = resp.DbSelectError.WithError(err)
return
}
err = json.Unmarshal([]byte(workOrderIssuance.PushObj), &workOrderIssuanceRes.PushObj)
if err != nil {
err = resp.FAIL.WithError(err)
return
}
workOrderIssuanceRes.Id = workOrderIssuance.Id
workOrderIssuanceRes.OrderId = workOrderIssuance.OrderId
workOrderIssuanceRes.OrderName = workOrderIssuance.OrderName
workOrderIssuanceRes.OrderLevel = workOrderIssuance.OrderLevel
workOrderIssuanceRes.OrderDesc = workOrderIssuance.OrderDesc
workOrderIssuanceRes.OrderState = workOrderIssuance.OrderState
workOrderIssuanceRes.CreateUser = workOrderIssuance.CreateUser
workOrderIssuanceRes.CreateTime = workOrderIssuance.CreateTime
workOrderIssuanceRes.CompleteTime = workOrderIssuance.CompleteTime
return
}
// FeedbackWorkOrderMe 处置反馈
func (w *WorkOrderManageSvc) FeedbackWorkOrderMe(req request.FeedbackWorkOrderReq) (err error) {
db, err := client.GetDbClient()
if err != nil {
err = resp.DbConnectError.WithError(err)
return
}
session := db.NewSession()
defer session.Close()
session.Begin()
completeTime := time.Now()
//修改 个人业务工单表 数据
_, err = session.Table("work_order_me").Where("id = ?", req.Id).Cols("order_state,result_feedback,complete_time").
Update(&entity.WorkOrderMe{
OrderState: 2,
ResultFeedback: req.ResultFeedback,
CompleteTime: completeTime,
})
if err != nil {
err = resp.DbInsertError.WithError(err)
session.Rollback()
return
}
//查询此工单是否已完成
has, err := session.Table("work_order_me").Where("order_state = 1 AND order_issuance_id = ?", req.OrderIssuanceId).Exist()
if !has {
//修改 下发工单 数据
_, err = session.Table("work_order_issuance").Where("id = ?", req.OrderIssuanceId).Cols("order_state,complete_time").
Update(&entity.WorkOrderIssuance{
OrderState: 2,
CompleteTime: completeTime,
})
if err != nil {
err = resp.DbInsertError.WithError(err)
session.Rollback()
return
}
}
if err != nil {
err = resp.DbSelectError.WithError(err)
session.Rollback()
return
}
session.Commit()
return
}
// ListWorkOrderMe 我的业务工单列表
func (w *WorkOrderManageSvc) ListWorkOrderMe(req request.ListWorkOrderReq) (total int64, workOrderMeListRes []response.WorkOrderMeListRes, err error) {
db, err := client.GetDbClient()
if err != nil {
err = resp.DbConnectError.WithError(err)
return
}
finder := db.Table("work_order_me").Alias("wome").
Join("INNER", "work_order_issuance woi", "wome.order_issuance_id = woi.id").
Join("INNER", "work_order_manage wom", "woi.order_id = wom.id")
if req.Search != "" {
finder.Where(fmt.Sprintf("wom.order_name LIKE %s", "%"+req.Search+"%"))
}
if req.OrderLevel != 0 {
finder.Where("wom.order_level = ?", req.OrderLevel)
}
if req.OrderState != 0 {
finder.Where("wome.order_state = ?", req.OrderState)
}
if req.CreateDateFrom != "" {
finder.Where("woi.create_time >= ?", req.CreateDateFrom)
}
if req.CreateDateTo != "" {
finder.Where("woi.create_time <= ?", req.CreateDateTo)
}
if req.CompleteTimeFrom != "" {
finder.Where("wome.complete_time <= ?", req.CompleteTimeFrom)
}
if req.CompleteTimeTo != "" {
finder.Where("wome.complete_time <= ?", req.CompleteTimeTo)
}
finder.OrderBy("woi.create_time")
//查询任务
total, err = finder.Select("wome.\"id\",wome.order_id,wome.order_issuance_id,wom.order_name,wom.order_level,"+
"wome.order_state,woi.push_obj,woi.create_user,woi.create_time,wome.complete_time").
Limit(req.PageSize, (req.Page-1)*req.PageSize).FindAndCount(&workOrderMeListRes)
if err != nil {
err = resp.DbSelectError.WithError(err)
return
}
for k, v := range workOrderMeListRes {
var pushObj request.PushObj
err = json.Unmarshal([]byte(v.PushObj), &pushObj)
if err != nil {
err = resp.FAIL.WithError(err)
return
}
workOrderMeListRes[k].PushObj = pushObj.UserObj[0].UserName
for i := 1; i < len(pushObj.UserObj); i++ {
workOrderMeListRes[k].PushObj = workOrderMeListRes[k].PushObj + "、" + pushObj.UserObj[i].UserName
}
}
return
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment