From 83c996a34bce5f14e63d08ecc8f4141cae8d2364 Mon Sep 17 00:00:00 2001 From: zc Date: Wed, 16 Jul 2025 16:32:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=B4=E5=AE=89=E4=BC=98=E5=8C=96=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/dcsoft/system/utils/PdfWatermark.java | 52 +++++++++++++++++++ .../controller/VisCarryStuffController.java | 43 +++++++++------ 2 files changed, 79 insertions(+), 16 deletions(-) create mode 100644 dcsoft-modules/dcsoft-system/src/main/java/com/dcsoft/system/utils/PdfWatermark.java diff --git a/dcsoft-modules/dcsoft-system/src/main/java/com/dcsoft/system/utils/PdfWatermark.java b/dcsoft-modules/dcsoft-system/src/main/java/com/dcsoft/system/utils/PdfWatermark.java new file mode 100644 index 0000000..28aef58 --- /dev/null +++ b/dcsoft-modules/dcsoft-system/src/main/java/com/dcsoft/system/utils/PdfWatermark.java @@ -0,0 +1,52 @@ +package com.dcsoft.system.utils; + +import com.itextpdf.text.Document; +import com.itextpdf.text.Image; +import com.itextpdf.text.pdf.PdfContentByte; +import com.itextpdf.text.pdf.PdfGState; +import com.itextpdf.text.pdf.PdfPageEventHelper; +import com.itextpdf.text.pdf.PdfWriter; +import lombok.extern.slf4j.Slf4j; + +/** + * 水印处理 + */ +@Slf4j +public class PdfWatermark extends PdfPageEventHelper { + + private static String watermarkUrl; + + public PdfWatermark() { + } + + public PdfWatermark(String watermarkUrl) { + PdfWatermark.watermarkUrl = watermarkUrl; + } + + + @Override + public void onEndPage(PdfWriter writer, Document document) { + try { + // 加载公章图片 + Image seal = Image.getInstance(watermarkUrl); + + // 设置水印位置(右下角) + float x = document.right() - seal.getScaledWidth() - 50; + float y = document.bottom() + 50; + + // 设置透明度 + PdfContentByte canvas = writer.getDirectContentUnder(); + seal.setAbsolutePosition(x, y); + seal.scaleAbsolute(100, 100); // 调整大小 + canvas.saveState(); + PdfGState gs = new PdfGState(); + gs.setFillOpacity(0.5f); // 设置透明度 + canvas.setGState(gs); + canvas.addImage(seal); + canvas.restoreState(); + } catch (Exception e) { + log.error("添加水印异常:", e); + } + } + +} diff --git a/dcsoft-modules/dcsoft-system/src/main/java/com/dcsoft/system/visitor/controller/VisCarryStuffController.java b/dcsoft-modules/dcsoft-system/src/main/java/com/dcsoft/system/visitor/controller/VisCarryStuffController.java index 6c222bf..1b5f89a 100644 --- a/dcsoft-modules/dcsoft-system/src/main/java/com/dcsoft/system/visitor/controller/VisCarryStuffController.java +++ b/dcsoft-modules/dcsoft-system/src/main/java/com/dcsoft/system/visitor/controller/VisCarryStuffController.java @@ -30,9 +30,10 @@ import com.dcsoft.system.domain.SysPeople; import com.dcsoft.system.domain.vo.IdNamelVo; import com.dcsoft.system.service.ISysDictDataService; import com.dcsoft.system.service.ISysPeopleService; -import com.dcsoft.system.service.impl.SysUserServiceImpl; +import com.dcsoft.system.service.ISysUserService; import com.dcsoft.system.utils.ByteArrayMultipartFile; import com.dcsoft.system.utils.PdfHeaderFooterEvent; +import com.dcsoft.system.utils.PdfWatermark; import com.dcsoft.system.utils.UuidUtil; import com.dcsoft.system.visitor.domain.*; import com.dcsoft.system.visitor.service.IVisCarryStuffService; @@ -98,7 +99,7 @@ public class VisCarryStuffController extends BaseController { private static final String APPROVE_KEY = "APPROVE_KEY:STUFF_APPROVE"; @Autowired - private SysUserServiceImpl sysUserServiceImpl; + private ISysUserService sysUserService; @Value("${sms.parkName:'兴安智慧园区'}") private String parkName; @@ -106,6 +107,9 @@ public class VisCarryStuffController extends BaseController { @Value("${app.deptId:228}") private String appDeptId; + @Value("${app.watermarkUrl:http://81.68.71.142:9000/others/gz/111.png}") + private String watermarkUrl; + @Autowired private RemoteFileService remoteFileService; @@ -413,7 +417,7 @@ public class VisCarryStuffController extends BaseController { visitorService.saveVisCheckCode(codeVo); // 申请人发送短信(审核通过) - SysUser sysUser = sysUserServiceImpl.selectUserById(stuffVo.getUserId()); + SysUser sysUser = sysUserService.selectUserById(stuffVo.getUserId()); try { visitorController.sendMessage(sysUser.getPhonenumber(), "1", parkName, smsProperties.getTemplate2()); } catch (Exception e) { @@ -423,15 +427,17 @@ public class VisCarryStuffController extends BaseController { } //向下级审核人发送审核信息 - String url = getExamineUrl(String.valueOf(vo.getId()), people.getPhone()); - log.info("出门证申请appove发送:{}审核链接:{}", people.getPhone(), url); + if (stuffVo.getCurrentNode() != 3) { + String url = getExamineUrl(String.valueOf(vo.getId()), people.getPhone()); + log.info("出门证申请approve发送:{}审核链接:{}", people.getPhone(), url); - //发送企微信息 - try { - visitorController.sendWeCom(people.getPhone(), url + " --访客姓名:" + vo.getName()); - } catch (Exception e) { - log.error("出门证申请add-sendWeCom异常:", e); - throw new ServiceException("系统异常,请重新审核或联系管理员!"); + //发送企微信息 + try { + visitorController.sendWeCom(people.getPhone(), url + " --访客姓名:" + vo.getName()); + } catch (Exception e) { + log.error("出门证申请approve-sendWeCom异常:", e); + throw new ServiceException("系统异常,请重新审核或联系管理员!"); + } } //审核拒绝 @@ -447,7 +453,7 @@ public class VisCarryStuffController extends BaseController { } // 申请人发送短信(审核不通过) - SysUser sysUser = sysUserServiceImpl.selectUserById(stuffVo.getUserId()); + SysUser sysUser = sysUserService.selectUserById(stuffVo.getUserId()); try { visitorController.sendMessage(sysUser.getPhonenumber(), "1", parkName, smsProperties.getTemplate3()); } catch (Exception e) { @@ -566,8 +572,13 @@ public class VisCarryStuffController extends BaseController { ByteArrayOutputStream baos = new ByteArrayOutputStream(); PdfWriter writer = PdfWriter.getInstance(document, baos); - // 添加水印事件处理器 - writer.setPageEvent(new PdfWatermark()); + // 添加水印事件处理器(只有保安部门才可添加水印) + LoginUser user = SecurityUtils.getLoginUser(); + SysUser sysUser = sysUserService.selectUserById(user.getUserid()); + if (ObjectUtil.isNotNull(sysUser) && StringUtils.equals(appDeptId, String.valueOf(sysUser.getDeptId()))) { + PdfWatermark pdfWatermark = new PdfWatermark(watermarkUrl); + writer.setPageEvent(pdfWatermark); + } document.open(); @@ -690,7 +701,7 @@ public class VisCarryStuffController extends BaseController { } // 水印处理类 - private static class PdfWatermark extends PdfPageEventHelper { + /*private static class PdfWatermark extends PdfPageEventHelper { @Override public void onEndPage(PdfWriter writer, Document document) { try { @@ -715,7 +726,7 @@ public class VisCarryStuffController extends BaseController { log.error("添加水印异常:", e); } } - } + }*/ }