2023年6月

在找到ureport2工具之前,我们生产上使用硕正工具来制作单证和报表,在我来公司之前使用硕正已经好几年了。现在需要寻找新的工具来代替硕正,在网上找了很久,也查询了很多的资料,我们后面采用ureport2来尝试一下,因为ureport2有以下几点好处:开源项目,我们可以根据自己的场景来修改源代码,跨平台,跨浏览器,测试了一下,性能也可以。所以开始着手用ureport2来作为新系统的开发工具
首先是去ureport2的官网上去了解该项目,它是一个开源项目,项目地址是:https://gitee.com/youseries/ureport , 去git clone 该项目
在自己的项目中集成ureport2的工具,在pom文件中增加ureport2的dependency,这个暂时不截图了,只要ureport2源码中的版本号和自己项目中的版本对应起来就好了
因为我们项目使用springboot开发的,但是ureport不是springboot的方式,它的所有入口都是采用servlet的方式进入的。所以现在的请求分为了2个方向,一个是项目本身的请求走的是自己的controller,另一个是ureport的请求走的是自己的servlet,所以在项目启动类中需要增加以下代码

@Bean
public ServletRegistrationBean buildUReportServlet() {
    return new ServletRegistrationBean(new DocumentUreportServlet(), UreportConstants.ureportMapping);

}

这里面的DocumentUreportServlet 继承了UReportServlet ,因为所有ureport请求都会进去到这里,我们项目对这个进行特殊处理,无非就是获取用户的信息,你可以在里面增加一些其他的逻辑

public class DocumentUreportServlet extends UReportServlet {

@Override
protected void service(HttpServletRequest request, HttpServletResponse response) {
    LoginDataHelper.init(request, response);
    try {
        super.service(request, response);
    } catch (Exception e) {
        throw new BusinessException(e.getMessage());
    }
}

}
至于UreportConstants.ureportMapping 这些都是ureport的请求地址

public static final String[] ureportMapping = {
        "/ureport/chart/*",
        "/ureport/datasource/*",
        "/ureport/preview/*",
        "/ureport/look/*",
        "/ureport/designer/*",
        "/ureport/import/*",
        "/ureport/searchFormDesigner/*",
        "/ureport/res/*",
        "/ureport/excel97/*",
        "/ureport/excel/*",
        "/ureport/pdf/*",
        "/ureport/word/*",
        "/ureport/xml/*",
};

表明这些请求地址会进入到ureport自带的serlvet,上面介绍了项目启动类集成ureport的方式