From 2b79302874ab1a3eeb177e7c7e78280438348206 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Thu, 16 Oct 2025 15:37:51 +0800 Subject: [PATCH] =?UTF-8?q?feat(printer):=20=E5=BC=95=E5=85=A5=E5=94=AF?= =?UTF-8?q?=E4=B8=80=E5=A4=84=E7=90=86=E6=A0=87=E8=AF=86=E7=AC=A6=E9=81=BF?= =?UTF-8?q?=E5=85=8D=E6=96=87=E4=BB=B6=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 UUID 依赖以生成唯一标识符 -为打印任务生成唯一处理 ID,防止多线程文件名冲突 - 更新原图、水印图及旋转图片的文件命名逻辑 - 确保每个打印任务使用独立的临时文件名 --- .../service/printer/impl/PrinterServiceImpl.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/ycwl/basic/service/printer/impl/PrinterServiceImpl.java b/src/main/java/com/ycwl/basic/service/printer/impl/PrinterServiceImpl.java index 627efc2b..9cebb8fd 100644 --- a/src/main/java/com/ycwl/basic/service/printer/impl/PrinterServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/printer/impl/PrinterServiceImpl.java @@ -67,6 +67,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.UUID; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -464,9 +465,11 @@ public class PrinterServiceImpl implements PrinterService { // 准备水印处理器 IOperator operator = ImageWatermarkFactory.get(watermarkType); + // 生成唯一的处理标识符,避免多线程环境下的文件冲突 + String processId = item.getId() + "_" + UUID.randomUUID().toString(); // 下载原图 - File originalFile = new File("print_" + item.getId() + ".jpg"); - File watermarkedFile = new File("print_" + item.getId() + "_" + watermarkType.getType() + "." + watermarkType.getPreferFileType()); + File originalFile = new File("print_" + processId + ".jpg"); + File watermarkedFile = new File("print_" + processId + "_" + watermarkType.getType() + "." + watermarkType.getPreferFileType()); File rotatedOriginalFile = null; File rotatedWatermarkedFile = null; boolean needRotation = false; @@ -481,7 +484,7 @@ public class PrinterServiceImpl implements PrinterService { if (!isLandscape) { // 竖图需要旋转为横图 needRotation = true; - rotatedOriginalFile = new File("print_" + item.getId() + "_rotated.jpg"); + rotatedOriginalFile = new File("print_" + processId + "_rotated.jpg"); ImageUtils.rotateImage90(originalFile, rotatedOriginalFile); log.info("竖图已旋转为横图,照片ID: {}", item.getId()); } @@ -495,7 +498,7 @@ public class PrinterServiceImpl implements PrinterService { // 如果之前旋转了,需要将水印图片旋转回去 if (needRotation) { - rotatedWatermarkedFile = new File("print_" + item.getId() + "_final_" + watermarkType.getType() + "." + watermarkType.getPreferFileType()); + rotatedWatermarkedFile = new File("print_" + processId + "_final_" + watermarkType.getType() + "." + watermarkType.getPreferFileType()); ImageUtils.rotateImage270(watermarkedFile, rotatedWatermarkedFile); log.info("水印图片已旋转回竖图,照片ID: {}", item.getId()); // 删除中间的横图水印文件