TaskStatePending.java 3 KB
Newer Older
1 2 3 4 5 6 7 8
package com.ruoyi.service.impl;

import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.domain.CarReviewTask;
import com.ruoyi.domain.SystemReviewTask;
import com.ruoyi.domain.Task;
import com.ruoyi.mapper.ReviewDetailsMapper;
9 10
import com.ruoyi.service.CarReviewTaskService;
import com.ruoyi.service.SystemReviewTaskService;
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
import com.ruoyi.service.TaskService;
import com.ruoyi.service.TaskState;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Objects;

@Transactional
@Service
public class TaskStatePending implements TaskState, InitializingBean {

    @Autowired
    private TaskStateContext taskStateContext;

    private ReviewDetailsMapper reviewDetailsMapper;

    @Autowired
    private TaskService taskService;

    @Autowired
    private ApplicationContext applicationContext;

37 38 39 40 41 42
    @Autowired
    private SystemReviewTaskService systemReviewTaskService;

    @Autowired
    private CarReviewTaskService carReviewTaskService;

43 44 45 46 47 48 49 50 51 52 53 54
    @Override
    public void doCreate(Task task, List<String> taskList) {
        throw new ServiceException("不能创建一个已经开始的任务", HttpStatus.ERROR);
    }

    @Override
    public void doStart(Task task) {

        task.setTaskStatus(Task.TASK_STATUS_PENDING);
        task.setRunStatus(Task.RUN_STATUS_STATUS_RUNNING);

        if (Objects.equals(task.getNextNode(), Task.SUB_TASK_SRAIF)) {
55
            systemReviewTaskService.start(task.getSystemReviewTaskId());
56 57 58 59
            task.setNextNode(Task.SUB_TASK_GRFIS);
            taskService.updateById(task);

        } else if (Objects.equals(task.getNextNode(), Task.SUB_TASK_GRFIS)) {
60
            carReviewTaskService.startReviewTask(task.getCarReviewTaskId());
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
            task.setNextNode(Task.SUB_TASK_TRFIS);
            taskService.updateById(task);

        }

    }

    @Override
    public void doSubmit(Task task) {

        long subTaskCount = 0;

        if(task.getSystemReviewTaskId() != null) {
            subTaskCount = reviewDetailsMapper.count(task.getSystemReviewTaskId(), SystemReviewTask.TYPE);
        }
        if(task.getCarReviewTaskId() != null) {
            subTaskCount = reviewDetailsMapper.count(task.getCarReviewTaskId(), CarReviewTask.TYPE);
        }

        if(subTaskCount > 0) {
            task.setTaskStatus(Task.TASK_STATUS_PENDING);
            task.setRunStatus(Task.RUN_STATUS_RUNNABLE);
        } else {
            task.setTaskStatus(Task.TASK_STATUS_FINISH);
            task.setRunStatus(Task.RUN_STATUS_STATUS_RUNNING);
        }

        taskService.updateById(task);
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        taskStateContext.putResource(Task.TASK_STATUS_PENDING, applicationContext.getBean(this.getClass()));
    }
}