程序员的资源宝库

网站首页 > gitee 正文

springboot2 集成ureport2 进行 在线 excel word pdf等操作

sanyeah 2024-04-01 11:37:03 gitee 3 ℃ 0 评论

  1. 引入依赖

     <dependency>
         <groupId>com.bstek.ureport</groupId>
         <artifactId>ureport2-console</artifactId>
         <version>2.2.9</version>
     </dependency>
    
  2. application.properties添加配置

       ureport.disableHttpSessionReportCache=false
        
       ureport.disableFileProvider=true
       ureport.fileStoreDir=/WEB-INF/ureportfiles
    
       ureport.debug=true
    
  3. 实体类

    
    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;
    }
    
    
  4. 配置存储器


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;
    }


}



  1. 配置数据源

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;
    }

}


  1. 访问 http://localhost:9010/ureport/designer

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表