package jnpf.util; import jnpf.base.vo.DownloadVO; import jnpf.constant.DbSensitiveConstant; import jnpf.constant.GlobalConst; import jnpf.entity.FileParameter; import lombok.extern.slf4j.Slf4j; import org.dromara.x.file.storage.core.FileInfo; import org.springframework.stereotype.Component; import java.nio.charset.StandardCharsets; import java.util.Date; /** * 数据接口文件导入导出 * * @author JNPF开发平台组 * @version V3.1.0 * @copyright 引迈信息技术有限公司(https://www.jnpfsoft.com) * @date 2021-06-04 */ @Component @Slf4j public class DataFileExport implements FileExport { @Override public DownloadVO exportFile(Object clazz, String filePath, String fileName, String tableName) { fileName = containsSensitive(fileName); //model拼凑成Json字符串 String json = JsonUtil.getObjectToString(clazz); if (json == null) { json = ""; } //写入到文件中 /** 2.写入到文件中 */ fileName += "_" + DateUtil.dateFormatByPattern(new Date(), "yyyyMMddHHmmss") + "." + tableName; //是否需要上产到存储空间 FileInfo fileInfo = FileUploadUtils.uploadFile(new FileParameter(filePath, fileName), json.getBytes(GlobalConst.DEFAULT_CHARSET)); //生成下载下载文件路径 DownloadVO vo = DownloadVO.builder().name(fileInfo.getFilename()).url(UploaderUtil.uploaderFile(fileInfo.getFilename() + "#" + "export") + "&name=" + fileName).build(); return vo; } /** * 替换敏感字 * * @param fileName * @return */ private String containsSensitive(String fileName) { if (StringUtil.isNotEmpty(fileName)) { String[] split = DbSensitiveConstant.FILE_SENSITIVE.split(","); for (String str : split) { fileName = fileName.replaceAll(str, ""); } } return fileName; } }