|
|
@@ -61,12 +61,24 @@ func (s *taskService) GetList(req *model.SearchPlatTaskReq) (total int, TaskList
|
|
|
if req.TaskStatus != "" {
|
|
|
TaskModel = TaskModel.Where("plat_task.task_status", req.TaskStatus)
|
|
|
}
|
|
|
+ // 是否超期(10否20是30全部(或为空查询全部))
|
|
|
if req.IsOverdue != "" {
|
|
|
- TaskModel = TaskModel.Where("plat_task.is_overdue", req.IsOverdue)
|
|
|
+ today := gtime.Now().Format("Y-m-d 00:00:00")
|
|
|
+ if req.IsOverdue == "10" {
|
|
|
+ TaskModel = TaskModel.Where("plat_task.task_end_date >= ? OR (plat_task.task_status<>'10' && plat_task.task_status<>'20')", today)
|
|
|
+ } else if req.IsOverdue == "20" {
|
|
|
+ TaskModel = TaskModel.Where("plat_task.task_end_date < ? AND (plat_task.task_status='10' OR plat_task.task_status='20')", today)
|
|
|
+ }
|
|
|
}
|
|
|
if req.MainUserId != "" {
|
|
|
TaskModel = TaskModel.Where("plat_task.main_user_id", req.MainUserId)
|
|
|
}
|
|
|
+ if req.SupervisorUserId != "" {
|
|
|
+ TaskModel = TaskModel.Where("plat_task.supervisor_user_id", req.SupervisorUserId)
|
|
|
+ }
|
|
|
+ if req.CreatedById != "" {
|
|
|
+ TaskModel = TaskModel.Where("plat_task.created_by", req.CreatedById)
|
|
|
+ }
|
|
|
if req.TargetId != "" {
|
|
|
TaskModel = TaskModel.Where("plat_task.target_id", req.TargetId)
|
|
|
}
|
|
|
@@ -89,6 +101,24 @@ func (s *taskService) GetList(req *model.SearchPlatTaskReq) (total int, TaskList
|
|
|
} else if req.OperateType == "4" { // 抄送我的
|
|
|
TaskModel = TaskModel.Where(fmt.Sprintf("FIND_IN_SET(%v, plat_task.copy_user_id)", s.GetCxtUserId()))
|
|
|
}
|
|
|
+ // 超期时间:为空 全部;1/3/5/>5(超期1天之内;超期1-3天之间;超期3-5天,超期5天以上)
|
|
|
+ if req.OverdueDays != "" {
|
|
|
+ if req.OverdueDays == "1" {
|
|
|
+ date := gtime.Now().AddDate(0, 0, -1).Format("Y-m-d")
|
|
|
+ TaskModel = TaskModel.Where("plat_task.task_end_date LIKE ? AND (plat_task.task_status='10' OR plat_task.task_status='20')", "%"+date+"%")
|
|
|
+ } else if req.OverdueDays == "3" {
|
|
|
+ date1 := gtime.Now().AddDate(0, 0, -1).Format("Y-m-d 00:00:00")
|
|
|
+ date2 := gtime.Now().AddDate(0, 0, -3).Format("Y-m-d 00:00:00")
|
|
|
+ TaskModel = TaskModel.Where(fmt.Sprintf("plat_task.task_end_date >= '%v' AND plat_task.task_end_date < '%v' AND (plat_task.task_status='10' OR plat_task.task_status='20')", date2, date1))
|
|
|
+ } else if req.OverdueDays == "5" {
|
|
|
+ date1 := gtime.Now().AddDate(0, 0, -3).Format("Y-m-d 00:00:00")
|
|
|
+ date2 := gtime.Now().AddDate(0, 0, -5).Format("Y-m-d 00:00:00")
|
|
|
+ TaskModel = TaskModel.Where(fmt.Sprintf("plat_task.task_end_date >= '%v' AND plat_task.task_end_date < '%v' AND (plat_task.task_status='10' OR plat_task.task_status='20')", date2, date1))
|
|
|
+ } else if req.OverdueDays == ">5" {
|
|
|
+ date := gtime.Now().AddDate(0, 0, -5).Format("Y-m-d 00:00:00")
|
|
|
+ TaskModel = TaskModel.Where("plat_task.task_end_date < ? AND (plat_task.task_status='10' OR plat_task.task_status='20')", date)
|
|
|
+ }
|
|
|
+ }
|
|
|
TaskModel = TaskModel.Group("plat_task.id")
|
|
|
|
|
|
total, err = TaskModel.Count()
|
|
|
@@ -221,8 +251,44 @@ func (s *taskService) Export(req *model.ExportReq) (content *model.ExportContent
|
|
|
// Statistics 统计
|
|
|
func (s *taskService) Statistics(req *model.SearchPlatTaskReq) (*model.TaskNumberCount, error) {
|
|
|
var result model.TaskNumberCount
|
|
|
+ // 是否超期
|
|
|
+ where := ""
|
|
|
+ // 是否超期(10否20是30全部(或为空查询全部))
|
|
|
+ if req.IsOverdue == "20" {
|
|
|
+ today := gtime.Now().Format("Y-m-d 00:00:00")
|
|
|
+ where = fmt.Sprintf("plat_task.task_end_date < '%v' AND (plat_task.task_status='10' OR plat_task.task_status='20')", today)
|
|
|
+ }
|
|
|
+ // 统计数量
|
|
|
+ count, err := s.Dao.InnerJoin("plat_task_handle", "plat_task.Id=plat_task_handle.task_id").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())).Where(where).Group("plat_task.Id").Count()
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ result.ToDoNumber = count
|
|
|
+
|
|
|
+ return &result, nil
|
|
|
+}
|
|
|
+
|
|
|
+// StatisticsNumber 统计(主要统计超期数量)
|
|
|
+func (s *taskService) StatisticsNumber(req *model.SearchPlatTaskReq) (*model.TaskNumberCount, error) {
|
|
|
+ var result model.TaskNumberCount
|
|
|
+ // 是否超期
|
|
|
+ where := ""
|
|
|
+ orderBy := "plat_task.created_time DESC"
|
|
|
+ // 是否超期(10否20是30全部(或为空查询全部))
|
|
|
+ if req.IsOverdue == "20" {
|
|
|
+ today := gtime.Now().Format("Y-m-d 00:00:00")
|
|
|
+ where = fmt.Sprintf("plat_task.task_end_date < '%v' AND (plat_task.task_status='10' OR plat_task.task_status='20')", today)
|
|
|
+ }
|
|
|
+ if req.OperateType == "1" { // 我的待办
|
|
|
+ orderBy = "plat_task.task_status ASC, plat_task.created_time DESC"
|
|
|
+ if where == "" {
|
|
|
+ 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 {
|
|
|
+ where += fmt.Sprintf(" AND 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())
|
|
|
+ }
|
|
|
+ }
|
|
|
// 统计数量
|
|
|
- count, err := s.Dao.InnerJoin("plat_task_handle", "plat_task.Id=plat_task_handle.task_id").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())).Group("plat_task.Id").Count()
|
|
|
+ count, err := s.Dao.InnerJoin("plat_task_handle", "plat_task.Id=plat_task_handle.task_id").Where(where).Order(orderBy).Group("plat_task.Id").Count()
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
|
}
|