yangys
2025-08-07 dbe14213d382668d0aa40f3f2e8ff1f9f9ac92f4
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/DispatchFinishListener.java
@@ -12,12 +12,9 @@
import org.springblade.mdm.flow.service.FlowProgramFileService;
import org.springblade.mdm.program.entity.NcNode;
import org.springblade.mdm.program.entity.NcProgramApproved;
import org.springblade.mdm.program.entity.ProcessProgRef;
import org.springblade.mdm.program.service.NcNodeService;
import org.springblade.mdm.program.service.NcProgramApprovedService;
import org.springblade.mdm.program.service.ProcessProgRefService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
import java.util.List;
@@ -31,8 +28,6 @@
   @Autowired
   private RuntimeService runtimeService;
   @Autowired
   private ProcessProgRefService processProgRefService;
   @Autowired
   private NcProgramApprovedService approvedService;
   @Autowired
   private ApproveRecordService approveRecordService;
@@ -42,28 +37,25 @@
   @Autowired
   private NcNodeService ncNodeService;
   /**
    * 在刘恒结束时自动调用
    * @param execution
    * 在流程结束时自动调用,(配置在审批结束事件的executelistener中了)
    * @param execution 执行对象
    */
   public void handle(DelegateExecution execution) {
      // 执行业务逻辑
      String instId = execution.getProcessInstanceId();
      log.info("{},instid={}" , runtimeService,instId);
      log.info("事件名称{},instid={}" , execution.getEventName(),instId);
      updateFlowProgramFile(instId);
      //将关联表中的数据插入审批表
      //将流程关联 "程序包名"节点设置状态完成状态,如果以后有清除或者设置状态的需求,可以新建表,与程序包名做关联。
      /*
      LambdaQueryWrapper<ProcessProgRef> wrapper = new LambdaQueryWrapper<>();
      wrapper.eq(ProcessProgRef::getProcessInstanceId, instId);
      List<ProcessProgRef> reflist = processProgRefService.list(wrapper);
      NcNode packageNode = ncNodeService.getByProcessInstanceId(instId);
      updateApproveRecordNodeId(packageNode);
      //execution.getEventName()
      log.info("流程已完成in DispatchFinishListener");
   }
      for (ProcessProgRef ref : reflist) {
         NcProgramApproved approved = new NcProgramApproved();
         approved.setNcProgramId(ref.getNcProgramId());
         approvedService.save(approved);
      }*/
   void updateFlowProgramFile(String instId){
      List<FlowProgramFile> programFiles =  flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId, instId).list();
      if(!programFiles.isEmpty()) {
         FlowProgramFile pf = programFiles.get(0);
@@ -74,19 +66,18 @@
         if(pkgNode!=null) {
            approved.setNcNodeId(pkgNode.getId());//程序包节点id
            approvedService.save(approved);
            //更新审批记录的ncNodeId
            approveRecordService.lambdaUpdate()
               .eq(ApproveRecord::getProcessInstanceId, instId)
               .set(ApproveRecord::getNcNodeId,pkgNode.getId()).update();
         }else{
            log.warn("未找到名为{}的程序包",pf.getProgramName());
         }
      }else{
         log.warn("没有程序文件");
      }
   }
      log.info("流程已完成");
   void updateApproveRecordNodeId(NcNode pkgNode){
      //更新审批记录的ncNodeId
      approveRecordService.lambdaUpdate()
         .eq(ApproveRecord::getProcessInstanceId, pkgNode.getProcessInstanceId())
         .set(ApproveRecord::getNcNodeId,pkgNode.getId()).update();
   }
}