wuyi 1 год назад
Родитель
Сommit
5b987d086a
3 измененных файлов с 36 добавлено и 1 удалено
  1. 1 0
      src/task/entities/task.entity.ts
  2. 10 0
      src/task/task.controller.ts
  3. 25 1
      src/task/task.service.ts

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

@@ -5,6 +5,7 @@ import { JsonTransformer } from 'src/transformers/json.transformer'
 export enum TaskStatus {
     IDLE = 'idle',
     PENDING = 'pending',
+    CUTTING = 'cutting',
     PAUSE = 'pause',
     COMPLETED = 'completed',
     QUEUED = 'queued',

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

@@ -51,11 +51,21 @@ export class TaskController {
         return await this.taskService.startTask(parseInt(id))
     }
 
+    @Post('/:id/queueCutting')
+    async queueCutting(@Param('id') id: string) {
+        return await this.taskService.queueCutting(parseInt(id))
+    }
+
     @Post('/:id/pause')
     async pauseTask(@Param('id') id: string) {
         return await this.taskService.pauseTask(parseInt(id))
     }
 
+    @Get('/:id/forceCompletion')
+    async forceCompletion(@Param('id') id: string) {
+        return await this.taskService.forceCompletion(parseInt(id))
+    }
+
     @Post('/item')
     async findAllTaskItem(@Body() page: PageRequest<TaskItem>) {
         (page.search as any).where.embed = false

+ 25 - 1
src/task/task.service.ts

@@ -245,13 +245,27 @@ export class TaskService implements OnModuleInit {
         )
     }
 
+    async queueCutting(id: number): Promise<void> {
+        const task = await this.taskRepository.findOneBy({ id })
+        if (task.status === TaskStatus.IDLE || task.status === TaskStatus.QUEUED || task.status === TaskStatus.PAUSE) {
+            await this.taskRepository.update({ id }, { status: TaskStatus.CUTTING })
+        }
+    }
+
     async pauseTask(id: number): Promise<void> {
         const task = await this.taskRepository.findOneBy({ id })
-        if (task.status === TaskStatus.PENDING || task.status === TaskStatus.QUEUED) {
+        if (task.status === TaskStatus.PENDING || task.status === TaskStatus.QUEUED || task.status === TaskStatus.CUTTING) {
             await this.taskRepository.update({ id }, { status: TaskStatus.PAUSE })
         }
     }
 
+    async forceCompletion(id: number): Promise<void> {
+        const task = await this.taskRepository.findOneBy({ id })
+        if (task.status === TaskStatus.PAUSE || task.status === TaskStatus.QUEUED) {
+            await this.taskRepository.update({ id }, { status: TaskStatus.COMPLETED })
+        }
+    }
+
     async exportTaskItem(taskId: number) {
         const workbook = new ExcelJS.Workbook()
         const worksheet = workbook.addWorksheet('Sheet1')
@@ -764,6 +778,16 @@ export class TaskService implements OnModuleInit {
                             }
                         }
 
+                        // 插队任务
+                        const cuttingTasks = await this.taskRepository.find({
+                            where: {
+                                status: TaskStatus.CUTTING
+                            }
+                        })
+                        if (cuttingTasks.length > 0) {
+                            tasks.push(...cuttingTasks)
+                        }
+
                         const totalSend = tasks.reduce((acc, cur) => {
                             return acc + cur.total
                         }, 0)