From f5eb41782ed6584664b797df820423f63490d4d3 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期一, 30 十月 2023 12:12:42 +0800
Subject: [PATCH] 按通道号和查询类型查询任务列表

---
 service/task.go |   89 +++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 86 insertions(+), 3 deletions(-)

diff --git a/service/task.go b/service/task.go
index ed8b6ea..8f6388d 100644
--- a/service/task.go
+++ b/service/task.go
@@ -5,6 +5,7 @@
 	"apsClient/constvar"
 	"apsClient/model"
 	"apsClient/model/common"
+	"apsClient/model/request"
 	"apsClient/model/response"
 	"apsClient/pkg/ecode"
 	"apsClient/pkg/logx"
@@ -29,7 +30,7 @@
 	taskResp = &response.TaskResponse{
 		Tasks:     taskList,
 		TaskCount: count,
-		Workers:   slf.WorkerDistinct(workers),
+		Workers:   workers,
 	}
 
 	var (
@@ -99,8 +100,9 @@
 		workers = append(workers, procedure.ProceduresInfo.Workers...)
 	}
 	taskResp = &response.TaskResponse{
-		Tasks:   taskList,
-		Workers: slf.WorkerDistinct(workers),
+		Tasks:     taskList,
+		TaskCount: count,
+		Workers:   slf.WorkerDistinct(workers),
 	}
 	return taskResp, ecode.OK
 }
@@ -200,3 +202,84 @@
 func (slf TaskService) RemoveTaskStatusSync(ids []uint) (err error) {
 	return model.NewTaskStatusSyncSearch(nil).SetIDs(ids).Delete()
 }
+
+// GetTask2 鑾峰彇浠诲姟鍒楄〃2
+func (slf TaskService) GetTask2(offset, limit int, channels []int32, queryType request.QueryType) (taskResp *response.TaskResponse, err error) {
+	var taskList []*response.TaskData
+	var count int64
+	var workers []*common.ProcedureWorker
+
+	taskResp = &response.TaskResponse{
+		Tasks:     taskList,
+		TaskCount: count,
+		Workers:   workers,
+	}
+
+	var (
+		orders       []*model.Order
+		procedures   []*model.Procedures
+		workOrderIds []string
+	)
+	search := model.NewProceduresSearch(nil).
+		SetDeviceId(conf.Conf.System.DeviceId).
+		SetOffset(offset, limit).SetChannels(channels)
+	nowTs := time.Now().Unix()
+	switch queryType {
+	case request.QueryTypeUnFinish:
+		search.SetStatusNot(model.ProcedureStatusFinished).SetOrder("status desc, start_time asc")
+	case request.QueryTypeToday:
+		search.SetStatusNot(model.ProcedureStatusFinished).SetStartTimeMin(nowTs).SetEndTimeMax(nowTs + 86400).SetOrder("status desc, start_time asc")
+	case request.QueryTypeFinished:
+		search.SetStatus(model.ProcedureStatusFinished).SetOrder("start_time desc")
+	}
+
+	procedures, total, err := search.Find()
+	if err != nil {
+		return taskResp, err
+	}
+
+	if err != nil {
+		return taskResp, err
+	}
+	if len(procedures) == 0 {
+		return taskResp, nil
+	}
+
+	for _, procedure := range procedures {
+		workOrderIds = append(workOrderIds, procedure.WorkOrderID)
+	}
+	orders, err = model.NewOrderSearch(nil).SetWorkOrderIds(workOrderIds).FindNotTotal() //鐢卞伐搴忓弽鎺ㄥ伐鍗�
+	if err != nil {
+		return taskResp, err
+	}
+
+	orderMap := make(map[string]*model.Order, len(workOrderIds))
+	for _, order := range orders {
+		orderMap[order.WorkOrderID] = order
+	}
+	for _, procedure := range procedures {
+		taskData := response.TaskData{
+			Order:                 orderMap[procedure.WorkOrderID],
+			Procedure:             procedure,
+			AllProcedures:         procedure.ProceduresInfo.AllProcedureNames,
+			CurrentProcedureIndex: 0,
+			Channel:               procedure.Channel,
+		}
+		index := 0
+		for _, name := range procedure.ProceduresInfo.AllProcedureNames {
+			if name == procedure.ProceduresInfo.ProcedureName {
+				break
+			}
+			index++
+		}
+		taskData.CurrentProcedureIndex = index
+		taskList = append(taskList, &taskData)
+		workers = append(workers, procedure.ProceduresInfo.Workers...)
+	}
+	taskResp = &response.TaskResponse{
+		Tasks:     taskList,
+		TaskCount: total,
+		Workers:   slf.WorkerDistinct(workers),
+	}
+	return taskResp, err
+}

--
Gitblit v1.8.0