ImageCompressionTask.java 4.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package com.ruoyi.framework.task;
  2. import com.ruoyi.common.utils.image.ImageCompressor;
  3. import com.ruoyi.framework.web.controller.BaseController;
  4. import org.slf4j.Logger;
  5. import org.slf4j.LoggerFactory;
  6. import org.springframework.stereotype.Component;
  7. import java.util.ArrayList;
  8. import java.util.Arrays;
  9. import java.util.List;
  10. /**
  11. * 图片压缩定时任务
  12. * 用于系统定时任务管理
  13. *
  14. * @author ruoyi
  15. */
  16. @Component("imageCompressionTask")
  17. public class ImageCompressionTask extends BaseController {
  18. private static final Logger logger = LoggerFactory.getLogger(ImageCompressionTask.class);
  19. /**
  20. * 图片压缩任务
  21. */
  22. public void imageCompressionTask() {
  23. logger.info("🖼️ 开始执行图片压缩任务");
  24. try {
  25. // 需要压缩的文件夹路径列表
  26. List<String> directories = Arrays.asList(
  27. "/u03/cpmsfile/uploadPath/upload/eyewash",
  28. "/u03/cpmsfile/uploadPath/upload/annihilator",
  29. // H110-H118,H130
  30. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass1",
  31. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass2",
  32. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass3",
  33. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass4",
  34. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass5",
  35. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass6",
  36. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass7",
  37. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass8",
  38. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass9",
  39. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass10",
  40. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass11",
  41. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass12",
  42. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass13",
  43. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass14",
  44. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass15",
  45. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass16",
  46. // H109
  47. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass1A",
  48. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass1B",
  49. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass2A",
  50. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass2B",
  51. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass3A",
  52. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass3B",
  53. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass4A",
  54. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass4B",
  55. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass5A",
  56. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass5B",
  57. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass6A",
  58. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass6B",
  59. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass7A",
  60. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass7B",
  61. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass8A",
  62. "/u03/cpmsfile/uploadPath/upload/furnancePressurePass8B"
  63. // 在这里添加更多需要压缩的文件夹路径
  64. );
  65. if (directories.isEmpty()) {
  66. logger.warn("⚠️ 未配置需要压缩的文件夹路径");
  67. return;
  68. }
  69. // 执行压缩任务(使用默认配置:200KB目标大小,启用详细日志)
  70. logger.info("📁 开始压缩文件夹: {}", directories);
  71. ImageCompressor.CompressionResult result = ImageCompressor.compressDirectories(
  72. directories, 200, 1, 100,
  73. new String[]{"jpg", "jpeg", "png", "bmp"},
  74. true // 启用详细日志
  75. );
  76. // 记录压缩结果
  77. logger.info("🎉 图片压缩任务完成");
  78. logger.info("📊 压缩统计: 总文件数={}, 成功={}, 失败={}, 跳过={}, 压缩比例={:.1f}%",
  79. result.getTotalFiles(), result.getSuccessCount(), result.getFailCount(),
  80. result.getSkipCount(), result.getCompressionRatio());
  81. } catch (Exception e) {
  82. logger.error("❌ 图片压缩任务执行失败", e);
  83. }
  84. }
  85. }