帆软报表和jeecg的进一步整合--ajax给后台传递map类型的参数

下面是页面代码:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@include file="/context/mytags.jsp"%>
<%
String deptIds = (String)request.getAttribute("departIds");

String dic="t_s_depart";
if(!"".equals(deptIds)){
    dic="t_s_depart where ID in ("+deptIds+")";
}

%>
<t:base type="jquery,easyui,tools,DatePicker"></t:base>
<html>
 <head>
  <title>FineReport Demo</title>
  <script src = "webpage/xiaohaojiao/date.js"></script>
  <script type="text/javascript">
    $(document).ready(function(){
        $("#dept").change(function(){
              $("#department").val($(this).val());
        });

        //给时间控件加上样式
        $("#dates").click(function(){WdatePicker({dateFmt:‘yyyy-MM-dd‘});});
        $("#datez").click(function(){WdatePicker({dateFmt:‘yyyy-MM-dd‘});});
        getFineReport();
    });

    function getFineReport() {
        var value="";
        var key="";

        var map = {};
        var str ="";
        map["url"]=window.frames[0].location.toString();
        $(‘.searchParams‘).each(function () {
            value = $(this).val().toString();
            key=$(this).attr("id");
            map[key] = value;
            //主要:map转json字符串放入data
            str = JSON.stringify(map);
        });
        $.ajax({
            type:"POST",
            url:"fineReportController.do?getFineUrl",
            data:{
                strMap:str
            },
            success:function(data){
                var d = $.parseJSON($.parseJSON(data).msg)[0];
                //姓名name是真实姓名_工号拼出来的,例如:张赛梅_160707302X
                window.frames[0].location=encodeURI(encodeURI(d.fineUrl));
            }
        });
    }
</script>
 </head>
 <body>
<div style="height:50px;">
    开始时间:<input id="dates" class="searchParams Wdate" type="text" value="${dates}" />
    结束时间:<input id="datez" class="searchParams Wdate" type="text"  value="${datez}"/>
    部门:
    <t:dictSelect id="dept" field="dept" type="list" dictTable="<%=dic%>" dictField="departname" dictText="departname" defaultVal="" hasLabel="false"  title="部门" ></t:dictSelect>
    <input id="department" class="searchParams" value="" type="hidden" />
    姓名:<input id="name" class="searchParams" value="" type="text" />     

    <a class="l-btn" onclick="getFineReport()" href="#">
        <span class="l-btn-left">
            <span class="l-btn-text icon-search l-btn-icon-left">查询</span>
        </span>
    </a>
</div>

 <iframe id="reportFrame" width="100%" height="100%" src="${fineReport}" ></iframe>
 </body>
</html>

下面是后台代码:

package com.jeecg.xiaohaojiao.controller;

import java.net.URLDecoder;
import java.net.URLEncoder;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Validator;

import org.apache.log4j.Logger;
import org.jeecgframework.core.common.controller.BaseController;
import org.jeecgframework.core.common.model.json.AjaxJson;
import org.jeecgframework.web.system.service.SystemService;
import org.jeecgframework.web.system.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import com.jeecg.xiaohaojiao.service.XhjUserDepartServiceI;
import com.jeecg.xiaohaojiao.util.RoleUtil;

import freemarker.template.SimpleDate;
import net.sf.json.JSONObject;

/**
 * @Title: Controller
 * @Description: 帆软报表页面跳转action
 * @author liuf
 * @date 2017-10-02 10:49:19
 * @version V1.0
 *
 */
@Controller
@RequestMapping("/fineReportController")
public class FineReportController extends BaseController{
    /**
     * Logger for this class
     */
    private static final Logger logger = Logger.getLogger(FineReportController.class);

    //不同角色对应的部门ids
    private String departIds = "";
    @Autowired
    private SystemService systemService;
    @Autowired
    private UserService userService;
    @Autowired
    private XhjUserDepartServiceI xhjUserDepartService;

    /**
     * 无查询条件帆软报表页面跳转方法
     * @param req
     * @return
     */
    @RequestMapping(params = "goFineReport")
    public ModelAndView goFineReport(HttpServletRequest req) {
        String id = req.getParameter("id");
        String fineReportPath = "../WebReport/ReportServer?reportlet="+id+".cpt";
        req.setAttribute("fineReport", fineReportPath);
        return new ModelAndView("xiaohaojiao/fineReport");
    }

    /**
     * 有查询条件需要控制页面权限帆软报表页面跳转方法
     * @param req
     * @return
     * @throws ParseException
     */
    @RequestMapping(params = "goFineReportForParams")
    public ModelAndView goFineReportForParams(HttpServletRequest req) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM");

        Date date = new Date();
        String beginTime = sd.format(date);
        String endTime = sdf.format(date);
        req.setAttribute("dates", beginTime+"-01");
        req.setAttribute("datez", endTime);

        try {
            departIds = RoleUtil.getDeptIds(req,systemService,userService,xhjUserDepartService);
        } catch (Exception e) {
            e.printStackTrace();
        }
        String id = req.getParameter("id");
        String fineReportPath = "../WebReport/ReportServer?reportlet="+id+".cpt";
        req.setAttribute("fineReport", fineReportPath);
        req.setAttribute("departIds", departIds);
        return new ModelAndView("xiaohaojiao/fineReportForParams");
    }

    /**
     * 页面点击查询的时候重新拼接的url,用于重新加载iframe
     * @param request
     * @param response
     * @return
     * @throws Exception
     */
    @RequestMapping(params = "getFineUrl")
    @ResponseBody
    public AjaxJson getFineUrl(HttpServletRequest request, HttpServletResponse response) throws Exception{
        String fineUrl = "";
        AjaxJson j = new AjaxJson();
        Map<String,Object> map = new HashMap<String ,Object>();
        String strMap = request.getParameter("strMap");
        JSONObject jb = JSONObject.fromObject(strMap);
        Map filterMap = (Map)jb;
        fineUrl = ((String) filterMap.get("url")).split("&")[0];
        Iterator<String> iter = filterMap.keySet().iterator();

        while (iter.hasNext()) {
           String key = iter.next();
           String value = (String) filterMap.get(key);
           if (!"url".equals(key)) {
               fineUrl = fineUrl + "&" + key + "=" + (value==null?"":value);
           }
        }
        map.put("fineUrl", fineUrl);
        net.sf.json.JSONArray jsonArray = net.sf.json.JSONArray.fromObject(map);
        j.setMsg(jsonArray.toString());
        return j;
    }
}
时间: 2024-11-27 11:27:13

帆软报表和jeecg的进一步整合--ajax给后台传递map类型的参数的相关文章

帆软报表查询时间段内的月份

用帆软报表做统计时,经常要用到查询时间段内的月份.sql如下(oracle): SELECT TO_CHAR(ADD_MONTHS(TO_DATE('${STARTTIME}', 'YYYY-MM'), ROWNUM - 1),'yyyy-MM') eDate, TO_CHAR(ADD_MONTHS(TO_DATE('${STARTTIME}', 'YYYY-MM'), ROWNUM - 1),'MM') DAY_ID, TO_CHAR(ADD_MONTHS(TO_DATE('${STARTTI

帆软报表学习之数据连接

帆软报表FineReport中数据连接的JDBC连接池属性问题 连接池原理 在帆软报表FineReport中,连接池主要由三部分组成:连接池的建立.连接池中连接使用的治理.连接池的关闭.下面就着重讨论这三部分及连接池的配置问题. 1. 连接池原理 连接池技术的核心思想,是连接复用,通过建立一个数据库连接池以及一套连接使用.分配.治理策略,使得该连接池中的连接可以得到高效.安全的复用,避免了数据库连接频繁建立.关闭的开销. 另外,由于对JDBC中的原始连接进行了封装,从而方便了数据库应用对于连接的

帆软报表FineReport中数据连接之Websphere配置JNDI连接

以oracle9i数据源制作的模板jndi.cpt为例来说明如何在FineReport中的Websphere配置JNDI连接.由于常用服务器的JNDI驱动过大,帆软报表FineReport中没有自带,所以可以采取下面的方法来使用服务器中的JNDI连接.原理:先用JDBC连接到数据库,建立数据库连接,然后用SQL或者其他方法创建数据集,使用数据集制作报表,然后把建立的数据库连接从JDBC连接改成JNDI连接,然后配置好服务器中的JNDI连接,然后按照我们下面章节所说的部署好服务器,这样就可以通过W

帆软报表平台的使用方法

一般情况下,报表平台作为所有报表统筹管理的平台而存在.作为报表系统的中央枢纽性功能,报表平台到底是什么样子的,我们在报表平台中具体又能进行怎样的的活动?下面以FineReport报表平台为例进行解读.FineReport报表平台是帆软公司开发的独立报表管理系统,在报表平台中,管理员可以进行报表管理.用户管理.权限管理和平台管理,用户可以查阅.收藏.填报报表,完成各项业务活动.配合帆软报表强大的数据连接.报表制作功能,报表平台可以轻松成为报表中心,为各部门提供各种数据和报表支持. 作为管理员,如何

帆软报表FineReport中数据连接之Tomcat配置JNDI连接

1. 问题描述 在帆软报表FineReport中,通过JNDI方式定义数据连接,首先在Tomcat服务器配置好JNDI,然后在设计器中直接调用JNDI的名字,即可成功使用JNDI连接,连接步骤如下: 2. 实现步骤 · 使用版本及环境 下面以Windows XP系统,tomcat 5.5,jdk 1.6,连接SQLserver2000数据库进行JNDI连接说明,其他版本数据库步骤基本相同. 2.1 拷贝驱动 将连接数据库的JDBC驱动拷贝到Tomcat安装目录下的%Tomcat_HOME%\co

大庆金桥帆软报表案例

大庆金桥在多个系统中大量使用帆软报表,来进行数据统计展示,数据在线填报和打印导出等功能.下面是某个门户系统后台报表管理中的报表截图. 该后台报表管理系统中,涉及到了多个子系统的报表管理工作. 一.生产类统计报表 统计生成部门下不同装置的产销存 分时段查看各运行时段生成环境记录 锅炉运行记录表 智能巡检 二.出入库统计报表 经济指标报表 三.计量和指标类报表

[帆软报表]自定义报表导出文件名

在帆软报表中,导出报表的名称默认是报表cpt文件的文件名,例如报表模版文件是report.cpt,则导出的excel报表文件名就是report.xls. 想要自定义报表导出的文件名则需要利用"_filename_"这个参数. 例如报表访问路径如下: http://localhost:8075/WebReport/ReportServer?reportlet=GettingStarted.cpt&_filename_=报表 则导出的excel报表文件名就是报表.xls. 此外,我

帆软报表(finereport)入门-2 单元格中各颜色标识的含义

帆软报表(finereport)单元格中,可根据单元格角标的颜色判断单元格进行的操作 过滤:单元格左下角黄色三角形 条件属性:单元格左上角红色三角形.  控件:单元格右侧中间的各种矩形.  左父格:单元格左侧蓝色向下的箭头.  上父格:单元格上册蓝色向右的箭头.  原文地址:https://www.cnblogs.com/Williamls/p/10523949.html

帆软报表FineReport2016年1月份产品更新一览

1.条件属性可使用页码参数插件 由于报表计算逻辑关系,条件属性中取不到页码公式.但是有些场景下又是需要在条件属性中取到页码的,比如标题只要偶数页显示,比如奇数页标题标红等等. 插件安装完成后,条件属性里$$page_number$$totalPage_number也可以参与计算了,目前条件属性里可以设置边框.字体.新值.背景.颜色等样式. 注:目前只有样式可用,新值无法自动调整行高列宽 具体可查看文档:http://www.finereporthelp.com/help/15/2/22.html