MyReport报表打印

Report报表打印

效果展示

在这里插入图片描述

业务需求:

打印页面中所选主表数据的报表信息(根据单据号查询出每个单据主表信息和详情表列表信息后打印)
在这里插入图片描述

第一步:安装打印机(略)

第二步:安装DesignTool设计器

下载设计器https://pan.baidu.com/s/1sNWC-HBJ5XHSeHUo3YtK1Q
提取码:a1cn
解压后直接打开设计器
在这里插入图片描述
该设计器是免安装可以直接打开使用
在这里插入图片描述
使用方法可以查看下面文件
在这里插入图片描述
我的设计后的模板如下
在这里插入图片描述

第三步:添加需要前端文件

文件下载:https://pan.baidu.com/s/18yIE8qvm-qjt7dIE_2woLQ
提取码:x3ic
下载后将文件剪贴到项目webApp下
在这里插入图片描述

第四步:编码部分

下载脚本:https://pan.baidu.com/s/1zP1toeiX7NFYKUgKaI0HOg
提取码:l2eu
1.将下载的文件剪贴到你的前端页面文件中
在这里插入图片描述

2.在前端页面引入所需脚本文件

<script type="text/javascript" language="JavaScript" src="${ctx}/plugin/myreport/js/swfobject.js"></script>
<script type="text/javascript" language="JavaScript" src="${ctx}/plugin/vmi/markPrintDllInit.js"></script>
<#include "ReportPrint.ftl">

3.获取打印数据并将数据传到后台

    <#-- 前端打印按钮-->
   <button type="button" class="btn btn-info btn-sm" onclick="reportprint()" >
        <i class="glyphicon glyphicon-print"></i> &nbsp;  打印
    </button>

    <#-- 报表主表信息-->
   <table id="pu_Detail_table"></table>



 /*
       打印报表
        */
    function reportprint(){
        var data = $('#pu_Detail_table').bootstrapTable('getSelections');
         var pantryOrderPrints=JSON.stringify(data);//得到打印接口所需参数(我这里是多表打印,因此参数是所有表的主表信息)
            var url = "${ctx}/pantryOrderPrint/previewReportPrint.z";//后台接口
            var layerConfirm=layer.confirm('你确定要打印吗?', {
                btn: ['确定','取消']
            }, function(){
                layer.close(layerConfirm);
                var layerIndex = layer.load();

                $.post(
                        url,
                        {  pantryOrderPrints:pantryOrderPrints},
                        function(result){
                            if(result!=null){
                                layer.close(layerIndex);
             loadAndPrint3(result['myReportURL'],result['params'],result['table']);

                            }
                        },"json"
                )
            });
    }

4.后台接口

    /**
     * 汇总单打印
     *
     * @param
     * @param
     * @return
     * @throws Exception
     */
    @RequestMapping("/previewReportPrint")
    public void PreviewReportPrint(HttpServletResponse resp, HttpServletRequest req, String pantryOrderPrints) throws Exception {
        resp.setCharacterEncoding("utf-8");
        JSONArray json = JSONArray.fromObject(pantryOrderPrints);
        List<PantryOrderPrint> list = JSONArray.toList(json, PantryOrderPrint.class);

        Map<String, Object> context = new HashMap<>();
        List<Map<String, Object>> paramList = new ArrayList<>();

        List<List<Map<String, Object>>> tableLists = new ArrayList<>();
        SysUser v_User = WebUtil.getCurrentUser();
        Date date = new Date();
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateString = formatter.format(date);

        //每张报表所需数据
   for (PantryOrderPrint pantryOrderPrintTemp:list) {
            //主表信息
            PantryOrderPrint pantryOrderPrint=new PantryOrderPrint();
            pantryOrderPrint.setBill(pantryOrderPrintTemp.getBill());
            List<PantryOrderPrint> palletOrderList = findPalletOrderList(pantryOrderPrint);
            PantryOrderPrint pantryOrderPrint1 = palletOrderList.get(0);
            Map<String, Object> paramsMap = new HashMap<String, Object>();
            paramsMap.put("dept_name", pantryOrderPrint1.getDeptName());
            paramsMap.put("bill", pantryOrderPrint1.getBill());
            paramsMap.put("order_product", pantryOrderPrint1.getOrderProduct());
            paramsMap.put("sum",pantryOrderPrint1.getPlanQty());
            paramsMap.put("printPerson", v_User.getLogUserName());
            paramsMap.put("printTime", dateString);
            paramList.add(paramsMap);

            
            //封装表格所需要的详情列表数据
            List<PantryOrderPrint> pantryList= vmiPantryOrderPrintService.findPantryOrderPrintList(pantryOrderPrint);
            List<Map<String, Object>> tableList = new ArrayList<>();//最外层的list集合
            for (PantryOrderPrint pantryOrderPrint2 : pantryList) {
                Map<String, Object> tableMap = new HashMap<String, Object>();
                tableMap.put("itemCode",pantryOrderPrint2.getItemCode());
                tableMap.put("itemName", pantryOrderPrint2.getItemName());
                tableMap.put("material", pantryOrderPrint2.getMaterial());
                tableMap.put("orderQty", pantryOrderPrint2.getOrderQty());
                tableMap.put("wzybkc", pantryOrderPrint2.getWzybkc());
                tableMap.put("stockQty", pantryOrderPrint2.getStockQty());
                if(Help.isNull(pantryOrderPrint2.getPalletPosition())){
                    tableMap.put("palletPosition","");
                }else{
                    tableMap.put("palletPosition",pantryOrderPrint2.getPalletPosition());
                }
                tableList.add(tableMap);
            }
            tableLists.add(tableList);
        }
        String params = JSON.toJSONString(paramList);
        context.put("params", params);
        //设置报表装载的模版*.xml
        String myReportURL = null;
        //根据用户配置的打印类型设置打印模板
        myReportURL = "/VMI/plugin/myreport/template/purchaseReportStyle.xml";
        List<String> myReportUrlList = new ArrayList<String>();
        myReportUrlList.add(myReportURL);
        String url = JSON.toJSONString(myReportUrlList);
        context.put("myReportURL", url);
        String table = JSON.toJSONString(tableLists);
        context.put("table", table);
        long time1=System.currentTimeMillis();
        JsonUtil.writeJson(resp,context);//往前端传输数据
        long time2=System.currentTimeMillis();
        System.out.println("往前端传输数据耗时:"+(time2-time1)+"毫秒");
    }
   
    public class JsonUtil {
    public static void writeJson(HttpServletResponse resp,Object obj)  {
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter out= null;
        try {
            out = resp.getWriter();
            out.write(JSON.toJSONString(obj));
            out.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            out.close();
        }
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Flex:Web报表引擎——MyReport 2.3.6.0 + 免Flex开发集成版 release 2.3.6.0 --新增功能:报表编辑器支持打开/报表本地文件功能 --新增功能:单元格垂直合并 --新增功能:报表编辑器,标题行支持单个和多个单元格添加 --修改功能:修改报表编辑器,添加列,删除列功能 --修改功能:修改报表编辑器行编辑效果 --优化样式文件数据量 release 2.3.5.1 --修正Bug:单元格合并时,合并列宽计算错误 release 2.3.5.0 --新增功能:增加报表高度自动递增设置 --新增功能:新增一维码EAN13,EAN8函数:ToEAN13,ToEAN8 --新增功能:新增LenInt函数 --新增功能:表达式引擎支持一元运算符+,-, ! --新增功能:表达式引擎支持字符串定义"",'' --新增功能:打印预览数据筛选 --修改功能:修改统计函数类 --修改功能:修改Fixed,Ceil,Floor,Round函数 --修改功能:修改表达式编辑器函数列表 --修正Bug:报表编辑器删除设计项界面刷新问题 --修正Bug:修改报表右边距界面刷新问题 详情参考:http://blog.csdn.net/hunkcai/archive/2011/04/09/6312603.aspx Web报表引擎: Web上的良好的打印解决方案,WinForm的打印预览体现,报表自动化,支持直接打印,页小计,统计,转成金额大写,一维码显示,图片显示 ,条件样式等功能,满足中国式报表的常见功能需求。 Web报表编辑器: * Web上良好的报表设计用户体现,可视化编辑,支持设计/预览视图撤换。 * 通过下拉框选择,快速设置报表数据的绑定。 * 支持单元格内容格式化(数字,金额,日期等)输出。 * 通过表达式编辑,轻松设计页小计行或页统计行。 * 支持标题高度,行高,列宽拖动编辑,拖放调整顺序等良好操作。 内含: * MyReport报表引擎库文件MyReport.swc。 * MyReport免Flex开发集成版,适用于以传统html构建的系统,希望集成MyReport报表引擎的报表预览、打印报表设计功能,并且不需要进 行Flex相关的二次开发的用户。 * Flex示例工程和.Net示例工程。 * 相关说明文档和示例数据。 注: * Flex示例工程,用Adobe Flash Builder 4开发环境打开,用Flex SDK 4.1进行编译。 * .Net示例工程,用Visual Studio 2010开发环境打开。 * 只需少量工作就能把MyReport整合,获得良好的打印体现和报表设计体现。 * 报表引擎效果图参考:http://blog.csdn.net/hunkcai/archive/2010/01/14/5190898.aspx * 报表编辑器效果图参考:http://blog.csdn.net/hunkcai/archive/2010/04/21/5512031.aspx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

桀骜浮沉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值