Browse Source

【优化】ureport2菜单,初始化数据,按照规范重新进行命名处理

liuhongfeng 1 year ago
parent
commit
0d3efe4f80
27 changed files with 728 additions and 739 deletions
  1. 21 24
      sql/mysql/Ureport.sql
  2. 2 2
      yudao-module-report/yudao-module-report-api/src/main/java/cn/iocoder/yudao/module/report/enums/ErrorCodeConstants.java
  3. 95 0
      yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/controller/admin/ureport/UReportDataController.java
  4. 0 95
      yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/controller/admin/ureport/UreportFileController.java
  5. 4 4
      yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/controller/admin/ureport/vo/UReportDataPageReqVO.java
  6. 12 7
      yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/controller/admin/ureport/vo/UReportDataRespVO.java
  7. 11 14
      yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/controller/admin/ureport/vo/UReportDataSaveReqVO.java
  8. 8 7
      yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/dal/dataobject/ureport/UReportDataDO.java
  9. 60 0
      yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/dal/mysql/ureport/UReportDataMapper.java
  10. 0 29
      yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/dal/mysql/ureport/UreportFileMapper.java
  11. 22 0
      yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/framework/security/config/SecurityConfiguration.java
  12. 80 0
      yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/framework/security/config/UReportFilter.java
  13. 17 0
      yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/framework/security/config/UReportProperties.java
  14. 7 5
      yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/framework/ureport/config/UReportConfiguration.java
  15. 8 6
      yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/framework/ureport/config/UReportDataSource.java
  16. 106 0
      yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/framework/ureport/core/UReportDatabaseProvider.java
  17. 0 142
      yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/framework/ureport/core/UreportDatabaseProvider.java
  18. 0 120
      yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/framework/ureport/core/UreportFileReportProvider.java
  19. 20 24
      yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/service/ureport/UReportDataService.java
  20. 94 0
      yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/service/ureport/UReportDataServiceImpl.java
  21. 0 110
      yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/service/ureport/UreportFileServiceImpl.java
  22. 12 0
      yudao-module-report/yudao-module-report-biz/src/main/resources/mapper/ureport/UReportDataMapper.xml
  23. 135 0
      yudao-module-report/yudao-module-report-biz/src/test/java/cn/iocoder/yudao/module/report/service/ureport/UReportDataServiceImplTest.java
  24. 0 136
      yudao-module-report/yudao-module-report-biz/src/test/java/cn/iocoder/yudao/module/report/service/ureport/UreportFileServiceImplTest.java
  25. 1 1
      yudao-module-report/yudao-module-report-biz/src/test/resources/sql/clean.sql
  26. 12 12
      yudao-module-report/yudao-module-report-biz/src/test/resources/sql/create_tables.sql
  27. 1 1
      yudao-server/src/main/resources/application.yaml

File diff suppressed because it is too large
+ 21 - 24
sql/mysql/Ureport.sql


+ 2 - 2
yudao-module-report/yudao-module-report-api/src/main/java/cn/iocoder/yudao/module/report/enums/ErrorCodeConstants.java

@@ -13,7 +13,7 @@ public interface ErrorCodeConstants {
     ErrorCode GO_VIEW_PROJECT_NOT_EXISTS = new ErrorCode(1_003_000_000, "GoView 项目不存在");
 
     // ========== UREPORT 模块 1-003-001-000 ==========
-    ErrorCode UREPORT_FILE_NOT_EXISTS = new ErrorCode(1_003_001_000, "打印文件不存在,请检查 UReport 报表文件");
-    ErrorCode UREPORT_FILE_EXISTS = new ErrorCode(1_003_001_001, "报表名字已存在,请修改后再保存");
+    ErrorCode REPORT_DATA_NOT_EXISTS = new ErrorCode(1_003_001_001, "Ureport2报表不存在");
 
+    ErrorCode REPORT_DATABASE_NOT_EXISTS = new ErrorCode(1_003_001_001, "Ureport2报表数据源不存在");
 }

+ 95 - 0
yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/controller/admin/ureport/UReportDataController.java

@@ -0,0 +1,95 @@
+package cn.iocoder.yudao.module.report.controller.admin.ureport;
+
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.constraints.*;
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
+import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.report.controller.admin.ureport.vo.*;
+import cn.iocoder.yudao.module.report.dal.dataobject.ureport.UReportDataDO;
+import cn.iocoder.yudao.module.report.service.ureport.UReportDataService;
+
+@Tag(name = "管理后台 - Ureport2报表")
+@RestController
+@RequestMapping("/report/ureport-data")
+@Validated
+public class UReportDataController {
+
+    @Resource
+    private UReportDataService uReportDataService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建Ureport2报表")
+    @PreAuthorize("@ss.hasPermission('report:ureport-data:create')")
+    public CommonResult<Long> createUReportData(@Valid @RequestBody UReportDataSaveReqVO createReqVO) {
+        return success(uReportDataService.createUReportData(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新Ureport2报表")
+    @PreAuthorize("@ss.hasPermission('report:ureport-data:update')")
+    public CommonResult<Boolean> updateUReportData(@Valid @RequestBody UReportDataSaveReqVO updateReqVO) {
+        uReportDataService.updateUReportData(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除Ureport2报表")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('report:ureport-data:delete')")
+    public CommonResult<Boolean> deleteUReportData(@RequestParam("id") Long id) {
+        uReportDataService.deleteUReportData(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得Ureport2报表")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('report:ureport-data:query')")
+    public CommonResult<UReportDataRespVO> getUReportData(@RequestParam("id") Long id) {
+        UReportDataDO uReportData = uReportDataService.getUReportData(id);
+        return success(BeanUtils.toBean(uReportData, UReportDataRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得Ureport2报表分页")
+    @PreAuthorize("@ss.hasPermission('report:ureport-data:query')")
+    public CommonResult<PageResult<UReportDataRespVO>> getUReportDataPage(@Valid UReportDataPageReqVO pageReqVO) {
+        PageResult<UReportDataDO> pageResult = uReportDataService.getUReportDataPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, UReportDataRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出Ureport2报表 Excel")
+    @PreAuthorize("@ss.hasPermission('report:ureport-data:export')")
+    @OperateLog(type = EXPORT)
+    public void exportUReportDataExcel(@Valid UReportDataPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<UReportDataDO> list = uReportDataService.getUReportDataPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "Ureport2报表.xls", "数据", UReportDataRespVO.class,
+                        BeanUtils.toBean(list, UReportDataRespVO.class));
+    }
+
+}

+ 0 - 95
yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/controller/admin/ureport/UreportFileController.java

@@ -1,95 +0,0 @@
-package cn.iocoder.yudao.module.report.controller.admin.ureport;
-
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
-import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
-import cn.iocoder.yudao.module.report.controller.admin.ureport.vo.UreportFilePageReqVO;
-import cn.iocoder.yudao.module.report.controller.admin.ureport.vo.UreportFileRespVO;
-import cn.iocoder.yudao.module.report.controller.admin.ureport.vo.UreportFileSaveReqVO;
-import cn.iocoder.yudao.module.report.dal.dataobject.ureport.UreportFileDO;
-import cn.iocoder.yudao.module.report.service.ureport.UreportFileService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import java.io.IOException;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
-
-// TODO @赤焰: Ureport 改成 UReport
-@Tag(name = "管理后台 - UReport2 报表")
-@RestController
-@RequestMapping("/report/ureport-file")
-@Validated
-public class UreportFileController {
-
-    @Resource
-    private UreportFileService ureportFileService;
-
-    @PostMapping("/create")
-    @Operation(summary = "创建 UReport2 报表")
-    @PreAuthorize("@ss.hasPermission('report:ureport-file:create')")
-    public CommonResult<Long> createUreportFile(@Valid @RequestBody UreportFileSaveReqVO createReqVO) {
-        return success(ureportFileService.createUreportFile(createReqVO));
-    }
-
-    @PutMapping("/update")
-    @Operation(summary = "更新 UReport2 报表")
-    @PreAuthorize("@ss.hasPermission('report:ureport-file:update')")
-    public CommonResult<Boolean> updateUreportFile(@Valid @RequestBody UreportFileSaveReqVO updateReqVO) {
-        ureportFileService.updateUreportFile(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/delete")
-    @Operation(summary = "删除 UReport2 报表")
-    @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('report:ureport-file:delete')")
-    public CommonResult<Boolean> deleteUreportFile(@RequestParam("id") Long id) {
-        ureportFileService.deleteUreportFile(id);
-        return success(true);
-    }
-
-    @GetMapping("/get")
-    @Operation(summary = "获得 UReport2 报表")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('report:ureport-file:query')")
-    public CommonResult<UreportFileRespVO> getUreportFile(@RequestParam("id") Long id) {
-        UreportFileDO ureportFile = ureportFileService.getUreportFile(id);
-        return success(BeanUtils.toBean(ureportFile, UreportFileRespVO.class));
-    }
-
-    @GetMapping("/page")
-    @Operation(summary = "获得 UReport2 报表分页")
-    @PreAuthorize("@ss.hasPermission('report:ureport-file:query')")
-    public CommonResult<PageResult<UreportFileRespVO>> getUreportFilePage(@Valid UreportFilePageReqVO pageReqVO) {
-        PageResult<UreportFileDO> pageResult = ureportFileService.getUreportFilePage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, UreportFileRespVO.class));
-    }
-
-    // TODO @赤焰:导出是必须的么?没用可以删除哈
-    @GetMapping("/export-excel")
-    @Operation(summary = "导出 UReport2 报表 Excel")
-    @PreAuthorize("@ss.hasPermission('report:ureport-file:export')")
-    @OperateLog(type = EXPORT)
-    public void exportUreportFileExcel(@Valid UreportFilePageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<UreportFileDO> list = ureportFileService.getUreportFilePage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "Ureport2报表.xls", "数据", UreportFileRespVO.class,
-                        BeanUtils.toBean(list, UreportFileRespVO.class));
-    }
-
-}

+ 4 - 4
yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/controller/admin/ureport/vo/UreportFilePageReqVO.java → yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/controller/admin/ureport/vo/UReportDataPageReqVO.java

@@ -13,15 +13,15 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
-public class UreportFilePageReqVO extends PageParam {
+public class UReportDataPageReqVO extends PageParam {
 
-    @Schema(description = "文件名称", example = "赵六")
-    private String fileName;
+    @Schema(description = "文件名称", example = "李四")
+    private String name;
 
     @Schema(description = "状态", example = "1")
     private Integer status;
 
-    @Schema(description = "备注", example = "随便")
+    @Schema(description = "备注", example = "你猜")
     private String remark;
 
     @Schema(description = "创建时间")

+ 12 - 7
yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/controller/admin/ureport/vo/UreportFileRespVO.java → yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/controller/admin/ureport/vo/UReportDataRespVO.java

@@ -1,6 +1,7 @@
 package cn.iocoder.yudao.module.report.controller.admin.ureport.vo;
 
 import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
+import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
 import cn.iocoder.yudao.module.system.enums.DictTypeConstants;
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
@@ -12,22 +13,26 @@ import java.time.LocalDateTime;
 @Schema(description = "管理后台 - Ureport2报表 Response VO")
 @Data
 @ExcelIgnoreUnannotated
-public class UreportFileRespVO {
+public class UReportDataRespVO {
 
-    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "9948")
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "26175")
     @ExcelProperty("ID")
     private Long id;
 
-    @Schema(description = "文件名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
+    @Schema(description = "文件名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
     @ExcelProperty("文件名称")
-    private String fileName;
+    private String name;
 
     @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
-    @ExcelProperty("状态")
+    @ExcelProperty(value = "状态", converter = DictConvert.class)
     @DictFormat(DictTypeConstants.COMMON_STATUS)
     private Integer status;
 
-    @Schema(description = "备注", example = "随便")
+    @Schema(description = "文件内容")
+    @ExcelProperty("文件内容")
+    private String content;
+
+    @Schema(description = "备注", example = "你猜")
     @ExcelProperty("备注")
     private String remark;
 
@@ -35,4 +40,4 @@ public class UreportFileRespVO {
     @ExcelProperty("创建时间")
     private LocalDateTime createTime;
 
-}
+}

+ 11 - 14
yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/controller/admin/ureport/vo/UreportFileSaveReqVO.java → yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/controller/admin/ureport/vo/UReportDataSaveReqVO.java

@@ -1,33 +1,30 @@
 package cn.iocoder.yudao.module.report.controller.admin.ureport.vo;
 
-import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
-import cn.iocoder.yudao.framework.common.validation.InEnum;
 import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import javax.validation.constraints.NotEmpty;
-import javax.validation.constraints.NotNull;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+import java.util.*;
 
 @Schema(description = "管理后台 - Ureport2报表新增/修改 Request VO")
 @Data
-public class UreportFileSaveReqVO {
+public class UReportDataSaveReqVO {
 
-    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "9948")
+    @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "26175")
     private Long id;
 
-    @Schema(description = "文件名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
+    @Schema(description = "文件名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
     @NotEmpty(message = "文件名称不能为空")
-    private String fileName;
+    private String name;
 
     @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     @NotNull(message = "状态不能为空")
-    @InEnum(CommonStatusEnum.class)
     private Integer status;
 
     @Schema(description = "文件内容")
-    private String fileContent;
+    private String content;
 
-    @Schema(description = "备注", example = "随便")
+    @Schema(description = "备注", example = "你猜")
     private String remark;
 
-}
+}

+ 8 - 7
yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/dal/dataobject/ureport/UreportFileDO.java → yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/dal/dataobject/ureport/UReportDataDO.java

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.report.dal.dataobject.ureport;
 
+import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 import com.baomidou.mybatisplus.annotation.KeySequence;
 import com.baomidou.mybatisplus.annotation.TableId;
@@ -11,35 +12,35 @@ import lombok.*;
  *
  * @author 芋道源码
  */
-@TableName("ureport_file")
-@KeySequence("ureport_file_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@TableName("report_ureport_data")
+@KeySequence("report_ureport_data_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
-public class UreportFileDO extends BaseDO {
+public class UReportDataDO extends BaseDO {
 
     /**
      * ID
      */
     @TableId
     private Long id;
-    // TODO @赤焰:是不是用 name 就可以了。
     /**
      * 文件名称
      */
-    private String fileName;
+    private String name;
     /**
      * 状态
+     *
+     * 枚举  {@link  CommonStatusEnum#getStatus()}
      */
     private Integer status;
-    // TODO @赤焰:是不是用 string 就可以了。然后字段名用 content?
     /**
      * 文件内容
      */
-    private byte[] fileContent;
+    private String content;
     /**
      * 备注
      */

+ 60 - 0
yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/dal/mysql/ureport/UReportDataMapper.java

@@ -0,0 +1,60 @@
+package cn.iocoder.yudao.module.report.dal.mysql.ureport;
+
+import java.util.*;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.report.dal.dataobject.ureport.UReportDataDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.iocoder.yudao.module.report.controller.admin.ureport.vo.*;
+
+/**
+ * Ureport2报表 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface UReportDataMapper extends BaseMapperX<UReportDataDO> {
+
+    default PageResult<UReportDataDO> selectPage(UReportDataPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<UReportDataDO>()
+                .likeIfPresent(UReportDataDO::getName, reqVO.getName())
+                .eqIfPresent(UReportDataDO::getStatus, reqVO.getStatus())
+                .eqIfPresent(UReportDataDO::getRemark, reqVO.getRemark())
+                .betweenIfPresent(UReportDataDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(UReportDataDO::getId));
+    }
+
+    /**
+     * 根据名字查询报表
+     * @param name 报表名字
+     * @return
+     */
+    default List<UReportDataDO> selectByName(String name){
+        return selectList(new LambdaQueryWrapperX<UReportDataDO>()
+                .eqIfPresent(UReportDataDO::getName,name));
+    }
+
+    /**
+     * 根据名字查询报表
+     * @param name 报表名字
+     * @return
+     */
+    default UReportDataDO selectOneByName(String name){
+        return selectOne(new LambdaQueryWrapperX<UReportDataDO>()
+                .eqIfPresent(UReportDataDO::getName,name));
+    }
+
+
+    /**
+     * 根据名字删除报表
+     * @param name 报表名字
+     * @return
+     */
+    default int deleteByName(String name){
+        return delete(new LambdaQueryWrapperX<UReportDataDO>()
+                .eqIfPresent(UReportDataDO::getName,name));
+    }
+
+}

+ 0 - 29
yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/dal/mysql/ureport/UreportFileMapper.java

@@ -1,29 +0,0 @@
-package cn.iocoder.yudao.module.report.dal.mysql.ureport;
-
-import java.util.*;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.module.report.dal.dataobject.ureport.UreportFileDO;
-import org.apache.ibatis.annotations.Mapper;
-import cn.iocoder.yudao.module.report.controller.admin.ureport.vo.*;
-
-/**
- * Ureport2报表 Mapper
- *
- * @author 芋道源码
- */
-@Mapper
-public interface UreportFileMapper extends BaseMapperX<UreportFileDO> {
-
-    default PageResult<UreportFileDO> selectPage(UreportFilePageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<UreportFileDO>()
-                .likeIfPresent(UreportFileDO::getFileName, reqVO.getFileName())
-                .eqIfPresent(UreportFileDO::getStatus, reqVO.getStatus())
-                .eqIfPresent(UreportFileDO::getRemark, reqVO.getRemark())
-                .betweenIfPresent(UreportFileDO::getCreateTime, reqVO.getCreateTime())
-                .orderByDesc(UreportFileDO::getId));
-    }
-
-}

+ 22 - 0
yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/framework/security/config/SecurityConfiguration.java

@@ -1,10 +1,17 @@
 package cn.iocoder.yudao.module.report.framework.security.config;
 
+import cn.iocoder.yudao.framework.common.enums.WebFilterOrderEnum;
 import cn.iocoder.yudao.framework.security.config.AuthorizeRequestsCustomizer;
+import cn.iocoder.yudao.framework.security.config.SecurityProperties;
+import cn.iocoder.yudao.module.system.api.oauth2.OAuth2TokenApi;
+import org.springframework.boot.web.servlet.FilterRegistrationBean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
 import org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer;
+import org.springframework.util.StringUtils;
+
+import javax.annotation.Resource;
 
 /**
  * Report 模块的 Security 配置
@@ -12,6 +19,9 @@ import org.springframework.security.config.annotation.web.configurers.Expression
 @Configuration("reportSecurityConfiguration")
 public class SecurityConfiguration {
 
+    @Resource
+    private OAuth2TokenApi oauth2TokenApi;
+
     @Bean("reportAuthorizeRequestsCustomizer")
     public AuthorizeRequestsCustomizer authorizeRequestsCustomizer() {
         return new AuthorizeRequestsCustomizer() {
@@ -25,4 +35,16 @@ public class SecurityConfiguration {
         };
     }
 
+
+    /**
+     * 创建 UReportFilter 过滤器,响应 header 设置 token
+     */
+    /*@Bean
+    public FilterRegistrationBean<UReportFilter> uReportFilterFilterRegistrationBean() {
+        FilterRegistrationBean<UReportFilter> registrationBean = new FilterRegistrationBean<>();
+        registrationBean.setFilter(new UReportFilter(oauth2TokenApi));
+        registrationBean.setOrder(WebFilterOrderEnum.TRACE_FILTER);
+        return registrationBean;
+    }*/
+
 }

+ 80 - 0
yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/framework/security/config/UReportFilter.java

@@ -0,0 +1,80 @@
+package cn.iocoder.yudao.module.report.framework.security.config;
+
+import cn.iocoder.yudao.framework.common.exception.ServiceException;
+import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils;
+import cn.iocoder.yudao.framework.security.core.LoginUser;
+import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
+import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
+import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
+import cn.iocoder.yudao.module.system.api.oauth2.OAuth2TokenApi;
+import cn.iocoder.yudao.module.system.api.oauth2.dto.OAuth2AccessTokenCheckRespDTO;
+import lombok.Data;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.filter.OncePerRequestFilter;
+
+import javax.servlet.FilterChain;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.Map;
+
+/**
+ * UReport 认证过滤器
+ * @author 赤焰
+ */
+@Slf4j
+@RequiredArgsConstructor
+public class UReportFilter extends OncePerRequestFilter {
+
+    private final static String TOKEN = "token";
+
+    private final OAuth2TokenApi oauth2TokenApi;
+
+    @Override
+    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
+            throws ServletException, IOException {
+
+        if(log.isDebugEnabled()){
+            log.debug("UReportFilter自定义过滤器");
+        }
+
+        Map<String, String> paramMap = ServletUtils.getParamMap(request);
+        String requestURI = request.getRequestURI();
+        boolean contains = requestURI.contains("/ureport");
+        if (paramMap.containsKey(TOKEN)&&contains) {
+           String token = request.getParameter(TOKEN);
+            if(log.isDebugEnabled()){
+                log.debug("UReportFilter自定义过滤器 token="+token);
+            }
+
+            response.addHeader(TOKEN,token);
+
+            TenantContextHolder.setIgnore(true); // 忽略租户,保证可查询到 token 信息
+            LoginUser user = null;
+            try {
+                OAuth2AccessTokenCheckRespDTO accessToken = oauth2TokenApi.checkAccessToken(token);
+                if (accessToken != null) {
+                    user = new LoginUser().setId(accessToken.getUserId()).setUserType(accessToken.getUserType())
+                            .setTenantId(accessToken.getTenantId()).setScopes(accessToken.getScopes());
+                    if (user != null) {
+                        SecurityFrameworkUtils.setLoginUser(user, WebFrameworkUtils.getRequest());
+
+                        // ② 参考 TenantContextWebFilter 实现(Tenant 的上下文清理,交给 TenantContextWebFilter 完成)
+                        // 目的:基于 LoginUser 获得到的租户编号,设置到 Tenant 上下文,避免查询数据库时的报错
+                        TenantContextHolder.setIgnore(false);
+                        TenantContextHolder.setTenantId(user.getTenantId());
+                    }
+                }
+            } catch (ServiceException ignored) {
+                chain.doFilter(request, response);
+            }
+
+        }
+
+        // 继续过滤
+        chain.doFilter(request, response);
+
+    }
+}

+ 17 - 0
yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/framework/security/config/UReportProperties.java

@@ -0,0 +1,17 @@
+package cn.iocoder.yudao.module.report.framework.security.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+/**
+ * UReport配置类
+ *
+ * @author 赤焰
+ */
+@Data
+@ConfigurationProperties(prefix = "ureport.provider.database")
+public class UReportProperties {
+	private String name = "数据库文件系统";
+	private String prefix = "db-";
+	private boolean disabled = false;
+}

+ 7 - 5
yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/framework/ureport/config/UreportConfiguration.java → yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/framework/ureport/config/UReportConfiguration.java

@@ -1,6 +1,8 @@
 package cn.iocoder.yudao.module.report.framework.ureport.config;
 
+import cn.iocoder.yudao.module.report.framework.security.config.UReportProperties;
 import com.bstek.ureport.console.UReportServlet;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.boot.web.servlet.ServletRegistrationBean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -15,13 +17,13 @@ import javax.servlet.Servlet;
  * @author 赤焰
  */
 @Configuration
-@ImportResource({"classpath:ureport-console-context.xml"}) // Bean 配置
-@PropertySource(value = {"classpath:ureport.properties"}) // 配置文件
-public class UreportConfiguration {
+@ImportResource({"classpath:ureport-console-context.xml"})
+@PropertySource(value = {"classpath:ureport.properties"})
+@EnableConfigurationProperties({UReportProperties.class})
+public class UReportConfiguration {
 
-    // TODO @赤焰:bean 是不是取个和 ureport 相关的名字好点哈?
     @Bean
-    public ServletRegistrationBean<Servlet> registrationBean() {
+    public ServletRegistrationBean<Servlet> uReportRegistrationBean() {
         return new ServletRegistrationBean<>(new UReportServlet(), "/ureport/*");
     }
 

+ 8 - 6
yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/framework/ureport/config/UreportDataSource.java → yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/framework/ureport/config/UReportDataSource.java

@@ -9,14 +9,18 @@ import javax.sql.DataSource;
 import java.sql.Connection;
 import java.sql.SQLException;
 
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.report.enums.ErrorCodeConstants.REPORT_DATABASE_NOT_EXISTS;
+
 /**
  * UReport 内置数据源
+ * @author 赤焰
  */
 @Slf4j
 @Component
-public class UreportDataSource implements BuildinDatasource {
+public class UReportDataSource implements BuildinDatasource {
 
-	private static final String NAME = "UreportDataSource";
+	private static final String NAME = "UReportDataSource";
 
 	@Resource
 	private DataSource dataSource;
@@ -29,7 +33,6 @@ public class UreportDataSource implements BuildinDatasource {
 		return NAME;
 	}
 
-    // TODO @赤焰:这个方法,如果拿不到连接,是不是抛出异常比较好?
 	/**
 	 * @return 获取连接
 	 */
@@ -38,10 +41,9 @@ public class UreportDataSource implements BuildinDatasource {
 		try {
 			return dataSource.getConnection();
 		} catch (SQLException e) {
-			log.error("Ureport 数据源 获取连接失败!");
-			e.printStackTrace();
+			log.error("UReportDataSource获取连接失败!");
+			throw exception(REPORT_DATABASE_NOT_EXISTS);
 		}
-		return null;
 	}
 
 }

+ 106 - 0
yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/framework/ureport/core/UReportDatabaseProvider.java

@@ -0,0 +1,106 @@
+package cn.iocoder.yudao.module.report.framework.ureport.core;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
+import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
+import cn.iocoder.yudao.framework.common.util.date.DateUtils;
+import cn.iocoder.yudao.module.report.controller.admin.ureport.vo.UReportDataSaveReqVO;
+import cn.iocoder.yudao.module.report.dal.dataobject.ureport.UReportDataDO;
+import cn.iocoder.yudao.module.report.framework.security.config.UReportProperties;
+import cn.iocoder.yudao.module.report.service.ureport.UReportDataService;
+import com.bstek.ureport.provider.report.ReportFile;
+import com.bstek.ureport.provider.report.ReportProvider;
+import lombok.Setter;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * 基于数据库的 {@link ReportProvider} 实现类
+ *
+ * @author 赤焰
+ */
+@Component
+@Slf4j
+@Setter
+public class UReportDatabaseProvider implements ReportProvider {
+
+    @Autowired
+    private UReportProperties uReportProperties;
+    @Resource
+    private UReportDataService uReportDataService;
+
+    @Override
+    public InputStream loadReport(String name) {
+        uReportDataService.validateUReportDataExists(getCorrectName(name));
+        UReportDataDO uReportDataDO = uReportDataService.selectOneByName(getCorrectName(name));
+        String content = uReportDataDO.getContent();
+        return new ByteArrayInputStream(content.getBytes());
+    }
+
+    @Override
+    public void deleteReport(String name) {
+        uReportDataService.deleteByName(getCorrectName(name));
+    }
+
+    @Override
+    public List<ReportFile> getReportFiles() {
+        List<UReportDataDO> list = uReportDataService.getReportDataList();
+        if(CollUtil.isEmpty(list)) {
+            return Collections.emptyList();
+        }
+        return CollectionUtils.convertList(list, report -> new ReportFile(report.getName(), DateUtils.of(report.getUpdateTime())));
+
+    }
+
+    @Override
+    public void saveReport(String name, String content) {
+        name = getCorrectName(name);
+        UReportDataDO uReportDataDO = uReportDataService.selectOneByName(name);
+        UReportDataSaveReqVO saveReqVO = new UReportDataSaveReqVO();
+        if (uReportDataDO == null) {
+            saveReqVO.setName(name);
+            saveReqVO.setContent(content);
+            saveReqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
+            uReportDataService.createUReportData(saveReqVO);
+        } else {
+            saveReqVO.setId(uReportDataDO.getId());
+            saveReqVO.setName(name);
+            saveReqVO.setContent(content);
+            saveReqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
+            uReportDataService.updateUReportData(saveReqVO);
+        }
+    }
+
+    @Override
+    public String getName() {
+        return uReportProperties.getName();
+    }
+
+    @Override
+    public boolean disabled() {
+        return uReportProperties.isDisabled();
+    }
+
+    @Override
+    public String getPrefix() {
+        return uReportProperties.getPrefix();
+    }
+
+    /**
+     * 去除存储媒介,获取报表名字
+     * @param name 前端传入的报表带存储媒介的名字
+     * @return
+     */
+    private String getCorrectName(String name) {
+        return StrUtil.removePrefix(name,getPrefix());
+    }
+
+}

+ 0 - 142
yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/framework/ureport/core/UreportDatabaseProvider.java

@@ -1,142 +0,0 @@
-package cn.iocoder.yudao.module.report.framework.ureport.core;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
-import cn.iocoder.yudao.module.report.controller.admin.ureport.vo.UreportFileSaveReqVO;
-import cn.iocoder.yudao.module.report.dal.dataobject.ureport.UreportFileDO;
-import cn.iocoder.yudao.module.report.service.ureport.UreportFileService;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.bstek.ureport.provider.report.ReportFile;
-import com.bstek.ureport.provider.report.ReportProvider;
-import lombok.Setter;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.time.LocalDateTime;
-import java.time.ZoneId;
-import java.time.ZonedDateTime;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.module.report.enums.ErrorCodeConstants.UREPORT_FILE_EXISTS;
-import static cn.iocoder.yudao.module.report.enums.ErrorCodeConstants.UREPORT_FILE_NOT_EXISTS;
-
-// TODO @赤焰:有了这个功能,是不是就不需要 UreportFileController?
-/**
- * 基于数据库的 {@link ReportProvider} 实现类
- *
- * @author 赤焰
- */
-@Component
-@Slf4j
-@Setter
-@ConfigurationProperties(prefix = "ureport.provider.database") // TODO @赤焰:是不是单独搞个 UReportProperties 用来注入 prefix、disabled 等属性
-public class UreportDatabaseProvider implements ReportProvider {
-
-    private static final String NAME = "mysql-provider";
-
-    // TODO @赤焰:IdTypeEnvironmentPostProcessor 参考下,通过 primary 数据源获取
-    private String prefix = "mysql:";
-
-    private boolean disabled = false;
-
-    @Resource
-    private UreportFileService ureportFileService;
-
-    @Override
-    public InputStream loadReport(String file) {
-        // TODO @赤焰:是不是不需要这个 check 接口?直接使用 name 查询就 ok 了?
-        // TODO @赤焰:变量的命名要注意,这里 reportDo 是不是叫 count 就好了?还有,这个方法的命名也不太对。
-        Long reportDo = ureportFileService.checkExistByName(getCorrectName(file));
-        if (reportDo <=0) { // TODO 赤焰:<= 0 注释空格
-            throw exception(UREPORT_FILE_NOT_EXISTS);
-        }
-        // TODO @赤焰:queryUreportFileDoByName 改成 getUreportFileDoByName 更合适,保持整个项目的命名风格一致性。
-        UreportFileDO ureportFileDO = ureportFileService.queryUreportFileDoByName(getCorrectName(file));
-        byte[] content = ureportFileDO.getFileContent();
-        return new ByteArrayInputStream(content);
-    }
-
-    @Override
-    public void deleteReport(String file) {
-        ureportFileService.deleteReportFileByName(getCorrectName(file));
-    }
-
-    @Override
-    public List<ReportFile> getReportFiles() {
-        // TODO @赤焰:queryReportFileList 改成 getReportFileList 更合适,保持整个项目的命名风格一致性。
-        List<UreportFileDO> list = ureportFileService.queryReportFileList();
-        List<ReportFile> reportList = new ArrayList<>();
-        if(CollUtil.isEmpty(list)){ // TODO 赤焰:CollUtil.isEmpty(list) 注意空格
-            // TODO @赤焰:这里可以直接返回 Collections.emptyList();
-            return reportList;
-        }
-        // TODO 赤焰:可以使用 CollectionUtils.converList
-        for (UreportFileDO reportFile : list) {
-            // TODO 赤焰:可以使用          DateUtils.of() 么?
-            LocalDateTime updateTime = reportFile.getUpdateTime();
-            ZonedDateTime zdt = updateTime.atZone(ZoneId.systemDefault());
-            Date date = Date.from(zdt.toInstant());
-            reportList.add(new ReportFile(reportFile.getFileName(),date));
-        }
-        return reportList;
-
-    }
-
-    @Override
-    public void saveReport(String file, String content) {
-        file = getCorrectName(file);
-        // TODO @赤焰:这里的逻辑,应该封装到 ureportFileService 中,这里只负责调用即可
-        LambdaQueryWrapper<UreportFileDO> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(UreportFileDO::getFileName, file);
-        Long count = ureportFileService.checkExistByName(file);
-        if(count>1){
-            throw exception(UREPORT_FILE_EXISTS);
-        }
-        UreportFileDO ureportFileDO = ureportFileService.queryUreportFileDoByName(file);
-        UreportFileSaveReqVO saveReqVO = new UreportFileSaveReqVO();
-        if (ureportFileDO == null) {
-            saveReqVO.setFileName(file);
-            saveReqVO.setFileContent(content);
-            saveReqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
-            ureportFileService.createUreportFile(saveReqVO);
-        } else {
-            saveReqVO.setId(ureportFileDO.getId());
-            saveReqVO.setFileName(file);
-            saveReqVO.setFileContent(content);
-            saveReqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
-            ureportFileService.updateUreportFile(saveReqVO);
-        }
-    }
-
-    @Override
-    public String getName() {
-        return NAME;
-    }
-
-    @Override
-    public boolean disabled() {
-        return disabled;
-    }
-
-    @Override
-    public String getPrefix() {
-        return prefix;
-    }
-
-    // TODO @赤焰:这个方法的注释,最好写下哈;
-    private String getCorrectName(String name) {
-        // TODO  赤焰:一些常用方法,可以用 hutool StrUtil.removePrefix()
-        if (name.startsWith(getPrefix())) {
-            name = name.substring(getPrefix().length());
-        }
-        return name;
-    }
-
-}

+ 0 - 120
yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/framework/ureport/core/UreportFileReportProvider.java

@@ -1,120 +0,0 @@
-/*
-package cn.iocoder.yudao.module.report.framework.ureport.provider;
-
-import com.bstek.ureport.exception.ReportException;
-import com.bstek.ureport.provider.report.ReportFile;
-import com.bstek.ureport.provider.report.ReportProvider;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.io.IOUtils;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.stereotype.Component;
-
-import java.io.*;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.List;
-import java.util.Objects;
-
-// TODO @赤焰:这个类的作用是?如果全部注释,是不是可以删除哈?
-*/
-/**
- * 自定义文件存储,可接入oss等
- * @author 赤焰
- *//*
-
-@Slf4j
-@Component
-@ConfigurationProperties(prefix = "ureport.provider.file")
-public class UreportFileReportProvider implements ReportProvider{
-
-    private String prefix="reportFile:";
-    private String fileStoreDir;
-    private boolean disabled;
-
-    @Override
-    public InputStream loadReport(String file) {
-        if(file.startsWith(prefix)){
-            file=file.substring(prefix.length(),file.length());
-        }
-        String fullPath=fileStoreDir+"/"+file;
-        try {
-            return new FileInputStream(fullPath);
-        } catch (FileNotFoundException e) {
-            throw new ReportException(e);
-        }
-    }
-
-    @Override
-    public void deleteReport(String file) {
-        if(file.startsWith(prefix)){
-            file=file.substring(prefix.length(),file.length());
-        }
-        String fullPath=fileStoreDir+"/"+file;
-        File f=new File(fullPath);
-        if(f.exists()){
-            f.delete();
-        }
-    }
-
-    @Override
-    public List<ReportFile> getReportFiles() {
-        File file=new File(fileStoreDir);
-        List<ReportFile> list= new ArrayList<>();
-        for(File f: Objects.requireNonNull(file.listFiles())){
-            Calendar calendar=Calendar.getInstance();
-            calendar.setTimeInMillis(f.lastModified());
-            list.add(new ReportFile(f.getName(),calendar.getTime()));
-        }
-        list.sort((f1, f2) -> f2.getUpdateDate().compareTo(f1.getUpdateDate()));
-        return list;
-    }
-
-    @Override
-    public String getName() {
-        return "文件存储系统";
-    }
-
-    @Override
-    public void saveReport(String file,String content) {
-        if(file.startsWith(prefix)){
-            file=file.substring(prefix.length(),file.length());
-        }
-        String fullPath=fileStoreDir+"/"+file;
-        FileOutputStream outStream=null;
-        try{
-            outStream=new FileOutputStream(new File(fullPath));
-            IOUtils.write(content, outStream,"utf-8");
-        }catch(Exception ex){
-            throw new ReportException(ex);
-        }finally{
-            if(outStream!=null){
-                try {
-                    outStream.close();
-                } catch (IOException e) {
-                    e.printStackTrace();
-                }
-            }
-        }
-
-    }
-
-    @Override
-    public boolean disabled() {
-        return disabled;
-    }
-
-    public void setDisabled(boolean disabled) {
-        this.disabled = disabled;
-    }
-
-    public void setFileStoreDir(String fileStoreDir) {
-        this.fileStoreDir = fileStoreDir;
-    }
-
-    @Override
-    public String getPrefix() {
-        return prefix;
-    }
-
-}
-*/

+ 20 - 24
yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/service/ureport/UreportFileService.java → yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/service/ureport/UReportDataService.java

@@ -1,9 +1,9 @@
 package cn.iocoder.yudao.module.report.service.ureport;
 
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.report.controller.admin.ureport.vo.UreportFilePageReqVO;
-import cn.iocoder.yudao.module.report.controller.admin.ureport.vo.UreportFileSaveReqVO;
-import cn.iocoder.yudao.module.report.dal.dataobject.ureport.UreportFileDO;
+import cn.iocoder.yudao.module.report.controller.admin.ureport.vo.UReportDataPageReqVO;
+import cn.iocoder.yudao.module.report.controller.admin.ureport.vo.UReportDataSaveReqVO;
+import cn.iocoder.yudao.module.report.dal.dataobject.ureport.UReportDataDO;
 
 import javax.validation.Valid;
 import java.util.List;
@@ -13,7 +13,7 @@ import java.util.List;
  *
  * @author 芋道源码
  */
-public interface UreportFileService  {
+public interface UReportDataService {
 
     /**
      * 创建Ureport2报表
@@ -21,21 +21,21 @@ public interface UreportFileService  {
      * @param createReqVO 创建信息
      * @return 编号
      */
-    Long createUreportFile(@Valid UreportFileSaveReqVO createReqVO);
+    Long createUReportData(@Valid UReportDataSaveReqVO createReqVO);
 
     /**
      * 更新Ureport2报表
      *
      * @param updateReqVO 更新信息
      */
-    void updateUreportFile(@Valid UreportFileSaveReqVO updateReqVO);
+    void updateUReportData(@Valid UReportDataSaveReqVO updateReqVO);
 
     /**
      * 删除Ureport2报表
      *
      * @param id 编号
      */
-    void deleteUreportFile(Long id);
+    void deleteUReportData(Long id);
 
     /**
      * 获得Ureport2报表
@@ -43,7 +43,7 @@ public interface UreportFileService  {
      * @param id 编号
      * @return Ureport2报表
      */
-    UreportFileDO getUreportFile(Long id);
+    UReportDataDO getUReportData(Long id);
 
     /**
      * 获得Ureport2报表分页
@@ -51,36 +51,32 @@ public interface UreportFileService  {
      * @param pageReqVO 分页查询
      * @return Ureport2报表分页
      */
-    PageResult<UreportFileDO> getUreportFilePage(UreportFilePageReqVO pageReqVO);
-
+    PageResult<UReportDataDO> getUReportDataPage(UReportDataPageReqVO pageReqVO);
 
     /**
-     *  根据报表名称检查报表是否存在
-     * @param name 报表名称
+     * 根据名称删除报表
+     * @param name
      * @return
      */
-    Long checkExistByName(String name);
+    int deleteByName(String name);
 
     /**
-     *  根据报表名称查询报表
-     * @param name 报表名称
-     * @return
+     * 根据名称校验报表是否存在
+     * @param name
      */
-     UreportFileDO queryUreportFileDoByName(String name);
-
+    void validateUReportDataExists(String name);
 
     /**
-     * 查询全部报表
+     * 根据名称查询报表
+     * @param name
      * @return
      */
-    List<UreportFileDO> queryReportFileList();
-
+    UReportDataDO selectOneByName(String name);
 
     /**
-     * 根据报表名称删除报表
-     * @param name
+     * 获取全部报表
      * @return
      */
-     int deleteReportFileByName(String name);
+    List<UReportDataDO> getReportDataList();
 
 }

+ 94 - 0
yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/service/ureport/UReportDataServiceImpl.java

@@ -0,0 +1,94 @@
+package cn.iocoder.yudao.module.report.service.ureport;
+
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+
+import cn.iocoder.yudao.module.report.controller.admin.ureport.vo.*;
+import cn.iocoder.yudao.module.report.dal.dataobject.ureport.UReportDataDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+
+import cn.iocoder.yudao.module.report.dal.mysql.ureport.UReportDataMapper;
+
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.report.enums.ErrorCodeConstants.*;
+
+/**
+ * Ureport2报表 Service 实现类
+ *
+ * @author 芋道源码
+ */
+@Service
+@Validated
+public class UReportDataServiceImpl implements UReportDataService {
+
+    @Resource
+    private UReportDataMapper uReportDataMapper;
+
+    @Override
+    public Long createUReportData(UReportDataSaveReqVO createReqVO) {
+        // 插入
+        UReportDataDO uReportData = BeanUtils.toBean(createReqVO, UReportDataDO.class);
+        uReportDataMapper.insert(uReportData);
+        // 返回
+        return uReportData.getId();
+    }
+
+    @Override
+    public void updateUReportData(UReportDataSaveReqVO updateReqVO) {
+        // 校验存在
+        validateUReportDataExists(updateReqVO.getId());
+        // 更新
+        UReportDataDO updateObj = BeanUtils.toBean(updateReqVO, UReportDataDO.class);
+        uReportDataMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteUReportData(Long id) {
+        // 校验存在
+        validateUReportDataExists(id);
+        // 删除
+        uReportDataMapper.deleteById(id);
+    }
+
+    private void validateUReportDataExists(Long id) {
+        if (uReportDataMapper.selectById(id) == null) {
+            throw exception(REPORT_DATA_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public void validateUReportDataExists(String name) {
+        if (uReportDataMapper.selectByName(name) == null) {
+            throw exception(REPORT_DATA_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public UReportDataDO getUReportData(Long id) {
+        return uReportDataMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<UReportDataDO> getUReportDataPage(UReportDataPageReqVO pageReqVO) {
+        return uReportDataMapper.selectPage(pageReqVO);
+    }
+
+    @Override
+    public int deleteByName(String name) {
+        return uReportDataMapper.deleteByName(name);
+    }
+
+    @Override
+    public UReportDataDO selectOneByName(String name) {
+        return uReportDataMapper.selectOneByName(name);
+    }
+
+    @Override
+    public List<UReportDataDO> getReportDataList() {
+        return uReportDataMapper.selectList();
+    }
+}

+ 0 - 110
yudao-module-report/yudao-module-report-biz/src/main/java/cn/iocoder/yudao/module/report/service/ureport/UreportFileServiceImpl.java

@@ -1,110 +0,0 @@
-package cn.iocoder.yudao.module.report.service.ureport;
-
-import cn.hutool.core.collection.CollectionUtil;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.report.controller.admin.ureport.vo.UreportFilePageReqVO;
-import cn.iocoder.yudao.module.report.controller.admin.ureport.vo.UreportFileSaveReqVO;
-import cn.iocoder.yudao.module.report.dal.dataobject.ureport.UreportFileDO;
-import cn.iocoder.yudao.module.report.dal.mysql.ureport.UreportFileMapper;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import org.springframework.stereotype.Service;
-import org.springframework.validation.annotation.Validated;
-
-import javax.annotation.Resource;
-import java.util.List;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.module.report.enums.ErrorCodeConstants.UREPORT_FILE_NOT_EXISTS;
-
-/**
- * Ureport2报表 Service 实现类
- *
- * @author 芋道源码
- */
-@Service
-@Validated
-public class UreportFileServiceImpl implements UreportFileService {
-
-    @Resource
-    private UreportFileMapper ureportFileMapper;
-
-    @Override
-    public Long createUreportFile(UreportFileSaveReqVO createReqVO) {
-        // 插入
-        UreportFileDO ureportFile = BeanUtils.toBean(createReqVO, UreportFileDO.class);
-        ureportFileMapper.insert(ureportFile);
-        // 返回
-        return ureportFile.getId();
-    }
-
-    @Override
-    public void updateUreportFile(UreportFileSaveReqVO updateReqVO) {
-        // 校验存在
-        validateUreportFileExists(updateReqVO.getId());
-        // 更新
-        UreportFileDO updateObj = BeanUtils.toBean(updateReqVO, UreportFileDO.class);
-        ureportFileMapper.updateById(updateObj);
-    }
-
-    @Override
-    public void deleteUreportFile(Long id) {
-        // 校验存在
-        validateUreportFileExists(id);
-        // 删除
-        ureportFileMapper.deleteById(id);
-    }
-
-    private void validateUreportFileExists(Long id) {
-        if (ureportFileMapper.selectById(id) == null) {
-            throw exception(UREPORT_FILE_NOT_EXISTS);
-        }
-    }
-
-    @Override
-    public UreportFileDO getUreportFile(Long id) {
-        return ureportFileMapper.selectById(id);
-    }
-
-    @Override
-    public PageResult<UreportFileDO> getUreportFilePage(UreportFilePageReqVO pageReqVO) {
-        return ureportFileMapper.selectPage(pageReqVO);
-    }
-
-    @Override
-    public Long checkExistByName(String name) {
-        // TODO @赤焰:Service 处理业务逻辑,不能出现 Mapper 层的东西,收敛成 mapper 的一个操作方法
-        LambdaQueryWrapper<UreportFileDO> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(UreportFileDO::getFileName,name);
-        return ureportFileMapper.selectCount(queryWrapper);
-    }
-
-    @Override
-    public UreportFileDO queryUreportFileDoByName(String name) {
-        // TODO @赤焰:Service 处理业务逻辑,不能出现 Mapper 层的东西,收敛成 mapper 的一个操作方法
-        LambdaQueryWrapper<UreportFileDO> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(UreportFileDO::getFileName,name);
-        // TODO @赤焰:这里,可以用 selectByName 即可
-        List<UreportFileDO> list = ureportFileMapper.selectList(queryWrapper);
-        if(CollectionUtil.isNotEmpty(list)){
-            return list.get(0);
-        }
-        return null;
-    }
-
-    @Override
-    public List<UreportFileDO> queryReportFileList() {
-        // TODO @赤焰:Service 处理业务逻辑,不能出现 Mapper 层的东西,收敛成 mapper 的一个操作方法
-        LambdaQueryWrapper<UreportFileDO> queryWrapper = new LambdaQueryWrapper<>();
-        return ureportFileMapper.selectList(queryWrapper);
-    }
-
-    @Override
-    public int deleteReportFileByName(String name) {
-        // TODO @赤焰:Service 处理业务逻辑,不能出现 Mapper 层的东西,收敛成 mapper 的一个操作方法
-        LambdaQueryWrapper<UreportFileDO> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(UreportFileDO::getFileName,name);
-        return ureportFileMapper.delete(queryWrapper);
-    }
-
-}

+ 12 - 0
yudao-module-report/yudao-module-report-biz/src/main/resources/mapper/ureport/UReportDataMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.iocoder.yudao.module.report.dal.mysql.ureport.UReportDataMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

+ 135 - 0
yudao-module-report/yudao-module-report-biz/src/test/java/cn/iocoder/yudao/module/report/service/ureport/UReportDataServiceImplTest.java

@@ -0,0 +1,135 @@
+package cn.iocoder.yudao.module.report.service.ureport;
+
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import javax.annotation.Resource;
+
+import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
+
+import cn.iocoder.yudao.module.report.controller.admin.ureport.vo.*;
+import cn.iocoder.yudao.module.report.dal.dataobject.ureport.UReportDataDO;
+import cn.iocoder.yudao.module.report.dal.mysql.ureport.UReportDataMapper;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+
+import org.springframework.context.annotation.Import;
+
+import static cn.iocoder.yudao.module.report.enums.ErrorCodeConstants.*;
+import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*;
+import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
+import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.*;
+import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.*;
+import static org.junit.jupiter.api.Assertions.*;
+
+/**
+ * {@link UReportDataServiceImpl} 的单元测试类
+ *
+ * @author 芋道源码
+ */
+@Import(UReportDataServiceImpl.class)
+public class UReportDataServiceImplTest extends BaseDbUnitTest {
+
+    @Resource
+    private UReportDataServiceImpl uReportDataService;
+
+    @Resource
+    private UReportDataMapper uReportDataMapper;
+
+    @Test
+    public void testCreateUReportData_success() {
+        // 准备参数
+        UReportDataSaveReqVO createReqVO = randomPojo(UReportDataSaveReqVO.class).setId(null);
+
+        // 调用
+        Long uReportDataId = uReportDataService.createUReportData(createReqVO);
+        // 断言
+        assertNotNull(uReportDataId);
+        // 校验记录的属性是否正确
+        UReportDataDO uReportData = uReportDataMapper.selectById(uReportDataId);
+        assertPojoEquals(createReqVO, uReportData, "id");
+    }
+
+    @Test
+    public void testUpdateUReportData_success() {
+        // mock 数据
+        UReportDataDO dbUReportData = randomPojo(UReportDataDO.class);
+        uReportDataMapper.insert(dbUReportData);// @Sql: 先插入出一条存在的数据
+        // 准备参数
+        UReportDataSaveReqVO updateReqVO = randomPojo(UReportDataSaveReqVO.class, o -> {
+            o.setId(dbUReportData.getId()); // 设置更新的 ID
+        });
+
+        // 调用
+        uReportDataService.updateUReportData(updateReqVO);
+        // 校验是否更新正确
+        UReportDataDO uReportData = uReportDataMapper.selectById(updateReqVO.getId()); // 获取最新的
+        assertPojoEquals(updateReqVO, uReportData);
+    }
+
+    @Test
+    public void testUpdateUReportData_notExists() {
+        // 准备参数
+        UReportDataSaveReqVO updateReqVO = randomPojo(UReportDataSaveReqVO.class);
+
+        // 调用, 并断言异常
+        assertServiceException(() -> uReportDataService.updateUReportData(updateReqVO), REPORT_DATA_NOT_EXISTS);
+    }
+
+    @Test
+    public void testDeleteUReportData_success() {
+        // mock 数据
+        UReportDataDO dbUReportData = randomPojo(UReportDataDO.class);
+        uReportDataMapper.insert(dbUReportData);// @Sql: 先插入出一条存在的数据
+        // 准备参数
+        Long id = dbUReportData.getId();
+
+        // 调用
+        uReportDataService.deleteUReportData(id);
+       // 校验数据不存在了
+       assertNull(uReportDataMapper.selectById(id));
+    }
+
+    @Test
+    public void testDeleteUReportData_notExists() {
+        // 准备参数
+        Long id = randomLongId();
+
+        // 调用, 并断言异常
+        assertServiceException(() -> uReportDataService.deleteUReportData(id), REPORT_DATA_NOT_EXISTS);
+    }
+
+    @Test
+    @Disabled  // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
+    public void testGetUReportDataPage() {
+       // mock 数据
+       UReportDataDO dbUReportData = randomPojo(UReportDataDO.class, o -> { // 等会查询到
+           o.setName(null);
+           o.setStatus(null);
+           o.setRemark(null);
+           o.setCreateTime(null);
+       });
+       uReportDataMapper.insert(dbUReportData);
+       // 测试 name 不匹配
+       uReportDataMapper.insert(cloneIgnoreId(dbUReportData, o -> o.setName(null)));
+       // 测试 status 不匹配
+       uReportDataMapper.insert(cloneIgnoreId(dbUReportData, o -> o.setStatus(null)));
+       // 测试 remark 不匹配
+       uReportDataMapper.insert(cloneIgnoreId(dbUReportData, o -> o.setRemark(null)));
+       // 测试 createTime 不匹配
+       uReportDataMapper.insert(cloneIgnoreId(dbUReportData, o -> o.setCreateTime(null)));
+       // 准备参数
+       UReportDataPageReqVO reqVO = new UReportDataPageReqVO();
+       reqVO.setName(null);
+       reqVO.setStatus(null);
+       reqVO.setRemark(null);
+       reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
+
+       // 调用
+       PageResult<UReportDataDO> pageResult = uReportDataService.getUReportDataPage(reqVO);
+       // 断言
+       assertEquals(1, pageResult.getTotal());
+       assertEquals(1, pageResult.getList().size());
+       assertPojoEquals(dbUReportData, pageResult.getList().get(0));
+    }
+
+}

+ 0 - 136
yudao-module-report/yudao-module-report-biz/src/test/java/cn/iocoder/yudao/module/report/service/ureport/UreportFileServiceImplTest.java

@@ -1,136 +0,0 @@
-package cn.iocoder.yudao.module.report.service.ureport;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
-import cn.iocoder.yudao.module.report.controller.admin.ureport.vo.UreportFilePageReqVO;
-import cn.iocoder.yudao.module.report.controller.admin.ureport.vo.UreportFileSaveReqVO;
-import cn.iocoder.yudao.module.report.dal.dataobject.ureport.UreportFileDO;
-import cn.iocoder.yudao.module.report.dal.mysql.ureport.UreportFileMapper;
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.Test;
-import org.springframework.context.annotation.Import;
-
-import javax.annotation.Resource;
-
-import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime;
-import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
-import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
-import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
-import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId;
-import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
-import static cn.iocoder.yudao.module.report.enums.ErrorCodeConstants.UREPORT_FILE_NOT_EXISTS;
-import static org.junit.jupiter.api.Assertions.*;
-
-// TODO 芋艿:但愿测试后面补
-/**
- * {@link UreportFileServiceImpl} 的单元测试类
- *
- * @author 芋道源码
- */
-@Import(UreportFileServiceImpl.class)
-public class UreportFileServiceImplTest extends BaseDbUnitTest {
-
-    @Resource
-    private UreportFileServiceImpl ureportFileService;
-
-    @Resource
-    private UreportFileMapper ureportFileMapper;
-
-    @Test
-    public void testCreateUreportFile_success() {
-        // 准备参数
-        UreportFileSaveReqVO createReqVO = randomPojo(UreportFileSaveReqVO.class).setId(null);
-
-        // 调用
-        Long ureportFileId = ureportFileService.createUreportFile(createReqVO);
-        // 断言
-        assertNotNull(ureportFileId);
-        // 校验记录的属性是否正确
-        UreportFileDO ureportFile = ureportFileMapper.selectById(ureportFileId);
-        assertPojoEquals(createReqVO, ureportFile, "id");
-    }
-
-    @Test
-    public void testUpdateUreportFile_success() {
-        // mock 数据
-        UreportFileDO dbUreportFile = randomPojo(UreportFileDO.class);
-        ureportFileMapper.insert(dbUreportFile);// @Sql: 先插入出一条存在的数据
-        // 准备参数
-        UreportFileSaveReqVO updateReqVO = randomPojo(UreportFileSaveReqVO.class, o -> {
-            o.setId(dbUreportFile.getId()); // 设置更新的 ID
-        });
-
-        // 调用
-        ureportFileService.updateUreportFile(updateReqVO);
-        // 校验是否更新正确
-        UreportFileDO ureportFile = ureportFileMapper.selectById(updateReqVO.getId()); // 获取最新的
-        assertPojoEquals(updateReqVO, ureportFile);
-    }
-
-    @Test
-    public void testUpdateUreportFile_notExists() {
-        // 准备参数
-        UreportFileSaveReqVO updateReqVO = randomPojo(UreportFileSaveReqVO.class);
-
-        // 调用, 并断言异常
-        assertServiceException(() -> ureportFileService.updateUreportFile(updateReqVO), UREPORT_FILE_NOT_EXISTS);
-    }
-
-    @Test
-    public void testDeleteUreportFile_success() {
-        // mock 数据
-        UreportFileDO dbUreportFile = randomPojo(UreportFileDO.class);
-        ureportFileMapper.insert(dbUreportFile);// @Sql: 先插入出一条存在的数据
-        // 准备参数
-        Long id = dbUreportFile.getId();
-
-        // 调用
-        ureportFileService.deleteUreportFile(id);
-       // 校验数据不存在了
-       assertNull(ureportFileMapper.selectById(id));
-    }
-
-    @Test
-    public void testDeleteUreportFile_notExists() {
-        // 准备参数
-        Long id = randomLongId();
-
-        // 调用, 并断言异常
-        assertServiceException(() -> ureportFileService.deleteUreportFile(id), UREPORT_FILE_NOT_EXISTS);
-    }
-
-    @Test
-    @Disabled  // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
-    public void testGetUreportFilePage() {
-       // mock 数据
-       UreportFileDO dbUreportFile = randomPojo(UreportFileDO.class, o -> { // 等会查询到
-           o.setFileName(null);
-           o.setStatus(null);
-           o.setRemark(null);
-           o.setCreateTime(null);
-       });
-       ureportFileMapper.insert(dbUreportFile);
-       // 测试 fileName 不匹配
-       ureportFileMapper.insert(cloneIgnoreId(dbUreportFile, o -> o.setFileName(null)));
-       // 测试 status 不匹配
-       ureportFileMapper.insert(cloneIgnoreId(dbUreportFile, o -> o.setStatus(null)));
-       // 测试 remark 不匹配
-       ureportFileMapper.insert(cloneIgnoreId(dbUreportFile, o -> o.setRemark(null)));
-       // 测试 createTime 不匹配
-       ureportFileMapper.insert(cloneIgnoreId(dbUreportFile, o -> o.setCreateTime(null)));
-       // 准备参数
-       UreportFilePageReqVO reqVO = new UreportFilePageReqVO();
-       reqVO.setFileName(null);
-       reqVO.setStatus(null);
-       reqVO.setRemark(null);
-       reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
-
-       // 调用
-       PageResult<UreportFileDO> pageResult = ureportFileService.getUreportFilePage(reqVO);
-       // 断言
-       assertEquals(1, pageResult.getTotal());
-       assertEquals(1, pageResult.getList().size());
-       assertPojoEquals(dbUreportFile, pageResult.getList().get(0));
-    }
-
-}

+ 1 - 1
yudao-module-report/yudao-module-report-biz/src/test/resources/sql/clean.sql

@@ -1,2 +1,2 @@
 DELETE FROM "report_go_view_project";
-DELETE FROM "ureport_file";
+DELETE FROM "report_ureport_data";

+ 12 - 12
yudao-module-report/yudao-module-report-biz/src/test/resources/sql/create_tables.sql

@@ -12,16 +12,16 @@ CREATE TABLE IF NOT EXISTS "report_go_view_project" (
     "deleted" bit NOT NULL DEFAULT FALSE,
     PRIMARY KEY ("id")
 ) COMMENT 'GoView 项目表';
-CREATE TABLE IF NOT EXISTS "ureport_file" (
-      "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
-      "file_name" varchar NOT NULL,
-      "status" int NOT NULL,
-      "file_content" varchar,
-      "remark" varchar,
-      "creator" varchar DEFAULT '',
-      "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
-      "updater" varchar DEFAULT '',
-      "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-      "deleted" bit NOT NULL DEFAULT FALSE,
-      PRIMARY KEY ("id")
+CREATE TABLE IF NOT EXISTS "report_ureport_data" (
+     "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
+     "name" varchar NOT NULL,
+     "status" int NOT NULL,
+     "content" varchar,
+     "remark" varchar,
+     "creator" varchar DEFAULT '',
+     "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+     "updater" varchar DEFAULT '',
+     "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+     "deleted" bit NOT NULL DEFAULT FALSE,
+     PRIMARY KEY ("id")
 ) COMMENT 'Ureport2报表';

+ 1 - 1
yudao-server/src/main/resources/application.yaml

@@ -229,7 +229,7 @@ yudao:
       - jimu_report_link
       - jimu_report_map
       - jimu_report_share
-      - ureport_file
+      - report_ureport_data
       - rep_demo_dxtj
       - rep_demo_employee
       - rep_demo_gongsi

Some files were not shown because too many files changed in this diff