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.ProgramUploadVO; import org.springblade.mdm.flow.vo.ReplaceFlowStartVO; import org.springblade.mdm.flow.vo.ReplaceUploadVO; import org.springblade.mdm.flow.vo.TaskAssignVO; import org.springblade.mdm.program.service.ProcessProgRefService; import org.springblade.mdm.program.vo.NcNodeVO; import org.springframework.web.bind.annotation.*; import java.util.Map; @Slf4j @RestController @AllArgsConstructor @RequestMapping("/flow/replace") @Tag(name = "替换流程", description = "替换流程") public class ReplaceFlowController { private final TaskService taskService; private final RuntimeService runtimeService; private final ApproveRecordService approveRecordService; private final FlowProgramFileService flowProgramFileService; private final DefaultFlowCompleteService defaultFlowCompleteService; private final TaskDispatchService taskDispatchService; private final ReplaceFlowService replaceFlowService; @PostMapping("/pre") @Operation(summary = "准备程序替换流程new", description = "准备程序替换流程,打开界面之前调用,调用之后会初始化文件列表,") public R pre(@Parameter(description = "程序包名 节点的id") Long nodeId) { String tempInstanceId = "REP"+System.currentTimeMillis(); try { return R.data(replaceFlowService.pre(nodeId,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()); } } @PostMapping("/upload") @Operation(summary = "替换流程发起上传程序文件", description = "替换流程发起上传程序文件") public R upload(ReplaceUploadVO uploadVO) { try { replaceFlowService.uploadReplaceProgramFile(uploadVO); }catch(Exception e) { log.error("替换程序上传执行错误",e); return R.fail("上传失败:" + e.getMessage()); } return R.success(); } }