|
|
@@ -68,7 +68,7 @@ func (s *taskService) GetList(req *model.SearchPlatTaskReq) (total int, TaskList
|
|
|
} 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.Group("plat_task.id")
|
|
|
+ TaskModel = TaskModel.Group("plat_task.id")
|
|
|
|
|
|
total, err = TaskModel.Count()
|
|
|
if err != nil {
|
|
|
@@ -128,9 +128,11 @@ func (s *taskService) Export(req *model.ExportReq) (content *model.ExportContent
|
|
|
if value == "状态" {
|
|
|
data := ""
|
|
|
if item.TaskStatus == "10" {
|
|
|
- data = "进行中"
|
|
|
+ data = "发起"
|
|
|
} else if item.TaskStatus == "20" {
|
|
|
- data = "关闭"
|
|
|
+ data = "进行中"
|
|
|
+ } else if item.TaskStatus == "30" {
|
|
|
+ data = "流程完成"
|
|
|
}
|
|
|
f.SetCellValue("Sheet1", service.Div(index+1)+strconv.Itoa(lineNum+2), data)
|
|
|
}
|
|
|
@@ -212,7 +214,7 @@ func (s *taskService) Create(req *model.AddPlatTaskReq) (err error) {
|
|
|
id, _ := res.LastInsertId()
|
|
|
platTask.Id = int(id)
|
|
|
nextHandle := createNextTaskHandel(s, platTask, 10)
|
|
|
- _, err = s.Dao.DB.Model("plat_task_handle").Insert(nextHandle)
|
|
|
+ _, err = s.Dao.DB.Insert("plat_task_handle", nextHandle)
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
|
@@ -271,15 +273,18 @@ func (s *taskService) ChangeStatus(req *model.ChangeStatusReq) (err error) {
|
|
|
// 督办任务处理
|
|
|
func (s *taskService) Handle(req *model.HandleReq) (err error) {
|
|
|
// 步骤号(10接收 15暂存 20提交 30审批(督办人) 40评价(监办人))
|
|
|
+ // 处理结果(10接收20提交30审批通过40审批退回)
|
|
|
logNodeName := ""
|
|
|
logDesc := ""
|
|
|
var taskHandle model.PlatTaskHandle
|
|
|
- err = s.Dao.DB.Model("plat_task_handle").Where(fmt.Sprintf("task_id='%v' AND step=%v AND task_status='10' AND (main_user_id=%v OR FIND_IN_SET(%v, owner_user_id))", req.Step, req.TaskId, s.GetCxtUserId(), s.GetCxtUserId())).Scan(&taskHandle)
|
|
|
- if err != nil {
|
|
|
- if err == sql.ErrNoRows {
|
|
|
- return fmt.Errorf("数据不匹配,刷新数据重试")
|
|
|
+ if req.Step != 15 {
|
|
|
+ err = s.Dao.DB.Model("plat_task_handle").Where(fmt.Sprintf("task_id='%v' AND step=%v AND task_status='10' AND (main_user_id=%v OR FIND_IN_SET(%v, owner_user_id))", req.TaskId, req.Step, s.GetCxtUserId(), s.GetCxtUserId())).Scan(&taskHandle)
|
|
|
+ if err != nil {
|
|
|
+ if err == sql.ErrNoRows {
|
|
|
+ return fmt.Errorf("数据不匹配,刷新数据重试")
|
|
|
+ }
|
|
|
+ return err
|
|
|
}
|
|
|
- return err
|
|
|
}
|
|
|
now := gtime.Now()
|
|
|
// 数据暂存,不做任何流程修改
|
|
|
@@ -287,13 +292,8 @@ func (s *taskService) Handle(req *model.HandleReq) (err error) {
|
|
|
// 暂存
|
|
|
logNodeName = "暂存"
|
|
|
logDesc = s.GetCxtUserName() + "暂存进展信息"
|
|
|
- // 1 标记删除旧的进展数据
|
|
|
- _, err = s.Dao.DB.Model("plat_task_progress").Update(fmt.Sprintf("deleted_time='%v'", now.Format("Y-m-d H:i:s")), fmt.Sprintf("task_id='%v'", req.TaskId))
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- // 2 保存新的数据
|
|
|
- _, err = s.Dao.DB.Model("plat_task_progress").Save(req.ProgressList)
|
|
|
+ // 更新进展数据
|
|
|
+ err = s.saveProgressList(req, now)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
@@ -333,26 +333,10 @@ func (s *taskService) Handle(req *model.HandleReq) (err error) {
|
|
|
logNodeName = "提交"
|
|
|
logDesc = s.GetCxtUserName() + "提交督办任务"
|
|
|
// 更新进展数据
|
|
|
- for index, progress := range req.ProgressList {
|
|
|
- // 填充创建信息
|
|
|
- if progress.CreatedBy == 0 {
|
|
|
- service.SetCreatedInfo(req.ProgressList[index], s.GetCxtUserId(), s.GetCxtUserName())
|
|
|
- }
|
|
|
- // 填充更新信息
|
|
|
- service.SetUpdatedInfo(req.ProgressList[index], s.GetCxtUserId(), s.GetCxtUserName())
|
|
|
- }
|
|
|
- // 保存督办进展
|
|
|
- // 1 标记删除旧的进展数据
|
|
|
- _, err = s.Dao.DB.Model("plat_task_progress").Update(fmt.Sprintf("deleted_time='%v'", now.Format("Y-m-d H:i:s")), fmt.Sprintf("task_id='%v'", req.TaskId))
|
|
|
+ err = s.saveProgressList(req, now)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
- // 2 保存新的数据
|
|
|
- _, err = s.Dao.DB.Model("plat_task_progress").Save(req.ProgressList)
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
-
|
|
|
} else if req.Step == 30 {
|
|
|
// 督办人审批
|
|
|
taskData["approver_id"] = s.GetCxtUserId()
|
|
|
@@ -360,10 +344,10 @@ func (s *taskService) Handle(req *model.HandleReq) (err error) {
|
|
|
taskData["appro_status"] = req.HandleStatus
|
|
|
taskData["appro_desc"] = req.HandleDesc
|
|
|
logNodeName = "审批"
|
|
|
- if req.HandleStatus == "审批通过" {
|
|
|
+ if req.HandleStatus == "30" {
|
|
|
logDesc = s.GetCxtUserName() + "审批通过"
|
|
|
nextHandle = createNextTaskHandel(s, task, 40)
|
|
|
- } else if req.HandleStatus == "审批退回" {
|
|
|
+ } else if req.HandleStatus == "40" {
|
|
|
logDesc = s.GetCxtUserName() + "审批退回"
|
|
|
nextHandle = createNextTaskHandel(s, task, 20)
|
|
|
}
|
|
|
@@ -374,16 +358,18 @@ func (s *taskService) Handle(req *model.HandleReq) (err error) {
|
|
|
taskData["evaluate_status"] = req.HandleStatus
|
|
|
taskData["evaluate_desc"] = req.HandleDesc
|
|
|
logNodeName = "评价"
|
|
|
- if req.HandleStatus == "审批通过" {
|
|
|
+ if req.HandleStatus == "30" {
|
|
|
// 监办人评价,审批通过,任务结束
|
|
|
logDesc = s.GetCxtUserName() + "审批通过"
|
|
|
nextHandle = nil
|
|
|
taskData["actual_close_date"] = now.Format("Y-m-d H:i:s")
|
|
|
taskData["task_status"] = "30"
|
|
|
- } else if req.HandleStatus == "审批退回" {
|
|
|
- logDesc = s.GetCxtUserName() + "审批通过"
|
|
|
+ } else if req.HandleStatus == "40" {
|
|
|
+ logDesc = s.GetCxtUserName() + "审批退回"
|
|
|
nextHandle = createNextTaskHandel(s, task, 20)
|
|
|
}
|
|
|
+ } else {
|
|
|
+ return fmt.Errorf("未知步骤,无法操作")
|
|
|
}
|
|
|
|
|
|
// 更新数据
|
|
|
@@ -393,13 +379,13 @@ func (s *taskService) Handle(req *model.HandleReq) (err error) {
|
|
|
return err
|
|
|
}
|
|
|
// 更新任务数据
|
|
|
- _, err = s.Dao.DB.Model("plat_task_handle").Update(handleData, fmt.Sprintf("ID='%v'", taskHandle.ID))
|
|
|
+ _, err = s.Dao.DB.Update("plat_task_handle", handleData, fmt.Sprintf("ID='%v'", taskHandle.ID))
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
// 创建下一条任务
|
|
|
if nextHandle != nil {
|
|
|
- _, err = s.Dao.DB.Model("plat_task_handle").Save(nextHandle)
|
|
|
+ _, err = s.Dao.DB.Save("plat_task_handle", nextHandle)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
@@ -412,7 +398,7 @@ func (s *taskService) Handle(req *model.HandleReq) (err error) {
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
- return fmt.Errorf("未知步骤,无法操作")
|
|
|
+ return nil
|
|
|
}
|
|
|
|
|
|
// 任务日志创建方法
|
|
|
@@ -471,9 +457,13 @@ func createNextTaskHandel(s *taskService, task *model.PlatTask, step int) *model
|
|
|
personTask.MainUserId = task.MainUserId
|
|
|
personTask.OwnerUserId = task.OwnerUserId
|
|
|
} else if step == 20 {
|
|
|
+ // 创建提交任务
|
|
|
+ personTask.MainUserId = task.MainUserId
|
|
|
+ personTask.OwnerUserId = task.OwnerUserId
|
|
|
+ } else if step == 30 {
|
|
|
// 提交给督办人审批
|
|
|
personTask.MainUserId = task.SupervisorUserId
|
|
|
- } else if step == 30 {
|
|
|
+ } else if step == 40 {
|
|
|
// 提交给监办人评价
|
|
|
personTask.MainUserId = task.WatchUserId
|
|
|
}
|
|
|
@@ -481,4 +471,42 @@ func createNextTaskHandel(s *taskService, task *model.PlatTask, step int) *model
|
|
|
service.SetCreatedInfo(&personTask, s.GetCxtUserId(), s.GetCxtUserName())
|
|
|
|
|
|
return &personTask
|
|
|
+}
|
|
|
+
|
|
|
+// 处理暂存、提交任务进展
|
|
|
+func (s *taskService) saveProgressList(req *model.HandleReq, now *gtime.Time) (err error) {
|
|
|
+ ids := ""
|
|
|
+ deleteWhere := fmt.Sprintf("task_id='%v'", req.TaskId)
|
|
|
+ for index, progress := range req.ProgressList {
|
|
|
+ if progress.Id != 0 {
|
|
|
+ if ids == "" {
|
|
|
+ ids = fmt.Sprintf("%v", progress.Id)
|
|
|
+ } else {
|
|
|
+ ids += fmt.Sprintf(",%v", progress.Id)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ req.ProgressList[index].TaskId = req.TaskId
|
|
|
+ // 填充创建信息
|
|
|
+ if progress.CreatedBy == 0 {
|
|
|
+ service.SetCreatedInfo(req.ProgressList[index], s.GetCxtUserId(), s.GetCxtUserName())
|
|
|
+ }
|
|
|
+ // 填充更新信息
|
|
|
+ service.SetUpdatedInfo(req.ProgressList[index], s.GetCxtUserId(), s.GetCxtUserName())
|
|
|
+ }
|
|
|
+ if ids != "" {
|
|
|
+ deleteWhere += fmt.Sprintf(" AND ID NOT IN (%v)", ids)
|
|
|
+ }
|
|
|
+ // 保存督办进展
|
|
|
+ // 1 标记删除旧的进展数据
|
|
|
+ _, err = s.Dao.DB.Update("plat_task_progress", fmt.Sprintf("deleted_time='%v'", now.Format("Y-m-d H:i:s")), deleteWhere)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ // 2 保存新的数据
|
|
|
+ _, err = s.Dao.DB.Save("plat_task_progress", req.ProgressList)
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ return nil
|
|
|
}
|