浏览代码

成功率

wuyi 1 年之前
父节点
当前提交
5632cd52c4
共有 3 个文件被更改,包括 26 次插入2 次删除
  1. 3 0
      src/task/entities/task.entity.ts
  2. 5 0
      src/task/task.controller.ts
  3. 18 2
      src/task/task.service.ts

+ 3 - 0
src/task/entities/task.entity.ts

@@ -36,4 +36,7 @@ export class Task {
 
     @Column({ default: 0 })
     rcsWait: number
+
+    @Column()
+    successRate: string
 }

+ 5 - 0
src/task/task.controller.ts

@@ -37,4 +37,9 @@ export class TaskController {
     async findAllTaskItem(@Body() page: PageRequest<TaskItem>) {
         return await this.taskService.findAllTaskItem(page)
     }
+
+    @Post('/test/:id')
+    async createTaskItem(@Param('id') id: string) {
+        return await this.taskService.startTask(parseInt(id))
+    }
 }

+ 18 - 2
src/task/task.service.ts

@@ -24,7 +24,8 @@ export class TaskService implements OnModuleInit {
         private readonly phoneListService: PhoneListService,
         private readonly deviceService: DeviceService,
         private readonly sysConfigService: SysConfigService
-    ) {}
+    ) {
+    }
 
     onModuleInit() {
         this.taskRepository.update({ status: TaskStatus.PENDING }, { status: TaskStatus.IDLE })
@@ -65,7 +66,22 @@ export class TaskService implements OnModuleInit {
         if ((task && task.status === TaskStatus.IDLE) || task.status === TaskStatus.PAUSE) {
             task.status = TaskStatus.PENDING
             await this.taskRepository.save(task)
-            this.runTask(task)
+            await this.runTask(task)
+
+            const successCount = await this.taskItemRepository.countBy({
+                taskId: id,
+                status: 'success'
+            })
+            const totalCount = await this.taskItemRepository.countBy({
+                taskId: id
+            })
+            if (totalCount === 0) {
+                throw new Error('No tasks found for the given taskId.')
+            }
+            // 计算成功率
+            const successRate = ((successCount / totalCount) * 100).toFixed(1) + '%'
+            task.successRate = String(successRate)
+            await this.taskRepository.save(task)
         }
     }