diff --git a/lis-interfaceCommon/pom.xml b/lis-interfaceCommon/pom.xml index 331aaa2..cd353c3 100644 --- a/lis-interfaceCommon/pom.xml +++ b/lis-interfaceCommon/pom.xml @@ -52,6 +52,11 @@ org.apache.pdfbox pdfbox + + + com.czlis + lisresources + 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/BarCodeParam.java similarity index 77% rename from lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/pojo/entity/MZBarCodeParam.java rename to lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/pojo/entity/BarCodeParam.java index d697760..8ddf219 100644 --- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/pojo/entity/MZBarCodeParam.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/pojo/entity/BarCodeParam.java @@ -4,16 +4,20 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.Date; + @Data @AllArgsConstructor @NoArgsConstructor -public class MZBarCodeParam { +public class BarCodeParam { private String sqh; private String brxm; private String brxb; private String nl; private String sfxmmc; private String ksmc; + private Date sqsj; + private String brdh; diff --git a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/JasperReportUtil.java b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/JasperReportUtil.java index 066c17b..d35e451 100644 --- a/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/JasperReportUtil.java +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/JasperReportUtil.java @@ -4,10 +4,12 @@ import com.czlis.common.config.RuoYiConfig; import lombok.extern.slf4j.Slf4j; import net.sf.jasperreports.engine.*; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; +import net.sf.jasperreports.engine.design.JasperDesign; import net.sf.jasperreports.engine.export.JRPdfExporter; import net.sf.jasperreports.engine.export.JRPrintServiceExporter; import net.sf.jasperreports.engine.util.JRLoader; import net.sf.jasperreports.engine.util.JRSaver; +import net.sf.jasperreports.engine.xml.JRXmlLoader; import net.sf.jasperreports.export.SimpleExporterInput; import net.sf.jasperreports.export.SimpleOutputStreamExporterOutput; import net.sf.jasperreports.export.SimplePrintServiceExporterConfiguration; @@ -16,6 +18,7 @@ import org.springframework.stereotype.Component; import java.io.File; import java.io.FileInputStream; +import java.io.IOException; import java.sql.Connection; import java.util.HashMap; import java.util.List; @@ -431,6 +434,48 @@ public class JasperReportUtil { } } + /** + * 生成PDF报表 + * @param templatePath JRXML模板文件路径 + * @param outputPath 生成的PDF文件保存路径 + * @param parameters 报表参数 + * @param dataSource 报表数据源 + * @throws JRException JasperReports异常 + */ + public static void generatePdf(String templatePath, String outputPath, + Map parameters, + JRDataSource dataSource) throws Exception { + + // 检查模板文件是否存在 + 是否为文件(避免误传目录路径) + File templateFile = new File(templatePath); + if (!templateFile.exists() || !templateFile.isFile()) { + throw new IllegalArgumentException("模板文件不存在或路径非法!模板路径:" + templatePath); + } + File outputFile = new File(outputPath); + File outputParentDir = outputFile.getParentFile(); // 获取PDF的父目录(如:C:/output/report.pdf → 父目录是C:/output) + + // 若父目录不存在,则创建(mkdirs()支持创建多级目录,比mkdir()更实用) + if (outputParentDir != null && !outputParentDir.exists()) { + boolean isDirCreated = outputParentDir.mkdirs(); + // 校验目录是否创建成功(防止权限不足等问题导致创建失败) + if (!isDirCreated) { + throw new IOException("PDF输出目录创建失败!请检查路径权限。输出目录:" + outputParentDir.getAbsolutePath()); + } + System.out.println("已自动创建PDF输出目录:" + outputParentDir.getAbsolutePath()); + } + + // 加载JRXML模板 + JasperDesign jasperDesign = JRXmlLoader.load(templatePath);; + + // 编译模板 + JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign); + + // 填充报表数据 + JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource); + + // 导出为PDF + JasperExportManager.exportReportToPdfFile(jasperPrint, outputPath); + } } \ No newline at end of file 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 4da68c1..f39b2c5 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 @@ -3,33 +3,33 @@ package com.czlis.interfaceCommon.utils; import cn.hutool.core.bean.BeanUtil; import com.czlis.common.config.RuoYiConfig; +import com.czlis.common.core.domain.Result; +import com.czlis.common.utils.ip.IpUtils; 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.MZBarCodeParam; +import com.czlis.interfaceCommon.pojo.entity.BarCodeParam; import lombok.extern.slf4j.Slf4j; -import org.apache.pdfbox.pdmodel.common.PDRectangle; -import org.apache.pdfbox.printing.Orientation; +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 javax.print.attribute.standard.MediaPrintableArea; -import javax.print.attribute.standard.MediaSizeName; import java.awt.print.*; -import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.util.*; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.printing.Scaling; -import org.apache.pdfbox.pdmodel.PDPage; + import javax.print.attribute.standard.OrientationRequested; @@ -42,8 +42,13 @@ public class ReportUtil { @Autowired BackPaperMapper backPaperMapper; + @Value("${server.port:}") + private String port; + @Value("${czlis.printURL:}") + String printURL; - public void printBarCode(MZBarCodeParam mzBarCodeParam) { + + public void printBarCode(BarCodeParam mzBarCodeParam) { try { //构造数据 Map parameters = new HashMap(); @@ -221,6 +226,29 @@ public class ReportUtil { } + public Result printToPdf(BarCodeParam barCodeParam, String pdfName){ + + String templatePath = RuoYiConfig.getProfile()+"/templates/barcode_zy.jrxml"; // 模板文件路径 + String outputPath = RuoYiConfig.getProfile()+"/config/static/"+pdfName+".pdf"; // PDF输出路径(多级目录会自动创建) + log.info("打印输入输出地址:{},{}",templatePath,outputPath); + Map stringObjectMap = BeanUtil.beanToMap(barCodeParam); + try { + JasperReportUtil.generatePdf(templatePath,outputPath,stringObjectMap,new JREmptyDataSource()); + } catch (Exception e) { + e.printStackTrace(); + log.error("打印条码失败,参数{}",barCodeParam,e); + } + String httpPath = ""; + if(printURL == null || printURL.equals("")){ + httpPath = "http://"+ IpUtils.getHostIp() +":" + port + "/"+pdfName+".pdf"; + }else{ + httpPath = "http://"+ printURL +":" + port + "/"+pdfName+".pdf"; + } + log.info("传给前端的pdf地址:{}",httpPath); + return new Result("0","打印成功!",httpPath); + } + + /*** 获取服务器当前的数据库连接事务对象 * 通过@Qualifier获取实际当前连接事务对象,一般是DynamicDataSource * 传递服务器获取连接(使用 Spring 工具类确保连接与事务同步) diff --git a/liswork/src/main/java/com/czlis/liswork/service/impl/ComDictServiceImpl.java b/liswork/src/main/java/com/czlis/liswork/service/impl/ComDictServiceImpl.java index 1d0a1d7..715c177 100644 --- a/liswork/src/main/java/com/czlis/liswork/service/impl/ComDictServiceImpl.java +++ b/liswork/src/main/java/com/czlis/liswork/service/impl/ComDictServiceImpl.java @@ -78,11 +78,10 @@ public class ComDictServiceImpl implements ComDictService { } comDict.setZjf(pinyin); comDict.setZdbz("N"); - int row = comDictMapper.insertComDict(comDict); - if (row > 0) { - List comDictList = commonUtil.getComDictList(comDict.getZdlb()); - commonUtil.setDictCache(comDict.getZdlb(), comDictList); - } + comDictMapper.insertComDict(comDict); + List comDictList = commonUtil.getComDictList(comDict.getZdlb()); + commonUtil.setDictCache(comDict.getZdlb(), comDictList); + return new Result("0", "新增字典成功!"); } 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 90a2eb8..a0e4273 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 @@ -8,7 +8,7 @@ import com.czlis.common.core.domain.entity.lis.LabReqmain; import com.czlis.common.utils.SecurityUtils; import com.czlis.common.utils.ip.IpUtils; import com.czlis.interfaceCommon.constants.LisinterfaceNameConstants; -import com.czlis.interfaceCommon.pojo.entity.MZBarCodeParam; +import com.czlis.interfaceCommon.pojo.entity.BarCodeParam; import com.czlis.interfaceCommon.pojo.inter.DayMessage; import com.czlis.interfaceCommon.pojo.inter.GetReqInterface; import com.czlis.interfaceCommon.utils.CommonUtil; @@ -94,7 +94,7 @@ public class MZCXServiceImpl implements MZCXService { public Result printSQD(String sqh) { LabReqmain labReqmainOne = commonUtil.getLabReqmainOne(sqh); //List labReqdetailList = commonUtil.getLabReqdetailList(sqh); - MZBarCodeParam mzBarCodeParam = new MZBarCodeParam(); + BarCodeParam mzBarCodeParam = new BarCodeParam(); mzBarCodeParam.setSqh(sqh); Map ageFromBirthDay = LisUtil.getAgeFromBirthDay(DateUtil.format(labReqmainOne.getBrsr(), "yyyy-MM-dd HH:mm:ss")); String age = ageFromBirthDay.get("age"); diff --git a/zycx/src/main/java/com/czlis/zycx/controller/ZycxController.java b/zycx/src/main/java/com/czlis/zycx/controller/ZycxController.java index 6aab1f0..4206a4c 100644 --- a/zycx/src/main/java/com/czlis/zycx/controller/ZycxController.java +++ b/zycx/src/main/java/com/czlis/zycx/controller/ZycxController.java @@ -6,6 +6,7 @@ import com.czlis.common.core.domain.Result; import com.czlis.common.core.domain.entity.lis.LabReqmain; import com.czlis.common.core.page.TableDataInfo; import com.czlis.interfaceCommon.utils.LisInterfaceUtil; +import com.czlis.zycx.pojo.Web_getBarcode; import com.czlis.zycx.service.ZycxService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -33,35 +34,51 @@ public class ZycxController extends BaseController { @GetMapping("/query") @Anonymous //@PreAuthorize("@ss.hasPermi('zycx:interface:query')") - public TableDataInfo getSQDInfo(LabReqmain labReqmain){ - startPage(); - List sqdInfoList = zycxService.getSQDInfo(labReqmain); - return getDataTable(sqdInfoList); + public Result getSQDInfo(String dept,String userid,String st,String et,String yljg){ + log.info("查询申请单,zyreq/query:{},{},{},{},{}",dept,userid,st,et,yljg); + List sqdInfoList = zycxService.getSQDInfo(dept,userid,st,et,yljg); + return new Result("0","查询成功!",sqdInfoList); } @ApiOperation("生成条码") @GetMapping("/add") @Anonymous public Result createSQD(String dept,String userid,String st,String et,String yljg){ - log.info("调用生成条码接口:{},{},{},{},{}",dept,userid,st,et,yljg); + log.info("调用生成条码接口,zyreq/add:{},{},{},{},{}",dept,userid,st,et,yljg); return zycxService.createSQD(dept,userid,st,et,yljg); } @ApiOperation("执行条码") - @GetMapping("/print") + @GetMapping("/exec") @Anonymous public Result execSQD(String[] sqh,String userid,String status,String yljg){ - log.info("执行条码接口:{},{},{},{}",sqh,userid,status,yljg); + log.info("执行条码接口,zyreq/print:{},{},{},{}",sqh,userid,status,yljg); return zycxService.execSQD(sqh,userid,status,yljg); } + @ApiOperation("获取申请单明细数据") + @GetMapping("/detail") + @Anonymous + public Result getSQDDetail(String sqh){ + log.info("获取申请单明细数据,zyreq/detail:{}",sqh); + return zycxService.getSQDDetail(sqh); + } -// @GetMapping("/test1") -// public Result test1(String inValue){ -// log.info("测试的数据:{}",inValue); -// return lisInterfaceUtil.invokeSP(inValue); -// } + @Anonymous + @ApiOperation("获取申请单主表数据") + @GetMapping("/reqmain") + public Result getSQDMain(LabReqmain labReqmain){ + log.info("获取申请单主表数据,zyreq/reqmain:{}",labReqmain); + return zycxService.getSQDMain(labReqmain); + } + + + @Anonymous + @GetMapping("/test1") + public Result test1(String sqh){ + return zycxService.test1(sqh); + } diff --git a/zycx/src/main/java/com/czlis/zycx/mapper/ZycxMapper.java b/zycx/src/main/java/com/czlis/zycx/mapper/ZycxMapper.java index 997615a..95e6c5e 100644 --- a/zycx/src/main/java/com/czlis/zycx/mapper/ZycxMapper.java +++ b/zycx/src/main/java/com/czlis/zycx/mapper/ZycxMapper.java @@ -1,6 +1,7 @@ package com.czlis.zycx.mapper; import com.czlis.common.core.domain.entity.lis.LabReqmain; +import com.czlis.zycx.pojo.Web_getBarcode; import java.util.List; import java.util.Map; @@ -8,7 +9,7 @@ import java.util.Map; public interface ZycxMapper { - List getSQDInfo(LabReqmain labReqmain); + List getSQDInfo(Web_getBarcode webGetBarcode); void createSQD(Map map); diff --git a/zycx/src/main/java/com/czlis/zycx/pojo/Web_getBarcode.java b/zycx/src/main/java/com/czlis/zycx/pojo/Web_getBarcode.java index 33ad51a..05cc816 100644 --- a/zycx/src/main/java/com/czlis/zycx/pojo/Web_getBarcode.java +++ b/zycx/src/main/java/com/czlis/zycx/pojo/Web_getBarcode.java @@ -24,6 +24,7 @@ public class Web_getBarcode { private String brdh; private String brxm; private String brxb; + private String brxbname; private Date brsr; private String bz1; private String bz2; @@ -33,6 +34,7 @@ public class Web_getBarcode { private String ch; private String yblx; private String zxys; + private String zxysname; private Date zxsj; private String bgddh; private BigDecimal costs; @@ -49,6 +51,7 @@ public class Web_getBarcode { private String contactman; private String cyr; private String bbsjr; + private String bbsjrname; private Date bbsjsj; private String refused; private Date confirmtime; @@ -67,4 +70,7 @@ public class Web_getBarcode { private String ksname; private String sqysname; private String jsysname; + private Date st; + private Date et; + private String jymd; } diff --git a/zycx/src/main/java/com/czlis/zycx/service/ZycxService.java b/zycx/src/main/java/com/czlis/zycx/service/ZycxService.java index ff879b5..6397f07 100644 --- a/zycx/src/main/java/com/czlis/zycx/service/ZycxService.java +++ b/zycx/src/main/java/com/czlis/zycx/service/ZycxService.java @@ -2,13 +2,20 @@ package com.czlis.zycx.service; import com.czlis.common.core.domain.Result; import com.czlis.common.core.domain.entity.lis.LabReqmain; +import com.czlis.zycx.pojo.Web_getBarcode; import java.util.List; public interface ZycxService { - List getSQDInfo(LabReqmain labReqmain); + List getSQDInfo(String dept, String userid, String st, String et, String yljg); Result createSQD(String dept, String userid, String st, String et, String yljg); Result execSQD(String[] sqh,String userid,String status,String yljg ); + + Result getSQDDetail(String sqh); + + Result getSQDMain(LabReqmain labReqmain); + + Result test1(String sqh); } diff --git a/zycx/src/main/java/com/czlis/zycx/service/impl/ZycxServiceImpl.java b/zycx/src/main/java/com/czlis/zycx/service/impl/ZycxServiceImpl.java index cf40ad3..ce98bc7 100644 --- a/zycx/src/main/java/com/czlis/zycx/service/impl/ZycxServiceImpl.java +++ b/zycx/src/main/java/com/czlis/zycx/service/impl/ZycxServiceImpl.java @@ -2,17 +2,18 @@ package com.czlis.zycx.service.impl; import cn.hutool.core.date.DateUtil; import com.czlis.common.core.domain.Result; +import com.czlis.common.core.domain.entity.lis.LabReqdetail; import com.czlis.common.core.domain.entity.lis.LabReqmain; import com.czlis.interfaceCommon.constants.LisinterfaceNameConstants; -import com.czlis.interfaceCommon.pojo.entity.MZBarCodeParam; +import com.czlis.interfaceCommon.pojo.entity.BarCodeParam; import com.czlis.interfaceCommon.pojo.inter.GetReqInterface; import com.czlis.interfaceCommon.pojo.inter.SetReqStatus; -import com.czlis.interfaceCommon.service.LisInterfaceType; 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.zycx.mapper.ZycxMapper; +import com.czlis.zycx.pojo.Web_getBarcode; import com.czlis.zycx.service.ZycxService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -41,8 +42,14 @@ public class ZycxServiceImpl implements ZycxService { @Override - public List getSQDInfo(LabReqmain labReqmain) { - return zycxMapper.getSQDInfo(labReqmain); + public List getSQDInfo(String dept, String userid, String st, String et, String yljg) { + Web_getBarcode webGetBarcode = new Web_getBarcode(); + webGetBarcode.setKsdh(dept); + webGetBarcode.setSt(DateUtil.parse(st,"yyyy-MM-dd HH:mm:ss")); + webGetBarcode.setEt(DateUtil.parse(et,"yyyy-MM-dd HH:mm:ss")); + webGetBarcode.setYljg(yljg); + webGetBarcode.setBrly("3"); + return zycxMapper.getSQDInfo(webGetBarcode); } @Override @@ -77,6 +84,24 @@ public class ZycxServiceImpl implements ZycxService { } + @Override + public Result getSQDDetail(String sqh) { + List labReqdetailList = commonUtil.getLabReqdetailList(sqh); + return new Result("0","获取数据成功!",labReqdetailList); + } + + @Override + public Result getSQDMain(LabReqmain labReqmain) { + String sqh = labReqmain.getSqh(); + LabReqmain labReqmainOne = commonUtil.getLabReqmainOne(sqh); + return new Result("0","获取数据成功!",labReqmainOne); + } + + @Override + public Result test1(String sqh) { + return printBarCode(sqh); + } + public Result createSQDExecSP(String dept, String userid, String st, String et, String yljg){ Map map = new HashMap<>(); @@ -140,14 +165,14 @@ public class ZycxServiceImpl implements ZycxService { public Result printBarCode(String sqh){ LabReqmain labReqmainOne = commonUtil.getLabReqmainOne(sqh); //List labReqdetailList = commonUtil.getLabReqdetailList(sqh); - MZBarCodeParam mzBarCodeParam = new MZBarCodeParam(); - mzBarCodeParam.setSqh(sqh); + BarCodeParam barCodeParam = new BarCodeParam(); + barCodeParam.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()); + barCodeParam.setNl(age + unit); + barCodeParam.setBrxm(labReqmainOne.getBrxm()); String brxb = labReqmainOne.getBrxb(); switch (brxb) { case "1": @@ -160,9 +185,10 @@ public class ZycxServiceImpl implements ZycxService { brxb = ""; } - mzBarCodeParam.setBrxb(brxb); - mzBarCodeParam.setSfxmmc(labReqmainOne.getJymd()); - reportUtil.printBarCode(mzBarCodeParam); + barCodeParam.setBrxb(brxb); + barCodeParam.setSfxmmc(labReqmainOne.getJymd()); + log.info("传给打印的数据为:{},{}",barCodeParam,sqh); + reportUtil.printToPdf(barCodeParam,sqh); return new Result("0", "打印成功!"); } diff --git a/zycx/src/main/resources/mapper/ZycxMapper.xml b/zycx/src/main/resources/mapper/ZycxMapper.xml index 3cb576f..105a9be 100644 --- a/zycx/src/main/resources/mapper/ZycxMapper.xml +++ b/zycx/src/main/resources/mapper/ZycxMapper.xml @@ -5,20 +5,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select a.*,b.sflbmc,b.sampletips from lab_reqmain a,lab_feeitemclass b where a.bgddh = b.sflbdh + select a.*,b.sflbmc as bgddhname,b.sampletips,b.bkcolor, + (case rtrim(a.brxb) when '1' then '男' when '2' then '女' else '' end) as brxbname, + (select zdmc from com_dict where zdlb = 'SRD' AND zddh = a.sqys) as sqysname, + (select zdmc from com_dict where zdlb = 'SRD' AND zddh = a.bbsjr) as bbsjrname, + (select yhxm from com_usr where yhdh = a.zxys) as zxysname, + (select yhxm from com_usr where yhdh = a.jsys) as jsysname, + (select zdmc from com_dict where zdlb = 'DP' AND zddh = a.ksdh) as ksname + from lab_reqmain a,lab_feeitemclass b where a.bgddh = b.sflbdh - and a.sqh = #{sqh} and a.zt = #{zt} and a.ksdh = #{ksdh} and a.brly = #{brly} - - AND a.sqsj >= CONVERT(varchar(100), #{params.beginTime}, 120) + and a.yljg = #{yljg} + + AND a.sqsj >= CONVERT(varchar(100), #{st}, 120) - - AND a.sqsj <= CONVERT(varchar(100), #{params.endTime}, 120) + + AND a.sqsj <= CONVERT(varchar(100), #{et}, 120)