jasper report分组显示

需求:java,使用jasper report生成PDF,并且将签署人相同的数据分组显示到一张PDF上,如下图:

在这里插入图片描述在这里插入图片描述

问题:jasper report没有正确分组,radiologist为lly424的数据显示在两张PDF上,如图所示

第三页出现了这个人的数据
第八页也出现了

原因:

先说这个项目是如何生成PDF的

  1. 准备数据。正常从数据库查询数据,得到一个list(问题出在这里)
  2. 创建一个类,用来包装xml数据(jasper report可以用xml作为数据源),代码如下

```java
@Data
@NoArgsConstructor
@AllArgsConstructor
@JacksonXmlRootElement(localName = "Report")//注意这里的注解
public class Report extends BaseReport {

    @JacksonXmlProperty(localName = "Header")//注意这里
    private ListingHeader header;

    @JacksonXmlProperty(localName = "Selection")
    private ReportWorkListPrintSelectionData selection;

    @JacksonXmlElementWrapper(localName = "Content")
    @JacksonXmlProperty(localName = "Data")
    private List<ReportWorkListPrintContentData> data;
}
3. 将xml数据专程base64,通过远程调用发到另一个服务里,生成PDF,回传byte[]数组

### 问题出在,jasper report这个傻逼玩意儿
<group>只能分组附近的相通的信息,比如

```java
list.add(new Strudent("lly424",1));
list.add(new Strudent("amy304",2));
list.add(new Strudent("amy304",2));
list.add(new Strudent("lly424",1));
list.add(new Strudent("lly424",1));
list.add(new Strudent("lly424",1));

在这种情况下lly424就不会被分到一页。

解决方案

使用list.stream().sort(Comparater.comparater(Student::getName()))先进行排序,这样就会按照字母顺序放在一起,就好了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值