yangys
2025-08-14 33e6270d2d3a40591e58d45fd8435d2f3eaf66b2
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/task/cure/CureFinishOperateTask.java
@@ -5,7 +5,7 @@
import org.flowable.engine.delegate.DelegateExecution;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.mdm.commons.contants.ParamContants;
import org.springblade.mdm.commons.contants.ParamConstants;
import org.springblade.mdm.flow.service.FlowCommonService;
import org.springblade.mdm.flow.service.FlowProgramProperties;
import org.springblade.mdm.program.entity.NcNode;
@@ -50,46 +50,58 @@
      //程序包节点和下属程序节点(包括历史节点非最新版本的)从试切挪到固化下面
      //程序包节点 设置未已固化
      NcNode pkgNode =  nodeService.lambdaQuery().eq(NcNode::getProcessInstanceId, processInstanceId).one();
      pkgNode.setIsCured(1);
      //设置过期日期
      pkgNode.setExpireDate(calculateExpireDate());
      nodeService.updateById(pkgNode);
      if(pkgNode.isDeviationProgram()){
         //偏离的程序直接锁定
         pkgNode.setIsLocked(1);
         nodeService.updateById(pkgNode);
      }else {
         pkgNode.setIsCured(1);
         //设置过期日期
         pkgNode.setExpireDate(calculateExpireDate());
         nodeService.updateById(pkgNode);
      List<NcNode> historyNodes = nodeService.getNodeHistory(pkgNode);
      moveNodeToCuredTree(pkgNode,historyNodes,flowCommonService.getProgramProperties(processInstanceId));
         List<NcNode> historyProgramPackageNodes = nodeService.getNodeHistory(pkgNode);
         moveNodeToCuredTree(pkgNode, historyProgramPackageNodes, flowCommonService.getProgramProperties(processInstanceId));
      }
   }
   /**
    * 将节点和历史节点挪动到固化的同级节点下
    * @param historyNodes
    * @param historyProgramPackageNodes 程序包名 历史节点
    */
   void moveNodeToCuredTree(NcNode pkgNode,List<NcNode> historyNodes, FlowProgramProperties programProperties) {
   void moveNodeToCuredTree(NcNode pkgNode,List<NcNode> historyProgramPackageNodes, FlowProgramProperties programProperties) {
      //创建节点到机床级别.(固化树)
      NcNode machineNode = ncNodeAutoCreateService.createNodeTreeToMachine(programProperties);
      //移动到固化树下的机床节点下层
      String newParentIds = machineNode.getParentIds()+","+machineNode.getId();
      //String newParentIds = machineNode.getParentIds()+","+machineNode.getId();
      //更新机床 下属节点的数据 为旧版本,锁定(最新版本=0,lock=1)
      //更新机床 下属节点的数据 为旧版本,锁定(最新版本=0,lock=1).
      /*
      this.nodeService.lambdaUpdate().likeRight(NcNode::getParentIds, newParentIds)
         .in(NcNode::getNodeType, Arrays.asList(NcNode.TYPE_PROGRAM_PACKAGE,NcNode.TYPE_PROGRAM_FILE))
         .set(NcNode::getIsLastEdition,0).set(NcNode::getIsLocked,1).update();
       */
      //机床下现在没有文件了,程序包名升级与机床同级了,改为找到机床同级程序包名更新了
      this.nodeService.lambdaUpdate().likeRight(NcNode::getParentIds, machineNode.getParentIds())
         .in(NcNode::getNodeType, Arrays.asList(NcNode.TYPE_PROGRAM_PACKAGE,NcNode.TYPE_PROGRAM_FILE))
         .set(NcNode::getIsLastEdition,0).set(NcNode::getIsLocked,1).update();
      for(NcNode hisNode : historyNodes){
         if(!hisNode.getId().equals(pkgNode.getId())){
            hisNode.setIsLastEdition(0);
      for(NcNode hisPackageNode : historyProgramPackageNodes){
         if(!hisPackageNode.getId().equals(pkgNode.getId())){
            hisPackageNode.setIsLastEdition(0);
         }
         hisNode.setParentId(machineNode.getId());
         hisNode.setParentIds(newParentIds);
         hisPackageNode.setParentId(machineNode.getId());
         hisPackageNode.setParentIds(machineNode.getParentIds());//程序包与机床节点同级
         //处理程序包下层的程序节点
         List<NcNode> programNodes = nodeService.lambdaQuery().eq(NcNode::getParentId,hisNode.getId()).list();
         List<NcNode> programNodes = nodeService.lambdaQuery().eq(NcNode::getParentId,hisPackageNode.getId()).list();
         for(NcNode programNode : programNodes){
            programNode.setParentIds(hisNode.getParentIds()+","+hisNode.getId());
            programNode.setParentIds(hisPackageNode.getParentIds()+","+hisPackageNode.getId());
         }
         nodeService.updateBatchById(programNodes);
      }
      nodeService.updateBatchById(historyNodes);
      nodeService.updateBatchById(historyProgramPackageNodes);
   }
@@ -98,7 +110,7 @@
    * @return
    */
   private Date calculateExpireDate() {
      R<String> validMonResult = sysClient.getParamValue(ParamContants.CURE_VALID_MONTH_KEY);
      R<String> validMonResult = sysClient.getParamValue(ParamConstants.CURE_VALID_MONTH_KEY);
      int month = DEFAULT_VALID_MONTH;
      if(validMonResult.isSuccess() && validMonResult.getData()!=null){