ureport2显示报表界面,以及where条件变量传值问题

springboot配置了ureport2,模板页创建完了,数据源也配置了,可以通过地址栏http://localhost:8080/ureport/preview?_u=file:模板名的方式直接访问预览界面。
但是如果数据源中有where条件,除了在地址栏拼接这个变量值,还有其他方法传这个值吗?因为通过get方法传值不适用于业务。
还有这个报表界面,有没有其他发放访问,比如说后台代码实现根据这个模板,将sql查找的list集合内容,放入到模板中。但是具体怎么实现呢?
有没有人指导下。

有没有截图明示一下

  • 你看下这篇博客吧, 应该有用👉 :ureport2学习笔记一:springboot2集成ureport2 ,使用内置方式配置数据源,并解决配置数据时的碰到的问题
  • 除此之外, 这篇博客: UReport2集成SpringBoot-配置数据源中的 2. 直连数据源 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 如下图所示配置
    在这里插入图片描述
    数据源名称:自己定义,随便写,自己能区分就行
    连接用户名:数据库用户名
    连接密码:数据库密码
    驱动名称:和配置文件保持一致
    连接URL:和配置文件保持一致
    点击“测试连接”,显示连接成功,则配置成功

  • 以下回答由chatgpt基于相关博客总结生成:

    根据参考资料可以给出以下解决方案:

    1. 确定访问路径和连接内置数据源

    在spring boot中,可以通过配置bean实现内置数据源。具体代码如下:

    @EnableAutoConfiguration
    @Configuration
    public class UReportConfig implements BuildinDatasource {
    
        @Resource
        DataSource dataSource;
    
        /**
         * 返回数据源的名称
         * @return
         */
        @Override
        public String name() {
            return "内置数据源";
        }
    
        @Override
        public Connection getConnection() {
            try {
                return dataSource.getConnection();
            } catch (SQLException e) {
                e.printStackTrace();
                System.out.println("连接数据源失败!");
            }
            return null;
        }
    }
    
    1. 配置数据集并连接数据源

    配置数据集主要有两种方式,一种是使用SQL语句查询数据,一种是使用${表达式},也是SQL的形式,用字符串拼接起来。具体代码如下:

    public class UreportDataController {
        @Resource
        private DataSource dataSource;
    
        /**
         * 使用${表达式}方式获取报表数据
         * @return
         * @throws Exception
         */
        @RequestMapping("/ureportData")
        @ResponseBody
        public List<Map<String,Object>> ureportData(@RequestParam Map<String,String> map) throws Exception{
            Connection conn = dataSource.getConnection();
            String param1 = map.get("param1");//获取前端传递进来的参数
            String sql = "select * from table where param1 = '"+param1+"'";
            PreparedStatement ps = conn.prepareStatement(sql);
            ResultSet rs = ps.executeQuery();
            ResultSetMetaData md = rs.getMetaData();
            List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
            while(rs.next()){
                Map<String,Object> map1 = new HashMap<>();
                for(int i=1;i<=md.getColumnCount();i++){
                    map1.put(md.getColumnName(i),rs.getObject(i));
                }
                list.add(map1);
            }
            return list;
        }
    }
    
    1. 打开报表设计器

    在浏览器地址栏输入http://localhost:9999/ureport/designer即可打开报表设计器。

    1. 选择内置数据源

    在配置文件中使用以下代码来选择内置数据源。

    ureport:
      ds:
        datasource:
          name: 内置数据源
    
    1. 实现打印按钮并显示模板数据的打印界面

    可以使用iframe页面嵌入报表,将外部参数传入报表查询数据即可。具体代码如下:

    <iframe id="ureport" style="width: 100%;height: 600px;" scrolling="no" frameborder="0"></iframe>
    
    $(document).on("click","#printBtn",function(){
        var param1 = "xxx";//获取打印时需要传递的参数
        var url = "/ureport/preview?_u=simple.ureport.xml&param1=" + param1;//访问的路径
        $('#ureport').attr('src', url);
    });
    
    1. 配置超标和未超标单元格格式化的颜色

    可以在报表设计器中,通过下面的步骤进行配置: 1. 在需要进行格式化的单元格上,右键选择"配置条件"。 2. 分别配置超标和未超标单元格格式化的颜色。 3. 条件配置时,若当前值为数值类型,直接填写数值条件即可;若当前的值为字符串类型,值表达式需要在字符串加上单引号。

    1. 最终效果

    在浏览器中输入http://localhost:9999/ureport/designer,打开报表设计器,在上面添加模板,然后在代码中获取模板数据并展示在前端页面,在页面中配置需要的功能和内容,通过点击打印按钮打印需要的内容。