SpringBoot整合Ureport2報表及常見使用方法

1、Maven 添加依賴

<!--ureport-->
   <dependency>
     <groupId>com.syyai.spring.boot</groupId>
     <artifactId>ureport-spring-boot-starter</artifactId>
     <version>2.2.9</version>
   </dependency>

2、編寫ureport2 的配置類

配置類實現 BuildinDatasource
1)註冊Bean
2)重命名ureport2的數據源名稱

import com.bstek.ureport.console.UReportServlet;
import com.bstek.ureport.definition.datasource.BuildinDatasource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;

import javax.annotation.Resource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
@ImportResource("classpath:ureport-console-context.xml")//不加項目能夠啟動但是會導致加載數據源報錯或加載不瞭
@Configuration
@EnableAutoConfiguration
public class UreportConfig implements BuildinDatasource {
  @Resource
  DataSource dataSource;
  private Logger log = LoggerFactory.getLogger(getClass());

  @Bean //定義ureport的啟動servlet
  public ServletRegistrationBean buildUreportServlet(){
    return new ServletRegistrationBean(new UReportServlet(),"/ureport/*");// /ureport/* 不可更改
  }

  @Override
  public String name() {
    return "ureport2 數據源";
  }

  @Override
  public Connection getConnection() {
    try {
      return dataSource.getConnection();
    } catch (SQLException e) {
      log.error("Ureport 數據源 獲取連接失敗!");
      e.printStackTrace();
    }
    return null;
  }

}

3、ureport2 訪問路徑

http://127.0.0.1:8080/項目名稱/ureport/designer

在這裡插入圖片描述

4、選擇數據源方式:內置數據源

ureport2 的配置類實現 BuildinDatasource ,即配好瞭內置的數據源,直接使用即可

在這裡插入圖片描述

5、選擇數據源方式:SpringBean數據源配置

數據源名稱:自定義命名
Bean ID: Bean 對象–yjReportService ,與java類名稱一致 首字母需要轉成小寫

在這裡插入圖片描述

在這裡插入圖片描述

6、添加Sping Bean 數據源的數據集

數據集名稱:自定義
方法名:你配置的Bean對象中的方法名稱,即service中的方法,該方法必 須包含3個參數,否則無法找到
返回對象:報表中的返回數據接收對象,全路徑名,可不寫,自己手動添加返回字段(未嘗試)

在這裡插入圖片描述

報表編輯完成後參數傳遞方式:http://127.0.0.1:8088/項目名稱/ureport/preview?_u=file:報表名稱&parameters=參數值

業務邏輯代碼:參數值進行接收即可

在這裡插入圖片描述

7、內置數據源方式配置數據集

配置數據集有2種方式:
1、使用SQL語句查詢數據
2、使用${表達式}:也是SQL的形式,用字符串拼接起來

7.1、使用SQL的方式

正常編寫SQL即可,需要傳遞參數用‘ :’ 加字段名表示
可添加默認的參數,設置的參數名字和SQL中的參數名字保持一致
如果沒傳參,則使用默認的參數進行查詢
若有多個參數,同樣的方式進行添加
例:select * from 表 where id = :id

在這裡插入圖片描述

報表制作完成後,報表參數傳遞方式:http://127.0.0.1:8080/項目名稱/ureport/preview?_u=file:報表名稱&iid=參數值

7.2、使用${表達式}方式

使用表達式的方式通常都是動態SQL的方式查詢數據
外部參數傳進報表後再進行查詢
ureport2獲取參數的方式:param(“參數字段”)
例子:${ SQL 語句 }

先看看最終效果:報表使用iframe 頁面展示,外部參數傳入報表查詢數據

在這裡插入圖片描述

7.2.1、制作報表:

使用${ sql 語句} 註意事項:
若SQL中包含單引號包裹的字符串,那麼需要加上“\”來為單引號轉義,否則會出現語法錯誤
判斷外部是否傳遞參數,2種方式:
1、使用三目表達式:判斷是否為空,不為空則拼接SQL語句條件
例:(param(“參數名稱”)!=null && param(“參數名稱”)!=”” ? “and 字段 = ‘”+param(“參數名稱”)+”‘” : “”)
2、使用函數(較為簡潔),可使用添加參數方式,或者直接獲取參數方式
1)添加參數方式(借鑒上面的sql 傳參的方式,:+字段): (emptyparam(“name”)==false ? “and name=:name” : “”)
2)直接獲取參數方式:
(emptyparam(“name”)==false ? “and name=”\’ “+param(“參數名稱”)+”\'” ” : ” “)

註意字符串拼接後,sql語句前後的空格問題,單引號加 \ 的問題
${
 	"select from 表1 a "+
  "left join 表2 b on b.id=a.id "+
  "where 1=1 "
  + (param("參數名稱")!=null && param("參數名稱")!="" ? 
    		"and 字段 = \'"+param("參數名稱")+"\'" : " ")
  +")t "  
}

在這裡插入圖片描述

報表制作完成後,報表參數傳遞方式:http://127.0.0.1:8080/項目名稱/ureport/preview?_u=file:報表名稱&參數名稱=參數值

8、點擊報表的數據跳轉頁面,查看詳情

最終目標
在這裡插入圖片描述

在報表中添加需要跳轉連接的地方進行URL配置
URL上需要傳遞報表中的某個參數,則點擊URL參數配置
URL:自行配置 ,當前目錄註意加 “點點/”
例:. ./yw/ssj/SearchList

在這裡插入圖片描述

8.1、配置URL上傳遞的參數

若獲取當前單元格的數值作為參數,則值表達式應為:#
若獲取當前單元格的對象的其他屬性作為參數,則值表達式為:#.屬性名稱
若獲取外部傳進報表的參數作為參數,則值表達式為: param(“參數名稱”)

在這裡插入圖片描述

9、某些數據為數值,對應的數據解釋

獲取的數據庫數據為數字標識,需要重置單元格的數據顯示
點擊數據映射進行添加
例:1 表示成功。0表示失敗 等

在這裡插入圖片描述

10、格式化單元格,區分標識數據

目標效果
在這裡插入圖片描述

10.1、報表編輯

在需要進行格式化單元格點擊配置條件

在這裡插入圖片描述

分別配置超標和未超標單元格格式化的顏色
條件配置時:
1、若當前值為數值類型,直接填寫數值條件即可
2、若當前的值為字符串類型,值表達式需要在字符串加上 單引號:‘當前值’
若選擇表達式的方式:參考前面值表達式的寫法(配置URL上傳遞的參數有說明)

在這裡插入圖片描述

在這裡插入圖片描述

Ureport2的使用說明

到此這篇關於SpringBoot整合Ureport2報表及常見使用方法的文章就介紹到這瞭,更多相關SpringBoot整合Ureport2內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!