yangys
2025-09-06 a5f944c2bc0107e5df936937f1c33e5e03eb8fed
blade-service/blade-mdm/src/main/java/org/springblade/mdm/machinefile/service/NcProgramExportInnerService.java
@@ -6,13 +6,13 @@
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BizServiceImpl;
import org.springblade.core.oss.OssTemplate;
import org.springblade.mdm.machinefile.entity.MachineFile;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.mdm.machinefile.entity.MachineAcceptedFile;
import org.springblade.mdm.program.entity.NcProgramExchange;
import org.springblade.mdm.program.mapper.NcProgramExchangeMapper;
import org.springblade.mdm.program.service.NcNodeService;
import org.springblade.mdm.program.service.NcProgramService;
import org.springblade.mdm.utils.ProgramFileNameParser;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.io.InputStream;
@@ -30,41 +30,39 @@
@Service
@AllArgsConstructor
public class NcProgramExportInnerService extends BizServiceImpl<NcProgramExchangeMapper, NcProgramExchange> {
   private final MachineAcceptedFileService machineBackFileService;
   private final NcProgramService progService;
   private final MachineFileService machineFileService;
   private final NcNodeService ncNodeService;
   private final MachineAcceptedFileService machineAcceptedService;
   private final OssTemplate ossTemplate;
   public static final String PROGRAM_JSON_FILE = "exp_mdm_nc_program.json";
   public static final String NODE_JSON_FILE = "exp_mdm_nc_node.json";
   public static final String APPROVE_RECORD_JSON_FILE = "exp_mdm_approve_record.json";
   /**
    * 导出到涉密网
    * @param machineFileIds
    * @param acceptedFileIds
    * @param os
    * @throws IOException
    */
   public void exportToInner(List<Long> machineFileIds, ServletOutputStream os) throws IOException {
      //FileOutputStream fos = new FileOutputStream("d:/exportDnc.zip");
   @Transactional
   public void exportToInner(List<Long> acceptedFileIds, ServletOutputStream os) throws IOException {
      try (ZipOutputStream zipOut = new ZipOutputStream(os);) {//os
         List<MachineFile>  machineFiles = machineFileService.lambdaQuery().in(MachineFile::getId,machineFileIds).list();
         Map<String,List<MachineFile>> map =  machineFiles.stream()
         List<MachineAcceptedFile>  acceptedFiles = machineAcceptedService.lambdaQuery().in(MachineAcceptedFile::getId,acceptedFileIds).list();
         Map<String,List<MachineAcceptedFile>> map =  acceptedFiles.stream()
            .collect(Collectors.groupingBy(s -> ProgramFileNameParser.parseProgramName(s.getName()).logicProgramName()));
         for (Map.Entry<String, List<MachineFile>> entry : map.entrySet()) {
         List<MachineAcceptedFile> exportedFiles = new ArrayList<>();
         for (Map.Entry<String, List<MachineAcceptedFile>> entry : map.entrySet()) {
            String programName = entry.getKey();
            List<MachineFile> progMachineFiles = entry.getValue();
            for (MachineFile mf : progMachineFiles) {
               try(InputStream ins = machineFileService.getInputStream(mf)) {
                  addInputStreamToZip(zipOut,ins , programName + "/" + mf.getName());
            List<MachineAcceptedFile> acceptedFileList = entry.getValue();
            for (MachineAcceptedFile acceptedFile : acceptedFileList) {
               try(InputStream ins = ossTemplate.statFileStream(acceptedFile.getOssName()) ) {
                  addInputStreamToZip(zipOut,ins , programName + "/" + acceptedFile.getName());
               }
               acceptedFile.setExportTime(DateUtil.now());
            }
         }
         machineAcceptedService.updateBatchById(acceptedFiles);
      }
      os.close();