yangys
2025-09-15 7bc1d0f521c1d59246f29bcadcc4343f88ceef1c
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/excution/cure/DeviationCureFinishDataHandler.java
@@ -29,10 +29,6 @@
   private FlowProgramFileService flowProgramFileService;
   @Autowired
   private NcNodeService nodeService;
   @Autowired
   private NcNodeAutoCreateService ncNodeAutoCreateService;
   @Autowired
   private MachineService machineService;
   /**
    * cureFinishOperateTask调用,偏离单回传审批完成处理业务
@@ -40,7 +36,6 @@
    */
   public void handleData(FlowProgramProperties props) {
      // 执行业务逻辑
      String instId = props.getProcessInstanceId();
      NcNode pkgNode = nodeService.lambdaQuery().eq(NcNode::getProcessInstanceId,  props.getProcessInstanceId()).one();
      pkgNode.lock();
@@ -55,8 +50,21 @@
      nodeService.save(newPkgNode);
      //处理程序包下层的程序节点111
      List<NcNode> oriProgramNodes = nodeService.lambdaQuery().eq(NcNode::getParentId,pkgNode.getId()).list();
      copyNonProgramNodes(pkgNode,newPkgNode);
      addNewProgramNode(newPkgNode,props.getProcessInstanceId());
      log.info("偏离回传Listener完成");
   }
   /**
    * 从待固化节点复制非程序文件节点到固化节点下
    * @param oriPkgNode 待固化节点
    * @param cureNode 固化节点
    */
   void copyNonProgramNodes(NcNode oriPkgNode,NcNode cureNode){
      //处理程序包下层的程序节点1
      List<NcNode> oriProgramNodes = nodeService.lambdaQuery().eq(NcNode::getParentId,oriPkgNode.getId()).list();
      FlowProgramFile pfile;
      for(NcNode oldProgramNode : oriProgramNodes){
         pfile = flowProgramFileService.getById(oldProgramNode.getFlowProgramFileId());
@@ -66,17 +74,23 @@
            NcNode newOtherFileNode = new NcNode();
            BeanUtils.copyProperties(oldProgramNode,newOtherFileNode);
            EntityUtil.clearBaseProperties(newOtherFileNode);
            newOtherFileNode.setParentId(newPkgNode.getId());
            newOtherFileNode.setParentIds(newPkgNode.getParentIds()+","+newPkgNode.getId());
            newOtherFileNode.setParentId(cureNode.getId());
            newOtherFileNode.setParentIds(cureNode.subNodeParentIds());
            newOtherFileNode.setIsLastEdition(1);
            nodeService.save(newOtherFileNode);
         }
      }
      //nodeService.updateBatchById(oriProgramNodes);
   }
   /**
    * 加入新的程序文件节点
    * @param newPkgNode 新的节点(固化的)
    * @param processInstanceId 流程实例id
    */
   void addNewProgramNode(NcNode newPkgNode,String processInstanceId){
      //新的文件作为最新版本
      List<FlowProgramFile> files = flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId,pkgNode.getProcessInstanceId()).list();
      List<FlowProgramFile> files = flowProgramFileService.lambdaQuery().eq(FlowProgramFile::getProcessInstanceId,processInstanceId).list();
      for(FlowProgramFile flowProgramFile : files){
         NcNode newProgNode = new NcNode();
         BeanUtils.copyProperties(newPkgNode, newProgNode);
@@ -85,7 +99,7 @@
         newProgNode.setName(flowProgramFile.getName());
         newProgNode.setNodeType(NcNode.TYPE_PROGRAM_FILE);
         newProgNode.setParentId(newPkgNode.getId());
         newProgNode.setParentIds(newPkgNode.getParentIds()+","+newPkgNode.getId());
         newProgNode.setParentIds(newPkgNode.subNodeParentIds());
         newProgNode.setIsLastEdition(1);
         newProgNode.setVersionNumber(newPkgNode.getVersionNumber());
         newProgNode.setFlowProgramFileId(flowProgramFile.getId());
@@ -93,8 +107,5 @@
         nodeService.save(newProgNode);
      }
      log.info("偏离回传Listener完成");
   }
}