From 73959671db91deca729eb3e81b26f606c6296b4e Mon Sep 17 00:00:00 2001
From: jiangs <373297395@qq.com>
Date: Mon, 22 Sep 2025 16:32:00 +0800
Subject: [PATCH] =?UTF-8?q?pdf=E4=B8=A4=E4=B8=AAA5=E5=90=88=E5=B9=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
lis-interfaceCommon/pom.xml | 18 +-
.../interfaceCommon/utils/ReportUtil.java | 243 ++++++++----------
.../controller/system/SysLoginController.java | 16 ++
.../system/web/service/SysLoginService.java | 39 +++
.../controller/dict/DictController.java | 5 +
.../controller/dict/InstrController.java | 5 +
.../controller/dict/XmBaseController.java | 5 +
.../dict/XmReqitemVsReportitemController.java | 5 +
pom.xml | 18 +-
.../service/impl/ZybgcxServcieImpl.java | 76 ++++--
10 files changed, 265 insertions(+), 165 deletions(-)
diff --git a/lis-interfaceCommon/pom.xml b/lis-interfaceCommon/pom.xml
index 633e496..6dc8d32 100644
--- a/lis-interfaceCommon/pom.xml
+++ b/lis-interfaceCommon/pom.xml
@@ -48,20 +48,22 @@
org.apache.xmlgraphics
batik-all
-
- org.apache.pdfbox
- pdfbox
-
-
com.czlis
lisresources
-
+
- org.apache.pdfbox
- pdfbox-tools
+ com.itextpdf
+ kernel
+
+
+
+ com.itextpdf
+ layout
+
+
diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/ReportUtil.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/ReportUtil.java
index d81c015..ea22684 100644
--- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/ReportUtil.java
+++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/ReportUtil.java
@@ -2,35 +2,35 @@ package com.czlis.interfaceCommon.utils;
import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.codec.Base64;
import com.czlis.common.config.RuoYiConfig;
import com.czlis.common.core.domain.Result;
+import com.czlis.common.utils.file.FileUtils;
import com.czlis.common.utils.ip.IpUtils;
+import com.czlis.common.utils.uuid.UUID;
import com.czlis.interfaceCommon.mapper.BackPaperMapper;
import com.czlis.interfaceCommon.pojo.entity.BackPaperDetail;
import com.czlis.interfaceCommon.pojo.entity.BackPaperParam;
import com.czlis.interfaceCommon.pojo.entity.LabRptgetruledetailCX;
import com.czlis.interfaceCommon.pojo.entity.BarCodeParam;
+import com.itextpdf.kernel.geom.Rectangle;
+import com.itextpdf.kernel.pdf.PdfDocument;
+import com.itextpdf.kernel.pdf.PdfPage;
+import com.itextpdf.kernel.pdf.PdfReader;
+import com.itextpdf.kernel.pdf.PdfWriter;
+import com.itextpdf.layout.Canvas;
+import com.itextpdf.layout.element.Image;
import lombok.extern.slf4j.Slf4j;
import net.sf.jasperreports.engine.JREmptyDataSource;
-import org.apache.pdfbox.printing.PDFPrintable;
-import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
-import javax.print.*;
-import javax.print.attribute.HashPrintRequestAttributeSet;
-import javax.print.attribute.PrintRequestAttributeSet;
-import javax.print.attribute.standard.Copies;
-import java.awt.print.*;
import java.io.File;
+import java.io.FileOutputStream;
import java.io.IOException;
import java.util.*;
-import org.apache.pdfbox.pdmodel.PDDocument;
-import org.apache.pdfbox.printing.Scaling;
-
-import javax.print.attribute.standard.OrientationRequested;
@@ -104,128 +104,6 @@ public class ReportUtil {
}
}
- /**
- * 打印 Base64 编码的 PDF
- * @param base64Pdf Base64 编码的 PDF 字符串
- * @param printerName 打印机名称(可为 null,使用默认打印机)
- * @param copies 打印份数
- * @throws Exception 异常
- */
- public static void printBase64Pdf(String base64Pdf, String printerName, int copies) throws Exception {
- // 1. Base64 解码为 PDF 字节数组
- byte[] pdfBytes = Base64.getDecoder().decode(base64Pdf);
-
- // 2. 加载 PDF 文档
- try (PDDocument document = PDDocument.load(pdfBytes)) {
-
- // 3. 获取打印服务
- PrinterJob job = PrinterJob.getPrinterJob();
-
- // 选择打印机(若指定名称)
- if (printerName != null && !printerName.isEmpty()) {
- PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
- for (PrintService service : services) {
- if (service.getName().contains(printerName)) {
- job.setPrintService(service);
- break;
- }
- }
- }
-
- // 4. 配置打印属性
- PrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet();
- attributes.add(new Copies(copies));
- attributes.add(OrientationRequested.LANDSCAPE);
-
- // 5. 配置页面格式和可打印区域
- Book book = new Book();
- PageFormat pageFormat = job.defaultPage();
-
- Paper paper = new Paper();
- //paper.setSize(595, 842); // A4 宽度和高度(1/72 英寸)
- paper.setSize(419, 595); // A5 宽度和高度(1/72 英寸)
- paper.setImageableArea(0, 0, 419, 595); // 边距 40 点,可打印区域宽 515、高 762
- pageFormat.setPaper(paper);
-
- // 设置打印缩放
- //ACTUAL_SIZE 不缩放,按 PDF 实际尺寸打印
- //SCALE_TO_FIT 按比例缩放,使 PDF 内容适应纸张(宽、高同时适配,保持纵横比)
- PDFPrintable printable = new PDFPrintable(document, Scaling.ACTUAL_SIZE);
- book.append(printable, pageFormat, document.getNumberOfPages());
- job.setPageable(book);
-
- // 6. 执行打印
- job.print(attributes);
- }
- }
-
-
- /**
- * 打印已存在的 PDF 文件(兼容各版本 PDFBox)
- * @param pdfFilePath PDF 文件路径
- * @param printerName 目标打印机名称(null 则使用默认打印机)
- * @throws IOException PDF 文件加载异常
- * @throws javax.print.PrintException 打印服务异常
- */
- public static void printPdf(String pdfFilePath, String printerName) throws IOException, javax.print.PrintException {
- // 1. 加载 PDF 文档
- try (PDDocument document = PDDocument.load(new File(pdfFilePath))) {
- // 2. 创建打印任务
- PrinterJob job = PrinterJob.getPrinterJob();
-
- // 5. 选择打印机
- if (printerName != null && !printerName.isEmpty()) {
- PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
- PrintService targetService = null;
- for (PrintService service : services) {
- if (service.getName().contains(printerName)) {
- targetService = service;
- break;
- }
- }
- if (targetService == null) {
- throw new javax.print.PrintException("未找到打印机:" + printerName);
- }
- job.setPrintService(targetService);
- } else {
- // 使用默认打印机
- PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();
- if (defaultService != null) {
- job.setPrintService(defaultService);
- } else {
- throw new javax.print.PrintException("未找到默认打印机");
- }
- }
-
- // 3. 配置打印内容(使用 PDFPrintable)
- PDFPrintable printable = new PDFPrintable(document, Scaling.ACTUAL_SIZE); // 原始模式
-
- // 4. 设置页面格式和打印属性
- Book book = new Book();
- PageFormat pageFormat = job.defaultPage();
- // 设置打印方向(纵向PORTRAIT/横向LANDSCAPE)
- pageFormat.setOrientation(PageFormat.LANDSCAPE); // 纵向
-
- // 2. 自定义纸张大小(例如 A4:210×297 毫米,转换为 1/72 英寸:(210/25.4)*72 ≈ 595,(297/25.4)*72 ≈ 842)
- //(A5纸张:148*210 (148/25.4)*72 = 419.5 (210/25.4)*72 = 595.3)
- Paper paper = new Paper();
- //paper.setSize(595, 842); // A4 宽度和高度(1/72 英寸)
- paper.setSize(419, 595); // A5 宽度和高度(1/72 英寸)
- paper.setImageableArea(0, 0, 419, 595); // 边距 40 点,可打印区域宽 515、高 762
- pageFormat.setPaper(paper);
-
- book.append(printable, pageFormat, document.getNumberOfPages());
- job.setPageable(book);
-
- // 6. 提交打印任务
- job.print();
- System.out.println("打印任务已提交至:" + job.getPrintService().getName());
- } catch (PrinterException e) {
- throw new RuntimeException(e);
- }
- }
-
-
public Result printToPdf(BarCodeParam barCodeParam, String pdfName){
String templatePath = RuoYiConfig.getProfile()+"/templates/barcode_zy.jrxml"; // 模板文件路径
@@ -317,6 +195,105 @@ public class ReportUtil {
}
}
+
+ /**
+ * 将两个PDF文件的第一页横向(左右)合并到一个页面
+ * @param Base64input1 左侧PDF BASE64
+ * @param Base64input2 右侧PDF BASE64
+ * @param output 合并后的PDF文件路径
+ */
+ public void mergePdfsHorizontally(String Base64input1, String Base64input2, String output) throws IOException {
+ //把base64数据生成pdf文件
+ String path1 = RuoYiConfig.getProfile() +"/config/static/printPDF/"+UUID.randomUUID().toString()+".pdf";
+ Base64.decodeToFile(Base64input1, new File(path1));
+ String path2 = RuoYiConfig.getProfile() +"/config/static/printPDF/"+UUID.randomUUID().toString()+".pdf";
+ Base64.decodeToFile(Base64input2, new File(path2));
+ try (PdfWriter writer = new PdfWriter(output);
+ PdfDocument pdfDoc = new PdfDocument(writer);
+ PdfDocument pdf1 = new PdfDocument(new PdfReader(path1));
+ PdfDocument pdf2 = new PdfDocument(new PdfReader(path2))) {
+
+ // 1. 获取两个PDF页面的真实尺寸(处理旋转和裁剪框)
+ Rectangle pageSize1 = pdf1.getFirstPage().getPageSize();
+ Rectangle pageSize2 = pdf2.getFirstPage().getPageSize();
+// Rectangle rect1 = getActualPageRect(page1); // 左侧页面真实尺寸
+// Rectangle rect2 = getActualPageRect(page2); // 右侧页面真实尺寸
+
+ // 2. 计算左右排列的合并页尺寸
+ float mergedWidth = pageSize1.getWidth() + pageSize2.getWidth();// 宽度=两页宽度之和
+ float mergedHeight = Math.max(pageSize1.getHeight(), pageSize2.getHeight()); // 高度=两页最大高度// 高度=两页最大高度
+ Rectangle mergedPageSize = new Rectangle(mergedWidth, mergedHeight);
+
+ // 3. 创建指定尺寸的合并页
+ PdfPage mergedPage = pdfDoc.addNewPage();
+ mergedPage.setMediaBox(mergedPageSize);
+ mergedPage.setCropBox(mergedPageSize);
+
+ // 4. 创建画布
+ try (Canvas canvas = new Canvas(mergedPage,pdfDoc.getDefaultPageSize())) {
+
+ // 5. 左侧页面定位:左下角对齐合并页左下角(x=0, y=0)
+ Image image1 = new Image(pdf1.getFirstPage().copyAsFormXObject(pdfDoc));
+ image1.setWidth(pageSize1.getWidth()) // 固定宽度为左侧页面真实宽度
+ .setHeight(pageSize1.getHeight()); // 固定高度为左侧页面真实高度
+ image1.setFixedPosition(0, 0); // 左侧页面左上角坐标
+ canvas.add(image1);
+
+ // 6. 右侧页面定位:左下角对齐左侧页面的右下角(x=左侧宽度, y=0)
+ Image image2 = new Image(pdf2.getFirstPage().copyAsFormXObject(pdfDoc));
+ image2.setWidth(pageSize2.getWidth()) // 固定宽度为右侧页面真实宽度
+ .setHeight(pageSize2.getHeight()); // 固定高度为右侧页面真实高度
+ image2.setFixedPosition(pageSize1.getWidth(), 0); // 右侧页面左上角坐标(x=左侧宽度)
+ canvas.add(image2);
+ }
+ }
+
+ FileUtils.deleteFile(path1);
+ FileUtils.deleteFile(path2);
+ }
+
+ /**
+ * 将PDF文件的指定页面旋转90度(顺时针)
+ * @param input 输入PDF路径
+ * @param output 输出PDF路径
+ * @param pageNumber 要旋转的页码(从1开始)
+ * @throws IOException 处理PDF时可能抛出的异常
+ */
+ public void rotatePdf90Degrees(String input, String output, int pageNumber) throws IOException {
+ // 创建读取器和写入器
+ PdfReader reader = new PdfReader(input);
+ PdfWriter writer = new PdfWriter(output);
+
+ // 打开PDF文档
+ PdfDocument pdfDoc = new PdfDocument(reader, writer);
+
+ try {
+ // 检查页码是否有效
+ if (pageNumber < 1 || pageNumber > pdfDoc.getNumberOfPages()) {
+ throw new IllegalArgumentException("无效的页码: " + pageNumber);
+ }
+
+ // 获取指定页面
+ PdfPage page = pdfDoc.getPage(pageNumber);
+
+ // 获取当前旋转角度(0、90、180、270)
+ int currentRotation = page.getRotation();
+
+ // 计算新的旋转角度(顺时针旋转90度,取模360确保在有效范围内)
+ int newRotation = (currentRotation + 90) % 360;
+
+ // 设置新的旋转角度
+ page.setRotation(newRotation);
+
+ System.out.println("页面 " + pageNumber + " 已旋转90度,当前总旋转角度: " + newRotation + "度");
+ } finally {
+ // 关闭文档
+ pdfDoc.close();
+ reader.close();
+ writer.close();
+ }
+ }
+
/*** 获取服务器当前的数据库连接事务对象
* 通过@Qualifier获取实际当前连接事务对象,一般是DynamicDataSource
* 传递服务器获取连接(使用 Spring 工具类确保连接与事务同步)
diff --git a/lis-system/src/main/java/com/czlis/system/web/controller/system/SysLoginController.java b/lis-system/src/main/java/com/czlis/system/web/controller/system/SysLoginController.java
index 40bf873..048213d 100644
--- a/lis-system/src/main/java/com/czlis/system/web/controller/system/SysLoginController.java
+++ b/lis-system/src/main/java/com/czlis/system/web/controller/system/SysLoginController.java
@@ -90,4 +90,20 @@ public class SysLoginController {
List menus = menuService.selectMenuTreeByUserId(userId);
return AjaxResult.success(menuService.buildMenus(menus));
}
+
+ /**
+ * 单点登录
+ * @param loginBody
+ * @return
+ */
+ @PostMapping("/loginAnonymous")
+ public AjaxResult loginAnonymous(@RequestBody LoginBody loginBody) {
+ AjaxResult ajax = AjaxResult.success();
+ // 生成令牌
+ String token = loginService.loginAnonymous(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
+ loginBody.getUuid());
+ ajax.put(Constants.TOKEN, token);
+ return ajax;
+ }
+
}
diff --git a/lis-system/src/main/java/com/czlis/system/web/service/SysLoginService.java b/lis-system/src/main/java/com/czlis/system/web/service/SysLoginService.java
index f69d630..cf66c42 100644
--- a/lis-system/src/main/java/com/czlis/system/web/service/SysLoginService.java
+++ b/lis-system/src/main/java/com/czlis/system/web/service/SysLoginService.java
@@ -156,4 +156,43 @@ public class SysLoginService {
sysUser.setLoginDate(DateUtils.getNowDate());
userService.updateUserProfile(sysUser);
}
+
+ /**
+ * 登录验证
+ *
+ * @param username 用户名
+ * @param password 密码
+ * @param code 验证码
+ * @param uuid 唯一标识
+ * @return 结果
+ */
+ public String loginAnonymous(String username, String password, String code, String uuid) {
+ // 验证码校验
+ validateCaptcha(username, code, uuid);
+ // 登录前置校验
+ //loginPreCheck(username, password);
+ // 用户验证
+ Authentication authentication = null;
+ try {
+ UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password);
+ AuthenticationContextHolder.setContext(authenticationToken);
+ // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername
+ authentication = authenticationManager.authenticate(authenticationToken);
+ } catch (Exception e) {
+ if (e instanceof BadCredentialsException) {
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
+ throw new UserPasswordNotMatchException();
+ } else {
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage()));
+ throw new ServiceException(e.getMessage());
+ }
+ } finally {
+ AuthenticationContextHolder.clearContext();
+ }
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
+ LoginUser loginUser = (LoginUser) authentication.getPrincipal();
+ recordLoginInfo(loginUser.getUserId());
+ // 生成token
+ return tokenService.createToken(loginUser);
+ }
}
diff --git a/liswork/src/main/java/com/czlis/liswork/controller/dict/DictController.java b/liswork/src/main/java/com/czlis/liswork/controller/dict/DictController.java
index 62dbae1..21a58fb 100644
--- a/liswork/src/main/java/com/czlis/liswork/controller/dict/DictController.java
+++ b/liswork/src/main/java/com/czlis/liswork/controller/dict/DictController.java
@@ -2,10 +2,12 @@ package com.czlis.liswork.controller.dict;
import com.czlis.common.annotation.Anonymous;
+import com.czlis.common.annotation.Log;
import com.czlis.common.core.controller.BaseController;
import com.czlis.common.core.domain.Result;
import com.czlis.common.core.page.TableDataInfo;
import com.czlis.common.core.domain.entity.lis.ComDict;
+import com.czlis.common.enums.BusinessType;
import com.czlis.common.utils.poi.ExcelUtil;
import com.czlis.liswork.service.ComDictService;
import io.swagger.annotations.Api;
@@ -55,6 +57,7 @@ public class DictController extends BaseController {
@ApiOperation("新增字典")
@PostMapping("/add")
+ @Log(title = "常见字典" ,businessType = BusinessType.INSERT)
public Result add(@RequestBody ComDict comDict) {
log.info("调用新增字典{}", comDict);
return comDictService.insertComDict(comDict);
@@ -63,6 +66,7 @@ public class DictController extends BaseController {
@ApiOperation("删除字典")
@DeleteMapping("/del")
+ @Log(title = "常见字典" ,businessType = BusinessType.DELETE)
public Result del(@RequestBody ComDict comDict) {
log.info("调用删除字典接口{}", comDict);
return comDictService.delComDict(comDict);
@@ -70,6 +74,7 @@ public class DictController extends BaseController {
@ApiOperation("修改字典")
@PostMapping("/update")
+ @Log(title = "常见字典" ,businessType = BusinessType.UPDATE)
public Result update(@RequestBody ComDict comDict) {
log.info("调用修改字典接口{}", comDict);
return comDictService.updateComDict(comDict);
diff --git a/liswork/src/main/java/com/czlis/liswork/controller/dict/InstrController.java b/liswork/src/main/java/com/czlis/liswork/controller/dict/InstrController.java
index f182cc2..3af5948 100644
--- a/liswork/src/main/java/com/czlis/liswork/controller/dict/InstrController.java
+++ b/liswork/src/main/java/com/czlis/liswork/controller/dict/InstrController.java
@@ -1,9 +1,11 @@
package com.czlis.liswork.controller.dict;
+import com.czlis.common.annotation.Log;
import com.czlis.common.core.controller.BaseController;
import com.czlis.common.core.domain.Result;
import com.czlis.common.core.page.TableDataInfo;
import com.czlis.common.core.domain.entity.lis.LabInstr;
+import com.czlis.common.enums.BusinessType;
import com.czlis.liswork.service.InstrService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -39,18 +41,21 @@ public class InstrController extends BaseController {
}
@ApiOperation("新增数据")
@PostMapping("/add")
+ @Log(title = "仪器维护" ,businessType = BusinessType.INSERT)
public Result add(LabInstr labInstr){
return instrService.add(labInstr);
}
@ApiOperation("修改数据")
@PostMapping("/update")
+ @Log(title = "仪器维护" ,businessType = BusinessType.UPDATE)
public Result update(LabInstr labInstr){
return instrService.update(labInstr);
}
@ApiOperation("删除数据")
@DeleteMapping("/del")
+ @Log(title = "仪器维护" ,businessType = BusinessType.DELETE)
public Result delete(String yq){
return instrService.delete(yq);
}
diff --git a/liswork/src/main/java/com/czlis/liswork/controller/dict/XmBaseController.java b/liswork/src/main/java/com/czlis/liswork/controller/dict/XmBaseController.java
index a1b562e..7f55d09 100644
--- a/liswork/src/main/java/com/czlis/liswork/controller/dict/XmBaseController.java
+++ b/liswork/src/main/java/com/czlis/liswork/controller/dict/XmBaseController.java
@@ -1,9 +1,11 @@
package com.czlis.liswork.controller.dict;
+import com.czlis.common.annotation.Log;
import com.czlis.common.core.controller.BaseController;
import com.czlis.common.core.domain.Result;
import com.czlis.common.core.page.TableDataInfo;
import com.czlis.common.core.domain.entity.lis.XmBase;
+import com.czlis.common.enums.BusinessType;
import com.czlis.liswork.service.XmBaseService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -35,18 +37,21 @@ public class XmBaseController extends BaseController {
@ApiOperation("新增报告项目")
@PostMapping("/add")
+ @Log(title = "报告项目" ,businessType = BusinessType.INSERT)
public Result add(@RequestBody XmBase xmBase){
return xmBaseService.add(xmBase);
}
@ApiOperation("删除报告项目")
@DeleteMapping("/del")
+ @Log(title = "报告项目" ,businessType = BusinessType.DELETE)
public Result delete(@RequestBody String xmdh){
return xmBaseService.delete(xmdh);
}
@ApiOperation("修改报告项目")
@PostMapping("/update")
+ @Log(title = "报告项目" ,businessType = BusinessType.UPDATE)
public Result update(@RequestBody @NotBlank(message = "参数不能为空!") XmBase xmBase){
return xmBaseService.update(xmBase);
}
diff --git a/liswork/src/main/java/com/czlis/liswork/controller/dict/XmReqitemVsReportitemController.java b/liswork/src/main/java/com/czlis/liswork/controller/dict/XmReqitemVsReportitemController.java
index 1c3d1fe..7358296 100644
--- a/liswork/src/main/java/com/czlis/liswork/controller/dict/XmReqitemVsReportitemController.java
+++ b/liswork/src/main/java/com/czlis/liswork/controller/dict/XmReqitemVsReportitemController.java
@@ -1,9 +1,11 @@
package com.czlis.liswork.controller.dict;
+import com.czlis.common.annotation.Log;
import com.czlis.common.core.controller.BaseController;
import com.czlis.common.core.domain.Result;
import com.czlis.common.core.page.TableDataInfo;
import com.czlis.common.core.domain.entity.lis.XmReqitemVsReportitem;
+import com.czlis.common.enums.BusinessType;
import com.czlis.liswork.service.XmReqitemVsReportitemService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -36,18 +38,21 @@ public class XmReqitemVsReportitemController extends BaseController {
@ApiOperation("新增收费项目报告项目对照")
@PostMapping("/add")
+ @Log(title = "收费项目报告项目" ,businessType = BusinessType.INSERT)
public Result add(XmReqitemVsReportitem xmReqitemVsReportitem){
return xmReqitemVsReportitemService.add(xmReqitemVsReportitem);
}
@ApiOperation("删除收费项目报告项目对照")
@DeleteMapping("/del")
+ @Log(title = "收费项目报告项目" ,businessType = BusinessType.DELETE)
public Result delete(String sqxmdh,String yq,String xmdh,String tdh){
return xmReqitemVsReportitemService.delete(sqxmdh,yq,xmdh,tdh);
}
@ApiOperation("修改收费项目报告项目对照")
@PostMapping("/update")
+ @Log(title = "收费项目报告项目" ,businessType = BusinessType.UPDATE)
public Result update(XmReqitemVsReportitem xmReqitemVsReportitem){
return xmReqitemVsReportitemService.update(xmReqitemVsReportitem);
}
diff --git a/pom.xml b/pom.xml
index 3ff67e9..9d0d500 100644
--- a/pom.xml
+++ b/pom.xml
@@ -43,8 +43,7 @@
6.8.0
2.1.7
1.5-beta1
- 2.0.29
- 2.0.29
+ 7.2.5
9.0.98
@@ -331,17 +330,18 @@
batik-all
${batik.version}
-
+
- org.apache.pdfbox
- pdfbox
- ${pdfbox.version}
+ com.itextpdf
+ kernel
+ ${itextpdf.version}
+
- org.apache.pdfbox
- pdfbox-tools
- ${pdfboxTools.version}
+ com.itextpdf
+ layout
+ ${itextpdf.version}
diff --git a/zybgcx/src/main/java/com/czlis/zybgcx/service/impl/ZybgcxServcieImpl.java b/zybgcx/src/main/java/com/czlis/zybgcx/service/impl/ZybgcxServcieImpl.java
index 2c9d764..bf9cf5f 100644
--- a/zybgcx/src/main/java/com/czlis/zybgcx/service/impl/ZybgcxServcieImpl.java
+++ b/zybgcx/src/main/java/com/czlis/zybgcx/service/impl/ZybgcxServcieImpl.java
@@ -1,6 +1,7 @@
package com.czlis.zybgcx.service.impl;
import cn.hutool.core.codec.Base64;
+import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil;
@@ -8,6 +9,7 @@ import cn.hutool.core.util.StrUtil;
import com.czlis.common.config.RuoYiConfig;
import com.czlis.common.core.domain.Result;
import com.czlis.common.core.domain.entity.lis.LabReqreportPdffile;
+import com.czlis.common.utils.file.FileUtils;
import com.czlis.common.utils.ip.IpUtils;
import com.czlis.common.utils.uuid.UUID;
import com.czlis.interfaceCommon.utils.CommonUtil;
@@ -29,10 +31,7 @@ import javax.print.PrintException;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
import java.util.stream.Collectors;
@Service
@@ -43,6 +42,8 @@ public class ZybgcxServcieImpl implements ZybgcxService {
private ZybgcxMapper zybgcxMapper;
@Autowired
private CommonUtil commonUtil;
+ @Autowired
+ ReportUtil reportUtil;
/**
* 获取报告信息
@@ -72,10 +73,11 @@ public class ZybgcxServcieImpl implements ZybgcxService {
*/
@Override
public Result printReport(String[] bgdh) {
- List bgdhBase64List = new ArrayList<>();
+ List