-
引入依赖
<dependency> <groupId>com.bstek.ureport</groupId> <artifactId>ureport2-console</artifactId> <version>2.2.9</version> </dependency>
-
application.properties添加配置
ureport.disableHttpSessionReportCache=false ureport.disableFileProvider=true ureport.fileStoreDir=/WEB-INF/ureportfiles ureport.debug=true
-
实体类
import lombok.Data; import javax.persistence.*; import java.io.Serializable; import java.util.Date; @Data @Table(name = "ureport_file_tbl") public class UreportFileEntity implements Serializable { private static final long serialVersionUID = 1L; @Id @Column(name = "id_") @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "name_") private String name; @Column(name = "content_") private byte[] content; @Column(name = "create_time_") private Date createTime; @Column(name = "update_time_") private Date updateTime; }
-
配置存储器
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.schinta.akt.entity.UreportFileEntity;
import com.schinta.akt.service.UreportFileService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.bstek.ureport.provider.report.ReportFile;
import com.bstek.ureport.provider.report.ReportProvider;
import lombok.Setter;
/**
* @author 7788
* @description 自定义报表存储器
*/
@Setter
@Component
@Slf4j
public class MysqlProvider implements ReportProvider {
private static final String NAME = "ureport-provider";
private String prefix = "report-";
private boolean disabled = false;
@Autowired
private UreportFileService ureportFileService;
/**
* 根据报表名加载报表文件
*
* @param file 报表名称
* @return 返回的InputStream
*/
@Override
public InputStream loadReport(String file) {
UreportFileEntity ureportFileEntity = ureportFileService.queryUreportFileEntityByName(getCorrectName(file));
byte[] content = ureportFileEntity.getContent();
ByteArrayInputStream inputStream = new ByteArrayInputStream(content);
return inputStream;
}
/**
* 根据报表名,删除指定的报表文件
*
* @param file 报表名称
*/
@Override
public void deleteReport(String file) {
ureportFileService.deleteReportFileByName(getCorrectName(file));
}
/**
* 获取所有的报表文件
*
* @return 返回报表文件列表
*/
@Override
public List<ReportFile> getReportFiles() {
List<UreportFileEntity> list = ureportFileService.queryReportFileList();
List<ReportFile> reportList = new ArrayList<>();
for (UreportFileEntity ureportFileEntity : list) {
reportList.add(new ReportFile(ureportFileEntity.getName(), ureportFileEntity.getUpdateTime()));
}
return reportList;
}
/**
* 保存报表文件
*
* @param file 报表名称
* @param content 报表的XML内容
*/
@Override
public void saveReport(String file, String content) {
file = getCorrectName(file);
UreportFileEntity ureportFileEntity = ureportFileService.queryUreportFileEntityByName(file);
Date currentDate = new Date();
if (ureportFileEntity == null) {
ureportFileEntity = new UreportFileEntity();
ureportFileEntity.setName(file);
ureportFileEntity.setContent(content.getBytes());
ureportFileEntity.setCreateTime(currentDate);
ureportFileEntity.setUpdateTime(currentDate);
ureportFileService.insertReportFile(ureportFileEntity);
} else {
ureportFileEntity.setContent(content.getBytes());
ureportFileEntity.setUpdateTime(currentDate);
ureportFileService.updateReportFile(ureportFileEntity);
}
}
/**
* @return 返回存储器名称
*/
@Override
public String getName() {
return NAME;
}
/**
* @return 返回是否禁用
*/
@Override
public boolean disabled() {
return disabled;
}
/**
* @return 返回报表文件名前缀
*/
@Override
public String getPrefix() {
return prefix;
}
/**
* @param name 名称
* @return String
* 获取没有前缀的文件名
*/
private String getCorrectName(String name) {
if (name.startsWith(prefix)) {
name = name.substring(prefix.length());
}
return name;
}
}
- 配置数据源
import java.sql.Connection;
import java.sql.SQLException;
import javax.servlet.Servlet;
import javax.sql.DataSource;
import com.bstek.ureport.console.UReportServlet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
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 com.bstek.ureport.definition.datasource.BuildinDatasource;
/**
* @author 7788
* 内置数据源,实现BuildinDatasource接口
*/
@Configuration
@ImportResource("classpath:ureport-console-context.xml")
public class UreportDataSource implements BuildinDatasource {
private static final String NAME = "UreportDataSource";
private final Logger log = LoggerFactory.getLogger(UreportDataSource.class);
@Autowired
private DataSource dataSource;
@Override
public String name() {
return NAME;
}
@Override
public Connection getConnection() {
try {
return dataSource.getConnection();
} catch (SQLException e) {
log.error("Ureport 数据源 获取连接失败!");
e.printStackTrace();
}
return null;
}
/**
* 注册 UReportServlet
* 值为“/ureport/*”的 urlMappings 是一定不能变的,否则系统将无法运行。
*/
@Bean
public ServletRegistrationBean<Servlet> ureportServlet() {
ServletRegistrationBean<Servlet> bean = new ServletRegistrationBean<>(new UReportServlet(), "/ureport/*");
return bean;
}
}
- 访问 http://localhost:9010/ureport/designer
本文暂时没有评论,来添加一个吧(●'◡'●)