From cacf363f222e354cad6db18c4a00fb1097d35c2c Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期四, 09 十一月 2023 14:30:58 +0800 Subject: [PATCH] fix --- service/task.go | 122 +++++++++++++++++++++++++++++++++++----- 1 files changed, 107 insertions(+), 15 deletions(-) diff --git a/service/task.go b/service/task.go index 8129ddf..bebd3ff 100644 --- a/service/task.go +++ b/service/task.go @@ -1,13 +1,14 @@ package service import ( - "apsClient/conf" "apsClient/constvar" "apsClient/model" "apsClient/model/common" + "apsClient/model/request" "apsClient/model/response" "apsClient/pkg/ecode" "apsClient/pkg/logx" + "apsClient/pkg/timex" "fmt" "github.com/jinzhu/gorm" "time" @@ -21,7 +22,7 @@ } // GetTask 鑾峰彇浠诲姟锛屾湭瀹屾垚鐨勫紑濮嬫椂闂村皬浜庣瓑浜庡綋鍓嶆椂闂达紝缁撴潫鏃堕棿澶т簬褰撳墠鏃堕棿鐨勪换鍔� -func (slf TaskService) GetTask(page, pageSize int, mode constvar.TaskMode, channels []int32) (taskResp *response.TaskResponse, code int) { +func (slf TaskService) GetTask(deviceID string, page, pageSize int, mode constvar.TaskMode, channels []int32) (taskResp *response.TaskResponse, code int) { var taskList []*response.TaskData var count int64 var workers []*common.ProcedureWorker @@ -29,7 +30,7 @@ taskResp = &response.TaskResponse{ Tasks: taskList, TaskCount: count, - Workers: slf.WorkerDistinct(workers), + Workers: workers, } var ( @@ -39,7 +40,7 @@ workOrderIds []string ) search := model.NewProceduresSearch(nil). - SetDeviceId(conf.Conf.System.DeviceId). + SetDeviceId(deviceID). SetPage(page, pageSize) if mode == constvar.TaskModeUnStarted { @@ -99,13 +100,14 @@ 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 } -func (slf TaskService) NewTaskCount() (count int64) { - count, _ = model.NewProceduresSearch(nil).SetDeviceId(conf.Conf.System.DeviceId).SetStatus(model.ProcedureStatusWaitProcess).Count() +func (slf TaskService) NewTaskCount(deviceId string) (count int64) { + count, _ = model.NewProceduresSearch(nil).SetDeviceId(deviceId).SetStatus(model.ProcedureStatusWaitProcess).Count() return count } @@ -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 { @@ -191,3 +192,94 @@ func (slf TaskService) SaveTaskStatusSync(db *gorm.DB, record *model.TaskStatusSync) (err error) { return model.NewTaskStatusSyncSearch(db).Create(record) } + +// GetTaskStatusSync 鑾峰彇寰呭悓姝ヤ换鍔′俊鎭� +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(deviceID string, 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(deviceID). + SetOffset(offset, limit).SetChannels(channels) + todayStartTs := timex.TodayStartTs() + switch queryType { + case request.QueryTypeUnFinish: + search.SetStatusNot(model.ProcedureStatusFinished).SetOrder("status desc, start_time asc") + case request.QueryTypeToday: + search.SetStatusNot(model.ProcedureStatusFinished).SetStartTimeMin(todayStartTs).SetEndTimeMax(todayStartTs + 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