Commit 79a00cdd by yuwei

2.0.0项目初始化

parent 5c659856
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>datax-common</artifactId>
<groupId>cn.datax</groupId>
<version>2.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<version>2.0.0</version>
<artifactId>datax-common-jasperreport</artifactId>
<dependencies>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>${jasperreports.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package cn.datax.common.jasperreport.utils;
import lombok.extern.slf4j.Slf4j;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.export.HtmlExporter;
import net.sf.jasperreports.export.HtmlExporterOutput;
import net.sf.jasperreports.export.SimpleExporterInput;
import net.sf.jasperreports.export.SimpleHtmlExporterOutput;
import net.sf.jasperreports.export.SimpleHtmlReportConfiguration;
import org.springframework.core.io.ClassPathResource;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.List;
import java.util.Map;
@Slf4j
public class JasperReportUtil {
final static String jasperDir = "jaspers";
public static String getJasperFileDir(String fileName) {
return jasperDir + File.separator + fileName + ".jasper";
}
private static String getContentType(ReportType type) {
String contentType;
switch (type) {
case HTML:
contentType = "text/html;charset=utf-8";
break;
case PDF:
contentType = "application/pdf";
break;
case XLS:
contentType = "application/vnd.ms-excel";
break;
case XLSX:
contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
break;
case XML:
contentType = "text/xml";
break;
case RTF:
contentType = "application/rtf";
break;
case CSV:
contentType = "text/plain";
break;
case DOC:
contentType = "application/msword";
break;
default:
contentType = "text/html;charset=utf-8";
}
return contentType;
}
static JasperPrint getJasperPrint(InputStream jasperStream, Map parameters, List<?> list) throws JRException {
JRDataSource dataSource;
if (null == list || list.size() == 0) {
dataSource = new JREmptyDataSource();
} else {
dataSource = new JRBeanCollectionDataSource(list);
}
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperStream, parameters, dataSource);
return jasperPrint;
}
public static void exportToPdf(String jasperPath, Map parameters, List<?> list, HttpServletResponse response) throws Exception {
OutputStream outputStream = response.getOutputStream();
try {
ClassPathResource resource = new ClassPathResource(jasperPath);
response.setContentType(getContentType(ReportType.PDF));
InputStream jasperStream = resource.getInputStream();
JasperPrint jasperPrint = getJasperPrint(jasperStream, parameters, list);
JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream);
} catch (Exception e) {
log.error("读取报表异常", e);
outputStream.write("读取报表异常".getBytes());
} finally {
outputStream.flush();
outputStream.close();
}
}
public static void exportToHtml(String jasperPath, Map parameters, List<?> list, HttpServletResponse response) throws Exception {
response.setHeader("Content-type", "text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType(getContentType(ReportType.HTML));
PrintWriter out = response.getWriter();
HtmlExporter exporter = new HtmlExporter();
try {
ClassPathResource resource = new ClassPathResource(jasperPath);
InputStream jasperStream = resource.getInputStream();
JasperPrint jasperPrint = getJasperPrint(jasperStream, parameters, list);
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
SimpleHtmlReportConfiguration configuration = new SimpleHtmlReportConfiguration();
exporter.setConfiguration(configuration);
HtmlExporterOutput outPut = new SimpleHtmlExporterOutput(out);
exporter.setExporterOutput(outPut);
exporter.exportReport();
} catch (Exception e) {
log.error("读取报表异常", e);
out.write("读取报表异常");
} finally {
out.flush();
out.close();
}
}
public enum ReportType {
HTML,
PDF,
XLS,
XLSX,
XML,
RTF,
CSV,
DOC
}
}
net.sf.jasperreports.extension.registry.factory.simple.font.families=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.dejavu=jaspers/fonts/fonts.xml
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
<fontFamily name="微软雅黑">
<normal>jaspers/fonts/msyh.ttf</normal>
<bold>jaspers/fonts/msyh.ttf</bold>
<italic>jaspers/fonts/msyh.ttf</italic>
<boldItalic>jaspers/fonts/msyh.ttf</boldItalic>
<pdfEncoding>Identity-H</pdfEncoding>
<pdfEmbedded>true</pdfEmbedded>
<exportFonts>
<export key="net.sf.jasperreports.html">'微软雅黑', Arial, Helvetica, sans-serif</export>
<export key="net.sf.jasperreports.xhtml">'微软雅黑', Arial, Helvetica, sans-serif</export>
</exportFonts>
</fontFamily>
</fontFamilies>
......@@ -22,5 +22,6 @@
<module>datax-common-office</module>
<module>datax-common-dictionary</module>
<module>datax-common-qrcode</module>
<module>datax-common-jasperreport</module>
</modules>
</project>
\ No newline at end of file
......@@ -69,6 +69,11 @@
<artifactId>system-service-api</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>cn.datax</groupId>
<artifactId>datax-common-jasperreport</artifactId>
<version>2.0.0</version>
</dependency>
</dependencies>
<build>
......
......@@ -3,6 +3,7 @@ package cn.datax.service.system.controller;
import cn.datax.common.base.BaseController;
import cn.datax.common.base.DataScope;
import cn.datax.common.core.R;
import cn.datax.common.jasperreport.utils.JasperReportUtil;
import cn.datax.service.system.api.entity.UserEntity;
import cn.datax.service.system.api.query.UserQuery;
import cn.datax.service.system.service.UserService;
......@@ -12,9 +13,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/test")
......@@ -36,4 +41,52 @@ public class TestController extends BaseController {
IPage<UserEntity> page = userService.pageDataScope(new Page<>(userQuery.getPageNum(), userQuery.getPageSize()), queryWrapper, new DataScope("dept_id", "create_by"));
return R.ok().setData(page);
}
@GetMapping("/jasper/{type}")
public void getReport(@PathVariable("type") String reportType, HttpServletResponse response) throws Exception {
HashMap<String, Object> parameters = new HashMap<>();
List<Map> teachList = new ArrayList<>();
Map t1=new HashMap();
t1.put("name","张老师");
t1.put("job","语文老师");
teachList.add(t1);
Map t2=new HashMap();
t2.put("name","王老师");
t2.put("job","数学老师");
teachList.add(t2);
Map t3=new HashMap();
t3.put("name","刘老师");
t3.put("job","英语老师");
teachList.add(t3);
parameters.put("teachList", teachList);
List<HashMap> list = new ArrayList<>();
for (int i = 1; i < 6; i++) {
HashMap<String, Object> item = new HashMap<>();
item.put("grade", i+"年级学生信息:");
List<Map> studentList=new ArrayList<>();
Map s1=new HashMap();
s1.put("name","张"+i);
s1.put("age",i+"");
s1.put("sex",i%2==0?"男":"女");
studentList.add(s1);
Map s2=new HashMap();
s2.put("name","王"+i);
s2.put("age",i+"");
s2.put("sex",i%2==0?"男":"女");
studentList.add(s2);
Map s3=new HashMap();
s3.put("name","刘"+i);
s3.put("age",i+"");
s3.put("sex",i%2==0?"男":"女");
studentList.add(s3);
item.put("studentList", studentList);
list.add(item);
}
String jasperPath = JasperReportUtil.getJasperFileDir("report");
if (reportType.equals("pdf")) {
JasperReportUtil.exportToPdf(jasperPath, parameters, list, response);
} else if (reportType.equals("html")) {
JasperReportUtil.exportToHtml(jasperPath, parameters, list, response);
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.9.0.final using JasperReports Library version 6.9.0-cb8f9004be492ccc537180b49c026951f4220bf3 -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Blank_A4" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="38344e02-d6c7-4511-b933-c2fd86a66ab6">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
<style name="Table_TH" mode="Opaque" backcolor="#F0F8FF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
<topPen lineWidth="0.5" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<style name="Table_CH" mode="Opaque" backcolor="#BFE1FF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
<topPen lineWidth="0.5" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<style name="Table_TD" mode="Opaque" backcolor="#FFFFFF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
<topPen lineWidth="0.5" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<style name="Table 1_TH" mode="Opaque" backcolor="#F0F8FF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
<topPen lineWidth="0.5" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<style name="Table 1_CH" mode="Opaque" backcolor="#BFE1FF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
<topPen lineWidth="0.5" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<style name="Table 1_TD" mode="Opaque" backcolor="#FFFFFF">
<box>
<pen lineWidth="0.5" lineColor="#000000"/>
<topPen lineWidth="0.5" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineColor="#000000"/>
</box>
</style>
<subDataset name="teachDataset" uuid="61f09c4c-6208-4e8e-91ec-58ea808b15d2">
<queryString>
<![CDATA[]]>
</queryString>
<field name="name" class="java.lang.String"/>
<field name="job" class="java.lang.String"/>
</subDataset>
<subDataset name="studentDataset" uuid="a4321f7a-4629-42f5-86ea-942290d71273">
<queryString>
<![CDATA[]]>
</queryString>
<field name="name" class="java.lang.String"/>
<field name="age" class="java.lang.String"/>
<field name="sex" class="java.lang.String"/>
</subDataset>
<parameter name="teachList" class="java.util.List"/>
<queryString>
<![CDATA[]]>
</queryString>
<field name="grade" class="java.lang.String"/>
<field name="studentList" class="java.util.List"/>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="100" splitType="Stretch">
<staticText>
<reportElement x="152" y="30" width="250" height="30" uuid="8bf85237-ab47-4d67-a6cb-9d8ba52749d7"/>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font size="18" isBold="true"/>
</textElement>
<text><![CDATA[this is a title]]></text>
</staticText>
</band>
</title>
<pageHeader>
<band height="110" splitType="Stretch">
<componentElement>
<reportElement x="10" y="40" width="410" height="60" uuid="2e1994ce-15a4-42c5-ac3f-67e6fb6c4a4e">
<property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.VerticalRowLayout"/>
<property name="com.jaspersoft.studio.table.style.table_header" value="Table_TH"/>
<property name="com.jaspersoft.studio.table.style.column_header" value="Table_CH"/>
<property name="com.jaspersoft.studio.table.style.detail" value="Table_TD"/>
</reportElement>
<jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
<datasetRun subDataset="teachDataset" uuid="c9528920-36a7-4ff0-8bae-17543c2d6e43">
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{teachList})]]></dataSourceExpression>
</datasetRun>
<jr:column width="200" uuid="c288893e-544d-42ee-9ace-4561619ee17a">
<jr:columnHeader style="Table_CH" height="30">
<staticText>
<reportElement x="0" y="0" width="200" height="30" uuid="1eb4a56e-1c0b-4826-bb71-b087090b5405"/>
<textElement>
<font fontName="微软雅黑" size="16"/>
</textElement>
<text><![CDATA[name]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table_TD" height="30">
<textField>
<reportElement x="0" y="0" width="200" height="30" uuid="3b533ed6-eaf9-45a9-a8d8-83b5bec89a40"/>
<textElement>
<font fontName="微软雅黑" size="16"/>
</textElement>
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="200" uuid="05c82473-70e0-4ae1-b62e-1d6c56f6526e">
<jr:columnHeader style="Table_CH" height="30">
<staticText>
<reportElement x="0" y="0" width="200" height="30" uuid="0c644eb6-98e0-4313-a6e2-f66e3dfa1c7b"/>
<textElement>
<font fontName="微软雅黑" size="16"/>
</textElement>
<text><![CDATA[job]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table_TD" height="30">
<textField>
<reportElement x="0" y="0" width="200" height="30" uuid="c93b1e9c-a2c0-4057-b78f-9f7128f00f82"/>
<textElement>
<font fontName="微软雅黑" size="16"/>
</textElement>
<textFieldExpression><![CDATA[$F{job}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
</jr:table>
</componentElement>
<staticText>
<reportElement x="10" y="5" width="120" height="30" uuid="74f13250-da6c-4161-82a9-1c78ad0cc711"/>
<textElement>
<font fontName="微软雅黑" size="18"/>
</textElement>
<text><![CDATA[教师信息:]]></text>
</staticText>
</band>
</pageHeader>
<detail>
<band height="124" splitType="Stretch">
<componentElement>
<reportElement x="10" y="48" width="555" height="70" uuid="3978dd9b-61f1-4d9f-a193-a9440617a405">
<property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.VerticalRowLayout"/>
<property name="com.jaspersoft.studio.table.style.table_header" value="Table 1_TH"/>
<property name="com.jaspersoft.studio.table.style.column_header" value="Table 1_CH"/>
<property name="com.jaspersoft.studio.table.style.detail" value="Table 1_TD"/>
</reportElement>
<jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
<datasetRun subDataset="studentDataset" uuid="1b899de9-4598-4e98-bb1d-5ccca8806500">
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{studentList})]]></dataSourceExpression>
</datasetRun>
<jr:column width="150" uuid="d1d6b41e-2f6c-448e-8e69-91d90af3ef35">
<jr:columnHeader style="Table 1_CH" height="30">
<staticText>
<reportElement x="0" y="0" width="150" height="30" uuid="d4afdf7e-c21f-465d-aa89-b7a5bd6cfbba"/>
<textElement>
<font fontName="微软雅黑" size="16"/>
</textElement>
<text><![CDATA[name]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table 1_TD" height="30">
<textField>
<reportElement x="0" y="0" width="150" height="30" uuid="1125b5da-51c5-4788-862e-c1bcf44ba925"/>
<textElement>
<font fontName="微软雅黑" size="16"/>
</textElement>
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="150" uuid="c2436b06-a277-4734-b20f-9267abd4fbc1">
<jr:columnHeader style="Table 1_CH" height="30">
<staticText>
<reportElement x="0" y="0" width="150" height="30" uuid="c96df6f3-a619-40c1-800b-7c2da2d2b213"/>
<textElement>
<font fontName="微软雅黑" size="16"/>
</textElement>
<text><![CDATA[age]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table 1_TD" height="30">
<textField>
<reportElement x="0" y="0" width="150" height="30" uuid="5f2b3646-1123-483a-ad59-88861acd135a"/>
<textElement>
<font fontName="微软雅黑" size="16"/>
</textElement>
<textFieldExpression><![CDATA[$F{age}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
<jr:column width="150" uuid="deaa1801-4fde-4772-aec8-51d400cd1586">
<jr:columnHeader style="Table 1_CH" height="30">
<staticText>
<reportElement x="0" y="0" width="150" height="30" uuid="7c1afdae-8253-47c4-b9bd-5109db184890"/>
<textElement>
<font fontName="微软雅黑" size="16"/>
</textElement>
<text><![CDATA[sex]]></text>
</staticText>
</jr:columnHeader>
<jr:detailCell style="Table 1_TD" height="30">
<textField>
<reportElement x="0" y="0" width="150" height="30" uuid="85644613-99dc-4f84-ae2e-079a67fbebc5"/>
<textElement>
<font fontName="微软雅黑" size="16"/>
</textElement>
<textFieldExpression><![CDATA[$F{sex}]]></textFieldExpression>
</textField>
</jr:detailCell>
</jr:column>
</jr:table>
</componentElement>
<textField>
<reportElement x="10" y="10" width="180" height="30" uuid="ee364a60-3c8a-46b4-80f1-7dd628c0085e"/>
<textElement>
<font fontName="微软雅黑" size="18"/>
</textElement>
<textFieldExpression><![CDATA[$F{grade}]]></textFieldExpression>
</textField>
</band>
</detail>
<pageFooter>
<band height="52" splitType="Stretch">
<textField>
<reportElement x="360" y="12" width="87" height="30" uuid="ab37f0ef-5d4e-42d4-b86e-e1b0196951d3"/>
<textElement textAlignment="Right">
<font size="14"/>
</textElement>
<textFieldExpression><![CDATA["Page " + $V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
<textField evaluationTime="Report">
<reportElement x="447" y="12" width="83" height="30" uuid="e0459980-6d52-4d16-adda-b63d5bc4423b"/>
<textElement textAlignment="Left">
<font size="14"/>
</textElement>
<textFieldExpression><![CDATA[" of " + $V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
</band>
</pageFooter>
</jasperReport>
......@@ -49,6 +49,7 @@
<zxing.version>3.4.0</zxing.version>
<aspose.version>20.3</aspose.version>
<redisson.version>3.12.5</redisson.version>
<jasperreports.version>6.12.2</jasperreports.version>
</properties>
<modules>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment