yangys
2025-08-17 0ef4cc755bddd87799b8bfdd65c8123df6e149d0
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/replace/ReplaceFinishListener.java
@@ -7,9 +7,7 @@
import org.springblade.mdm.flow.constants.FlowContants;
import org.springblade.mdm.flow.entity.ApproveRecord;
import org.springblade.mdm.flow.entity.FlowProgramFile;
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.*;
import org.springblade.mdm.program.entity.NcNode;
import org.springblade.mdm.program.entity.NcProgramApproved;
import org.springblade.mdm.program.service.NcNodeService;
@@ -37,6 +35,8 @@
   private NcProgramApprovedService ncProgramApprovedService;
   @Autowired
   private NcNodeService ncNodeService;
   @Autowired
   private FlowCommonService flowCommonService;
   /**
    * 在流程结束时自动调用,(配置在审批结束事件的executelistener中了)
    * @param execution 执行对象
@@ -44,26 +44,29 @@
   public void handle(DelegateExecution execution) {
      // 执行业务逻辑
      String instId = execution.getProcessInstanceId();
      FlowProgramProperties props = flowCommonService.getProgramProperties(instId);
      Long nodeId = runtimeService.getVariable(execution.getId(),FlowContants.NODE_ID,Long.class);
      log.info("事件名称{},instid={}" , execution.getEventName(),instId);
      List<FlowProgramFile> programFiles =  flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId, instId).list();
      //List<FlowProgramFile> programFiles =  flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId, instId).list();
      List<FlowProgramFile> programFiles = flowProgramFileService.listByProcessInstanceId(instId);
      NcNode newProgramPackage = replaceProgram(nodeId,instId,programFiles);
      addToApproved(newProgramPackage,Func.toStr(execution.getVariables().get(FlowContants.TITLE)));
      addToApproved(newProgramPackage,props);
      log.info("流程已完成 in replaceFinishListener");
   }
   /**
    * 增加审批通过记录,供用户导出到工控网
    * @param newProgramPackage 新的程序包节点
    * @param title 标题
    * @param props 流程属性集合
    */
   void addToApproved(NcNode newProgramPackage,String title){
   void addToApproved(NcNode newProgramPackage,FlowProgramProperties props){
      NcProgramApproved approve = new NcProgramApproved();
      approve.setProgramName(newProgramPackage.getName());
      approve.setNcNodeId(newProgramPackage.getId());
      approve.setTitle(title);
      approve.setTitle(props.getTitle());
      approve.setProgrammerId(props.getProgrammerId());
      ncProgramApprovedService.save(approve);
   }