package jnpf.flowable.controller; import jnpf.base.ActionResult; import jnpf.flowable.entity.TaskEntity; import jnpf.flowable.enums.EventEnum; import jnpf.flowable.enums.TaskStatusEnum; import jnpf.flowable.model.task.AuditModel; import jnpf.flowable.model.task.FlowModel; import jnpf.flowable.model.task.TaskTo; import jnpf.flowable.service.TaskService; import jnpf.flowable.util.OperatorUtil; import jnpf.flowable.TaskApi; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; /** * 类的描述 * * @author JNPF@YinMai Info. Co., Ltd * @version 5.0.x * @since 2024/5/28 14:32 */ @RestController @RequestMapping("/task") @RequiredArgsConstructor public class TaskForFileController implements TaskApi { private final TaskService taskService; private final OperatorUtil operatorUtil; @Override @PostMapping("/saveDraft") public ActionResult saveDraft(@RequestBody FlowModel flowModel) { try { flowModel.setServerAutoDraft(true); taskService.batchSaveOrSubmit(flowModel); operatorUtil.handleOperator(); if (TaskStatusEnum.RUNNING.getCode().equals(flowModel.getStatus())) { operatorUtil.handleTaskStatusThenEvent(flowModel, EventEnum.INIT.getStatus()); } TaskEntity taskEntity = flowModel.getTaskEntity(); if (taskEntity.getRejectDataId() == null) { operatorUtil.autoAudit(flowModel); operatorUtil.launchTrigger(flowModel); operatorUtil.handleOperator(); operatorUtil.handleTaskStatusThenEvent(); } else { operatorUtil.handleTaskStatus(); } TaskEntity savedTask = taskService.getById(taskEntity.getId()); AuditModel model = operatorUtil.getAuditModel( savedTask == null ? taskEntity.getId() : savedTask.getId(), flowModel, null); return ActionResult.success(model); } catch (Exception exception) { return ActionResult.fail(exception.getMessage()); } } @Override @PostMapping("/launchFlow") public ActionResult launchFlow(@RequestBody FlowModel flowModel) { try { return operatorUtil.launchFlow(flowModel); } catch (Exception e) { e.printStackTrace(); return ActionResult.fail(e.getMessage()); } } @Override @PostMapping("/getFlowTodoCount") public TaskTo getFlowTodoCount(@RequestBody TaskTo taskTo) { return taskService.getFlowTodoCount(taskTo); } }