| | |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.io.IOUtils; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springblade.core.mp.base.BizServiceImpl; |
| | | import org.springblade.core.oss.OssTemplate; |
| | | import org.springblade.core.tool.utils.DateUtil; |
| | | import org.springblade.core.tool.utils.SpringUtil; |
| | | import org.springblade.mdm.basesetting.machine.entity.Machine; |
| | | import org.springblade.mdm.basesetting.machine.service.MachineService; |
| | | import org.springblade.mdm.flow.excution.events.CureFinishedEvent; |
| | | import org.springblade.mdm.gkw.task.entity.MachineBackTask; |
| | | import org.springblade.mdm.gkw.task.service.MachineBackTaskService; |
| | | import org.springblade.mdm.machinefile.entity.MachineAcceptedFile; |
| | |
| | | private final MachineBackTaskService machineBackTaskService; |
| | | /** |
| | | * 导出到涉密网 |
| | | * @param acceptedFileIds |
| | | * @param os |
| | | * @throws IOException |
| | | * @param acceptedFileIds 接受的文件id离了吧 |
| | | * @param os 输出流 |
| | | * @throws IOException 操作zip可能导致的IO异常 |
| | | */ |
| | | @Transactional |
| | | public void exportToInner(List<Long> acceptedFileIds, ServletOutputStream os) throws IOException { |
| | |
| | | try (ZipOutputStream zipOut = new ZipOutputStream(os);) {//os |
| | | Map<String,List<MachineAcceptedFile>> map = acceptedFiles.stream() |
| | | .collect(Collectors.groupingBy(s -> ProgramFileNameParser.parseProgramName(s.getName()).logicProgramName())); |
| | | |
| | | this.createFoldersInZip(zipOut,map.keySet()); |
| | | |
| | | for (Map.Entry<String, List<MachineAcceptedFile>> entry : map.entrySet()) { |
| | | String programName = entry.getKey(); |
| | |
| | | acceptedFile.setExportTime(DateUtil.now()); |
| | | acceptedFile.setStatus(MachineAcceptedFile.STATUS_EXPORTED); |
| | | } |
| | | |
| | | } |
| | | |
| | | machineAcceptedService.updateBatchById(acceptedFiles); |
| | |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 创建左右的程序包名文件夹 |
| | | * @param zipOut zip输出流 |
| | | * @param folderSet 程序报名文件夹集合 |
| | | * @throws IOException zipIO操作异常 |
| | | */ |
| | | void createFoldersInZip(ZipOutputStream zipOut,Set<String> folderSet) throws IOException { |
| | | for(String folderName : folderSet){ |
| | | ZipEntry zipEntry = new ZipEntry(folderName+"/");// "/"结尾表示文件夹 |
| | | zipOut.putNextEntry(zipEntry); |
| | | zipOut.closeEntry(); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | void finishTask(List<Long> backTaskIdList){ |
| | | if(backTaskIdList.isEmpty()){ |
| | | return; |
| | | } |
| | | List<MachineBackTask> tasks = machineBackTaskService.lambdaQuery().in(MachineBackTask::getId,backTaskIdList).list(); |
| | | for(MachineBackTask backTask : tasks){ |
| | | backTask.setStatus(MachineBackTask.STATUS_FINISHED); |
| | | backTask.setFinishTime(new Date()); |
| | | for(Long backTaskId : backTaskIdList){ |
| | | MachineBackTask backTask = machineBackTaskService.getById(backTaskId); |
| | | List<MachineAcceptedFile> acceptedFiles = machineAcceptedService.listByBackTaskId(backTaskId); |
| | | |
| | | machineBackTaskService.updateById(backTask); |
| | | if(acceptedFiles.size() == backTask.getSegCount()) { |
| | | backTask.setStatus(MachineBackTask.STATUS_FINISHED); |
| | | backTask.setFinishTime(new Date()); |
| | | |
| | | machineBackTaskService.updateById(backTask); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |