若依+lodop+jasperreports+ireport 设计打印票据格式(三)
若依+lodop+jasperreports+ireport 设计打印票据格式(三)实现效果1需要循环的数据放入ireport detai里面java打印beanpackage com.qlh.yhis.report.prints.bean;import com.qlh.yhis.common.utils.DictUtils;import com.qlh.yhis.common.utils.Sec
·
若依+lodop+jasperreports+ireport 设计打印票据格式(三)
实现效果1
需要循环的数据放入ireport detai里面
java打印bean
package com.qlh.yhis.report.prints.bean;
import com.qlh.yhis.common.utils.DictUtils;
import com.qlh.yhis.common.utils.SecurityUtils;
import com.qlh.yhis.report.prints.IHandler;
import com.qlh.yhis.report.prints.PrintSetting;
import com.qlh.yhis.zy.domain.ZYj;
import com.qlh.yhis.zy.service.IZYjService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
//打印预交明细
@Component
public class Zyyjmx implements IHandler {
protected Logger logger = LoggerFactory.getLogger(Zyyjksj.class);
@Resource
private IZYjService izYjService;
@Override
public void getPrintSetting(PrintSetting setting) {
}
@Override
public void getParameters(Map<String, Object> request, Map<String, Object> response) {
Map<String, Object> m = new HashMap<>();
//病人住院号查询
List<ZYj> zYjList = izYjService.zYjsByZBah((String) request.get("zBah"),SecurityUtils.getDeptId());
Double sumYjje = new Double("0.000");
for (int i = 0; i < zYjList.size() ; i++) {
ZYj zYjPrint = zYjList.get(i);
sumYjje+=zYjPrint.getzYjje().doubleValue();
}
response.put("deptName",SecurityUtils.getDept().getDeptName());
String zdy = DictUtils.getDictLabel("SYS_USER",SecurityUtils.getUserId()+"");
response.put("zdy",zdy);
response.put("sumYjje",new BigDecimal(sumYjje));
}
@Override
public void getFields(Map<String, Object> request, List<Map<String, Object>> records) {
//病人住院号查询
List<ZYj> zYjList = izYjService.zYjsByZBah((String) request.get("zBah"),SecurityUtils.getDeptId());
for (int i = 0; i < zYjList.size() ; i++) {
ZYj zYjPrint = zYjList.get(i);
Map<String, Object> map = new HashMap<>();
map.put("zBah",zYjPrint.getzBah());
map.put("brxm",zYjPrint.getBrxm());
map.put("yjje",zYjPrint.getzYjje());
map.put("czy",zYjPrint.getCzy());
map.put("zYjrq",zYjPrint.getzYjrq());
map.put("hh",(i+1)+"");
records.add(map);
}
}
}
对应打印jxrml文件
<?xml version="1.0" encoding="UTF-8"?>
<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="zyyjmx" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" isFloatColumnFooter="true" uuid="bb5c8304-71b4-4739-b160-6704af9ba72f">
<property name="ireport.zoom" value="1.331000000000001"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<parameter name="zdy" class="java.lang.String"/>
<parameter name="deptName" class="java.lang.String"/>
<parameter name="sumYjje" class="java.math.BigDecimal"/>
<field name="zBah" class="java.lang.String"/>
<field name="brxm" class="java.lang.String"/>
<field name="yjje" class="java.math.BigDecimal"/>
<field name="czy" class="java.lang.String"/>
<field name="zYjrq" class="java.util.Date"/>
<field name="hh" class="java.lang.String"/>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="80" splitType="Stretch">
<staticText>
<reportElement x="0" y="40" width="555" height="40" uuid="d39d1cc2-ca13-496d-9ddc-635866fd0358"/>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="宋体" size="30"/>
</textElement>
<text><![CDATA[住院预交款明细]]></text>
</staticText>
<textField>
<reportElement x="0" y="0" width="555" height="40" uuid="e33c854f-60d3-4ac5-ab2a-7ecf5fc4947b"/>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="宋体" size="30"/>
</textElement>
<textFieldExpression><![CDATA[$P{deptName}]]></textFieldExpression>
</textField>
</band>
</title>
<columnHeader>
<band height="50">
<staticText>
<reportElement x="0" y="0" width="76" height="30" uuid="77b65634-15e9-437e-850c-9d08cc9be0e4"/>
<textElement verticalAlignment="Middle">
<font fontName="宋体" size="14"/>
</textElement>
<text><![CDATA[制单时间:]]></text>
</staticText>
<staticText>
<reportElement x="207" y="0" width="73" height="30" uuid="3ee0e16f-e7f3-477c-a8a6-c3dbdc7939b1"/>
<textElement verticalAlignment="Middle">
<font fontName="宋体" size="14"/>
</textElement>
<text><![CDATA[制单员:]]></text>
</staticText>
<staticText>
<reportElement x="535" y="0" width="19" height="30" uuid="4b79ed80-0479-4ffc-9269-2ec0f5ccd436"/>
<textElement verticalAlignment="Middle">
<font fontName="宋体" size="14"/>
</textElement>
<text><![CDATA[页]]></text>
</staticText>
<textField evaluationTime="Report">
<reportElement x="512" y="0" width="23" height="30" uuid="67ed400d-ac7e-4dfc-bfe2-b326bb047d43"/>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="宋体" size="14"/>
</textElement>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="472" y="0" width="40" height="30" uuid="18c96254-21d0-4d4b-ab8c-56ca03d2070a"/>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="宋体" size="14"/>
</textElement>
<text><![CDATA[页/共]]></text>
</staticText>
<textField>
<reportElement x="455" y="0" width="17" height="30" uuid="b8471b2f-579d-4ea0-8912-1122b3bb86f0"/>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="宋体" size="14"/>
</textElement>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="438" y="0" width="17" height="30" uuid="42a462fe-60da-4bfb-af74-f10860547360"/>
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="宋体" size="14"/>
</textElement>
<text><![CDATA[第]]></text>
</staticText>
<textField pattern="yyyy-MM-dd hh:mm:ss" isBlankWhenNull="true">
<reportElement x="76" y="0" width="131" height="30" uuid="03e428ab-8455-4b27-9188-3847f3c9dc1a"/>
<textElement verticalAlignment="Middle">
<font fontName="宋体" size="12"/>
</textElement>
<textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression>
</textField>
<textField>
<reportElement x="280" y="0" width="111" height="30" uuid="92056cae-3b2b-4828-a0d7-c2d30f9b4be3"/>
<textElement verticalAlignment="Middle">
<font fontName="宋体" size="12"/>
</textElement>
<textFieldExpression><![CDATA[$P{zdy}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="0" y="30" width="61" height="20" uuid="bbd149a0-e989-437e-b5c7-54dc9a1ee452"/>
<box>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="宋体" size="14"/>
</textElement>
<text><![CDATA[行号]]></text>
</staticText>
<staticText>
<reportElement x="61" y="30" width="110" height="20" uuid="fb0f371e-54a6-4a35-985f-2495f5e48fe8"/>
<box>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="宋体" size="14"/>
</textElement>
<text><![CDATA[住院号]]></text>
</staticText>
<staticText>
<reportElement x="171" y="30" width="70" height="20" uuid="90779022-ba56-4960-ab72-0a70316b9b2a"/>
<box>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="宋体" size="14"/>
</textElement>
<text><![CDATA[患者姓名]]></text>
</staticText>
<staticText>
<reportElement x="241" y="30" width="70" height="20" uuid="368f1422-71d5-4c7e-85e1-017fcf76a0a1"/>
<box>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="宋体" size="14"/>
</textElement>
<text><![CDATA[预交金额]]></text>
</staticText>
<staticText>
<reportElement x="311" y="30" width="174" height="20" uuid="a683fd3f-3c82-477e-87f0-44022b650c03"/>
<box>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="宋体" size="14"/>
</textElement>
<text><![CDATA[记录时间]]></text>
</staticText>
<staticText>
<reportElement x="485" y="30" width="70" height="20" uuid="a5c285c4-e0e6-4afd-950e-c0d2e814659a"/>
<box>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="宋体" size="14"/>
</textElement>
<text><![CDATA[操作员]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="20" splitType="Immediate">
<textField>
<reportElement x="0" y="0" width="61" height="20" uuid="9ff99265-92b1-4575-b4e8-07ddb26cdbfd"/>
<box>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{hh}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="61" y="0" width="110" height="20" uuid="8429c402-8c97-41a8-a1a7-c93d1f09b0f5"/>
<box>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{zBah}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="171" y="0" width="70" height="20" uuid="62078c2f-4fdf-4850-a361-0cc1ab4ed9b8"/>
<box>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{brxm}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="241" y="0" width="70" height="20" uuid="b5f8fb3b-1ead-4324-9290-c22751ffdb69"/>
<box>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{yjje}]]></textFieldExpression>
</textField>
<textField pattern="yyyy-MM-dd HH:mm:ss">
<reportElement x="311" y="0" width="174" height="20" uuid="fc50432e-79f6-4d6d-b1aa-3540359dcae6"/>
<box>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{zYjrq}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="485" y="0" width="70" height="20" uuid="b9e3c141-09fd-49c7-b61c-5dabfe524ccb"/>
<box>
<topPen lineWidth="1.0"/>
<leftPen lineWidth="1.0"/>
<bottomPen lineWidth="1.0"/>
<rightPen lineWidth="1.0"/>
</box>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{czy}]]></textFieldExpression>
</textField>
</band>
</detail>
<columnFooter>
<band height="21">
<staticText>
<reportElement x="61" y="0" width="110" height="20" uuid="a9acd837-54ea-4fc0-ad81-2dde84cd63ac"/>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="宋体" size="12"/>
</textElement>
<text><![CDATA[合计]]></text>
</staticText>
<textField>
<reportElement x="241" y="0" width="70" height="20" uuid="c0210dff-96da-4b04-b807-d14f0710558f"/>
<textElement>
<font fontName="宋体" size="12"/>
</textElement>
<textFieldExpression><![CDATA[$P{sumYjje}]]></textFieldExpression>
</textField>
</band>
</columnFooter>
</jasperReport>
实现效果2
需要使用子表,就是主表里面放一个list,list存放map类型list中对应数据是子表数据
主jrxml
<?xml version="1.0" encoding="UTF-8"?>
<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="HospitalizationOrderCareCard" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="eec368bc-45e5-4753-af53-5d9da5680535">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
<defaultValueExpression><![CDATA[""]]></defaultValueExpression>
</parameter>
<field name="jcName" class="java.lang.String"/>
<field name="no" class="java.lang.String"/>
<field name="hdName" class="java.lang.String"/>
<field name="pyName" class="java.lang.String"/>
<field name="YZDATA" class="net.sf.jasperreports.engine.JRDataSource"/>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band splitType="Stretch"/>
</title>
<pageHeader>
<band splitType="Stretch"/>
</pageHeader>
<columnHeader>
<band splitType="Stretch"/>
</columnHeader>
<detail>
<band height="245" splitType="Stretch">
<staticText>
<reportElement x="0" y="31" width="100" height="29" uuid="581e0cb2-cf08-47ed-8c98-29250bfcc326"/>
<textElement verticalAlignment="Bottom">
<font fontName="宋体" size="16"/>
</textElement>
<text><![CDATA[核对人:]]></text>
</staticText>
<staticText>
<reportElement x="243" y="31" width="67" height="29" uuid="4b635098-4fda-4b6f-914a-a8e83209590c"/>
<textElement verticalAlignment="Bottom">
<font fontName="宋体" size="16"/>
</textElement>
<text><![CDATA[配药人:]]></text>
</staticText>
<textField>
<reportElement x="0" y="0" width="316" height="31" uuid="f0bac411-2ab4-4876-8abf-4da2dd90c3d8"/>
<textElement verticalAlignment="Bottom">
<font fontName="宋体" size="16"/>
</textElement>
<textFieldExpression><![CDATA[$F{jcName}]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="316" y="0" width="40" height="31" uuid="223a414a-3039-40da-9d08-497e281bf2ac"/>
<textElement verticalAlignment="Bottom">
<font fontName="宋体" size="16"/>
</textElement>
<text><![CDATA[NO:]]></text>
</staticText>
<textField>
<reportElement x="356" y="0" width="199" height="31" uuid="51fb2f72-ad22-49db-994d-929b82c79794"/>
<textElement verticalAlignment="Bottom">
<font fontName="宋体" size="16"/>
</textElement>
<textFieldExpression><![CDATA[$F{no}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="100" y="31" width="143" height="29" uuid="1fafb55a-e991-494b-9b67-7d94811d160e"/>
<textElement verticalAlignment="Bottom">
<font fontName="宋体" size="16"/>
</textElement>
<textFieldExpression><![CDATA[$F{hdName}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="310" y="31" width="245" height="29" uuid="69bdd0a4-0da8-48cd-bf13-aeee79e3ed91"/>
<textElement verticalAlignment="Bottom">
<font fontName="宋体" size="16"/>
</textElement>
<textFieldExpression><![CDATA[$F{pyName}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="167" y="60" width="76" height="44" uuid="653c9283-ebcb-4a44-a275-249efd15cd80"/>
<textElement verticalAlignment="Middle">
<font fontName="宋体" size="16"/>
</textElement>
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="167" y="104" width="76" height="47" uuid="5aafcdd3-1c8e-4353-a4f8-3bb41b107a1f"/>
<textElement verticalAlignment="Middle">
<font fontName="宋体" size="16"/>
</textElement>
<textFieldExpression><![CDATA[$F{age}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="167" y="151" width="76" height="48" uuid="6c296cea-ef33-4dab-b1a5-4af7b8b94b49"/>
<textElement verticalAlignment="Middle">
<font fontName="宋体" size="16"/>
</textElement>
<textFieldExpression><![CDATA[$F{jzh}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="243" y="60" width="199" height="44" uuid="f8564e93-4b9f-464f-97a1-1ad78655f379"/>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="宋体" size="16" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$F{cw}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="243" y="104" width="199" height="47" uuid="5cc277d0-0754-4235-9c3c-970a17909a6c"/>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="宋体" size="16"/>
</textElement>
<textFieldExpression><![CDATA[$F{date}]]></textFieldExpression>
</textField>
<subreport>
<reportElement x="0" y="199" width="555" height="46" uuid="ce7e3297-2d9c-41b7-bede-ee35e2ec3803"/>
<dataSourceExpression><![CDATA[$F{YZDATA}]]></dataSourceExpression>
<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "HospitalizationOrderCareCardChildren.jasper"]]></subreportExpression>
</subreport>
</band>
</detail>
<columnFooter>
<band splitType="Stretch"/>
</columnFooter>
<pageFooter>
<band splitType="Stretch"/>
</pageFooter>
<summary>
<band splitType="Stretch"/>
</summary>
</jasperReport>
子jrxml
<?xml version="1.0" encoding="UTF-8"?>
<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="HospitalizationOrderCareCardChildren" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="2ea6d6d2-9b86-4cbb-8d1f-9a69eca61dab">
<property name="ireport.zoom" value="1.331000000000001"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<field name="YZDATA" class="java.lang.String"/>
<field name="ypName" class="java.lang.String"/>
<field name="sl" class="java.lang.String"/>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band splitType="Stretch"/>
</title>
<pageHeader>
<band splitType="Stretch"/>
</pageHeader>
<columnHeader>
<band splitType="Stretch"/>
</columnHeader>
<detail>
<band height="19" splitType="Stretch">
<textField>
<reportElement x="0" y="0" width="243" height="19" uuid="9d47cbf9-36ae-433b-b378-9e55cd267456"/>
<textElement verticalAlignment="Middle">
<font fontName="宋体" size="16"/>
</textElement>
<textFieldExpression><![CDATA[$F{ypName}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="243" y="0" width="312" height="19" uuid="b96c60cd-da68-4a44-a0e0-441d1ad65d68"/>
<textElement verticalAlignment="Middle">
<font fontName="宋体" size="16"/>
</textElement>
<textFieldExpression><![CDATA[$F{sl}]]></textFieldExpression>
</textField>
</band>
</detail>
<columnFooter>
<band splitType="Stretch"/>
</columnFooter>
<pageFooter>
<band splitType="Stretch"/>
</pageFooter>
<summary>
<band splitType="Stretch"/>
</summary>
</jasperReport>
java bean
package com.qlh.yhis.report.prints.bean;
import com.qlh.yhis.mz.vo.PrintYZDemo;
import com.qlh.yhis.report.prints.IHandler;
import com.qlh.yhis.report.prints.PrintSetting;
import com.qlh.yhis.report.utils.PrintUtil;
import com.qlh.yhis.zy.service.IZyBqyzService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* 住院医嘱卡片打印
*/
@Component
public class HospitalizationOrderCareCard implements IHandler {
protected Logger logger = LoggerFactory.getLogger(HospitalizationOrderCareCard.class);
@Resource
private IZyBqyzService iZyBqyzService;
@Override
public void getPrintSetting(PrintSetting setting) {
}
@Override
public void getParameters(Map<String, Object> request, Map<String, Object> response) {
// 获得项目的绝对路径 并将路径值传进SUBREPORT_DIR中,
// 因子报表SUBREPORT_DIR参数值在不同服务器上路径不同,所以用动态路径传值
response.put("SUBREPORT_DIR","D:\\ZQ\\yunhis\\yhis-report\\src\\main\\resources\\jrxml\\");
}
@Override
public void getFields(Map<String, Object> request, List<Map<String, Object>> records) {
/**
* 查询出子表中的数据list 循环给子表添加数据
* 把整个输出的对象放在detail里,后端把每个对象放在list。
*/
String zBah = (String) request.get("zBah");
List<PrintYZDemo> demos = iZyBqyzService.selectZyBqyzByzBah(zBah);
Map<String, List<Map<String, Object>>> hzmap = new HashMap<>();
for (PrintYZDemo obj : demos) {
String zXm = obj.getZXm();
if (hzmap.containsKey(zXm)) {
List<Map<String, Object>> maps = hzmap.get(zXm);
Map<String, Object> map = new HashMap<>();
map.put("ypName",obj.getYZMC());
map.put("sl",obj.getYCSL().toString());
maps.add(map);
} else {
List<Map<String, Object>> xms = new ArrayList<>();
Map<String, Object> hashMap = new HashMap<>();
hashMap.put("ypName",obj.getYZMC());
hashMap.put("sl",obj.getYCSL().toString());
xms.add(hashMap);
hzmap.put(zXm,xms);
}
}
List<String> list = demos.stream().map(PrintYZDemo::getZXm).distinct()
.collect(Collectors.toList());
for (int i = 0; i < 5; i++) {
Map<String, Object> map = new HashMap<>();
map.put("jcName","地佐辛注射液");
map.put("no","123456");
map.put("hdName","ces");
map.put("pyName","测试");
map.put("name","测试");
map.put("age","45");
map.put("jzh","10000012");
map.put("cw","3床");
map.put("date","2025-10-10");
// 这里面放list
List<Map<String, Object>> maps = hzmap.get("测试");
// 这个类型有问题
map.put("YZDATA", PrintUtil.ds(maps));
records.add(map);
}
}
}
打印辅助类
package com.qlh.yhis.report.utils;
import cn.hutool.core.util.ObjectUtil;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.JRMapCollectionDataSource;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.export.*;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.engine.xml.JRXmlTemplateLoader;
import net.sf.jasperreports.export.*;
import net.sf.jasperreports.web.util.WebHtmlResourceHandler;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.sql.Connection;
import java.util.*;
public class PrintUtil {
public final static int REPORT_TYPE_OF_PDF = 0;
public final static int REPORT_TYPE_OF_HTML = 1;
public final static int REPORT_TYPE_OF_WORD = 2;
public final static int REPORT_TYPE_OF_EXCEL = 3;
public final static int REPORT_TYPE_OF_XML = 4;
private final static String ContentTypeOfHtml = "text/html;charset=UTF-8";
private final static String ContentTypeOfWord = "application/msword;charset=UTF-8";
private final static String ContentTypeOfExcel = "application/vnd.ms-excel;charset=UTF-8";
private final static String ContentTypeOfPdf = "application/pdf;charset=UTF-8";
private final static String[] postfix = {".pdf", ".html", ".doc", ".xls", ".xml"};
public static String LOAD = "phis.simpleLoad";
public static String QUERY = "phis.simpleQuery";
// get JRTemplate
public static JRTemplate getJRTemplate(String fileName) throws JRException {
return JRXmlTemplateLoader.load(fileName);
}
// get JasperDesign
public static JasperDesign getJasperDesign(String fileName) throws JRException {
return JRXmlLoader.load(fileName);
}
public static JasperDesign getJasperDesign(File file) throws JRException {
return JRXmlLoader.load(file);
}
public static JasperDesign getJasperDesign(InputStream is) throws JRException {
return JRXmlLoader.load(is);
}
// get JasperReport
public static JasperReport getJasperReport(String fileName) throws JRException {
return JasperCompileManager.compileReport(fileName);
}
public static JasperReport getJasperReport(InputStream is) throws JRException {
return JasperCompileManager.compileReport(is);
}
public static JasperReport getJasperReport(JasperDesign jd) throws JRException {
return JasperCompileManager.compileReport(jd);
}
// get JasperPrint
public static JasperPrint getJasperPrint(String fileName, Map<String, Object> parameters) throws JRException {
return getJasperPrint(getJasperReport(fileName), parameters);
}
public static JasperPrint getJasperPrint(String fileName, Map<String, Object> parameters, Connection con) throws JRException {
return getJasperPrint(getJasperReport(fileName), parameters, con);
}
public static JasperPrint getJasperPrint(JasperReport jr, Map<String, Object> parameters) throws JRException {
return JasperFillManager.fillReport(jr, parameters);
}
public static JasperPrint getJasperPrint(JasperReport jr, Map<String, Object> parameters, Connection con) throws JRException {
return JasperFillManager.fillReport(jr, parameters, con);
}
public static JasperPrint getJasperPrint(JasperReport jr, Map<String, Object> parameters, JRDataSource dataSource) throws JRException {
return JasperFillManager.fillReport(jr, parameters, dataSource);
}
// export to httpservletresponse
public static void exportToHttpServletResponse(int type, JasperPrint jp, HttpServletRequest request, HttpServletResponse response, String title) throws IOException, JRException {
// JRExporter exporter = getJRExporter(type, request, response, title);
// response.setContentType(getContentType(exporter));
// request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jp);
// exporter.setParameter(JRExporterParameter.JASPER_PRINT, jp);
// exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream());
// exporter.exportReport();
JRAbstractExporter exporter = getJRExporter(type, request, response, title);
response.setContentType(getContentType(exporter));
request.getSession().setAttribute("net.sf.jasperreports.j2ee.jasper_print", jp);
exporter.setExporterInput(new SimpleExporterInput(jp));
//exporter.setExporterOutput(new SimpleHtmlExporterOutput(response.getOutputStream()));
exporter.exportReport();
}
public static void exportToHttpServletResponse(int type, List<JasperPrint> list, HttpServletRequest request, HttpServletResponse response, String title) throws IOException, JRException {
// JRExporter exporter = getJRExporter(type, request, response, title);
// response.setContentType(getContentType(exporter));
// request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_LIST_SESSION_ATTRIBUTE, list);
// exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, list);
// exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream());
// exporter.exportReport();
JRAbstractExporter exporter = getJRExporter(type, request, response, title);
response.setContentType(getContentType(exporter));
request.getSession().setAttribute("net.sf.jasperreports.j2ee.jasper_print_list", list);
List<ExporterInputItem> l_sei=new ArrayList<ExporterInputItem>();
if(list!=null&&list.size()>0){
for(JasperPrint j:list){
l_sei.add(new SimpleExporterInputItem(j));
}
}
exporter.setExporterInput(new SimpleExporterInput(l_sei));
exporter.exportReport();
}
// export type
private static JRAbstractExporter getJRExporter(int type, HttpServletRequest request, HttpServletResponse response, String filename) throws IOException{
JRAbstractExporter exporter = null;
if (ObjectUtil.isEmpty(filename)) {
filename = String.valueOf(new Date().getTime());
}
try {
filename = new String(filename.getBytes("GBK"), "iso-8859-1");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
switch (type) {
case REPORT_TYPE_OF_HTML:
String isLandscape = request.getParameter("landscape");
boolean landscape = false;
if (!ObjectUtil.isEmpty(isLandscape) && "1".equals(isLandscape)) {
landscape = true;
}
boolean silentPrint = false;
String isSilentPrint = request.getParameter("silentPrint");
if (!ObjectUtil.isEmpty(isSilentPrint) && "1".equals(isSilentPrint)) {
silentPrint = true;
}
exporter = new JRHtmlExporter();
StringBuffer sb = new StringBuffer("</td><td width=\"50%\"> </td></tr>\n</table>\n")
// .append("<OBJECT classid='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2' id='wb' width='0' height='0'></OBJECT>\n")
.append("<script type='text/javascript'>\n")
.append("if(document.all){\n")
// .append("var hkey_root='HKEY_CURRENT_USER', hkey_path='\\\\Software\\\\Microsoft\\\\Internet Explorer\\\\PageSetup', hkey_key;\n")
// .append("var RegWsh = new ActiveXObject('WScript.Shell');\n")
// .append("hkey_key='\\\\header';RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, '');\n")
// .append("hkey_key='\\\\footer';RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, '');\n")
// .append("hkey_key='\\\\margin_bottom';RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, '0.158330');\n")
// .append("hkey_key='\\\\margin_left';RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, '0.156670');\n")
// .append("hkey_key='\\\\margin_right';RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, '0.111670');\n")
// .append("hkey_key='\\\\margin_top';RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, '0.156670');\n")
// .append("hkey_key='\\\\Shrink_To_Fit';RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, 'no');\n")
// .append("document.all.wb.execwb(7, 1);\n")
.append("}\n")
.append("if(jsPrintSetup){\n");
if (landscape) {
sb.append("jsPrintSetup.setOption('orientation',jsPrintSetup.kLandscapeOrientation);\n");
}
sb.append("jsPrintSetup.setOption('marginTop',0);\n")
.append("jsPrintSetup.setOption('marginBottom',0);\n")
.append("jsPrintSetup.setOption('marginLeft',0);\n")
.append("jsPrintSetup.setOption('marginRight',0);\n")
.append("jsPrintSetup.setSilentPrint(" + silentPrint + ");\n")
.append("jsPrintSetup.print();\n")
.append("}\n")
.append("</script>\n")
.append("</body>\n</html>\n");
// exporter.setParameter(JRHtmlExporterParameter.HTML_FOOTER, sb.toString());
// exporter.setParameter(JRHtmlExporterParameter.ZOOM_RATIO, 1.25f);
// exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "print_image?image=");
// exporter.setParameter(JRHtmlExporterParameter.BETWEEN_PAGES_HTML,"<div style='page-break-before:always;'></div>");
SimpleHtmlExporterConfiguration config=new SimpleHtmlExporterConfiguration();
config.setHtmlFooter(sb.toString());
config.setBetweenPagesHtml("<div style='page-break-before:always;'></div>");
exporter.setConfiguration(config);
SimpleHtmlReportConfiguration r_config=new SimpleHtmlReportConfiguration();
r_config.setZoomRatio(1.25F);
exporter.setConfiguration(r_config);
SimpleHtmlExporterOutput htmlExport = new SimpleHtmlExporterOutput(response.getOutputStream());
htmlExport.setImageHandler( new WebHtmlResourceHandler("print_image?image="));
exporter.setExporterOutput(htmlExport);
break;
case REPORT_TYPE_OF_WORD:
exporter = new JRRtfExporter();
response.setHeader("Content-Disposition", "inline; filename=\"" + filename + postfix[REPORT_TYPE_OF_WORD] + "\"");
break;
case REPORT_TYPE_OF_EXCEL:
exporter =new JRXlsExporter();
// exporter = new JExcelApiExporter();
response.setHeader("Content-Disposition", "inline; filename=\""+filename+postfix[REPORT_TYPE_OF_EXCEL]+"\"");
SimpleXlsxReportConfiguration conf = new SimpleXlsxReportConfiguration();
conf.setWhitePageBackground(false);
conf.setDetectCellType(true);
exporter.setConfiguration(conf);
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(response.getOutputStream()));
//自动选择格式
// exporter.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE);
break;
case REPORT_TYPE_OF_XML:
exporter = new JRXmlExporter();
response.setHeader("Content-Disposition", "inline; filename=\"" + filename + postfix[REPORT_TYPE_OF_XML] + "\"");
break;
default:
exporter = new JRPdfExporter();
response.setHeader("Content-Disposition", "inline; filename=\"" + filename + postfix[REPORT_TYPE_OF_PDF] + "\"");
break;
}
return exporter;
}
// response contenttype
private static String getContentType(JRExporter exporter) {
String responseContentType = ContentTypeOfHtml;
if (exporter instanceof JRRtfExporter) {
responseContentType = ContentTypeOfWord;
} else if (exporter instanceof JRXlsExporter || exporter instanceof JExcelApiExporter) {
responseContentType = ContentTypeOfExcel;
} else if (exporter instanceof JRPdfExporter) {
responseContentType = ContentTypeOfPdf;
}
return responseContentType;
}
public static JRDataSource ds(Collection col) {
return new JRMapCollectionDataSource(col);
}
public static String getLOAD() {
return LOAD;
}
public static void setLOAD(String lOAD) {
LOAD = lOAD;
}
public static String getQUERY() {
return QUERY;
}
public static void setQUERY(String qUERY) {
QUERY = qUERY;
}
}
更多推荐
已为社区贡献7条内容
所有评论(0)