diff --git a/lis-common/src/main/java/com/czlis/common/config/RuoYiConfig.java b/lis-common/src/main/java/com/czlis/common/config/RuoYiConfig.java
index c6828e2..ddb7ec7 100644
--- a/lis-common/src/main/java/com/czlis/common/config/RuoYiConfig.java
+++ b/lis-common/src/main/java/com/czlis/common/config/RuoYiConfig.java
@@ -51,11 +51,20 @@ public class RuoYiConfig {
*/
private static String interfaceUrl;
+ /**
+ * 门诊条码打印机名称
+ */
+ private static String mzPrintName;
+
+
+
+
+
public static String getInterfaceUrl() {
return interfaceUrl;
}
- public static void setInterfaceUrl(String interfaceUrl) {
+ public void setInterfaceUrl(String interfaceUrl) {
RuoYiConfig.interfaceUrl = interfaceUrl;
}
@@ -63,7 +72,7 @@ public class RuoYiConfig {
return interfaceType;
}
- public static void setInterfaceType(String interfaceType) {
+ public void setInterfaceType(String interfaceType) {
RuoYiConfig.interfaceType = interfaceType;
}
@@ -142,4 +151,12 @@ public class RuoYiConfig {
public static String getUploadPath() {
return getProfile() + "/upload";
}
+
+ public static String getMzPrintName() {
+ return mzPrintName;
+ }
+
+ public void setMzPrintName(String mzPrintName) {
+ RuoYiConfig.mzPrintName = mzPrintName;
+ }
}
diff --git a/lis-interfaceCommon/pom.xml b/lis-interfaceCommon/pom.xml
index 2d535e4..6ecc5c5 100644
--- a/lis-interfaceCommon/pom.xml
+++ b/lis-interfaceCommon/pom.xml
@@ -16,6 +16,31 @@
com.czlis
lis-common
+
+
+ net.sf.jasperreports
+ jasperreports
+
+
+ com.lowagie
+ itext
+
+
+ net.sourceforge.barbecue
+ barbecue
+ 1.5-beta1
+
+
+ junit
+ junit
+ test
+
+
+ org.springframework.boot
+ spring-boot-test
+ test
+
+
diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/LabReqdetailMapper.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/LabReqdetailMapper.java
index 4651063..e40565e 100644
--- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/LabReqdetailMapper.java
+++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/mapper/LabReqdetailMapper.java
@@ -1,4 +1,9 @@
package com.czlis.interfaceCommon.mapper;
+import com.czlis.common.core.domain.entity.LabReqdetail;
+
+import java.util.List;
+
public interface LabReqdetailMapper {
+ List getLabReqdetailList(String sqh);
}
diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/pojo/entity/MZBarCodeParam.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/pojo/entity/MZBarCodeParam.java
new file mode 100644
index 0000000..d697760
--- /dev/null
+++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/pojo/entity/MZBarCodeParam.java
@@ -0,0 +1,20 @@
+package com.czlis.interfaceCommon.pojo.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class MZBarCodeParam {
+ private String sqh;
+ private String brxm;
+ private String brxb;
+ private String nl;
+ private String sfxmmc;
+ private String ksmc;
+
+
+
+}
diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CommonUtil.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CommonUtil.java
index a8989ea..7a5bb6b 100644
--- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CommonUtil.java
+++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/CommonUtil.java
@@ -1,6 +1,7 @@
package com.czlis.interfaceCommon.utils;
import com.czlis.common.core.domain.entity.LabPat;
+import com.czlis.common.core.domain.entity.LabReqdetail;
import com.czlis.common.core.domain.entity.LabReqmain;
import com.czlis.common.core.domain.entity.LabResult;
import com.czlis.interfaceCommon.mapper.*;
@@ -27,6 +28,8 @@ public class CommonUtil {
ComDictMapper comDictMapper;
@Autowired
private LabResultMapper labResultMapper;
+ @Autowired
+ LabReqdetailMapper labReqdetailMapper;
//====检验主表操作方法集合===
public LabPat getLabPatOne(Date jyrq, String yq, String ybh){
@@ -88,5 +91,9 @@ public class CommonUtil {
return comOptMapper.getComOptValue(yq,xxdh);
}
+ public List getLabReqdetailList(String sqh){
+ return labReqdetailMapper.getLabReqdetailList(sqh);
+ }
+
}
diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisUtil.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisUtil.java
new file mode 100644
index 0000000..a40bdb2
--- /dev/null
+++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/LisUtil.java
@@ -0,0 +1,68 @@
+package com.czlis.interfaceCommon.utils;
+
+import cn.hutool.core.date.DateUnit;
+import cn.hutool.core.date.DateUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+public class LisUtil {
+
+ /**
+ * 生日格式为:yyyy-MM-dd
+ * 根据出生日期计算年龄
+ * @param birthday
+ * @return
+ */
+ public static Map getAgeFromBirthDay(String birthday){
+ Map map = new HashMap<>();
+ int age = DateUtil.ageOfNow(birthday);
+ if(age > 0){
+ map.put("age",String.valueOf(age));
+ map.put("unit","岁");
+ }else if(age == 0){
+ //不足一年的
+ long between = DateUtil.between(DateUtil.parse(birthday, "yyyy-MM-dd"), DateUtil.parse(DateUtil.today(), "yyyy-MM-dd"), DateUnit.DAY,true);
+
+ if(between/30 > 0){
+ long month = between/30;
+ map.put("age",String.valueOf(month));
+ map.put("unit","月");
+ }else if( between/30 == 0){
+ //不足一月的
+ map.put("age",String.valueOf(between));
+ map.put("unit","天");
+ }else{
+
+ }
+ }else{
+
+ }
+ return map;
+ }
+
+ /**
+ * 根据年龄获取出生日期
+ * @param nl
+ * @return
+ */
+ public static Date getBirthDayFromAge(int nl, String nldw){
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(DateUtil.date());
+ switch (nldw){
+ case "岁":
+ cal.add(Calendar.YEAR,-nl);
+ case "月":
+ cal.add(Calendar.MONTH,-nl);
+ case "天":
+ cal.add(Calendar.DATE,-nl);
+ }
+ Date BirthDay = cal.getTime();
+ SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
+ String format = df.format(BirthDay);
+ return DateUtil.parse(format,"yyyy-MM-dd");
+ }
+}
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
new file mode 100644
index 0000000..863e595
--- /dev/null
+++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/ReportUtil.java
@@ -0,0 +1,127 @@
+package com.czlis.interfaceCommon.utils;
+
+
+import com.czlis.common.config.RuoYiConfig;
+import com.czlis.interfaceCommon.pojo.entity.MZBarCodeParam;
+import lombok.extern.slf4j.Slf4j;
+import net.sf.jasperreports.engine.*;
+import net.sf.jasperreports.engine.export.JRPrintServiceExporter;
+import net.sf.jasperreports.export.SimpleExporterInput;
+import net.sf.jasperreports.export.SimplePrintServiceExporterConfiguration;
+import org.springframework.stereotype.Component;
+
+import javax.print.attribute.HashPrintRequestAttributeSet;
+import javax.print.attribute.PrintRequestAttributeSet;
+import javax.print.attribute.standard.Copies;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import net.sf.jasperreports.engine.JasperPrint;
+import javax.print.PrintService;
+import javax.print.PrintServiceLookup;
+import javax.print.attribute.standard.MediaSizeName;
+
+
+@Component
+@Slf4j
+public class ReportUtil {
+
+
+
+ public void printBarCode(MZBarCodeParam mzBarCodeParam) {
+
+ String jrxmlPath = RuoYiConfig.getProfile() + "\\barcode.jrxml";
+ String jasperPath = RuoYiConfig.getProfile() + "\\barcode.jasper";
+
+ // 获取类路径(resources 目录)
+ String property = System.getProperty("user.dir");
+ System.out.println("打印路径:"+property);
+ //String resourcesPath = property + "\\lis-" + File.separator + jasperPath;
+
+ //编译模板
+ try {
+ JasperCompileManager.compileReportToFile(jrxmlPath,jasperPath);
+ //构造数据
+ Map parameters = new HashMap();
+ parameters.put("barcode",mzBarCodeParam.getSqh());
+ parameters.put("line1",mzBarCodeParam.getBrxm() + " " + mzBarCodeParam.getBrxb() + " " + mzBarCodeParam.getNl());
+ parameters.put("line2",mzBarCodeParam.getSfxmmc());
+
+
+ //填充数据
+ JasperPrint jasperPrint = JasperFillManager.fillReport(jasperPath, parameters, new JREmptyDataSource());
+
+ //输出文件
+// String pdfPath = "E:\\barcode.pdf";
+// JasperExportManager.exportReportToPdfFile(jasperPrint,pdfPath);
+// printPdfFile(pdfPath);
+
+ //打印条码
+ //JasperPrintManager.printReport(jasperPrint, false);
+ print(jasperPrint,false, RuoYiConfig.getMzPrintName());
+ } catch (Exception e) {
+ e.printStackTrace();
+ log.error("打印条码报错,条码号:{}",mzBarCodeParam.getSqh(),e);
+ }
+
+
+ }
+
+ /**
+ * 6.8.0版本专用:指定打印机打印报表
+ * @param jasperPrint 报表对象
+ * @param showDialog 是否显示打印对话框
+ * @param printerName 目标打印机名称(支持模糊匹配)
+ * @throws Exception 打印异常
+ */
+ public static void print(JasperPrint jasperPrint, boolean showDialog, String printerName) throws Exception {
+ // 1. 获取系统中所有可用打印机
+ PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null);
+ if (printServices == null || printServices.length == 0) {
+ throw new RuntimeException("未检测到任何可用打印机");
+ }
+
+ // 2. 查找目标打印机(6.8.0版本兼容的遍历方式)
+ PrintService targetService = null;
+ for (PrintService service : printServices) {
+ String serviceName = service.getName();
+ // 精确匹配可改为:serviceName.equals(printerName)
+ if (serviceName.contains(printerName)) {
+ targetService = service;
+ break;
+ }
+ }
+
+ if (targetService == null) {
+ throw new RuntimeException("未找到名称包含 [" + printerName + "] 的打印机");
+ }
+
+ // 3. 配置打印参数(6.8.0版本的标准API)
+ JRPrintServiceExporter exporter = new JRPrintServiceExporter();
+ SimplePrintServiceExporterConfiguration config = new SimplePrintServiceExporterConfiguration();
+
+ // 设置目标打印机
+ config.setPrintService(targetService);
+ // 控制是否显示系统打印对话框(6.8.0版本此参数有效)
+ config.setDisplayPrintDialog(showDialog);
+ // 不显示页面设置对话框(如需显示可改为true)
+ config.setDisplayPageDialog(false);
+
+ // 4. 设置打印属性(份数、纸张等)
+ PrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet();
+ attributes.add(new Copies(1)); // 打印份数
+ attributes.add(MediaSizeName.ISO_A4); // 纸张大小A4
+ // 可选:设置打印方向(横向)
+ // attributes.add(OrientationRequested.LANDSCAPE);
+ config.setPrintRequestAttributeSet(attributes);
+
+ // 5. 绑定报表并执行打印(6.8.0版本的标准导出方式)
+ exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
+ exporter.setConfiguration(config);
+ exporter.exportReport();
+ }
+
+
+
+}
diff --git a/lis-interfaceCommon/src/main/resources/jasperreports_extension.properties b/lis-interfaceCommon/src/main/resources/jasperreports_extension.properties
new file mode 100644
index 0000000..b5931af
--- /dev/null
+++ b/lis-interfaceCommon/src/main/resources/jasperreports_extension.properties
@@ -0,0 +1,2 @@
+net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
+net.sf.jasperreports.extension.simple.font.families.lobstertwo=stsong/fonts.xml
\ No newline at end of file
diff --git a/lis-interfaceCommon/src/main/resources/mapper/LabReqdetailMapper.xml b/lis-interfaceCommon/src/main/resources/mapper/LabReqdetailMapper.xml
new file mode 100644
index 0000000..6e111ac
--- /dev/null
+++ b/lis-interfaceCommon/src/main/resources/mapper/LabReqdetailMapper.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
diff --git a/lis-interfaceCommon/src/main/resources/stsong/fonts.xml b/lis-interfaceCommon/src/main/resources/stsong/fonts.xml
new file mode 100644
index 0000000..a8e1f1d
--- /dev/null
+++ b/lis-interfaceCommon/src/main/resources/stsong/fonts.xml
@@ -0,0 +1,15 @@
+
+
+
+ stsong/stsong.ttf
+ stsong/stsong.ttf
+ stsong/stsong.ttf
+ stsong/stsong.ttf
+ Identity-H
+ true
+
+ '华文宋体',Arial,Helvetica,sans-serif
+ '华文宋体',Arial,Helvetica,sans-serif
+
+
+
\ No newline at end of file
diff --git a/lis-interfaceCommon/src/main/resources/stsong/stsong.ttf b/lis-interfaceCommon/src/main/resources/stsong/stsong.ttf
new file mode 100644
index 0000000..6f84fd6
Binary files /dev/null and b/lis-interfaceCommon/src/main/resources/stsong/stsong.ttf differ
diff --git a/lis-interfaceCommon/src/main/resources/template/barcode.jasper b/lis-interfaceCommon/src/main/resources/template/barcode.jasper
new file mode 100644
index 0000000..f3c0730
Binary files /dev/null and b/lis-interfaceCommon/src/main/resources/template/barcode.jasper differ
diff --git a/lis-interfaceCommon/src/main/resources/template/barcode.jrxml b/lis-interfaceCommon/src/main/resources/template/barcode.jrxml
new file mode 100644
index 0000000..d608558
--- /dev/null
+++ b/lis-interfaceCommon/src/main/resources/template/barcode.jrxml
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/lis-system/src/main/resources/application.yml b/lis-system/src/main/resources/application.yml
index 1450472..1ae9566 100644
--- a/lis-system/src/main/resources/application.yml
+++ b/lis-system/src/main/resources/application.yml
@@ -7,12 +7,12 @@ czlis:
# 版权年份
copyrightYear: 2025
# 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
- profile: D:/czlis/uploadPath
+ profile: D:/czlis/upload
+ mzPrintName: pdfFactory Pro
# 获取ip地址开关
addressEnabled: false
# 验证码类型 math 数字计算 char 字符验证
captchaType: math
- interfaceType: 1
interfaceUrl: http://localhost:8080
# 开发环境配置
diff --git a/mzcx/src/main/java/com/czlis/mzcx/controller/MZCXController.java b/mzcx/src/main/java/com/czlis/mzcx/controller/MZCXController.java
index 03c31cd..7b5fc32 100644
--- a/mzcx/src/main/java/com/czlis/mzcx/controller/MZCXController.java
+++ b/mzcx/src/main/java/com/czlis/mzcx/controller/MZCXController.java
@@ -34,7 +34,7 @@ public class MZCXController extends BaseController {
@ApiOperation("获取申请单信息")
@GetMapping("/querySQD")
public Result querySQD(String brdh,String stime,String etime,String klx,String zt){
- return mzcxService.querySQD(brdh,stime,etime,klx,zt);
+ return mzcxService.querySQD(brdh,stime,etime,klx,zt,getUserId());
}
/**
@@ -44,6 +44,6 @@ public class MZCXController extends BaseController {
*/
@GetMapping("/printBarcode")
public Result printSQD(String sqh){
- return null;
+ return mzcxService.printSQD(sqh);
}
}
diff --git a/mzcx/src/main/java/com/czlis/mzcx/service/MZCXService.java b/mzcx/src/main/java/com/czlis/mzcx/service/MZCXService.java
index d328e54..fba1765 100644
--- a/mzcx/src/main/java/com/czlis/mzcx/service/MZCXService.java
+++ b/mzcx/src/main/java/com/czlis/mzcx/service/MZCXService.java
@@ -6,5 +6,7 @@ import com.czlis.mzcx.pojo.MzcxSqdDTO;
import java.util.List;
public interface MZCXService {
- Result querySQD(String brdh, String stime, String etime, String klx, String zt);
+ Result querySQD(String brdh, String stime, String etime, String klx, String zt,Long userId);
+
+ Result printSQD(String sqh);
}
diff --git a/mzcx/src/main/java/com/czlis/mzcx/service/impl/MZCXServiceImpl.java b/mzcx/src/main/java/com/czlis/mzcx/service/impl/MZCXServiceImpl.java
index d0f37ea..68768bd 100644
--- a/mzcx/src/main/java/com/czlis/mzcx/service/impl/MZCXServiceImpl.java
+++ b/mzcx/src/main/java/com/czlis/mzcx/service/impl/MZCXServiceImpl.java
@@ -1,6 +1,17 @@
package com.czlis.mzcx.service.impl;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.json.JSONUtil;
import com.czlis.common.core.domain.Result;
+import com.czlis.common.core.domain.entity.LabReqdetail;
+import com.czlis.common.core.domain.entity.LabReqmain;
+import com.czlis.interfaceCommon.constants.LisinterfaceNameConstants;
+import com.czlis.interfaceCommon.pojo.entity.MZBarCodeParam;
+import com.czlis.interfaceCommon.pojo.inter.GetReqInterface;
+import com.czlis.interfaceCommon.utils.CommonUtil;
+import com.czlis.interfaceCommon.utils.LisInterfaceUtil;
+import com.czlis.interfaceCommon.utils.LisUtil;
+import com.czlis.interfaceCommon.utils.ReportUtil;
import com.czlis.mzcx.mapper.MZCXMapper;
import com.czlis.mzcx.pojo.MzcxSqdDTO;
import com.czlis.mzcx.service.MZCXService;
@@ -8,6 +19,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import javax.validation.constraints.NotBlank;
import java.util.*;
@Service
@@ -16,9 +28,27 @@ public class MZCXServiceImpl implements MZCXService {
@Autowired
MZCXMapper mzcxMapper;
+ @Autowired
+ ReportUtil reportUtil;
+ @Autowired
+ LisInterfaceUtil lisInterfaceUtil;
+ @Autowired
+ private CommonUtil commonUtil;
@Override
- public Result querySQD(String brdh, String stime, String etime, String klx,String zt) {
+ public Result querySQD(String brdh, String stime, String etime, String klx,String zt,Long userId) {
+ GetReqInterface getReqInterface = new GetReqInterface();
+ getReqInterface.setBrdh(brdh);
+ getReqInterface.setStime(stime);
+ getReqInterface.setEtime(etime);
+ getReqInterface.setBrly("");
+ getReqInterface.setSqh("");
+ getReqInterface.setBz1("");
+ getReqInterface.setUserid(userId.toString());
+ getReqInterface.setYljg("1");
+ getReqInterface.setDept("");
+ String jsonStr = JSONUtil.toJsonStr(getReqInterface);
+ Result result = lisInterfaceUtil.invokeLisInterface(LisinterfaceNameConstants.GETREQINTERFACE, jsonStr);
Map map = new HashMap<>();
map.put("brdh", brdh);
map.put("st", stime);
@@ -29,6 +59,35 @@ public class MZCXServiceImpl implements MZCXService {
return new Result("0","修改条码成功!",mzcxMapper.querySQD(map));
}
+ @Override
+ public Result printSQD(String sqh) {
+ LabReqmain labReqmainOne = commonUtil.getLabReqmainOne(sqh);
+ //List labReqdetailList = commonUtil.getLabReqdetailList(sqh);
+ MZBarCodeParam mzBarCodeParam = new MZBarCodeParam();
+ mzBarCodeParam.setSqh(sqh);
+ Map ageFromBirthDay = LisUtil.getAgeFromBirthDay(DateUtil.format(labReqmainOne.getBrsr(), "yyyy-MM-dd HH:mm:ss"));
+ String age = ageFromBirthDay.get("age");
+ String unit = ageFromBirthDay.get("unit");
+
+ mzBarCodeParam.setNl(age+unit);
+ mzBarCodeParam.setBrxm(labReqmainOne.getBrxm());
+ String brxb = labReqmainOne.getBrxb();
+ switch (brxb){
+ case "1":
+ brxb = "男";
+ break;
+ case "2":
+ brxb = "女";
+ break;
+ default:
+ brxb = "";
+
+ }
+ mzBarCodeParam.setBrxb(brxb);
+ mzBarCodeParam.setSfxmmc(labReqmainOne.getJymd());
+ reportUtil.printBarCode(mzBarCodeParam);
+ return null;
+ }
}
diff --git a/pom.xml b/pom.xml
index 007cdfe..d90e7c5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -39,6 +39,9 @@
3.0.3
8.2.2.jre8
2.5.1
+ 6.8.0
+ 2.1.7
+ 1.5-beta1
9.0.98
@@ -289,6 +292,27 @@
pinyin4j
${pinyin4j.version}
+
+
+
+ net.sf.jasperreports
+ jasperreports
+ ${jasperreports.version}
+
+
+
+ com.lowagie
+ itext
+ ${itext.version}
+
+
+
+ net.sourceforge.barbecue
+ barbecue
+ ${barbecue.version}
+
+
+