添加催办功能。
This commit is contained in:
parent
5cb6f9d094
commit
0862668e90
@ -209,7 +209,7 @@ QQ群:1127401830
|
||||
|
||||
## 打赏
|
||||
|
||||
> 如果你觉得这个项目帮助到了你,你可以请作者喝一杯咖啡表示鼓励:
|
||||
> 如果您觉得这个项目帮助到了您,您可以请作者喝一杯咖啡表示鼓励:
|
||||
|
||||
<img class="no-margin" src="https://www.fdevops.com/wp-content/uploads/2020/07/1595075890-81595075871_.pic_hd.png" height="200px" >
|
||||
|
||||
|
@ -223,7 +223,11 @@ func CreateWorkOrder(c *gin.Context) {
|
||||
Priority: workOrderValue.Priority,
|
||||
CreatedAt: time.Now().Format("2006-01-02 15:04:05"),
|
||||
}
|
||||
bodyData.SendNotify()
|
||||
err = bodyData.SendNotify()
|
||||
if err != nil {
|
||||
app.Error(c, -1, err, fmt.Sprintf("通知发送失败,%v", err.Error()))
|
||||
return
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
@ -491,3 +495,79 @@ func InversionWorkOrder(c *gin.Context) {
|
||||
|
||||
app.OK(c, nil, "工单已手动结单")
|
||||
}
|
||||
|
||||
// 催办工单
|
||||
func UrgeWorkOrder(c *gin.Context) {
|
||||
var (
|
||||
workOrderInfo process.WorkOrderInfo
|
||||
sendToUserList []system.SysUser
|
||||
stateList []interface{}
|
||||
userInfo system.SysUser
|
||||
)
|
||||
workOrderId := c.DefaultQuery("workOrderId", "")
|
||||
if workOrderId == "" {
|
||||
app.Error(c, -1, errors.New("参数不正确,缺失workOrderId"), "")
|
||||
return
|
||||
}
|
||||
|
||||
// 查询工单数据
|
||||
err := orm.Eloquent.Model(&process.WorkOrderInfo{}).Where("id = ?", workOrderId).Find(&workOrderInfo).Error
|
||||
if err != nil {
|
||||
app.Error(c, -1, err, fmt.Sprintf("查询工单信息失败,%v", err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
// 确认是否可以催办
|
||||
if workOrderInfo.UrgeLastTime != 0 && (int(time.Now().Unix())-workOrderInfo.UrgeLastTime) < 600 {
|
||||
app.Error(c, -1, errors.New("十分钟内无法多次催办工单。"), "")
|
||||
return
|
||||
}
|
||||
|
||||
// 获取当前工单处理人信息
|
||||
err = json.Unmarshal(workOrderInfo.State, &stateList)
|
||||
if err != nil {
|
||||
app.Error(c, -1, err, "")
|
||||
return
|
||||
}
|
||||
sendToUserList, err = service.GetPrincipalUserInfo(stateList, workOrderInfo.Creator)
|
||||
|
||||
// 查询创建人信息
|
||||
err = orm.Eloquent.Model(&system.SysUser{}).Where("user_id = ?", workOrderInfo.Creator).Find(&userInfo).Error
|
||||
if err != nil {
|
||||
app.Error(c, -1, err, fmt.Sprintf("创建人信息查询失败,%v", err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
// 发送催办提醒
|
||||
bodyData := notify.BodyData{
|
||||
SendTo: map[string]interface{}{
|
||||
"userList": sendToUserList,
|
||||
},
|
||||
Subject: "您被催办工单了,请及时处理。",
|
||||
Description: "您有一条待办工单,请及时处理,工单描述如下",
|
||||
Classify: []int{1}, // todo 1 表示邮箱,后续添加了其他的在重新补充
|
||||
ProcessId: workOrderInfo.Process,
|
||||
Id: workOrderInfo.Id,
|
||||
Title: workOrderInfo.Title,
|
||||
Creator: userInfo.NickName,
|
||||
Priority: workOrderInfo.Priority,
|
||||
CreatedAt: workOrderInfo.CreatedAt.Format("2006-01-02 15:04:05"),
|
||||
}
|
||||
err = bodyData.SendNotify()
|
||||
if err != nil {
|
||||
app.Error(c, -1, err, fmt.Sprintf("催办提醒发送失败,%v", err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
// 更新数据库
|
||||
err = orm.Eloquent.Model(&process.WorkOrderInfo{}).Where("id = ?", workOrderInfo.Id).Updates(map[string]interface{}{
|
||||
"urge_count": workOrderInfo.UrgeCount + 1,
|
||||
"urge_last_time": int(time.Now().Unix()),
|
||||
}).Error
|
||||
if err != nil {
|
||||
app.Error(c, -1, err, fmt.Sprintf("更新催办信息失败,%v", err.Error()))
|
||||
return
|
||||
}
|
||||
|
||||
app.OK(c, "", "")
|
||||
}
|
||||
|
@ -12,15 +12,17 @@ import (
|
||||
// 工单
|
||||
type WorkOrderInfo struct {
|
||||
base.Model
|
||||
Title string `gorm:"column:title; type:varchar(128)" json:"title" form:"title"` // 工单标题
|
||||
Priority int `gorm:"column:priority; type:int(11)" json:"priority" form:"priority"` // 工单优先级 1,正常 2,紧急 3,非常紧急
|
||||
Process int `gorm:"column:process; type:int(11)" json:"process" form:"process"` // 流程ID
|
||||
Classify int `gorm:"column:classify; type:int(11)" json:"classify" form:"classify"` // 分类ID
|
||||
IsEnd int `gorm:"column:is_end; type:int(11); default:0" json:"is_end" form:"is_end"` // 是否结束, 0 未结束,1 已结束
|
||||
IsDenied int `gorm:"column:is_denied; type:int(11); default:0" json:"is_denied" form:"is_denied"` // 是否被拒绝, 0 没有,1 有
|
||||
State json.RawMessage `gorm:"column:state; type:json" json:"state" form:"state"` // 状态信息
|
||||
RelatedPerson json.RawMessage `gorm:"column:related_person; type:json" json:"related_person" form:"related_person"` // 工单所有处理人
|
||||
Creator int `gorm:"column:creator; type:int(11)" json:"creator" form:"creator"` // 创建人
|
||||
Title string `gorm:"column:title; type:varchar(128)" json:"title" form:"title"` // 工单标题
|
||||
Priority int `gorm:"column:priority; type:int(11)" json:"priority" form:"priority"` // 工单优先级 1,正常 2,紧急 3,非常紧急
|
||||
Process int `gorm:"column:process; type:int(11)" json:"process" form:"process"` // 流程ID
|
||||
Classify int `gorm:"column:classify; type:int(11)" json:"classify" form:"classify"` // 分类ID
|
||||
IsEnd int `gorm:"column:is_end; type:int(11); default:0" json:"is_end" form:"is_end"` // 是否结束, 0 未结束,1 已结束
|
||||
IsDenied int `gorm:"column:is_denied; type:int(11); default:0" json:"is_denied" form:"is_denied"` // 是否被拒绝, 0 没有,1 有
|
||||
State json.RawMessage `gorm:"column:state; type:json" json:"state" form:"state"` // 状态信息
|
||||
RelatedPerson json.RawMessage `gorm:"column:related_person; type:json" json:"related_person" form:"related_person"` // 工单所有处理人
|
||||
Creator int `gorm:"column:creator; type:int(11)" json:"creator" form:"creator"` // 创建人
|
||||
UrgeCount int `gorm:"column:urge_count; type:int(11)" json:"urge_count" form:"urge_count"` // 催办次数
|
||||
UrgeLastTime int `gorm:"column:urge_last_time; type:int(11)" json:"urge_last_time" form:"urge_last_time"` // 上一次催促时间
|
||||
}
|
||||
|
||||
func (WorkOrderInfo) TableName() string {
|
||||
|
@ -50,10 +50,9 @@ func (b *BodyData) ParsingTemplate() (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func (b *BodyData) SendNotify() {
|
||||
func (b *BodyData) SendNotify() (err error) {
|
||||
var (
|
||||
emailList []string
|
||||
err error
|
||||
)
|
||||
|
||||
switch b.Priority {
|
||||
@ -82,4 +81,5 @@ func (b *BodyData) SendNotify() {
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
@ -711,7 +711,10 @@ func (h *Handle) HandleWorkOrder(
|
||||
|
||||
// 发送通知
|
||||
go func(bodyData notify.BodyData) {
|
||||
bodyData.SendNotify()
|
||||
err = bodyData.SendNotify()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}(bodyData)
|
||||
}
|
||||
}
|
||||
@ -733,7 +736,10 @@ func (h *Handle) HandleWorkOrder(
|
||||
|
||||
// 发送通知
|
||||
go func(bodyData notify.BodyData) {
|
||||
bodyData.SendNotify()
|
||||
err = bodyData.SendNotify()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}(bodyData)
|
||||
}
|
||||
|
||||
|
@ -21,5 +21,6 @@ func RegisterWorkOrderRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMidd
|
||||
workOrderRouter.POST("/handle", process.ProcessWorkOrder)
|
||||
workOrderRouter.GET("/unity", process.UnityWorkOrder)
|
||||
workOrderRouter.POST("/inversion", process.InversionWorkOrder)
|
||||
workOrderRouter.GET("/urge", process.UrgeWorkOrder)
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user