Fancy
2025-01-07 28f6317f7189d5c4a7e64f57dd6c7fc2011f8632
pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/util/QrCodeUtil.java
@@ -11,8 +11,7 @@
import org.springframework.core.io.ClassPathResource;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.*;
import java.net.URLEncoder;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
@@ -32,8 +31,22 @@
    public static byte[] genQrCode(String code) throws IOException, WriterException {
        File logoFile = logoCache.computeIfAbsent(LOGO_PATH, key -> {
            try {
                // 使用ClassPathResource获取资源的输入流
                ClassPathResource resource = new ClassPathResource(key);
                return resource.getFile();
                // 创建一个临时文件来保存资源内容(避免处理嵌套jar文件时找不到文件)
                File tempFile = File.createTempFile("logo", ".png");
                try (InputStream in = resource.getInputStream();
                     OutputStream out = new FileOutputStream(tempFile)) {
                    // 从输入流复制到临时文件
                    byte[] buffer = new byte[1024];
                    int bytesRead;
                    while ((bytesRead = in.read(buffer)) != -1) {
                        out.write(buffer, 0, bytesRead);
                    }
                    // 返回临时文件
                    tempFile.deleteOnExit(); // 自动删除临时文件(当JVM退出时)
                    return tempFile;
                }
            } catch (IOException e) {
                throw new RuntimeException("加载Logo图片失败", e);
            }
@@ -69,7 +82,36 @@
            response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
            EasyExcel.write(response.getOutputStream(), list.get(0).getClass()).sheet(sheetName).doWrite(list);
        }catch (Exception e){
            log.error("导出产品信息异常", e);
            log.error("导出{}异常",sheetName,e);
        }
    }
    public static void downloadExcelSheets(HttpServletResponse response, String fileName, String sheetName, List<Converter> list){
        if(CollectionUtils.isEmpty(list)){
            return;
        }
        /*try(ExcelWriter excelWriter = EasyExcel.write(file).build()) {
            WriteSheet writeSheet;
            for (SheetInfoBean bean : sheetInfoList) {
                // 构建sheet对象
                writeSheet = EasyExcel.writerSheet(bean.getSheetName()).head(bean.getHeadClass()).build();
                // 写出sheet数据
                excelWriter.write(bean.getDataList(), writeSheet);
            }
            // 关流
            excelWriter.finish();
        } catch (Exception e) {
            // do something you want
        }*/
        try{
            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            response.setCharacterEncoding("utf-8");
            fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");
            response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
            EasyExcel.write(response.getOutputStream(), list.get(0).getClass()).sheet(sheetName).doWrite(list);
        }catch (Exception e){
            log.error("导出{}异常",sheetName,e);
        }
    }
}