From 6dbebb37f3bc4b7f5888554ce9033ea3c6708e98 Mon Sep 17 00:00:00 2001 From: jiangs <373297395@qq.com> Date: Wed, 10 Jun 2026 15:58:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=93=E5=8D=B0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../constants/BloodPrintTypeConstants.java | 11 +++ .../com/czblood/bus/pojo/ReportParam.java | 15 +++++ .../com/czblood/bus/utils/ReportUtil.java | 67 +++++++++++++++++++ .../impl/TransfuseApplyBeforeServiceImpl.java | 14 ++-- sql/函数/f_get_hosname.sql | 11 +++ 5 files changed, 113 insertions(+), 5 deletions(-) create mode 100644 blood_bus/src/main/java/com/czblood/bus/constants/BloodPrintTypeConstants.java create mode 100644 blood_bus/src/main/java/com/czblood/bus/pojo/ReportParam.java create mode 100644 sql/函数/f_get_hosname.sql diff --git a/blood_bus/src/main/java/com/czblood/bus/constants/BloodPrintTypeConstants.java b/blood_bus/src/main/java/com/czblood/bus/constants/BloodPrintTypeConstants.java new file mode 100644 index 0000000..1640e6a --- /dev/null +++ b/blood_bus/src/main/java/com/czblood/bus/constants/BloodPrintTypeConstants.java @@ -0,0 +1,11 @@ +package com.czblood.bus.constants; + +/** + * 打印类型 + */ +public class BloodPrintTypeConstants { + /** + * 输血前评估单 + */ + public static final String ASSESS_BEFORE = "ASSESS_BEFORE"; +} diff --git a/blood_bus/src/main/java/com/czblood/bus/pojo/ReportParam.java b/blood_bus/src/main/java/com/czblood/bus/pojo/ReportParam.java new file mode 100644 index 0000000..628cf00 --- /dev/null +++ b/blood_bus/src/main/java/com/czblood/bus/pojo/ReportParam.java @@ -0,0 +1,15 @@ +package com.czblood.bus.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ReportParam { + private String billNo; + private String beinhosId; +} diff --git a/blood_bus/src/main/java/com/czblood/bus/utils/ReportUtil.java b/blood_bus/src/main/java/com/czblood/bus/utils/ReportUtil.java index 1daeafe..75b432e 100644 --- a/blood_bus/src/main/java/com/czblood/bus/utils/ReportUtil.java +++ b/blood_bus/src/main/java/com/czblood/bus/utils/ReportUtil.java @@ -1,7 +1,74 @@ package com.czblood.bus.utils; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.codec.Base64; +import com.czblood.bus.pojo.ReportParam; +import com.czblood.common.core.domain.Result; +import com.czblood.common.utils.file.FileUtils; +import com.czblood.common.utils.file.ImageUtils; +import com.czblood.common.utils.ip.IpUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; +import javax.sql.DataSource; +import java.io.File; +import java.sql.Connection; +import java.util.Map; +import java.util.UUID; + @Component +@Slf4j public class ReportUtil { + + @Autowired + private DataSource dataSource; + @Value("${server.port:}") + String port; + @Value("${czblood.printURL:}") + String printURL; + + public Result printToPdf(String templateName, ReportParam reportParam, boolean base64) { + String staticpath= ImageUtils.getStaticPath()+ File.separator; + String pdfName1 = UUID.randomUUID().toString(); + String outputPath = staticpath+ File.separator + "printPDF"+ File.separator + pdfName1 + ".pdf"; // PDF输出路径(多级目录会自动创建) + Map stringObjectMap = BeanUtil.beanToMap(reportParam); + try { + Connection connection = dataSource.getConnection(); + JasperReportUtil.exportToPdf(templateName, stringObjectMap, connection, outputPath); + } catch (Exception e) { + e.printStackTrace(); + log.error("打印条码失败,参数{}", reportParam, e); + } + String httpPath = getPrintURL(pdfName1); + log.info("传给前端的pdf地址:{}", httpPath); + if (base64) { + //删除最后给前端的pdf文件 + File file = new File(outputPath); + String data = ""; + if (file.exists()) { + data = Base64.encode(file); + FileUtils.deleteFile(outputPath); + } + return new Result("0", "打印成功!", data); + } else { + return new Result("0", "打印成功!", httpPath); + } + + } + + + public String getPrintURL(String pdfName) { + return getHttpURL("printPDF")+"/"+pdfName+".pdf"; + } + public String getHttpURL(String pathChild) { + String httpPath; + if (printURL == null || printURL.isEmpty()) { + httpPath = "http://" + IpUtils.getHostIp() + ":" + port + "/" + pathChild; + } else { + httpPath = "http://" + printURL + ":" + port + "/" + pathChild; + } + return httpPath; + } } diff --git a/blood_bus_doctor/src/main/java/com/czblood/busDoctor/service/impl/TransfuseApplyBeforeServiceImpl.java b/blood_bus_doctor/src/main/java/com/czblood/busDoctor/service/impl/TransfuseApplyBeforeServiceImpl.java index 0be87fd..7446ce6 100644 --- a/blood_bus_doctor/src/main/java/com/czblood/busDoctor/service/impl/TransfuseApplyBeforeServiceImpl.java +++ b/blood_bus_doctor/src/main/java/com/czblood/busDoctor/service/impl/TransfuseApplyBeforeServiceImpl.java @@ -2,18 +2,17 @@ package com.czblood.busDoctor.service.impl; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONUtil; +import com.czblood.bus.constants.BloodPrintTypeConstants; import com.czblood.bus.mapper.XkPatientInfoMapper; import com.czblood.bus.mapper.XkTransfuseApplyBeforeMapper; import com.czblood.bus.mapper.XkTransfuseApplyMapper; -import com.czblood.bus.pojo.XkPatientInfo; -import com.czblood.bus.pojo.XkTransfuseApply; -import com.czblood.bus.pojo.XkTransfuseApplyBefore; -import com.czblood.bus.pojo.XkTransfuseApplyTestitem; +import com.czblood.bus.pojo.*; import com.czblood.bus.pojo.inter.BeforeAssessRequest; import com.czblood.bus.pojo.inter.GetPatientInfoRequest; import com.czblood.bus.pojo.inter.GetTestResultRequest; import com.czblood.bus.utils.BloodBankUtil; import com.czblood.bus.utils.BloodInterfaceUtil; +import com.czblood.bus.utils.ReportUtil; import com.czblood.busDoctor.pojo.TransfuseApplyBeforeDTO; import com.czblood.busDoctor.service.TransfuseApplyBeforeService; import com.czblood.busDoctor.utils.TransfuseApplyBeforeUtil; @@ -38,6 +37,8 @@ public class TransfuseApplyBeforeServiceImpl implements TransfuseApplyBeforeServ TransfuseApplyBeforeUtil transfuseApplyBeforeUtil; @Resource XkTransfuseApplyMapper xkTransfuseApplyMapper; + @Resource + ReportUtil reportUtil; @Override public Result queryList(XkTransfuseApplyBefore xkTransfuseApplyBefore) { @@ -129,7 +130,10 @@ public class TransfuseApplyBeforeServiceImpl implements TransfuseApplyBeforeServ @Override public Result print(String billNo) { - return null; + //打印输血前评估单 + ReportParam reportParam = new ReportParam(); + reportParam.setBillNo(billNo); + return reportUtil.printToPdf(BloodPrintTypeConstants.ASSESS_BEFORE, reportParam, true); } public Result canModify(String billNo){ diff --git a/sql/函数/f_get_hosname.sql b/sql/函数/f_get_hosname.sql new file mode 100644 index 0000000..5aae77d --- /dev/null +++ b/sql/函数/f_get_hosname.sql @@ -0,0 +1,11 @@ +CREATE FUNCTION [dbo].[f_get_hosname]() + RETURNS varchar(255) +AS +BEGIN + DECLARE @hospital_name VARCHAR(255); + + select @hospital_name = hospital_name from xk_hos_info where sfby = 'Y' ; + + return @hospital_name +END; +GO \ No newline at end of file