package org.springblade.mdm.flow.controller; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.flowable.engine.RuntimeService; import org.flowable.engine.TaskService; import org.flowable.engine.runtime.ProcessInstance; import org.flowable.task.api.Task; import org.springblade.core.tool.api.R; import org.springblade.mdm.flow.constants.FlowContants; import org.springblade.mdm.flow.excution.StartDispatcher; import org.springblade.mdm.flow.service.ApproveRecordService; import org.springblade.mdm.flow.service.FlowProgramFileService; import org.springblade.mdm.flow.service.ReplaceFlowService; import org.springblade.mdm.flow.service.TaskDispatchService; import org.springblade.mdm.flow.service.execute.AbstractFlowCompleteService; import org.springblade.mdm.flow.service.execute.DefaultFlowCompleteService; import org.springblade.mdm.flow.service.execute.TryFlowCompleteService; import org.springblade.mdm.flow.vo.ReplaceFlowStartVO; import org.springblade.mdm.flow.vo.TaskAssignVO; import org.springblade.mdm.program.service.ProcessProgRefService; import org.springframework.web.bind.annotation.*; import java.util.Map; @Slf4j @RestController @AllArgsConstructor @RequestMapping("/flow/replace") @Tag(name = "替换流程", description = "替换流程") public class ReplaceFlowController { private final StartDispatcher dispatcher; private final TaskService taskService; private final RuntimeService runtimeService; private final ProcessProgRefService processProgRefService; private final ApproveRecordService approveRecordService; private final FlowProgramFileService flowProgramFileService; private final DefaultFlowCompleteService defaultFlowCompleteService; private final TaskDispatchService taskDispatchService; private final ReplaceFlowService replaceFlowService; @PostMapping("/prestart") @Operation(summary = "准备程序替换流程", description = "准备程序替换流程,打开界面之前调用,调用之后会初始化文件列表,") public R prestart(@Parameter(description = "程序包名 节点的id") Long nodeId) { String tempInstanceId = "REP"+System.currentTimeMillis(); try { replaceFlowService.pre(nodeId,tempInstanceId); return R.data(tempInstanceId); }catch(Exception e){ log.error("预开始错误",e); return R.fail(e.getMessage()); } } /** * 发起替换流程 */ @PostMapping("/start") @Operation(summary = "发起程序替换流程", description = "发起程序替换流程") public R start(@RequestBody ReplaceFlowStartVO startVO) { try { replaceFlowService.start(startVO); return R.data(true); }catch(Exception e){ log.error("发起程序替换错误",e); return R.fail(e.getMessage()); } } }