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