From cc306258c70a95b55d7d4d9076823d850e8a959c Mon Sep 17 00:00:00 2001 From: tangw Date: Fri, 25 Jul 2025 17:27:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=81=E8=A3=85=E7=8B=AC=E7=AB=8B=E7=9A=84?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E5=B7=A5=E5=85=B7=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../utils/JasperReportUtil.java | 334 ++++++++++++++++++ .../interfaceCommon/utils/ReportUtil.java | 88 +---- .../main/resources/template/barcode.jasper | Bin 20026 -> 0 bytes .../src/main/resources/template/barcode.jrxml | 35 +- .../czlis/mzcx/controller/MZCXController.java | 4 + .../com/czlis/mzcx/service/MZCXService.java | 1 + .../mzcx/service/impl/MZCXServiceImpl.java | 6 + 7 files changed, 359 insertions(+), 109 deletions(-) create mode 100644 lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/JasperReportUtil.java delete mode 100644 lis-interfaceCommon/src/main/resources/template/barcode.jasper 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 new file mode 100644 index 0000000..389b7f2 --- /dev/null +++ b/lis-interfaceCommon/src/main/java/com/czlis/interfaceCommon/utils/JasperReportUtil.java @@ -0,0 +1,334 @@ +package com.czlis.interfaceCommon.utils; + +import lombok.extern.slf4j.Slf4j; +import net.sf.jasperreports.engine.*; +import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; +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.export.SimpleExporterInput; +import net.sf.jasperreports.export.SimpleOutputStreamExporterOutput; +import net.sf.jasperreports.export.SimplePrintServiceExporterConfiguration; +import org.springframework.stereotype.Component; + +import java.io.File; +import java.io.InputStream; +import java.net.URISyntaxException; +import java.net.URL; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import net.sf.jasperreports.engine.JasperPrint; +import javax.print.PrintService; +import javax.print.PrintServiceLookup; +import javax.print.attribute.HashPrintRequestAttributeSet; +import javax.print.attribute.PrintRequestAttributeSet; +import javax.print.attribute.standard.Copies; +import javax.print.attribute.standard.MediaSizeName; +import javax.print.attribute.standard.OrientationRequested; + + +/** + * JasperReports 打印/导出工具类 + */ +@Component +@Slf4j +public class JasperReportUtil { + private static String template="template"; + private static String templatep="template/"; + /** + * 核心打印/导出方法 + * @param printerName 打印机名称(可为null,null时使用默认打印机) + * @param templateName 模板名称(支持jrxml或jasper,放在resources/template目录下) + * @param parameters 非循环字段集合(报表参数,如标题、日期等) + * @param dataList 循环体数据(List集合,每条数据对应detail区域一行) + * @param pdfType 打印方式(pdfType为true导出PDF) + * @param exportPath PDF导出路径(pdfType为PDF时必传) + * @param printtimes 打印次数(可为null,默认1次) + * @param papersize 纸张尺寸(可为null,默认使用模板纸张) + * @param Orientation 纸张方向(false直打,true横打) + * @param showDialog 打印前是否预览(false直接打印,true预览) + * @throws Exception Jasper相关异常 + */ + public static void printbase( + String printerName, + String templateName, + Map parameters, + List dataList, + boolean pdfType, + String exportPath, + Integer printtimes, + String papersize, + boolean Orientation, + boolean showDialog + ) throws Exception { + // 1. 校验入参 + // validateParams(printType, exportPath, dataList); + // 2. 加载并编译模板(支持jrxml和jasper) + JasperReport jasperReport; + try { + jasperReport = loadTemplate(templateName); + } catch (Exception e) { + log.error("打印模板创建错误:{}",e); + throw new RuntimeException(e); + } + // 3. 处理循环数据(转换为Jasper数据源) + JRDataSource dataSource; + if (dataList == null || dataList.isEmpty()) { + dataSource=new JREmptyDataSource(); + }else { + dataSource = new JRBeanCollectionDataSource(dataList); + } + // 4. 填充报表(参数+循环数据) + Map safeParams = parameters != null ? parameters : new HashMap<>(); + + JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, safeParams, dataSource); + // 5. 根据打印方式执行操作 + if (pdfType==false) { + // 5.1 直接打印到指定打印机 + printToPrinter(jasperPrint, printerName,printtimes,papersize,Orientation,showDialog); + } else{ + // 5.2 导出为PDF + exportToPdf(jasperPrint, exportPath); + } + } + /** + * 加载并编译模板(优先加载jasper,不存在则编译jrxml) + */ + private static JasperReport loadTemplate(String templateName) throws Exception { + // 模板路径:resources/templates/ + String templatePath = templatep + templateName; + InputStream jasperStream = JasperReportUtil.class.getClassLoader().getResourceAsStream(templatePath + ".jasper"); + + if (jasperStream != null) { + // 存在已编译的jasper文件,直接加载 + return (JasperReport) JRLoader.loadObject(jasperStream); + } else { + // 不存在jasper,编译jrxml + compileAndSave(templateName); + InputStream jrxmlStream = JasperReportUtil.class.getClassLoader().getResourceAsStream(templatePath + ".jrxml"); + if (jrxmlStream == null) { + throw new JRException("模板不存在:" + templatePath + ".jrxml/.jasper"); + } + return JasperCompileManager.compileReport(jrxmlStream); + } + } + + /** + * 直接打印到指定打印机 + */ + private static void printToPrinter(JasperPrint jasperPrint, String printerName,Integer printtimes,String papersize,boolean Orientation,boolean showDialog) throws JRException { + // 查找目标打印机 + PrintService printService = findPrintService(printerName); + if (printService == null) { + throw new JRException("未找到指定打印机:" + (printerName == null ? "默认打印机" : printerName)); + } + + // 配置打印参数(跳过打印对话框,直接打印) + JRPrintServiceExporter exporter = new JRPrintServiceExporter(); + SimplePrintServiceExporterConfiguration config = new SimplePrintServiceExporterConfiguration(); + config.setPrintService(printService); // 指定打印机 + config.setDisplayPrintDialog(showDialog); // 不显示打印对话框 + config.setDisplayPageDialog(false); // 不显示页面设置对话框 + PrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet(); + if (printtimes == null) printtimes=1; + attributes.add(new Copies(printtimes)); // 打印份数 + // 修正:只有当papersize不为null时设置纸张大小 + if (papersize != null) { + MediaSizeName mediaSize = getMediaSize(papersize); + if (mediaSize != null) { // 额外检查,确保mediaSize有效 + attributes.add(mediaSize); + } else { + log.warn("无效的纸张尺寸: {}", papersize); + } + } + // 可选:设置打印方向(横向) + if(Orientation)attributes.add(OrientationRequested.LANDSCAPE); + config.setPrintRequestAttributeSet(attributes); + // 执行打印 + exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); + exporter.setConfiguration(config); + exporter.exportReport(); + } + + /** + * 导出为PDF文件 + */ + private static void exportToPdf(JasperPrint jasperPrint, String exportPath) throws JRException { + JRPdfExporter exporter = new JRPdfExporter(); + exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); + exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(exportPath)); + exporter.exportReport(); + } + + /** + * 根据打印机名称查找打印机(支持模糊匹配) + */ + private static PrintService findPrintService(String printerName) { + // 获取所有可用打印机 + PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null); + if (printServices == null || printServices.length == 0) { + return null; + } + + // 1. 打印机名称为null时,返回默认打印机 + if (printerName == null || printerName.trim().isEmpty()) { + return PrintServiceLookup.lookupDefaultPrintService(); + } + + // 2. 模糊匹配打印机名称(包含关键字即可) + for (PrintService service : printServices) { + if (service.getName().contains(printerName)) { + return service; + } + } + return null; + } + // ------------------------------ 简化调用的重载方法(可选)------------------------------ + + /** + * 重载:导出PDF(简化参数,无需传入打印机名称) + */ + public static void exportToPdf( + String templateName, + Map parameters, + List dataList, + String exportPath + ) throws Exception { + printbase(null, templateName, parameters, dataList, true, exportPath,null,null,false,false); + } + + /** + * 重载:直接打印(简化参数) + * @param printerName 打印机名称(可为null,null时使用默认打印机) + * @param templateName 模板名称(支持jrxml或jasper,放在resources/template目录下) + * @param parameters 非循环字段集合(报表参数,如标题、日期等) + * @param dataList 循环体数据(List集合,每条数据对应detail区域一行) + */ + public static void print( + String printerName, + String templateName, + Map parameters, + List dataList + ) throws Exception { + printbase(printerName, templateName, parameters, dataList, false, null,null,null,false,false); + } + /** + * 重载:直接打印(简化参数) + * @param printerName 打印机名称(可为null,null时使用默认打印机) + * @param templateName 模板名称(支持jrxml或jasper,放在resources/template目录下) + * @param dataList 循环体数据(List集合,每条数据对应detail区域一行) + */ + public static void print( + String printerName, + String templateName, + List dataList + ) throws Exception { + print(printerName, templateName, null, dataList); + } + /** + * 重载:直接打印(简化参数) + * @param printerName 打印机名称(可为null,null时使用默认打印机) + * @param templateName 模板名称(支持jrxml或jasper,放在resources/template目录下) + * @param parameters 非循环字段集合(报表参数,如标题、日期等) + */ + public static void print( + String printerName, + String templateName, + Map parameters + ) throws Exception { + print(printerName, templateName, parameters, null); + } + /** + * 重载:直接打印(使用默认打印机) + * @param templateName 模板名称(支持jrxml或jasper,放在resources/template目录下) + * @param parameters 非循环字段集合(报表参数,如标题、日期等) + */ + public static void print( + String templateName, + Map parameters + ) throws Exception { + print(null, templateName, parameters, null); + } + /** + * 重载:直接打印(使用默认打印机) + * @param templateName 模板名称(支持jrxml或jasper,放在resources/template目录下) + * @param dataList 循环体数据(List集合,每条数据对应detail区域一行) + */ + public static void print( + String templateName, + List dataList + ) throws Exception { + print(null, templateName, null, dataList); + } + // 预定义字符串到 MediaSizeName 的映射 + private static final Map SIZE_MAP = new HashMap<>(); + static { + SIZE_MAP.put("A0", MediaSizeName.ISO_A0); + SIZE_MAP.put("A1", MediaSizeName.ISO_A1); + SIZE_MAP.put("A2", MediaSizeName.ISO_A2); + SIZE_MAP.put("A3", MediaSizeName.ISO_A3); + SIZE_MAP.put("A4", MediaSizeName.ISO_A4); + SIZE_MAP.put("A5", MediaSizeName.ISO_A5); + SIZE_MAP.put("A6", MediaSizeName.ISO_A6); + // 可添加更多映射(如 US Letter、Legal 等) + } + public static MediaSizeName getMediaSize(String sizeStr) { + if (sizeStr == null) return null; + return SIZE_MAP.get(sizeStr.toUpperCase()); + } + /** + * 编译jrxml并保存到resources/templates同级目录 + * @param jrxmlFileName 模板文件名(不带扩展名,如"barcode") + * @throws Exception 编译或IO异常 + */ + public static void compileAndSave(String jrxmlFileName) throws Exception { + // 1. 定义文件名和路径 + String jrxmlName = jrxmlFileName + ".jrxml"; // jrxml文件名 + String jasperName = jrxmlFileName + ".jasper"; // 编译后文件名 + + // 2. 获取resources/templates下的jrxml输入流 + InputStream jrxmlStream = JasperReportUtil.class + .getClassLoader() + .getResourceAsStream(templatep + jrxmlName); + + if (jrxmlStream == null) { + throw new Exception("未找到jrxml模板:"+templatep + jrxmlName); + } + + // 3. 编译jrxml为JasperReport对象 + JasperReport jasperReport = JasperCompileManager.compileReport(jrxmlStream); + + // 4. 确定输出目录(resources/templates的同级目录,即classes/templates) + File outputDir = getTemplateOutputDir(); + if (!outputDir.exists()) { + outputDir.mkdirs(); // 目录不存在则创建 + } + + // 5. 输出jasper文件到目标目录 + File jasperFile = new File(outputDir, jasperName); + JRSaver.saveObject(jasperReport, jasperFile); // 保存编译结果 + + System.out.println("编译成功:" + jasperFile.getAbsolutePath()); + } + + /** + * 获取模板输出目录(resources/templates编译后的目录) + */ + private static File getTemplateOutputDir() throws URISyntaxException { + // 获取templates目录的URL(开发时是resources/templates,运行时是classes/templates) + URL templateUrl = JasperReportUtil.class.getClassLoader().getResource(template); + + if (templateUrl == null) { + // 如果templates目录不存在,创建在classes目录下 + URL classesUrl = JasperReportUtil.class.getClassLoader().getResource(""); + return new File(classesUrl.toURI().getPath() + File.separator + template); + } + + // 返回templates目录的File对象 + return new File(templateUrl.toURI()); + } + +} \ 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 41ddef4..63ea612 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 @@ -4,118 +4,32 @@ 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()); + JasperReportUtil.print(RuoYiConfig.getMzPrintName(),"barcode",parameters); } 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/template/barcode.jasper b/lis-interfaceCommon/src/main/resources/template/barcode.jasper deleted file mode 100644 index f3c073034de3ead47140ef3b8b44385a64c7d4fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20026 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 SL1%PMjBo@Ac{vryGyfZznI+x; diff --git a/lis-interfaceCommon/src/main/resources/template/barcode.jrxml b/lis-interfaceCommon/src/main/resources/template/barcode.jrxml index d608558..ea3a28a 100644 --- a/lis-interfaceCommon/src/main/resources/template/barcode.jrxml +++ b/lis-interfaceCommon/src/main/resources/template/barcode.jrxml @@ -1,7 +1,8 @@ - + + @@ -12,41 +13,31 @@ - <band height="184" splitType="Stretch"> - <componentElement> - <reportElement x="6" y="6" width="130" height="32" uuid="e6aa5ef9-8f70-45cb-969e-8484f75390bb"> - <property name="com.jaspersoft.studio.unit.width" value="pixel"/> - <property name="com.jaspersoft.studio.unit.x" value="px"/> - </reportElement> - <jr:barbecue xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" type="Code128" drawText="false" checksumRequired="false"> - <jr:codeExpression><![CDATA[$P{barcode}]]></jr:codeExpression> - </jr:barbecue> - </componentElement> + <band height="85" splitType="Stretch"> <textField> - <reportElement x="17" y="23" width="100" height="15" uuid="925826fe-f359-43dd-b4c2-aa5fee83be67"/> - <textElement> - <font fontName="华文宋体" size="10"/> - </textElement> - <textFieldExpression><![CDATA[$P{barcode}]]></textFieldExpression> - </textField> - <textField> - <reportElement x="7" y="39" width="128" height="15" uuid="9029e1d0-5307-4d60-8098-225825491e85"> + <reportElement x="7" y="30" width="128" height="15" uuid="9029e1d0-5307-4d60-8098-225825491e85"> <property name="com.jaspersoft.studio.unit.height" value="px"/> </reportElement> <textElement> - <font fontName="华文宋体" size="10"/> + <font fontName="华文宋体" size="9"/> </textElement> <textFieldExpression><![CDATA[$P{line1}]]></textFieldExpression> </textField> <textField> - <reportElement x="6" y="56" width="130" height="15" uuid="902afe45-cfe9-4095-9a76-b0ea517a08b3"> + <reportElement x="6" y="45" width="130" height="15" uuid="902afe45-cfe9-4095-9a76-b0ea517a08b3"> <property name="com.jaspersoft.studio.unit.height" value="px"/> </reportElement> <textElement> - <font fontName="华文宋体" size="10"/> + <font fontName="华文宋体" size="9"/> </textElement> <textFieldExpression><![CDATA[$P{line2}]]></textFieldExpression> </textField> + <componentElement> + <reportElement x="6" y="0" width="100" height="30" uuid="d1408edf-988b-4360-8b54-67870f14b43f"/> + <jr:Code128 xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd"> + <jr:codeExpression><![CDATA[$P{barcode}]]></jr:codeExpression> + </jr:Code128> + </componentElement> </band> 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 bc5bc24..d33360b 100644 --- a/mzcx/src/main/java/com/czlis/mzcx/controller/MZCXController.java +++ b/mzcx/src/main/java/com/czlis/mzcx/controller/MZCXController.java @@ -53,4 +53,8 @@ public class MZCXController extends BaseController { public Result printAll(@RequestBody List sqhs){ return mzcxService.printAll(sqhs); } + @PostMapping("/printBackpaper") + public Result printBackpaper(@RequestBody List sqhs){ + return mzcxService.printBackpaper(sqhs); + } } 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 7bf8b55..e418dd7 100644 --- a/mzcx/src/main/java/com/czlis/mzcx/service/MZCXService.java +++ b/mzcx/src/main/java/com/czlis/mzcx/service/MZCXService.java @@ -10,4 +10,5 @@ public interface MZCXService { Result queryPatList(); Result printSQD(String sqh); Result printAll(List sqhs); + Result printBackpaper(List sqhs); } 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 8dcb48e..f438c2f 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 @@ -128,4 +128,10 @@ public class MZCXServiceImpl implements MZCXService { return new Result("0","打印成功!"); } + @Override + public Result printBackpaper(List sqhs){ + log.info("aaaaa: {}", sqhs); + return new Result("0","打印成功!"); + } + }