|
@@ -44,6 +44,7 @@ func NewTaskService(ctx context.Context) (svc *taskService, err error) {
|
|
|
|
|
|
|
|
// GetList 任务信息列表
|
|
// GetList 任务信息列表
|
|
|
func (s *taskService) GetList(req *model.SearchPlatTaskReq) (total int, TaskList []*model.PlatTaskEx, err error) {
|
|
func (s *taskService) GetList(req *model.SearchPlatTaskReq) (total int, TaskList []*model.PlatTaskEx, err error) {
|
|
|
|
|
+ orderBy := "plat_task.created_time DESC"
|
|
|
TaskModel := s.Dao.LeftJoin("plat_task_handle", "plat_task_handle.task_id=plat_task.id")
|
|
TaskModel := s.Dao.LeftJoin("plat_task_handle", "plat_task_handle.task_id=plat_task.id")
|
|
|
if req.TaskId != "" {
|
|
if req.TaskId != "" {
|
|
|
TaskModel = TaskModel.Where("plat_task.id", req.TaskId)
|
|
TaskModel = TaskModel.Where("plat_task.id", req.TaskId)
|
|
@@ -78,12 +79,15 @@ func (s *taskService) GetList(req *model.SearchPlatTaskReq) (total int, TaskList
|
|
|
if req.IsMain == "1" {
|
|
if req.IsMain == "1" {
|
|
|
TaskModel = TaskModel.Where("plat_task.main_user_id", s.GetCxtUserId())
|
|
TaskModel = TaskModel.Where("plat_task.main_user_id", s.GetCxtUserId())
|
|
|
}
|
|
}
|
|
|
- if req.OperateType == "1" {
|
|
|
|
|
|
|
+ if req.OperateType == "1" { // 我的待办
|
|
|
|
|
+ orderBy = "plat_task.task_status ASC, plat_task.created_time DESC"
|
|
|
TaskModel = TaskModel.Where(fmt.Sprintf("plat_task_handle.task_status='10' AND (plat_task_handle.main_user_id=%v OR FIND_IN_SET(%v, plat_task_handle.owner_user_id))", s.GetCxtUserId(), s.GetCxtUserId()))
|
|
TaskModel = TaskModel.Where(fmt.Sprintf("plat_task_handle.task_status='10' AND (plat_task_handle.main_user_id=%v OR FIND_IN_SET(%v, plat_task_handle.owner_user_id))", s.GetCxtUserId(), s.GetCxtUserId()))
|
|
|
- } else if req.OperateType == "2" {
|
|
|
|
|
|
|
+ } else if req.OperateType == "2" { // 我发起的
|
|
|
TaskModel = TaskModel.Where("plat_task.created_by", s.GetCxtUserId())
|
|
TaskModel = TaskModel.Where("plat_task.created_by", s.GetCxtUserId())
|
|
|
- } else if req.OperateType == "3" {
|
|
|
|
|
|
|
+ } else if req.OperateType == "3" { // 我处理的
|
|
|
TaskModel = TaskModel.Where(fmt.Sprintf("plat_task_handle.task_status='20' AND plat_task_handle.handle_user_id=%v", s.GetCxtUserId()))
|
|
TaskModel = TaskModel.Where(fmt.Sprintf("plat_task_handle.task_status='20' AND plat_task_handle.handle_user_id=%v", s.GetCxtUserId()))
|
|
|
|
|
+ } else if req.OperateType == "4" { // 抄送我的
|
|
|
|
|
+ TaskModel = TaskModel.Where(fmt.Sprintf("FIND_IN_SET(%v, plat_task.copy_user_id)", s.GetCxtUserId()))
|
|
|
}
|
|
}
|
|
|
TaskModel = TaskModel.Group("plat_task.id")
|
|
TaskModel = TaskModel.Group("plat_task.id")
|
|
|
|
|
|
|
@@ -94,7 +98,7 @@ func (s *taskService) GetList(req *model.SearchPlatTaskReq) (total int, TaskList
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- err = TaskModel.Page(req.GetPage()).Order("plat_task.created_time DESC").Fields("plat_task.*,plat_task_handle.step").Scan(&TaskList)
|
|
|
|
|
|
|
+ err = TaskModel.Page(req.GetPage()).Order(orderBy).Fields("plat_task.*,plat_task_handle.step").Scan(&TaskList)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -294,6 +298,8 @@ func (s *taskService) AddTaskApproval(flow *workflowModel.PlatWorkflow, msg *mes
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
return err
|
|
return err
|
|
|
}
|
|
}
|
|
|
|
|
+ // 发送消息通知
|
|
|
|
|
+ go taskNotifyMessage(task.MainUserId, task.OwnerUserId, fmt.Sprintf("%v督办任务需要处理", task.TaskTitle))
|
|
|
// 流程日志
|
|
// 流程日志
|
|
|
err = CreateTaskLog(s, nil, task.Id, s.GetCxtUserId(), s.GetCxtUserName(), "督办审批", "通过", "")
|
|
err = CreateTaskLog(s, nil, task.Id, s.GetCxtUserId(), s.GetCxtUserName(), "督办审批", "通过", "")
|
|
|
} else if msg.Result == "refuse" {
|
|
} else if msg.Result == "refuse" {
|
|
@@ -442,7 +448,13 @@ func (s *taskService) Handle(req *model.HandleReq) (err error) {
|
|
|
logNodeName = "审批"
|
|
logNodeName = "审批"
|
|
|
if req.HandleStatus == "30" {
|
|
if req.HandleStatus == "30" {
|
|
|
logDesc = s.GetCxtUserName() + "审批通过"
|
|
logDesc = s.GetCxtUserName() + "审批通过"
|
|
|
- nextHandle = createNextTaskHandel(s, task, 40)
|
|
|
|
|
|
|
+ if req.IsComplete == "10" {
|
|
|
|
|
+ // 任务完成
|
|
|
|
|
+ nextHandle = createNextTaskHandel(s, task, 40)
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // 任务未完成,继续执行
|
|
|
|
|
+ nextHandle = createNextTaskHandel(s, task, 20)
|
|
|
|
|
+ }
|
|
|
} else if req.HandleStatus == "40" {
|
|
} else if req.HandleStatus == "40" {
|
|
|
logDesc = s.GetCxtUserName() + "审批退回"
|
|
logDesc = s.GetCxtUserName() + "审批退回"
|
|
|
nextHandle = createNextTaskHandel(s, task, 20)
|
|
nextHandle = createNextTaskHandel(s, task, 20)
|
|
@@ -457,9 +469,15 @@ func (s *taskService) Handle(req *model.HandleReq) (err error) {
|
|
|
if req.HandleStatus == "30" {
|
|
if req.HandleStatus == "30" {
|
|
|
// 监办人评价,审批通过,任务结束
|
|
// 监办人评价,审批通过,任务结束
|
|
|
logDesc = s.GetCxtUserName() + "审批通过"
|
|
logDesc = s.GetCxtUserName() + "审批通过"
|
|
|
- nextHandle = nil
|
|
|
|
|
- taskData["actual_close_date"] = now.Format("Y-m-d H:i:s")
|
|
|
|
|
- taskData["task_status"] = "30"
|
|
|
|
|
|
|
+ if req.IsComplete == "10" {
|
|
|
|
|
+ // 任务完成
|
|
|
|
|
+ nextHandle = nil
|
|
|
|
|
+ taskData["actual_close_date"] = now.Format("Y-m-d H:i:s")
|
|
|
|
|
+ taskData["task_status"] = "30"
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // 任务未完成,继续执行
|
|
|
|
|
+ nextHandle = createNextTaskHandel(s, task, 20)
|
|
|
|
|
+ }
|
|
|
} else if req.HandleStatus == "40" {
|
|
} else if req.HandleStatus == "40" {
|
|
|
logDesc = s.GetCxtUserName() + "审批退回"
|
|
logDesc = s.GetCxtUserName() + "审批退回"
|
|
|
nextHandle = createNextTaskHandel(s, task, 20)
|
|
nextHandle = createNextTaskHandel(s, task, 20)
|
|
@@ -486,6 +504,12 @@ func (s *taskService) Handle(req *model.HandleReq) (err error) {
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
return err
|
|
return err
|
|
|
}
|
|
}
|
|
|
|
|
+ // 只有督办、监办人需要发送提醒
|
|
|
|
|
+ if req.Step == 20 {
|
|
|
|
|
+ go taskNotifyMessage(task.SupervisorUserId, "", fmt.Sprintf("%v督办任务需要处理", task.TaskTitle))
|
|
|
|
|
+ } else if req.Step == 30 && req.HandleStatus == "30" {
|
|
|
|
|
+ go taskNotifyMessage(task.WatchUserId, "", fmt.Sprintf("%v督办任务需要处理", task.TaskTitle))
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -711,9 +735,11 @@ func (s *taskService) saveProgressList(req *model.HandleReq, now *gtime.Time) (e
|
|
|
return err
|
|
return err
|
|
|
}
|
|
}
|
|
|
// 2 保存新的数据
|
|
// 2 保存新的数据
|
|
|
- _, err = s.Dao.DB.Save("plat_task_progress", req.ProgressList)
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- return err
|
|
|
|
|
|
|
+ if len(req.ProgressList) > 0 {
|
|
|
|
|
+ _, err = s.Dao.DB.Save("plat_task_progress", req.ProgressList)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return err
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
return nil
|