Commit 5894d2be01511fef94d15046604ff5cd861b5fdb

Authored by liuhongfeng
Committed by YunaiV
1 parent 7c43c3a2

【修改】ureport2 集成的SQL语句,并适配数据库存储方式

yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/framework/ureport/config/UreportConfig.java renamed to yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/framework/ureport/config/UreportConfiguration.java
... ... @@ -12,17 +12,15 @@ import javax.servlet.Servlet;
12 12 /**
13 13 * Ureport 配置类
14 14 * 加载ureport对应的xml配置文件
  15 + * @author 赤焰
15 16 */
16   -@PropertySource(value = {"classpath:ureport.properties"})
17   -@ImportResource("classpath:ureport-console-context.xml")
18 17 @Configuration
19   -public class UreportConfig{
  18 +@ImportResource({"classpath:ureport-console-context.xml"})
  19 +@PropertySource(value = {"classpath:ureport.properties"})
  20 +public class UreportConfiguration {
20 21  
21   - /**
22   - * ureport2报表Servlet配置
23   - */
24 22 @Bean
25   - public ServletRegistrationBean<Servlet> ureport2Servlet(){
  23 + public ServletRegistrationBean<Servlet> registrationBean() {
26 24 return new ServletRegistrationBean<>(new UReportServlet(), "/ureport/*");
27 25 }
28 26  
... ...
yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/framework/ureport/config/UreportDataSource.java
... ... @@ -16,7 +16,7 @@ import java.sql.SQLException;
16 16 @Component
17 17 public class UreportDataSource implements BuildinDatasource {
18 18  
19   - private static final String NAME = "本机数据源";
  19 + private static final String NAME = "UreportDataSource";
20 20  
21 21 @Resource
22 22 private DataSource dataSource;
... ...
yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/framework/ureport/provider/UreportDatabaseProvider.java
1   -/*
2 1 package cn.iocoder.yudao.module.report.framework.ureport.provider;
3 2  
  3 +import cn.hutool.core.bean.BeanUtil;
4 4 import cn.hutool.core.collection.CollUtil;
  5 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
  6 +import cn.iocoder.yudao.module.report.controller.admin.ureport.vo.UreportFileSaveReqVO;
5 7 import cn.iocoder.yudao.module.report.dal.dataobject.ureport.UreportFileDO;
6   -import cn.iocoder.yudao.module.report.dal.mysql.ureport.UreportFileMapper;
  8 +import cn.iocoder.yudao.module.report.service.ureport.UreportFileService;
7 9 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
8 10 import com.bstek.ureport.provider.report.ReportFile;
9 11 import com.bstek.ureport.provider.report.ReportProvider;
... ... @@ -26,49 +28,43 @@ import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionU
26 28 import static cn.iocoder.yudao.module.report.enums.ErrorCodeConstants.UREPORT_FILE_EXISTS;
27 29 import static cn.iocoder.yudao.module.report.enums.ErrorCodeConstants.UREPORT_FILE_NOT_EXISTS;
28 30  
29   -*/
30 31 /**
31 32 * 提供数据库的存储方式
32 33 * @author 赤焰
33   - *//*
34   -
  34 + */
35 35 @Slf4j
  36 +@Setter
36 37 @Component
37 38 @ConfigurationProperties(prefix = "ureport.provider.database")
38 39 public class UreportDatabaseProvider implements ReportProvider{
39 40  
40   - private static final String NAME = "数据库存储系统";
41   -
42   - private String prefix = "db:";
  41 + private static final String NAME = "mysql-provider";
43 42  
44   - private boolean disabled;
  43 + private String prefix = "mysql:";
45 44  
  45 + private boolean disabled = false;
46 46 @Resource
47   - private UreportFileMapper ureportFileMapper;
  47 + private UreportFileService ureportFileService;
48 48  
49 49 @Override
50 50 public InputStream loadReport(String file) {
51   - LambdaQueryWrapper<UreportFileDO> queryWrapper = new LambdaQueryWrapper<>();
52   - queryWrapper.eq(UreportFileDO::getFileName, getCorrectName(file));
53   - UreportFileDO reportDo = ureportFileMapper.selectOne(queryWrapper);
54   - if (reportDo == null) {
  51 + Long reportDo = ureportFileService.checkExistByName(getCorrectName(file));
  52 + if (reportDo <=0) {
55 53 throw exception(UREPORT_FILE_NOT_EXISTS);
56 54 }
57   - byte[] content = reportDo.getFileContent();
  55 + UreportFileDO ureportFileDO = ureportFileService.queryUreportFileDoByName(getCorrectName(file));
  56 + byte[] content = ureportFileDO.getFileContent();
58 57 return new ByteArrayInputStream(content);
59 58 }
60 59  
61 60 @Override
62 61 public void deleteReport(String file) {
63   - LambdaQueryWrapper<UreportFileDO> queryWrapper = new LambdaQueryWrapper<>();
64   - queryWrapper.eq(UreportFileDO::getFileName, getCorrectName(file));
65   - ureportFileMapper.delete(queryWrapper);
  62 + ureportFileService.deleteReportFileByName(getCorrectName(file));
66 63 }
67 64  
68 65 @Override
69 66 public List<ReportFile> getReportFiles() {
70   - LambdaQueryWrapper<UreportFileDO> reportFileQueryWrapper = new LambdaQueryWrapper<>();
71   - List<UreportFileDO> list = ureportFileMapper.selectList(reportFileQueryWrapper);
  67 + List<UreportFileDO> list = ureportFileService.queryReportFileList();
72 68 List<ReportFile> reportList = new ArrayList<>();
73 69 if(CollUtil.isEmpty(list)){
74 70 return reportList;
... ... @@ -88,19 +84,23 @@ public class UreportDatabaseProvider implements ReportProvider{
88 84 file = getCorrectName(file);
89 85 LambdaQueryWrapper<UreportFileDO> queryWrapper = new LambdaQueryWrapper<>();
90 86 queryWrapper.eq(UreportFileDO::getFileName, file);
91   - Long count = ureportFileMapper.selectCount(queryWrapper);
  87 + Long count = ureportFileService.checkExistByName(file);
92 88 if(count>1){
93 89 throw exception(UREPORT_FILE_EXISTS);
94 90 }
95   - UreportFileDO ureportFileDO = ureportFileMapper.selectOne(queryWrapper);
  91 + UreportFileDO ureportFileDO = ureportFileService.queryUreportFileDoByName(file);
  92 + UreportFileSaveReqVO saveReqVO = new UreportFileSaveReqVO();
96 93 if (ureportFileDO == null) {
97   - ureportFileDO = new UreportFileDO();
98   - ureportFileDO.setFileName(file);
99   - ureportFileDO.setFileContent(content.getBytes());
100   - ureportFileMapper.insert(ureportFileDO);
  94 + saveReqVO.setFileName(file);
  95 + saveReqVO.setFileContent(content);
  96 + saveReqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
  97 + ureportFileService.createUreportFile(saveReqVO);
101 98 } else {
102   - ureportFileDO.setFileContent(content.getBytes());
103   - ureportFileMapper.update(ureportFileDO, queryWrapper);
  99 + saveReqVO.setId(ureportFileDO.getId());
  100 + saveReqVO.setFileName(file);
  101 + saveReqVO.setFileContent(content);
  102 + saveReqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
  103 + ureportFileService.updateUreportFile(saveReqVO);
104 104 }
105 105 }
106 106  
... ... @@ -120,10 +120,9 @@ public class UreportDatabaseProvider implements ReportProvider{
120 120 }
121 121  
122 122 private String getCorrectName(String name) {
123   - if (name.startsWith(prefix)) {
124   - name = name.substring(prefix.length(), name.length());
  123 + if (name.startsWith(getPrefix())) {
  124 + name = name.substring(getPrefix().length());
125 125 }
126 126 return name;
127 127 }
128 128 }
129   -*/
... ...
yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/service/ureport/UreportFileService.java
1 1 package cn.iocoder.yudao.module.report.service.ureport;
2 2  
3   -import java.util.*;
4   -import javax.validation.*;
5   -import cn.iocoder.yudao.module.report.controller.admin.ureport.vo.*;
6   -import cn.iocoder.yudao.module.report.dal.dataobject.ureport.UreportFileDO;
7 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
8   -import cn.iocoder.yudao.framework.common.pojo.PageParam;
  4 +import cn.iocoder.yudao.module.report.controller.admin.ureport.vo.UreportFilePageReqVO;
  5 +import cn.iocoder.yudao.module.report.controller.admin.ureport.vo.UreportFileSaveReqVO;
  6 +import cn.iocoder.yudao.module.report.dal.dataobject.ureport.UreportFileDO;
  7 +
  8 +import javax.validation.Valid;
  9 +import java.util.List;
9 10  
10 11 /**
11 12 * Ureport2报表 Service 接口
12 13 *
13 14 * @author 芋道源码
14 15 */
15   -public interface UreportFileService {
  16 +public interface UreportFileService {
16 17  
17 18 /**
18 19 * 创建Ureport2报表
... ... @@ -52,4 +53,34 @@ public interface UreportFileService {
52 53 */
53 54 PageResult<UreportFileDO> getUreportFilePage(UreportFilePageReqVO pageReqVO);
54 55  
55   -}
56 56 \ No newline at end of file
  57 +
  58 + /**
  59 + * 根据报表名称检查报表是否存在
  60 + * @param name 报表名称
  61 + * @return
  62 + */
  63 + Long checkExistByName(String name);
  64 +
  65 + /**
  66 + * 根据报表名称查询报表
  67 + * @param name 报表名称
  68 + * @return
  69 + */
  70 + UreportFileDO queryUreportFileDoByName(String name);
  71 +
  72 +
  73 + /**
  74 + * 查询全部报表
  75 + * @return
  76 + */
  77 + List<UreportFileDO> queryReportFileList();
  78 +
  79 +
  80 + /**
  81 + * 根据报表名称删除报表
  82 + * @param name
  83 + * @return
  84 + */
  85 + int deleteReportFileByName(String name);
  86 +
  87 +}
... ...
yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/service/ureport/UreportFileServiceImpl.java
1 1 package cn.iocoder.yudao.module.report.service.ureport;
2 2  
3   -import org.springframework.stereotype.Service;
4   -import javax.annotation.Resource;
5   -import org.springframework.validation.annotation.Validated;
6   -import org.springframework.transaction.annotation.Transactional;
7   -
8   -import java.util.*;
9   -import cn.iocoder.yudao.module.report.controller.admin.ureport.vo.*;
10   -import cn.iocoder.yudao.module.report.dal.dataobject.ureport.UreportFileDO;
  3 +import cn.hutool.core.collection.CollectionUtil;
11 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
12   -import cn.iocoder.yudao.framework.common.pojo.PageParam;
13 5 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
14   -
  6 +import cn.iocoder.yudao.module.report.controller.admin.ureport.vo.UreportFilePageReqVO;
  7 +import cn.iocoder.yudao.module.report.controller.admin.ureport.vo.UreportFileSaveReqVO;
  8 +import cn.iocoder.yudao.module.report.dal.dataobject.ureport.UreportFileDO;
15 9 import cn.iocoder.yudao.module.report.dal.mysql.ureport.UreportFileMapper;
  10 +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  11 +import org.springframework.stereotype.Service;
  12 +import org.springframework.validation.annotation.Validated;
  13 +
  14 +import javax.annotation.Resource;
  15 +import java.util.List;
16 16  
17 17 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
18   -import static cn.iocoder.yudao.module.report.enums.ErrorCodeConstants.*;
  18 +import static cn.iocoder.yudao.module.report.enums.ErrorCodeConstants.UREPORT_FILE_NOT_EXISTS;
19 19  
20 20 /**
21 21 * Ureport2报表 Service 实现类
... ... @@ -71,4 +71,34 @@ public class UreportFileServiceImpl implements UreportFileService {
71 71 return ureportFileMapper.selectPage(pageReqVO);
72 72 }
73 73  
74   -}
75 74 \ No newline at end of file
  75 + @Override
  76 + public Long checkExistByName(String name) {
  77 + LambdaQueryWrapper<UreportFileDO> queryWrapper = new LambdaQueryWrapper<>();
  78 + queryWrapper.eq(UreportFileDO::getFileName,name);
  79 + return ureportFileMapper.selectCount(queryWrapper);
  80 + }
  81 +
  82 + @Override
  83 + public UreportFileDO queryUreportFileDoByName(String name) {
  84 + LambdaQueryWrapper<UreportFileDO> queryWrapper = new LambdaQueryWrapper<>();
  85 + queryWrapper.eq(UreportFileDO::getFileName,name);
  86 + List<UreportFileDO> list = ureportFileMapper.selectList(queryWrapper);
  87 + if(CollectionUtil.isNotEmpty(list)){
  88 + return list.get(0);
  89 + }
  90 + return null;
  91 + }
  92 +
  93 + @Override
  94 + public List<UreportFileDO> queryReportFileList() {
  95 + LambdaQueryWrapper<UreportFileDO> queryWrapper = new LambdaQueryWrapper<>();
  96 + return ureportFileMapper.selectList(queryWrapper);
  97 + }
  98 +
  99 + @Override
  100 + public int deleteReportFileByName(String name) {
  101 + LambdaQueryWrapper<UreportFileDO> queryWrapper = new LambdaQueryWrapper<>();
  102 + queryWrapper.eq(UreportFileDO::getFileName,name);
  103 + return ureportFileMapper.delete(queryWrapper);
  104 + }
  105 +}
... ...
yudao-module-report/yudao-module-report-biz/src/main/resources/ureport.properties
1   -ureport.disableHttpSessionReportCache=false
2   -ureport.disableFileProvider=false
3   -ureport.fileStoreDir=D:\\ureport\\files
  1 +ureport.disableHttpSessionReportCache=true
  2 +ureport.disableFileProvider=true
  3 +ureport.fileStoreDir=/WEB-INF/ureportfiles
4 4 ureport.debug=true
... ...
yudao-server/src/main/resources/application.yaml
... ... @@ -190,6 +190,7 @@ yudao:
190 190 - /admin-api/system/sms/callback/* # 短信回调接口,无法带上租户编号
191 191 - /admin-api/pay/notify/** # 支付回调通知,不携带租户编号
192 192 - /jmreport/* # 积木报表,无法携带租户编号
  193 + - /ureport/* # ureport报表,无法携带租户编号
193 194 - /admin-api/mp/open/** # 微信公众号开放平台,微信回调接口,无法携带租户编号
194 195 ignore-tables:
195 196 - system_tenant
... ... @@ -228,6 +229,7 @@ yudao:
228 229 - jimu_report_link
229 230 - jimu_report_map
230 231 - jimu_report_share
  232 + - ureport_file
231 233 - rep_demo_dxtj
232 234 - rep_demo_employee
233 235 - rep_demo_gongsi
... ... @@ -261,3 +263,8 @@ debug: false
261 263 minidao :
262 264 base-package: org.jeecg.modules.jmreport.desreport.dao*
263 265 db-type: mysql
  266 +#ureport配置
  267 +ureport:
  268 + provider:
  269 + database:
  270 + disabled: false
... ...