package org.springblade.mdm.machinefile.listeners; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.Func; import org.springblade.mdm.flow.entity.MesSync; import org.springblade.mdm.flow.entity.TaskDispatch; import org.springblade.mdm.flow.excution.events.CureFinishedEvent; import org.springblade.mdm.flow.service.MesSyncService; import org.springblade.mdm.flow.service.TaskDispatchService; import org.springblade.mdm.machinefile.entity.MachineAcceptedFile; import org.springblade.mdm.machinefile.entity.MachineFile; import org.springblade.mdm.machinefile.events.ExportedToInnerEvent; import org.springblade.mdm.machinefile.service.MachineAcceptedFileService; import org.springblade.mdm.machinefile.service.MachineFileService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; import java.util.Date; import java.util.List; import java.util.Optional; /** * 视情况将已经导出的现场编程文件,保存到PROGRAM文件夹 */ @Slf4j @Component public class ExportToInnerListener { @Autowired private MachineFileService machineFileService; @Autowired private MachineAcceptedFileService machineAcceptedService; @EventListener(value = ExportedToInnerEvent.class) public void hello(ExportedToInnerEvent event) { //已经导出到涉密网事件,检查是否有导出的现场编程数据。如果有则加入program文件夹 if(Func.isEmpty(event.getAcceptedFiles())){ return; } List onMachineFiles = machineAcceptedService.exportedProgramOnMachineFiles(event.getAcceptedFiles()); //保存入program saveOrUpdateToProgramFolder(onMachineFiles,event.getAcceptedFiles()); } /** * 更新或爆粗文件到program文件夹 * @param onMachineFiles 现场编程文件列表 * @param acceptedFiles 导出涉密网的文件列表 */ void saveOrUpdateToProgramFolder(List onMachineFiles,List acceptedFiles){ for(MachineFile machineFile : onMachineFiles){ Optional accFileOpt = acceptedFiles.stream().filter(a -> a.getMachineFileId().equals(machineFile.getId())).findFirst(); if(accFileOpt.isEmpty()){ continue; } MachineFile existsFile = machineFileService.getByNameAndMachineInDir(machineFile.getName(),machineFile.getMachineCode(),MachineFile.DIR_TYPE_PROGRAM); if(existsFile != null){ BeanUtils.copyProperties(machineFile,existsFile); existsFile.setDirType(MachineFile.DIR_TYPE_PROGRAM); existsFile.setOssName(accFileOpt.get().getOssName()); existsFile.setStatus(MachineFile.STATUS_NORMAL); existsFile.setOssName(existsFile.getOssName()); machineFileService.updateById(existsFile); }else{ MachineFile newProgFile = new MachineFile(); BeanUtils.copyProperties(machineFile,newProgFile); newProgFile.setDirType(MachineFile.DIR_TYPE_PROGRAM); newProgFile.setStatus(MachineFile.STATUS_NORMAL); newProgFile.setOssName(accFileOpt.get().getOssName()); newProgFile.setId(null); machineFileService.save(newProgFile); } } } }