From 10c65da3d2af7056f48d9301e83f53f102f76e18 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期一, 30 十月 2023 14:52:11 +0800
Subject: [PATCH] fix

---
 service/task.go |  107 ++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 97 insertions(+), 10 deletions(-)

diff --git a/service/task.go b/service/task.go
index df68848..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
 }
@@ -137,20 +139,19 @@
 	upMap := map[string]interface{}{"status": status}
 	if status == model.ProcedureStatusProcessing {
 		upMap["process_model_number"] = processModelNumber
+		upMap["real_start_time"] = time.Now().Unix()
 	} else if status == model.ProcedureStatusWaitProcess {
 		upMap["process_model_number"] = ""
+	} else if status == model.ProcedureStatusFinished {
+		upMap["real_end_time"] = time.Now().Unix()
 	}
 
 	return model.NewProceduresSearch(db).SetId(id).UpdateByMap(upMap)
 }
 
-func (slf TaskService) UpdateProcedureStatus(db *gorm.DB, id uint, status model.ProcedureStatus, channel int32) error {
-	if status == model.ProcedureStatusFinished {
-		ProgressCacheUnset(channel)
-	}
-	return model.NewProceduresSearch(db).SetId(id).UpdateByMap(map[string]interface{}{
-		"status": status,
-	})
+func (slf TaskService) UpdateProcessModelNumber(db *gorm.DB, id uint, processModelNumber string) error {
+	upMap := map[string]interface{}{"process_model_number": processModelNumber}
+	return model.NewProceduresSearch(db).SetId(id).UpdateByMap(upMap)
 }
 
 func (slf TaskService) UpdateOrderStatus(db *gorm.DB, id uint, status model.OrderStatus) error {
@@ -196,3 +197,89 @@
 func (slf TaskService) GetTaskStatusSync(limit int) ([]*model.TaskStatusSync, error) {
 	return model.NewTaskStatusSyncSearch(nil).SetOrder("id desc").SetPage(1, limit).FindNotTotal()
 }
+
+// RemoveTaskStatusSync 鍒犻櫎鍚屾瀹岀殑璁板綍
+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