yangys
2025-09-19 b0d0191a88912b352385349461b500a4964d693b
blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/service/NcProgramExportDNCService.java
@@ -6,11 +6,14 @@
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
import org.flowable.engine.HistoryService;
import org.flowable.engine.history.HistoricProcessInstance;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BizServiceImpl;
import org.springblade.core.oss.OssTemplate;
import org.springblade.mdm.basesetting.machine.service.MachineService;
import org.springblade.mdm.basesetting.machine.entity.Machine;
import org.springblade.mdm.flow.constants.FlowConstant;
import org.springblade.mdm.flow.entity.FlowProgramFile;
import org.springblade.mdm.flow.service.FlowProgramFileService;
import org.springblade.mdm.program.entity.NcNode;
@@ -18,12 +21,8 @@
import org.springblade.mdm.program.entity.NcProgramApproved;
import org.springblade.mdm.program.entity.NcProgramExchange;
import org.springblade.mdm.program.mapper.NcProgramExchangeMapper;
import org.springblade.mdm.program.service.programannotation.AnnotationData;
import org.springblade.mdm.program.service.programannotation.AnnotationProcessor;
import org.springblade.mdm.program.service.programannotation.MachineAnnotationConfig;
import org.springblade.mdm.program.service.programannotation.ProcessorHelper;
import org.springblade.mdm.program.service.programannotation.*;
import org.springblade.system.feign.IDictClient;
import org.springblade.system.pojo.entity.DictBiz;
import org.springframework.stereotype.Service;
import java.io.*;
@@ -48,7 +47,7 @@
   private final NcNodeHisService ncNodeHisService;
   private final OssTemplate ossTemplate;
   private final FlowProgramFileService flowProgramFileService;
   private final ProgramAnnotationService programAnnotationService;
   private final HistoryService historyService;
   private final MachineAnnotationConfig annotationConfig;
   /**
@@ -65,6 +64,19 @@
            approved.setStatus(NcProgramApproved.STATUS_EXPORTED);
            approvedService.updateById(approved);
            NcNodeHis pkgNodeHis = this.ncNodeHisService.getById(approved.getNcNodeId());
            if(pkgNodeHis.isDeviationProgram()){
               //偏离单的程序,如果审批导出记录是解锁形成的,还是需要锁定;普通试切过的,不锁定
               HistoricProcessInstance hisInst = historyService.createHistoricProcessInstanceQuery().processInstanceId(approved.getProcessInstanceId()).singleResult();
               if(hisInst != null && hisInst.getProcessDefinitionKey().equals(FlowConstant.UNLOCK_PROCESS_KEY)){
                  NcNode pkgNode = this.ncNodeService.getById(approved.getNcNodeId());
                  if(pkgNode != null) {
                     pkgNode.lock("下发导出锁定");
                     ncNodeService.updateById(pkgNode);
                  }
               }
            }
         }
      }catch(Exception e){
@@ -93,11 +105,11 @@
      FlowProgramFile programFile;
      NcNodeHis programPackageNode = this.ncNodeHisService.getById(approved.getNcNodeId());
      String status = "SQ";
      String status = AnnotationUtil.SQ;
      if(programPackageNode.isDeviationProgram()){
         status = "PL";
         status = AnnotationUtil.LG;
      }else if(programPackageNode.hasCured()){
         status = "GH";
         status = AnnotationUtil.GH;
      }
      long deviationSerial = -1;//偏离单序号 ,-1为非偏离单,不需要加入
      if(packageNodeHis.isDeviationProgram()) {
@@ -118,7 +130,7 @@
            annoData.setProgramStatus(status);
            annoData.setDeviation(programPackageNode.getDeviation());
            annoData.setFilename(programFile.getName());
            InputStream addedInsFinal = annoProcessor.setAnnotation(annoData,inputStream);
            InputStream addedInsFinal = annoProcessor.putAnnotation(annoData,inputStream);
            addedInsFinal.reset();
            /*
            InputStream addedInsFinal;
@@ -167,7 +179,7 @@
    * @param zipOut zip输出流
    * @param inputStream 输入流
    * @param entryName 文件名
    * @throws IOException
    * @throws IOException 写文件异常
    */
   void addInputStreamToZip(ZipOutputStream zipOut, InputStream inputStream, String entryName)
      throws IOException {