DataFileExport.java 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package jnpf.util;
  2. import jnpf.base.vo.DownloadVO;
  3. import jnpf.constant.DbSensitiveConstant;
  4. import jnpf.constant.GlobalConst;
  5. import jnpf.entity.FileParameter;
  6. import lombok.extern.slf4j.Slf4j;
  7. import org.dromara.x.file.storage.core.FileInfo;
  8. import org.springframework.stereotype.Component;
  9. import java.nio.charset.StandardCharsets;
  10. import java.util.Date;
  11. /**
  12. * 数据接口文件导入导出
  13. *
  14. * @author JNPF开发平台组
  15. * @version V3.1.0
  16. * @copyright 引迈信息技术有限公司(https://www.jnpfsoft.com)
  17. * @date 2021-06-04
  18. */
  19. @Component
  20. @Slf4j
  21. public class DataFileExport implements FileExport {
  22. @Override
  23. public DownloadVO exportFile(Object clazz, String filePath, String fileName, String tableName) {
  24. fileName = containsSensitive(fileName);
  25. //model拼凑成Json字符串
  26. String json = JsonUtil.getObjectToString(clazz);
  27. if (json == null) {
  28. json = "";
  29. }
  30. //写入到文件中
  31. /** 2.写入到文件中 */
  32. fileName += "_" + DateUtil.dateFormatByPattern(new Date(), "yyyyMMddHHmmss") + "." + tableName;
  33. //是否需要上产到存储空间
  34. FileInfo fileInfo = FileUploadUtils.uploadFile(new FileParameter(filePath, fileName), json.getBytes(GlobalConst.DEFAULT_CHARSET));
  35. //生成下载下载文件路径
  36. DownloadVO vo = DownloadVO.builder().name(fileInfo.getFilename()).url(UploaderUtil.uploaderFile(fileInfo.getFilename() + "#" + "export") + "&name=" + fileName).build();
  37. return vo;
  38. }
  39. /**
  40. * 替换敏感字
  41. *
  42. * @param fileName
  43. * @return
  44. */
  45. private String containsSensitive(String fileName) {
  46. if (StringUtil.isNotEmpty(fileName)) {
  47. String[] split = DbSensitiveConstant.FILE_SENSITIVE.split(",");
  48. for (String str : split) {
  49. fileName = fileName.replaceAll(str, "");
  50. }
  51. }
  52. return fileName;
  53. }
  54. }