报表制作1(传入对象和其他参数)

转自:http://www.cnblogs.com/ms-grf/p/6755581.html

打印js

$scope.printObserveRecord = function () {
            if ($scope.printObserveRecordShow) {
                var erObservationDetailList = [];
                erObservationDetailList.push($scope.erObservationDetail);
                $scope.printInfoObject = {
                    type: "report",
                    method: "post",
                    appletParameters: {
                        report_url: "api/jasper-prints/emergency-station/pre-er-observe",
                        printer_name: null,
                        is_direct_print: true,
                        is_display: true
                    },
                    reportParameter: {
                        reportFileName: "reports/emergency/erObserveRegister.jasper",
                        parameters: {
                            erObservationDetail: erObservationDetailList,
                            hospitalName: getSysParaConfig("Hosp_Name"),
                            reportMaker: getStaffDict().staffName,
                            diagnosis:$scope.erObservationDetail.observationDetail.diagnosis,
                            observationCause:$scope.erObservationDetail.observationDetail.observationCause,
                            observationTime:$filter(‘date‘)($scope.erObservationDetail.observationDetail.observationTime,‘yyyy-MM-dd HH:mm:ss‘),
                            suggestPrepayment:$scope.erObservationDetail.observationDetail.suggestPrepayment
                        }
                    }
                };
                HrUtils.postMessageToBaseFrame($scope.printInfoObject, "*");
            } else {
                hrDialog.dialog(hrDialog.typeEnum.WARN, {message: "请先保存留观记录!"});
            }
        };

HrUtils.postMessageToBaseFrame($SCOPE.PRINTiNFOoBJECT,"*");

postMessageToBaseFrame: function (data, origin) {//origin参数默认为*,可以不填写
            if (HrStr.isNull(origin)) {
                origin = "*";
            }
            window.parent.top.postMessage(data, origin);
        }

在另一个程序里接收

接收EmergencystationPrintResource.java

package com.heren.his.report.api;

import com.heren.his.report.facade.EmergencystationPrintFacade;
import com.heren.his.report.vo.JasperPrintParamsVo;
import net.sf.jasperreports.engine.JasperPrint;

import javax.inject.Inject;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.io.InputStream;

@Path("emergency-station")
public class EmergencystationPrintResource {
    @Inject
    private EmergencystationPrintFacade emergencystationPrintFacade;

    //留观登记打印
    @POST
    @Path("pre-er-observe")
    @Produces({MediaType.APPLICATION_OCTET_STREAM})
    @Consumes({MediaType.APPLICATION_JSON})
    public JasperPrint getErObserveRegisterPrint(JasperPrintParamsVo parameters) {
        return emergencystationPrintFacade.fillErObserveRegisterPrint(parameters);
    }
}

接收EmergencystationPrintFacade.java

package com.heren.his.report.facade;

import com.heren.his.report.vo.JasperPrintParamsVo;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRMapCollectionDataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import static com.heren.his.report.util.ReportUtils.obtainJasperReportByFileName;

public class EmergencystationPrintFacade extends BaseJasperFillFacade {
    private static final Logger LOGGER = LoggerFactory.getLogger(NursestationFillFacade.class);

    /**
     * 留观登记打印
     * @param jasperPrintParamsVo
     * @return
     */
    public JasperPrint fillErObserveRegisterPrint(JasperPrintParamsVo jasperPrintParamsVo){
        LOGGER.debug("填充报表[{}];填充时使用参数:[{}]。", jasperPrintParamsVo.getReportFileName(), jasperPrintParamsVo.getParameters());
        List<Map<String, ?>> erObservationDetail = (List<Map<String, ?>>) jasperPrintParamsVo.getParameters().get("erObservationDetail");
        return hrFillReport(obtainJasperReportByFileName(jasperPrintParamsVo.getReportFileName()), jasperPrintParamsVo.getParameters(), new JRMapCollectionDataSource(erObservationDetail));
    }
}

报表(我用的是Jaspersoft)制作的报表

1:先新建一个erObserveRegister.jrxml

如图所示$P{hospitalName}是js里面蓝色标注的参数

    $F{name}是js里面绿色标注的参数

    蓝色参数是单独的参数,也就是一个string字符串而绿色参数是一个对象,所以他们在报表里面的引用形式就不一样一个是$P一个是$F

如图所示Parameters里面对应的是$P,Fields里对应的是$F Parameters里面的命名一定要和传入的参数名字一致,Fields里面的命名要和传入对象里的参数名字一致

2:调整报表内容格式(因为要打印的格式是pdf格式或者是其他格式,所以要调节内容格式)达到如下效果

要出现如上效果,整齐对照,布局清晰,字体样式带有三角感叹号为止

3:修改ing 框体位置大小修改如下

字体大小位置如下

打印字体设置如下 主要是设置图2红框中的内容(PDF)

                

4:点击如下点击build就可以生成一个.jasper的文件如图1  如果修改了某个.jrxml文件可以参照图2生成单个.jasper文件

   

5:把这两个文件都拷贝到报表项目下,.jrxml文件是为了做以后修改用的,.jasper才是用来打印的报表

时间: 2024-08-06 16:16:23

报表制作1(传入对象和其他参数)的相关文章

报表制作

打印js $scope.printObserveRecord = function () { if ($scope.printObserveRecordShow) { var erObservationDetailList = []; erObservationDetailList.push($scope.erObservationDetail); $scope.printInfoObject = { type: "report", method: "post",

MyBatis基础入门《七》查询参数传入对象

MyBatis基础入门<七>查询参数传入对象 描述: 在执行查询语句的时候,传入的参数是一个对象,依据对象的属性,进行检索数据.此时,书写SQL语句中的条件时,其参数需要和对象中的属性保持一致. 实体类:TblClient.java 接口方法 注意: 接口中定义了一个新的方法(根据对象属性进行查询数据),方法的参数传入的是一个对象. xml文件 注意: >>> parameterType="baitang" resultType="baitang

机房收费系统(VB.NET)——超详细的报表制作过程

之前做机房收费系统用的报表是Grid++Report,这次VB.NET重构中用到了VisualStudio自带的报表控件.刚开始当然对这块功能很不熟悉,不过探究了一段时间后还是把它做出来了. 下面把在VisualStudio(我用的是VisualStudio2013,如果与您使用的版本不同,过程中如有不符还请考虑实际情况)中制作报表的过程尽可能详细地记录下来,供初学者学习参考. 做事要有全局观,先看一下成品,做好的报表如下图: 其实能够达到这样的效果需要做两方面的工作:添加报表控件ReportV

C#机房重构——报表制作

前言 和VB需要引用其他报表软件不同,VS自带报表设计的功能,初次尝试,就感受到了它的强大之处. 报表制作 话不多说,直接报表的制作过程. 1.首先,我们要先制作一个报表的容器.放到我们显示报表的窗体上. 2.然后,添加一个报表. 3.报表添加完成后,我们会看到报表的相关数据. 4.依次添加好数据源和数据集,测试连接成功. 5.成功后如图所示.添加要使用的参数. 6.然后我们就可以在报表工具箱里添加自己所需要的东西,如,表,文本框等.这里的表可以直接引用数据集中内容.点击表里的那个小图标即可.

VB.net报表制作-《过坎儿秘籍》

这次的重构版机房收费系统报表制作,可以说是费尽周折.最后做出来回头看,觉得很简单.但值得回味的是做不出来的时候那种惆怅纠结,尤其是苦苦搜索到肝肠寸断的而无果的捶胸顿足... 从发现到制作到完成,每一步都是一个"坎儿",这个我们稍后带给大家<过坎儿秘籍>. 其实很早就关注报表了,从网上搜索关于VB.Net制作报表的各种方法,什么使用外部插件.水晶报表和VS自带的ReportViewer都看了看,最后还是考虑到易操作性和兼容性,选择了使用VS2013自带的Report. 参考博

【C#】报表制作&amp;lt;机房重构&amp;gt;

前言 和VB须要引用其它报表软件不同,VS自带报表设计的功能,初次尝试.就感受到了它的强大之处. 报表制作 话不多说.直接报表的制作过程. 1.首先,我们要先制作一个报表的容器.放到我们显示报表的窗口上. 2.然后,加入一个报表. 3.报表加入完毕后,我们会看到报表的相关数据. 4.依次加入好数据源和数据集,測试连接成功. 5.成功后如图所看到的. 加入要使用的參数. 6.然后我们就能够在报表工具箱里加入自己所须要的东西.如,表.文本框等.这里的表能够直接引用数据集中内容.点击表里的那个小图标就

Effective JavaScript Item 55 接受配置对象作为函数参数

接受配置对象作为函数参数 虽然保持函数接受的参数的顺序很重要,但是当函数能够接受的参数达到一定数量时,也会让用户很头疼: var alert = new Alert(100, 75, 300, 200, "Error", message, "blue", "white", "black", "error", true); 随着函数的不断重构和进化,它能够接受的参数也许会越来越多,最终就像上面的例子那样. 对

JS中用apply、bind实现为函数或者类传入动态个数的参数

为纪念10年没写blog,第一篇博文就以这样一个有趣的窍门开始吧 -___- 在ES5中,当我们调用一个函数时,如果要传入的参数是根据其他函数或条件判断生成的,也就是说不确定会传入多少个参数时,在不改变原函数的情况下该如何办呢? (当然了,能避免此文所述情况发生就尽量避免,比如将参数改为object或array等等) 大部分人可能知道用apply能完美解决这个问题: apply与call一样会将第一个参数作为函数的调用对象,即改写了调用函数内的this指针为第一个参数,如果不是对象的方法,可以不

按段分组报表制作

需求说明 在报表对数据进行汇总统计时,通常是按照某个字段进行分组,比如按地区.类别等字段分组后对其他信息进行汇总,但有一种分组模式为不规则分组,其分组是根据数据的值段来分的,例如按照分数段.年龄段.按时间段等,属于某个值区间的记录归到一个组里如下图所示: 在上图中我们可以看到,报表根据订购日期将订单数量和订单金额分成四组,分别统计 "2012 年圣诞前".“2012 年圣诞–2013 年国庆”.“2013 年国庆–2014 年五一”."2014 年五一以后" 四个时