diff --git a/ktg-mes/src/main/java/com/ktg/mes/report/controller/JasperReportController.java b/ktg-mes/src/main/java/com/ktg/mes/report/controller/JasperReportController.java new file mode 100644 index 0000000..81333c3 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/report/controller/JasperReportController.java @@ -0,0 +1,166 @@ +package com.ktg.mes.report.controller; + +import com.itextpdf.text.pdf.PdfReader; +import com.itextpdf.text.pdf.PdfStamper; +import com.itextpdf.text.pdf.PdfWriter; +import com.ktg.common.constant.UserConstants; +import com.ktg.mes.report.utils.FormatSuffixEnum; +import com.ktg.mes.report.utils.JasperContext; +import net.sf.jasperreports.engine.*; +import net.sf.jasperreports.engine.export.JRPrintServiceExporter; +import net.sf.jasperreports.engine.export.JRPrintServiceExporterParameter; +import net.sf.jasperreports.engine.type.OrientationEnum; +import net.sf.jasperreports.engine.util.JRLoader; +import org.springframework.core.io.ClassPathResource; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.print.PrintService; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.sql.DataSource; +import java.awt.print.PrinterJob; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.Map; + +@RequestMapping(path = "/jasper-report") +@RestController +public class JasperReportController { + + + @Resource + private DataSource dataSource; + + @Resource + private JasperContext jasperContext; + + /** + * 导出文件 + * 支持pdf、html、png预览 + * 支持导出pdf、word、excel、html、png到用户指定目录 + * http://localhost:2222/jasper-report/export/pdf/inline/report3/sfdf + */ + @RequestMapping(path = "/export/{fileType}/{openType}/{sourceName}/{fileName}", method = RequestMethod.GET) + public void export(@PathVariable("fileType") final String fileType, + @PathVariable("openType") final String openType, + @PathVariable("sourceName") final String sourceName, + @PathVariable("fileName") final String fileName, + @RequestParam(required = false) Map query){ + FormatSuffixEnum suffixEnum = FormatSuffixEnum.getValue(fileType); + if (null == suffixEnum) { + return; + } + if (!jasperContext.setFormatSuffix(suffixEnum)) { + return; + } + JasperPrint jasperPrint = jasperContext.read(query, sourceName); + jasperContext.setFormatSuffix(suffixEnum); + jasperContext.executeExport(jasperPrint,openType,fileName,fileType); + } + + /** + * 预览并浏览器自动弹出打印 + */ + @RequestMapping(path = "/previewPrint/{reportName}", method = RequestMethod.GET) + public void previewPrint(@PathVariable("reportName") final String reportName, + @RequestParam(required = false) Map parameters, + HttpServletResponse response, HttpServletRequest request) + throws SQLException, JRException, IOException { + + parameters = parameters == null ? new HashMap<>() : parameters; //获取文件流 + ClassPathResource resource = new ClassPathResource(UserConstants.REPORT_JASPER_PATH + reportName + ".jasper"); + InputStream jasperStream = resource.getInputStream(); + JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperStream); + parameters.put("VendorName","测试厂商"); + //byte[] pdfStream = JasperRunManager.runReportToPdf(jasperReport, parameters, dataSource.getConnection()); + byte[] pdfStream = JasperRunManager.runReportToPdf(jasperReport, parameters, new JREmptyDataSource()); + PdfReader reader = new PdfReader(pdfStream); + ByteArrayOutputStream bos = new ByteArrayOutputStream(pdfStream.length); + try { + // 给pdf加上脚本实现自动打印 + StringBuffer script = new StringBuffer(); + script.append("this.print({bUI:false,bSilent:true,bShrinkToFit:false});"); + PdfStamper stamp = new PdfStamper(reader, bos); + stamp.setViewerPreferences(PdfWriter.HideMenubar + | PdfWriter.HideToolbar | PdfWriter.HideWindowUI); + stamp.addJavaScript(script.toString()); + stamp.close(); + } catch (Exception e) { + } + // 输出pdf + byte[] bytes = bos.toByteArray(); + if (bytes != null && bytes.length > 0) { + response.setContentType("application/pdf"); + response.setContentLength(bytes.length); + response.setHeader("Expires", "0"); + response.setHeader("Cache-Control", + "must-revalidate, post-check=0, pre-check=0"); + response.setHeader("Pragma", "public"); + ServletOutputStream ouputStream = response.getOutputStream(); + try { + ouputStream.write(bytes, 0, bytes.length); + ouputStream.flush(); + } finally { + if (ouputStream != null) { + try { + ouputStream.close(); + } catch (IOException ex) { + } + } + } + } + } + + /** + * 连接打印机打印 + */ + @RequestMapping(path = "/print/{sourceName}", method = RequestMethod.GET) + public void print( @PathVariable("sourceName") final String sourceName, + @RequestParam(required = false) Map query){ + JasperPrint jasperPrint = jasperContext.read(query, sourceName); + //设置打印方向 LANDSCAPE横向 PORTRAIT竖向 + jasperPrint.setOrientation(OrientationEnum.PORTRAIT); + //withPrintDialog表示在打印的时候是否显示打印机设置对话框 + try { + JasperPrintManager.printReport(jasperPrint, false);// 改true报错 + } catch (JRException e) { + e.printStackTrace(); + } + } + + /** + * 设置指定打印机打印 + */ + @RequestMapping(path = "/printByPrinterName/{sourceName}", method = RequestMethod.GET) + public void printByPrinterName( @PathVariable("sourceName") final String sourceName, + @RequestParam(required = false) Map query) throws JRException { + JasperPrint jasperPrint = jasperContext.read(query, sourceName); + //设置打印方向 LANDSCAPE横向 PORTRAIT竖向 + jasperPrint.setOrientation(OrientationEnum.PORTRAIT); + //withPrintDialog表示在打印的时候是否显示打印机设置对话框 + JasperPrintManager.printReport(jasperPrint, false);// 改true报错 + PrintService[] pss = PrinterJob.lookupPrintServices(); + PrintService ps = null; + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < pss.length; i++) { + String sps = pss[i].toString(); + sb.append(sps + "\n"); + //如果打印机名称相同 + if (sps.equalsIgnoreCase("Win32 Printer : Adobe PDF")) {// 可变参数,可让前端传参 + ps = pss[i]; + } + } + JRAbstractExporter je = new JRPrintServiceExporter(); + je.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); + //设置指定打印机 + je.setParameter(JRPrintServiceExporterParameter.PRINT_SERVICE, ps); + je.setParameter(JRPrintServiceExporterParameter.DISPLAY_PAGE_DIALOG, false); + je.setParameter(JRPrintServiceExporterParameter.DISPLAY_PRINT_DIALOG, false); + je.exportReport(); + } +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/report/utils/FormatSuffixEnum.java b/ktg-mes/src/main/java/com/ktg/mes/report/utils/FormatSuffixEnum.java new file mode 100644 index 0000000..f14c50f --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/report/utils/FormatSuffixEnum.java @@ -0,0 +1,24 @@ +package com.ktg.mes.report.utils; + +import java.util.Arrays; + +/** + * @author: create by libin + * @version: v1.0 + * @description: pl.piomin.jasperreport.enums + * @date:2020/4/15 + */ +public enum FormatSuffixEnum { + doc, + xls, + pdf, + html, + png, + csv, + odt, + ods; + + public static FormatSuffixEnum getValue(String value){ + return Arrays.stream(values()).filter(item -> item.name().equals(value)).findFirst().orElse(null); + } +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/report/utils/JasperContext.java b/ktg-mes/src/main/java/com/ktg/mes/report/utils/JasperContext.java new file mode 100644 index 0000000..eb3c756 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/report/utils/JasperContext.java @@ -0,0 +1,92 @@ +package com.ktg.mes.report.utils; + +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JasperFillManager; +import net.sf.jasperreports.engine.JasperPrint; +import net.sf.jasperreports.engine.JasperReport; +import net.sf.jasperreports.engine.util.JRLoader; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.ClassPathResource; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import javax.sql.DataSource; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.Map; + +/** + * @author: create by libin + * @version: v1.0 + * @description: pl.piomin.jasperreport.handler + * @date:2020/4/15 + */ +@Component +public final class JasperContext { + + @Resource + private DataSource dataSource; + + @Autowired + private JasperReportExport exportExcel, exportHtml, exportImage, exportPdf, exportWord; + + private JasperReportExport jasperReportExport; + + private JasperContext() { + } + + public boolean setFormatSuffix(FormatSuffixEnum suffix) { + boolean result = true; + switch (suffix) { + case doc: + jasperReportExport = exportWord; + break; + case xls: + jasperReportExport = exportExcel; + break; + case pdf: + jasperReportExport = exportPdf; + break; + case html: + jasperReportExport = exportHtml; + break; + case png: + jasperReportExport = exportImage; + break; + default: + result = false; + break; + } + return result; + } + + /** + * 读取资源 + * + * @return + */ + public JasperPrint read(Map query, String sourceName) { + query = query == null ? new HashMap<>() : query; //获取文件流 + ClassPathResource resource = new ClassPathResource("data" + File.separator + sourceName + ".jasper"); + try { + InputStream jasperStream = resource.getInputStream(); + JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperStream); + JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, query, dataSource.getConnection()); + return jasperPrint; + } catch (IOException e) { + e.printStackTrace(); + } catch (JRException e) { + e.printStackTrace(); + } catch (SQLException e) { + e.printStackTrace(); + } + return null; + } + + public void executeExport(JasperPrint jasperPrint, String openType, String fileName,String fileType) { + jasperReportExport.execute(jasperPrint, openType, fileName,fileType); + } +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/report/utils/JasperReportExport.java b/ktg-mes/src/main/java/com/ktg/mes/report/utils/JasperReportExport.java new file mode 100644 index 0000000..d8c9168 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/report/utils/JasperReportExport.java @@ -0,0 +1,43 @@ +package com.ktg.mes.report.utils; + +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JasperPrint; +import org.springframework.beans.factory.annotation.Autowired; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** + * @author: create by libin + * @version: v1.0 + * @description: pl.piomin.jasperreport.handler + * @date:2020/4/15 + */ +public abstract class JasperReportExport { + @Autowired + protected HttpServletResponse response; + @Autowired + protected HttpServletRequest request; + + public final void execute(JasperPrint jasperPrint, String openType, String fileName,String fileType){ + OpenTypeEnum openTypeEnum = OpenTypeEnum.getValue(openType); + if (openTypeEnum==null) { + openTypeEnum=OpenTypeEnum.inline; + } + initOpenType(openTypeEnum,fileName,fileType); + try { + executEexport(jasperPrint); + } catch (IOException e) { + e.printStackTrace(); + } catch (JRException e) { + e.printStackTrace(); + } + } + public abstract void initOpenType(OpenTypeEnum openType, String fileName,String fileType); + /** + * 导出 + */ + public abstract void executEexport(JasperPrint jasperPrint) throws IOException, JRException; + +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/report/utils/OpenTypeEnum.java b/ktg-mes/src/main/java/com/ktg/mes/report/utils/OpenTypeEnum.java new file mode 100644 index 0000000..44239c1 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/report/utils/OpenTypeEnum.java @@ -0,0 +1,24 @@ +package com.ktg.mes.report.utils; + +import java.util.Arrays; + +/** + * @author: create by libin + * @version: v1.0 + * @description: pl.piomin.jasperreport.enums + * @date:2020/4/15 + */ +public enum OpenTypeEnum { + /** + * 预览 + */ + inline, + /** + * 下载 + */ + attachment; + + public static OpenTypeEnum getValue(String value){ + return Arrays.stream(values()).filter(item -> item.name().equals(value)).findFirst().orElse(null); + } +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/report/utils/ReportHelper.java b/ktg-mes/src/main/java/com/ktg/mes/report/utils/ReportHelper.java new file mode 100644 index 0000000..2f15c1b --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/report/utils/ReportHelper.java @@ -0,0 +1,57 @@ +package com.ktg.mes.report.utils; + +import com.ktg.common.constant.UserConstants; +import net.sf.jasperreports.engine.*; +import net.sf.jasperreports.engine.base.JRBaseReport; +import net.sf.jasperreports.engine.export.JRHtmlExporterParameter; +import net.sf.jasperreports.j2ee.servlets.ImageServlet; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; +import java.lang.reflect.Field; +import java.util.Map; + +public class ReportHelper { + + public static void initReport(JasperReport report,String type){ + + if(UserConstants.REPORT_EXCEL_TYPE.equals(type))try{ + Field margin = JRBaseReport.class.getDeclaredField("leftMargin"); + margin.setAccessible(true); + margin.setInt(report, 0); + margin = JRBaseReport.class.getDeclaredField("topMargin"); + margin.setAccessible(true); + margin.setInt(report, 0); + margin = JRBaseReport.class.getDeclaredField("bottomMargin"); + margin.setAccessible(true); + margin.setInt(report, 0); + Field pageHeight = JRBaseReport.class.getDeclaredField("pageHeight"); + pageHeight.setAccessible(true); + pageHeight.setInt(report, 2147483647); + }catch (Exception e){ + + } + } + + public static void showHtml(String fileName, String reportFile, HttpServletRequest request, HttpServletResponse response, Map params, JRDataSource dataSource)throws JRException,IOException { + request.setCharacterEncoding("utf-8"); + response.setCharacterEncoding("utf-8"); + response.setContentType("text/html"); + + JRAbstractExporter exporter = null;//getJRExporter("HTML"); + JasperPrint jasperPrint = JasperFillManager.fillReport(reportFile, params, dataSource); + request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint); + + PrintWriter out = response.getWriter(); + exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); + exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out); + //exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE); + + + + } + + +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/report/utils/ThreadLocalUtil.java b/ktg-mes/src/main/java/com/ktg/mes/report/utils/ThreadLocalUtil.java new file mode 100644 index 0000000..469c5e5 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/report/utils/ThreadLocalUtil.java @@ -0,0 +1,84 @@ +package com.ktg.mes.report.utils; + +import java.util.*; + +public final class ThreadLocalUtil { + private static final ThreadLocal> threadLocal = new ThreadLocal() { + @Override + protected Map initialValue() { + return new HashMap(4); + } + }; + + public static Map getThreadLocal(){ + return threadLocal.get(); + } + public static T get(String key) { + Map map = (Map)threadLocal.get(); + return (T)map.get(key); + } + + public static T get(String key,T defaultValue) { + Map map = (Map)threadLocal.get(); + return (T)map.get(key) == null ? defaultValue : (T)map.get(key); + } + + public static void set(String key, Object value) { + Map map = (Map)threadLocal.get(); + map.put(key, value); + } + + public static void set(Map keyValueMap) { + Map map = (Map)threadLocal.get(); + map.putAll(keyValueMap); + } + + public static void remove() { + threadLocal.remove(); + } + + public static Map fetchVarsByPrefix(String prefix) { + Map vars = new HashMap<>(); + if( prefix == null ){ + return vars; + } + Map map = (Map)threadLocal.get(); + Set set = map.entrySet(); + + for( Map.Entry entry : set ){ + Object key = entry.getKey(); + if( key instanceof String ){ + if( ((String) key).startsWith(prefix) ){ + vars.put((String)key,(T)entry.getValue()); + } + } + } + return vars; + } + + public static T remove(String key) { + Map map = (Map)threadLocal.get(); + return (T)map.remove(key); + } + + public static void clear(String prefix) { + if( prefix == null ){ + return; + } + Map map = (Map)threadLocal.get(); + Set set = map.entrySet(); + List removeKeys = new ArrayList<>(); + + for( Map.Entry entry : set ){ + Object key = entry.getKey(); + if( key instanceof String ){ + if( ((String) key).startsWith(prefix) ){ + removeKeys.add((String)key); + } + } + } + for( String key : removeKeys ){ + map.remove(key); + } + } +} \ No newline at end of file diff --git a/ktg-mes/src/main/java/com/ktg/mes/report/utils/impl/ExportExcel.java b/ktg-mes/src/main/java/com/ktg/mes/report/utils/impl/ExportExcel.java new file mode 100644 index 0000000..93c7b28 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/report/utils/impl/ExportExcel.java @@ -0,0 +1,43 @@ +package com.ktg.mes.report.utils.impl; + + +import com.ktg.mes.report.utils.JasperReportExport; +import com.ktg.mes.report.utils.OpenTypeEnum; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JasperPrint; +import net.sf.jasperreports.engine.export.JRXlsExporter; +import net.sf.jasperreports.export.SimpleExporterInput; +import net.sf.jasperreports.export.SimpleOutputStreamExporterOutput; +import net.sf.jasperreports.export.SimpleXlsReportConfiguration; +import org.springframework.stereotype.Service; + +import java.io.IOException; + +/** + * @author: create by libin + * @version: v1.0 + * @description: com.yingyinqi.jasperreport.handler + * @date:2020/4/15 + */ +@Service +public class ExportExcel extends JasperReportExport { + + @Override + public void initOpenType(OpenTypeEnum openType, String fileName, String fileType) { + response.setContentType("application/vnd_ms-excel;charset=utf-8"); + response.setHeader("Content-Disposition", "attachment;filename=template.xls"); + } + + @Override + public void executEexport(JasperPrint jasperPrint) throws IOException, JRException { + JRXlsExporter exporter = new JRXlsExporter(); + exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); + exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(response.getOutputStream())); + SimpleXlsReportConfiguration configuration = new SimpleXlsReportConfiguration(); + configuration.setOnePagePerSheet(true); + configuration.setDetectCellType(true); + configuration.setCollapseRowSpan(false); + exporter.setConfiguration(configuration); + exporter.exportReport(); + } +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/report/utils/impl/ExportHtml.java b/ktg-mes/src/main/java/com/ktg/mes/report/utils/impl/ExportHtml.java new file mode 100644 index 0000000..11a5381 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/report/utils/impl/ExportHtml.java @@ -0,0 +1,45 @@ +package com.ktg.mes.report.utils.impl; + + +import com.ktg.mes.report.utils.JasperReportExport; +import com.ktg.mes.report.utils.OpenTypeEnum; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JasperPrint; +import net.sf.jasperreports.engine.export.HtmlExporter; +import net.sf.jasperreports.export.SimpleExporterInput; +import net.sf.jasperreports.export.SimpleHtmlExporterConfiguration; +import net.sf.jasperreports.export.SimpleHtmlExporterOutput; +import org.springframework.stereotype.Service; + +import java.io.IOException; + +/** + * @author: create by libin + * @version: v1.0 + * @description: com.yingyinqi.jasperreport.handler + * @date:2020/4/15 + */ +@Service +public class ExportHtml extends JasperReportExport { + + @Override + public void initOpenType(OpenTypeEnum openType, String fileName, String fileType) { + if (openType.equals(OpenTypeEnum.attachment)) { + response.setContentType("text/html; charset=utf-8"); + response.setHeader("Content-disposition", "attachment; filename=file.html"); + response.setHeader("Pragma", "No-cache"); + response.setHeader("Cache-Control", "No-cache"); + response.setDateHeader("Expires", 0); + } + } + + @Override + public void executEexport(JasperPrint jasperPrint) throws IOException, JRException { + HtmlExporter exporter = new HtmlExporter(); + exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); + exporter.setExporterOutput(new SimpleHtmlExporterOutput(response.getOutputStream())); + exporter.setConfiguration(new SimpleHtmlExporterConfiguration()); + exporter.exportReport(); + } +} + diff --git a/ktg-mes/src/main/java/com/ktg/mes/report/utils/impl/ExportImage.java b/ktg-mes/src/main/java/com/ktg/mes/report/utils/impl/ExportImage.java new file mode 100644 index 0000000..7dfb64a --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/report/utils/impl/ExportImage.java @@ -0,0 +1,54 @@ +package com.ktg.mes.report.utils.impl; + + +import com.ktg.mes.report.utils.JasperReportExport; +import com.ktg.mes.report.utils.OpenTypeEnum; +import com.ktg.mes.report.utils.ThreadLocalUtil; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JasperPrint; +import net.sf.jasperreports.engine.export.JRGraphics2DExporter; +import net.sf.jasperreports.export.SimpleExporterInput; +import net.sf.jasperreports.export.SimpleGraphics2DExporterOutput; +import net.sf.jasperreports.export.SimpleGraphics2DReportConfiguration; +import org.springframework.stereotype.Service; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.IOException; + +/** + * @author: create by libin + * @version: v1.0 + * @description: com.yingyinqi.jasperreport.handler + * @date:2020/4/15 + */ +@Service +public class ExportImage extends JasperReportExport { + private static String FILE_TYPE="fileType"; + @Override + public void initOpenType(OpenTypeEnum openType, String fileName, String fileType) { + response.setContentType("image/png"); + if (openType.equals(OpenTypeEnum.attachment)) { + // response.setHeader("Content-disposition", "attachment; filename="+fileName+"."+fileType); + response.setHeader("Content-disposition", "attachment;"); + } + ThreadLocalUtil.set(FILE_TYPE,fileType); + } + + @Override + public void executEexport(JasperPrint jasperPrint) throws IOException, JRException { + JRGraphics2DExporter exporter = new JRGraphics2DExporter(); + //创建一个影像对象,设置宽高,可自定义 + BufferedImage bufferedImage = new BufferedImage(jasperPrint.getPageWidth(), jasperPrint.getPageHeight(), BufferedImage.TYPE_INT_RGB); + Graphics2D graphics2D = (Graphics2D) bufferedImage.getGraphics(); + exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); + SimpleGraphics2DExporterOutput graphics2DOutput = new SimpleGraphics2DExporterOutput(); + graphics2DOutput.setGraphics2D(graphics2D); + exporter.setExporterOutput(graphics2DOutput); + exporter.setConfiguration(new SimpleGraphics2DReportConfiguration()); + exporter.exportReport(); + graphics2D.dispose();// 释放资源信息 + ImageIO.write(bufferedImage, ThreadLocalUtil.get(FILE_TYPE), response.getOutputStream()); // 生成图片 + } +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/report/utils/impl/ExportPdf.java b/ktg-mes/src/main/java/com/ktg/mes/report/utils/impl/ExportPdf.java new file mode 100644 index 0000000..a7c3dde --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/report/utils/impl/ExportPdf.java @@ -0,0 +1,41 @@ +package com.ktg.mes.report.utils.impl; + + +import com.ktg.mes.report.utils.JasperReportExport; +import com.ktg.mes.report.utils.OpenTypeEnum; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JasperExportManager; +import net.sf.jasperreports.engine.JasperPrint; +import org.springframework.stereotype.Service; + +import java.io.IOException; +import java.io.OutputStream; + +/** + * @author: create by libin + * @version: v1.0 + * @description: com.yingyinqi.jasperreport.handler + * @date:2020/4/15 + */ +@Service +public class ExportPdf extends JasperReportExport { + + @Override + public void initOpenType(OpenTypeEnum openType, String fileName, String fileType) { + response.setContentType("application/pdf"); + if (openType.equals(OpenTypeEnum.attachment)) { + response.setHeader("Content-disposition", "attachment; filename=file.pdf"); + response.setHeader("Pragma", "No-cache"); + response.setHeader("Cache-Control", "No-cache"); + response.setDateHeader("Expires", 0); + }else{ + response.setHeader("Content-Disposition", "inline"); + } + } + + @Override + public void executEexport(JasperPrint jasperPrint) throws IOException, JRException { + final OutputStream outputStream = response.getOutputStream(); + JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream); + } +} diff --git a/ktg-mes/src/main/java/com/ktg/mes/report/utils/impl/ExportWord.java b/ktg-mes/src/main/java/com/ktg/mes/report/utils/impl/ExportWord.java new file mode 100644 index 0000000..17a6481 --- /dev/null +++ b/ktg-mes/src/main/java/com/ktg/mes/report/utils/impl/ExportWord.java @@ -0,0 +1,40 @@ +package com.ktg.mes.report.utils.impl; + +import com.ktg.mes.report.utils.JasperReportExport; +import com.ktg.mes.report.utils.OpenTypeEnum; +import net.sf.jasperreports.engine.DefaultJasperReportsContext; +import net.sf.jasperreports.engine.JRException; +import net.sf.jasperreports.engine.JasperPrint; +import net.sf.jasperreports.engine.export.ooxml.JRDocxExporter; +import net.sf.jasperreports.export.SimpleDocxExporterConfiguration; +import net.sf.jasperreports.export.SimpleExporterInput; +import net.sf.jasperreports.export.SimpleOutputStreamExporterOutput; +import org.springframework.stereotype.Service; + +import java.io.IOException; +import java.io.OutputStream; + +/** + * @author: create by libin + * @version: v1.0 + * @description: com.yingyinqi.jasperreport.handler + * @date:2020/4/15 + */ +@Service +public class ExportWord extends JasperReportExport { + @Override + public void initOpenType(OpenTypeEnum openType, String fileName, String fileType) { + response.setContentType("application/msword"); + response.setHeader("Content-Disposition", "attachment; filename=file.doc"); + } + + @Override + public void executEexport(JasperPrint jasperPrint) throws IOException, JRException { + JRDocxExporter exporter = new JRDocxExporter(DefaultJasperReportsContext.getInstance()); + exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); + exporter.setConfiguration(new SimpleDocxExporterConfiguration()); + OutputStream outputStream = response.getOutputStream(); + exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(outputStream)); + exporter.exportReport(); + } +} diff --git a/ktg-mes/src/main/resources/jasperreports_extension.properties b/ktg-mes/src/main/resources/jasperreports_extension.properties new file mode 100644 index 0000000..dcbf3ad --- /dev/null +++ b/ktg-mes/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=reports/fonts/fonts.xml \ No newline at end of file diff --git a/ktg-mes/src/main/resources/reports/fonts/fonts.xml b/ktg-mes/src/main/resources/reports/fonts/fonts.xml new file mode 100644 index 0000000..0542524 --- /dev/null +++ b/ktg-mes/src/main/resources/reports/fonts/fonts.xml @@ -0,0 +1,16 @@ + + + + + reports/fonts/msyh.ttf + reports/fonts/msyh.ttf + reports/fonts/msyh.ttf + reports/fonts/msyh.ttf + Identity-H + true + + '微软雅黑', Arial, Helvetica, sans-serif + '微软雅黑', Arial, Helvetica, sans-serif + + + \ No newline at end of file diff --git a/ktg-mes/src/main/resources/reports/fonts/msyh.ttf b/ktg-mes/src/main/resources/reports/fonts/msyh.ttf new file mode 100644 index 0000000..a526593 Binary files /dev/null and b/ktg-mes/src/main/resources/reports/fonts/msyh.ttf differ diff --git a/ktg-mes/src/main/resources/reports/jasper/IQC.jasper b/ktg-mes/src/main/resources/reports/jasper/IQC.jasper new file mode 100644 index 0000000..e909efc Binary files /dev/null and b/ktg-mes/src/main/resources/reports/jasper/IQC.jasper differ diff --git a/ktg-mes/src/main/resources/reports/jasper/Test.jasper b/ktg-mes/src/main/resources/reports/jasper/Test.jasper new file mode 100644 index 0000000..f008209 Binary files /dev/null and b/ktg-mes/src/main/resources/reports/jasper/Test.jasper differ diff --git a/ktg-mes/src/main/resources/reports/jrxml/IQC.jrxml b/ktg-mes/src/main/resources/reports/jrxml/IQC.jrxml new file mode 100644 index 0000000..1dfbd3f --- /dev/null +++ b/ktg-mes/src/main/resources/reports/jrxml/IQC.jrxml @@ -0,0 +1,712 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <band height="270" splitType="Stretch"> + <staticText> + <reportElement x="345" y="30" width="70" height="30" uuid="c0322d2e-0617-46d0-8530-37480dd2f435"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <text><![CDATA[单据名称]]></text> + </staticText> + <staticText> + <reportElement x="345" y="0" width="70" height="30" uuid="a38cbf3a-4def-4b9d-bb1c-5f422264fb53"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <text><![CDATA[单据编号]]></text> + </staticText> + <textField> + <reportElement x="415" y="0" width="140" height="30" uuid="2024fada-a3a7-4537-b28f-f9395f6bcfd7"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <textFieldExpression><![CDATA[$P{iqcCode}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="415" y="30" width="140" height="30" uuid="ec5c9e40-f01a-4b1a-8507-bd41bec6b865"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <textFieldExpression><![CDATA[$P{iqcName}]]></textFieldExpression> + </textField> + <staticText> + <reportElement x="0" y="30" width="345" height="30" uuid="bc15f6bb-d141-4a55-9305-870eaffeb045"/> + <box> + <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <text><![CDATA[IQC来料检验单]]></text> + </staticText> + <textField> + <reportElement x="0" y="0" width="345" height="30" uuid="3e367393-cf32-4a9f-b99e-c62201b8e7f4"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font size="14"/> + </textElement> + <textFieldExpression><![CDATA[$P{CompanyName}]]></textFieldExpression> + </textField> + <staticText> + <reportElement x="415" y="60" width="70" height="30" uuid="b095b7c8-330a-4557-ad01-478f2016cd61"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <text><![CDATA[来料数量]]></text> + </staticText> + <staticText> + <reportElement x="415" y="90" width="70" height="30" uuid="8d68a624-9eef-4755-9ba8-303769eff5af"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <text><![CDATA[检测数量]]></text> + </staticText> + <staticText> + <reportElement x="415" y="120" width="70" height="30" uuid="cd4fed4c-16d9-418a-ad60-17687c072587"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <text><![CDATA[检测结论]]></text> + </staticText> + <textField> + <reportElement x="485" y="60" width="70" height="30" uuid="504c5a36-0397-40aa-ad3b-6d79674d83cf"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <textFieldExpression><![CDATA[$P{quantity_recived}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="485" y="90" width="70" height="30" uuid="419d27ea-8a60-4364-aa0a-2ff03b30bdf2"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <textFieldExpression><![CDATA[$P{quantity_check}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="485" y="120" width="70" height="30" uuid="6545b673-3e63-41f7-a21a-f702d046ec71"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <textFieldExpression><![CDATA[$P{check_result}]]></textFieldExpression> + </textField> + <staticText> + <reportElement x="205" y="60" width="70" height="30" uuid="ef05d3a8-643e-41e1-8cc0-216ba0a0088d"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <text><![CDATA[来料日期]]></text> + </staticText> + <staticText> + <reportElement x="205" y="90" width="70" height="30" uuid="0d52b9a8-4c2d-4fe3-8b16-34aebfb16d90"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <text><![CDATA[检测日期]]></text> + </staticText> + <staticText> + <reportElement x="205" y="120" width="70" height="30" uuid="76f9a4d3-a601-4cd3-9fa2-80adbfaac3cd"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <text><![CDATA[供应商批次]]></text> + </staticText> + <textField pattern="yyyy-MM-dd"> + <reportElement x="275" y="60" width="140" height="30" uuid="1d427252-34cc-45e8-b1c6-7f0dec5768e4"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <textFieldExpression><![CDATA[$P{recive_date}]]></textFieldExpression> + </textField> + <textField pattern="yyyy-MM-dd"> + <reportElement x="275" y="90" width="140" height="30" uuid="802b6110-9057-4728-b55e-2d8d86e1df94"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <textFieldExpression><![CDATA[$P{inspect_date}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="275" y="120" width="140" height="30" uuid="ff7464f5-54ec-4074-9269-3db11f952592"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <textFieldExpression><![CDATA[$P{vendor_batch}]]></textFieldExpression> + </textField> + <staticText> + <reportElement x="0" y="60" width="65" height="30" uuid="9c5a58d3-7d3e-4110-8e2f-8ebb17c6729a"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <text><![CDATA[产品编码]]></text> + </staticText> + <staticText> + <reportElement x="0" y="90" width="65" height="30" uuid="83ab7751-a28e-4a84-95b9-c9e88b6aa74b"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <text><![CDATA[产品名称]]></text> + </staticText> + <staticText> + <reportElement x="0" y="120" width="65" height="30" uuid="206f790e-225f-4cd4-b2dd-f8a431e4faeb"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <text><![CDATA[供应商名称]]></text> + </staticText> + <textField> + <reportElement x="65" y="60" width="140" height="30" uuid="8afa0f71-05e3-4d6c-8269-6b40b42e1b67"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <textFieldExpression><![CDATA[$P{itemCode}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="65" y="90" width="140" height="30" uuid="73960c5b-8da3-4d59-a3db-02b6faacd03d"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <textFieldExpression><![CDATA[$P{itemName}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="65" y="120" width="140" height="30" uuid="f424d4f0-a168-4b12-bcb7-345a952c1da1"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <textFieldExpression><![CDATA[$P{vendorName}]]></textFieldExpression> + </textField> + <staticText> + <reportElement x="485" y="150" width="70" height="30" uuid="e9c99552-bdc5-467b-9287-cd54a98e9dba"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <text><![CDATA[轻微缺陷]]></text> + </staticText> + <staticText> + <reportElement x="415" y="150" width="70" height="30" uuid="bb72998e-77ec-46ba-bcd7-4e621f7f2104"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <text><![CDATA[严重缺陷]]></text> + </staticText> + <staticText> + <reportElement x="345" y="150" width="70" height="30" uuid="b5215a9e-7b43-4cdb-9d18-2bad6414df0c"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <text><![CDATA[致命缺陷]]></text> + </staticText> + <staticText> + <reportElement x="275" y="150" width="70" height="30" uuid="1bad0dee-3ad1-4da6-a995-259e3cb71ea0"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <text><![CDATA[不良品数量]]></text> + </staticText> + <textField> + <reportElement x="345" y="180" width="70" height="30" uuid="90a4a922-2bb9-4e37-9ba2-4da0e36a8b78"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <textFieldExpression><![CDATA[$P{cr_rate}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="415" y="180" width="70" height="30" uuid="ecdcd7d8-5bd1-4ca7-a51f-df78631b7414"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <textFieldExpression><![CDATA[$P{maj_rate}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="485" y="180" width="70" height="30" uuid="dcac35cd-8caf-48a9-b148-9fdb7513a61c"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <textFieldExpression><![CDATA[$P{min_rate}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="275" y="180" width="70" height="30" uuid="c335f554-a348-498a-b867-3c834993e0ea"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <textFieldExpression><![CDATA[$P{quantity_max_unqualified}]]></textFieldExpression> + </textField> + <staticText> + <reportElement x="0" y="150" width="275" height="60" uuid="ff2aacb3-398e-4411-abcd-eee60f54ca44"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <text><![CDATA[AQL收货标准]]></text> + </staticText> + <staticText> + <reportElement x="0" y="210" width="275" height="60" uuid="fee1cba1-777a-4b15-ab14-fb6df739fdc7"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <text><![CDATA[检测结果]]></text> + </staticText> + <staticText> + <reportElement x="275" y="210" width="70" height="30" uuid="e09a71d5-99e4-4d5c-95ab-aa07ab0a43e4"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <text><![CDATA[不良品数量]]></text> + </staticText> + <staticText> + <reportElement x="345" y="210" width="70" height="30" uuid="88a1cb41-ad4b-4cc1-b4ba-47d4ff3839e5"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <text><![CDATA[致命缺陷]]></text> + </staticText> + <staticText> + <reportElement x="415" y="210" width="70" height="30" uuid="34b485c5-5f28-4308-bae2-300003bf5800"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <text><![CDATA[严重缺陷]]></text> + </staticText> + <staticText> + <reportElement x="485" y="210" width="70" height="30" uuid="c9a0a319-c39d-4035-86b5-7bcbf81fc7ff"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <text><![CDATA[轻微缺陷]]></text> + </staticText> + <textField> + <reportElement x="345" y="240" width="70" height="30" uuid="f73fc702-9a22-48c0-bbab-1c71582abb05"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <textFieldExpression><![CDATA[$P{cr_quantity}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="415" y="240" width="70" height="30" uuid="528ff6a3-2a6d-46ca-8954-379fbde7c6d0"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <textFieldExpression><![CDATA[$P{maj_quantity}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="485" y="240" width="70" height="30" uuid="60486212-eec7-4f05-aae5-91915ca2a0ff"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <textFieldExpression><![CDATA[$P{min_quantity}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="275" y="240" width="70" height="30" uuid="d187681d-396d-4c62-a1f8-e8992bd57cdc"/> + <box> + <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/> + </box> + <textElement textAlignment="Center" verticalAlignment="Middle"/> + <textFieldExpression><![CDATA[$P{quantity_unqualified}]]></textFieldExpression> + </textField> + </band> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ktg-mes/src/main/resources/reports/jrxml/Test.jrxml b/ktg-mes/src/main/resources/reports/jrxml/Test.jrxml new file mode 100644 index 0000000..b034305 --- /dev/null +++ b/ktg-mes/src/main/resources/reports/jrxml/Test.jrxml @@ -0,0 +1,45 @@ + + + + + + + + + + + + <band height="79" splitType="Stretch"> + <staticText> + <reportElement x="0" y="13" width="163" height="53" uuid="25318a60-d2bb-42b2-9f08-c6277232a0da"/> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font fontName="微软雅黑" size="20"/> + </textElement> + <text><![CDATA[IQC来料检验]]></text> + </staticText> + <textField> + <reportElement x="330" y="13" width="214" height="53" uuid="92efd0d6-6694-4cca-a831-721efc02256c"/> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font fontName="微软雅黑" size="14"/> + </textElement> + <textFieldExpression><![CDATA[$P{VendorName}]]></textFieldExpression> + </textField> + <staticText> + <reportElement x="181" y="22" width="100" height="30" uuid="26473f08-8c2e-4048-893e-3b0eb476f4cb"/> + <textElement> + <font fontName="微软雅黑"/> + </textElement> + <text><![CDATA[来料检验单]]></text> + </staticText> + </band> + + + + + + + + + + +