liu
8 小时以前 6c0fd2cb801554f7999d14e45a94ef0f0d0dfb8d
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/framework/qrcode/QrCodeImageUtils.java
@@ -33,9 +33,6 @@
    private QrCodeImageUtils() {
    }
    /** 批量导出二维码数量上限(防止一次性生成过多导致内存/响应过大) */
    public static final int MAX_QR_EXPORT = 2000;
    /** 二维码边长 */
    private static final int QR_SIZE = 260;
    /** 图片四周留白 */
@@ -120,10 +117,7 @@
        ZipOutputStream zip = new ZipOutputStream(response.getOutputStream());
        try {
            for (QrLabelInfo label : labels) {
                BufferedImage image = createQrLabel(label.getCode(), label.getFileName());
                zip.putNextEntry(new ZipEntry(label.getFileName() + ".png"));
                ImageIO.write(image, "png", zip);
                zip.closeEntry();
                writeZipEntry(zip, label);
            }
            zip.finish();
            zip.flush();
@@ -132,6 +126,22 @@
        }
    }
    /**
     * 生成单张标签并写入 ZIP 条目
     * <p>
     * 供后台导出任务自建写入循环时复用:调用方需要自行在每张之间检查取消、采样 CPU 并回写进度,
     * 因此这里只负责"一张"的处理,不接管循环。
     *
     * @param zip   ZIP 输出流
     * @param label 标签信息
     */
    public static void writeZipEntry(ZipOutputStream zip, QrLabelInfo label) throws IOException {
        BufferedImage image = createQrLabel(label.getCode(), label.getFileName());
        zip.putNextEntry(new ZipEntry(label.getFileName() + ".png"));
        ImageIO.write(image, "png", zip);
        zip.closeEntry();
    }
    // ==================== 私有方法 ====================
    /**