package com.ruoyi.framework.task; import com.ruoyi.common.utils.image.ImageCompressor; import com.ruoyi.framework.web.controller.BaseController; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * 图片压缩定时任务 * 用于系统定时任务管理 * * @author ruoyi */ @Component("imageCompressionTask") public class ImageCompressionTask extends BaseController { private static final Logger logger = LoggerFactory.getLogger(ImageCompressionTask.class); /** * 图片压缩任务 */ public void imageCompressionTask() { logger.info("🖼️ 开始执行图片压缩任务"); try { // 需要压缩的文件夹路径列表 List directories = Arrays.asList( "/u03/cpmsfile/uploadPath/upload/eyewash", "/u03/cpmsfile/uploadPath/upload/annihilator", // H110-H118,H130 "/u03/cpmsfile/uploadPath/upload/furnancePressurePass1", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass2", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass3", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass4", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass5", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass6", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass7", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass8", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass9", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass10", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass11", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass12", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass13", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass14", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass15", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass16", // H109 "/u03/cpmsfile/uploadPath/upload/furnancePressurePass1A", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass1B", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass2A", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass2B", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass3A", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass3B", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass4A", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass4B", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass5A", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass5B", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass6A", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass6B", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass7A", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass7B", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass8A", "/u03/cpmsfile/uploadPath/upload/furnancePressurePass8B" // 在这里添加更多需要压缩的文件夹路径 ); if (directories.isEmpty()) { logger.warn("⚠️ 未配置需要压缩的文件夹路径"); return; } // 执行压缩任务(使用默认配置:200KB目标大小,启用详细日志) logger.info("📁 开始压缩文件夹: {}", directories); ImageCompressor.CompressionResult result = ImageCompressor.compressDirectories( directories, 200, 1, 100, new String[]{"jpg", "jpeg", "png", "bmp"}, true // 启用详细日志 ); // 记录压缩结果 logger.info("🎉 图片压缩任务完成"); logger.info("📊 压缩统计: 总文件数={}, 成功={}, 失败={}, 跳过={}, 压缩比例={:.1f}%", result.getTotalFiles(), result.getSuccessCount(), result.getFailCount(), result.getSkipCount(), result.getCompressionRatio()); } catch (Exception e) { logger.error("❌ 图片压缩任务执行失败", e); } } }