diff --git a/cf-module-report/cf-module-report-api/src/main/java/com/cf/imes/module/report/enums/ErrorCodeConstants.java b/cf-module-report/cf-module-report-api/src/main/java/com/cf/imes/module/report/enums/ErrorCodeConstants.java index d7c744ad7..935a60b52 100644 --- a/cf-module-report/cf-module-report-api/src/main/java/com/cf/imes/module/report/enums/ErrorCodeConstants.java +++ b/cf-module-report/cf-module-report-api/src/main/java/com/cf/imes/module/report/enums/ErrorCodeConstants.java @@ -25,7 +25,7 @@ public final class ErrorCodeConstants { // ========== UREPORT dataset模块 1-003-003-000 ========== - public static final ErrorCode DATASET_NOT_EXISTS = new ErrorCode(1_003_003_001, "报表数据集不存在"); + public static final ErrorCode DATASET_NOT_EXISTS = new ErrorCode(1_003_003_001, "报表数据集不存在或权限不足"); public static final ErrorCode DATASET_SQL_INJECTION_RISK = new ErrorCode(1_003_003_002, "存在SQL注入风险"); public static final ErrorCode DATASET_SQL_REQUIRED = new ErrorCode(1_003_003_003, "SQL语句不能为空"); public static final ErrorCode DATASET_SQL_ILLEGAL = new ErrorCode(1_003_003_004, "SQL语句非法"); diff --git a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/dataset/ReportDatasetController.java b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/dataset/ReportDatasetController.java index 6b882d43a..64f26c501 100644 --- a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/dataset/ReportDatasetController.java +++ b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/dataset/ReportDatasetController.java @@ -37,14 +37,14 @@ public class ReportDatasetController { @PutMapping("/dataset") @Operation(summary = "创建报表数据集") -// @PreAuthorize("@ss.hasPermission('report:dataset:create')") + @PreAuthorize("@ss.hasPermission('report:design')") public CommonResult createDataset(@Valid @RequestBody ReportDatasetSaveReqVO createReqVO) { return success(datasetService.createDataset(createReqVO)); } @PostMapping("/dataset") @Operation(summary = "更新报表数据集") -// @PreAuthorize("@ss.hasPermission('report:dataset:update')") + @PreAuthorize("@ss.hasPermission('report:design')") public CommonResult updateDataset(@Valid @RequestBody ReportDatasetSaveReqVO updateReqVO) { datasetService.updateDataset(updateReqVO); return success(true); @@ -53,7 +53,7 @@ public class ReportDatasetController { @DeleteMapping("/dataset/{id}") @Operation(summary = "删除报表数据集") @Parameter(name = "id", description = "数据集id", required = true) -// @PreAuthorize("@ss.hasPermission('report:dataset:delete')") + @PreAuthorize("@ss.hasPermission('report:design')") public CommonResult deleteDataset(@PathVariable("id") Long id) { datasetService.deleteDataset(id); return success(true); @@ -62,7 +62,7 @@ public class ReportDatasetController { @GetMapping("/dataset/{id}") @Operation(summary = "获得报表数据集") @Parameter(name = "id", description = "数据集id", required = true, example = "1") -// @PreAuthorize("@ss.hasPermission('report:dataset:query')") + @PreAuthorize("@ss.hasPermission('report:design')") public CommonResult getDataset(@PathVariable("id") Long id) { ReportDatasetDO dataset = datasetService.getDataset(id); return success(BeanUtils.toBean(dataset, ReportDatasetRespVO.class)); @@ -70,7 +70,7 @@ public class ReportDatasetController { @GetMapping("/datasets") @Operation(summary = "获取数据源下的报表数据集列表") -// @PreAuthorize("@ss.hasPermission('report:dataset:query')") + @PreAuthorize("@ss.hasPermission('report:design')") public CommonResult> getDatasetPage(@RequestParam(value = "datasourceId") Long datasourceId, @RequestParam(value = "name", required = false) String name) { ReportDatasetReqVO reqVO = new ReportDatasetReqVO(name, datasourceId); diff --git a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/datasource/ReportDatasourceController.java b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/datasource/ReportDatasourceController.java index 30ca3fc46..17196ae32 100644 --- a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/datasource/ReportDatasourceController.java +++ b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/datasource/ReportDatasourceController.java @@ -50,14 +50,14 @@ public class ReportDatasourceController { @PutMapping("/datasource") @Operation(summary = "创建报表数据源") -// @PreAuthorize("@ss.hasPermission('report:datasource:create')") + @PreAuthorize("@ss.hasPermission('report:design')") public CommonResult createDatasource(@Valid @RequestBody ReportDatasourceSaveReqVO createReqVO) { return success(datasourceService.createDatasource(createReqVO)); } @PostMapping("/datasource") @Operation(summary = "更新报表数据源") -// @PreAuthorize("@ss.hasPermission('report:datasource:update')") + @PreAuthorize("@ss.hasPermission('report:design')") public CommonResult updateDatasource(@Valid @RequestBody ReportDatasourceSaveReqVO updateReqVO) { datasourceService.updateDatasource(updateReqVO); return success(true); @@ -66,7 +66,7 @@ public class ReportDatasourceController { @DeleteMapping("/datasource/{id}") @Operation(summary = "删除报表数据源") @Parameter(name = "id", description = "数据源id", required = true, example = "1") -// @PreAuthorize("@ss.hasPermission('report:datasource:delete')") + @PreAuthorize("@ss.hasPermission('report:design')") public CommonResult deleteDatasource(@PathVariable("id") Long id) { datasourceService.deleteDatasource(id); return success(true); @@ -75,7 +75,7 @@ public class ReportDatasourceController { @GetMapping("/datasource/{id}") @Operation(summary = "获取报表数据源") @Parameter(name = "id", description = "数据源id", required = true, example = "1") -// @PreAuthorize("@ss.hasPermission('report:datasource:query')") + @PreAuthorize("@ss.hasPermission('report:design')") public CommonResult getDatasource(@PathVariable("id") Long id) { ReportDatasourceDO datasource = datasourceService.getDatasource(id); return success(BeanUtils.toBean(datasource, ReportDatasourceRespVO.class)); @@ -83,14 +83,14 @@ public class ReportDatasourceController { @GetMapping("/datasources") @Operation(summary = "获取报表数据源列表") -// @PreAuthorize("@ss.hasPermission('report:datasource:query')") + @PreAuthorize("@ss.hasPermission('report:design')") public CommonResult> getDatasourcePage() { return success(BeanUtils.toBean(datasourceService.getDatasourceList(), ReportDatasourceRespVO.class)); } @GetMapping("/datasource/beans") @Operation(summary = "获取springbean数据源列表") -// @PreAuthorize("@ss.hasPermission('report:datasource:query')") + @PreAuthorize("@ss.hasPermission('report:design')") public CommonResult> getBeanDatasourceList() { return success(datasourceService.getBeanDatasourceList()); } @@ -98,36 +98,23 @@ public class ReportDatasourceController { @GetMapping("/springbean/result/clazz") @Operation(summary = "获取springbean数据源返回对象") @Parameter(name = "clazz", description = "返回对象类路径全名不能为空", required = true) + @PreAuthorize("@ss.hasPermission('report:design')") public List springbeanFieldList(@RequestParam(value = "clazz") @NotEmpty(message = "类路径全名不能为空") String clazz) { return datasourceService.getSpringBeanResultFieldList(clazz); } @GetMapping("/datasource/bean/methods") @Operation(summary = "获取springbean数据源方法类表") -// @PreAuthorize("@ss.hasPermission('report:datasource:query')") @Parameter(name = "beanId", description = "springbeanId", required = true) + @PreAuthorize("@ss.hasPermission('report:design')") public CommonResult> getBeanDatasourceList(@RequestParam(value = "beanId") @NotEmpty(message = "beanId不能为空") String beanId) { return success(datasourceService.loadBeanMethods(beanId)); } - @GetMapping("/buildin/datasources") - @Operation(summary = "获取内置数据源列表") -// @PreAuthorize("@ss.hasPermission('report:datasource:query')") - public CommonResult> getBuildinDatasources() { - return CommonResult.success(datasourceService.getBuildinDatasourceList()); - } - - @PostMapping("/buildin/datasources") - @Operation(summary = "保存内置数据源") - public CommonResult saveBuildinDatasources(@Valid @RequestBody @NotEmpty(message = "内置数据源列表不能为空") List reportDatasourceDOS) { - datasourceService.saveBuildinDatasources(reportDatasourceDOS); - return CommonResult.success(true); - } - @PostMapping("/datasource/connect") @Operation(summary = "测试数据源连接") -// @PreAuthorize("@ss.hasPermission('report:datasource:query')") + @PreAuthorize("@ss.hasPermission('report:design')") public CommonResult testDatasourceConnect(@RequestBody DataSourceInfo info) { String success = MultipleJdbcTemplate.testConnection(info); return Objects.equals("success", success) ? success(true) : error(DATASOURCE_CONNECT_FAIL); @@ -135,20 +122,21 @@ public class ReportDatasourceController { @PostMapping("/datasource/tables") @Operation(summary = "获取数据库表列表") -// @PreAuthorize("@ss.hasPermission('report:datasource:query')") + @PreAuthorize("@ss.hasPermission('report:design')") public CommonResult>> getDatasourceTables(@RequestBody DataSourceInfo info) { return success(ureportDataSourceService.selectTableList(info)); } @PostMapping("/datasource/table/fields") @Operation(summary = "获取数据源表字段") -// @PreAuthorize("@ss.hasPermission('report:datasource:query')") + @PreAuthorize("@ss.hasPermission('report:design')") public CommonResult> getDatasourceTableFields(@RequestBody PreviewParams previewParams) { return success(datasourceService.getTableFields(previewParams)); } @PostMapping("/datasource/preview") @Operation(summary = "数据源预览") + @PreAuthorize("@ss.hasPermission('report:design')") public CommonResult> previewData(@RequestBody PreviewParams previewParams) { return success(ureportDataSourceService.previewData(previewParams)); } diff --git a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/template/ReportTemplateController.java b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/template/ReportTemplateController.java index 9bf432c77..4a6b22a18 100644 --- a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/template/ReportTemplateController.java +++ b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/controller/admin/template/ReportTemplateController.java @@ -33,6 +33,7 @@ import org.antlr.v4.runtime.tree.TerminalNode; import org.apache.commons.io.IOUtils; import org.apache.http.HttpStatus; import org.apache.ibatis.annotations.Param; +import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -66,21 +67,21 @@ public class ReportTemplateController { @PutMapping("/template") @Operation(summary = "创建报表模板") -// @PreAuthorize("@ss.hasPermission('report:template:create')") + @PreAuthorize("@ss.hasPermission('report:design')") public CommonResult createTemplate(@Valid @RequestBody ReportTemplateSaveReqVO createReqVO) { return success(templateService.createReportTemplate(createReqVO)); } @PutMapping("/template/copy") @Operation(summary = "复制报表模板") -// @PreAuthorize("@ss.hasPermission('report:template:create')") + @PreAuthorize("@ss.hasPermission('report:design')") public CommonResult copyTemplate(@Valid @RequestBody ReportTemplateSaveReqVO createReqVO) { return success(templateService.copyReportTemplate(createReqVO)); } @PostMapping("/template") @Operation(summary = "更新报表模板") -// @PreAuthorize("@ss.hasPermission('report:template:update')") + @PreAuthorize("@ss.hasPermission('report:design')") public CommonResult updateTemplate(@Valid @RequestBody ReportTemplateSaveReqVO updateReqVO) { return success(templateService.updateReportTemplate(updateReqVO)); } @@ -88,7 +89,7 @@ public class ReportTemplateController { @DeleteMapping("/template/{id}") @Operation(summary = "删除报表模板") @Parameter(name = "id", description = "模板id", required = true) -// @PreAuthorize("@ss.hasPermission('report:template:delete')") + @PreAuthorize("@ss.hasPermission('report:design')") public CommonResult deleteReportTemplate(@PathVariable("id") Long id) { templateService.deleteReportTemplate(id); return success(true); @@ -97,14 +98,14 @@ public class ReportTemplateController { @GetMapping("/template/{id}") @Operation(summary = "获取报表模板信息") @Parameter(name = "id", description = "模板id", required = true, example = "1") -// @PreAuthorize("@ss.hasPermission('report:template:query')") + @PreAuthorize("@ss.hasPermission('report:design')") public CommonResult getReportTemplate(@PathVariable("id") Long id) { return success(templateService.getReportTemplateDefinition(id)); } @GetMapping("/templates") @Operation(summary = "获取报表模板信息列表") -// @PreAuthorize("@ss.hasPermission('report:template:query')") + @PreAuthorize("@ss.hasPermission('report:design')") public CommonResult> getTemplatePage(@RequestParam(value = "name", required = false) String name) { ReportTemplateReqVO reqVO = new ReportTemplateReqVO(name, null); return success(BeanUtils.toBean(templateService.getReportTemplateList(reqVO), ReportTemplateRespVO.class)); @@ -112,26 +113,28 @@ public class ReportTemplateController { @PostMapping("/template/preview") @Operation(summary = "模板预览") -// @PreAuthorize("@ss.hasPermission('report:template:query')") + @PreAuthorize("@ss.hasPermission('report:preview')") public CommonResult preview(@RequestBody PreviewParameters params) { return success(templateService.preview(params)); } @PostMapping("/template/print") @Operation(summary = "模板预览打印") + @PreAuthorize("@ss.hasPermission('report:preview')") public void print(@RequestBody PreviewParameters reportParameters, HttpServletResponse response) { templateService.print(reportParameters, response); } @PostMapping("/template/download/{type}") @Operation(summary = "模板预览下载") + @PreAuthorize("@ss.hasPermission('report:preview')") public void print(@PathVariable @Valid @ReportTemplateProducerTypeInEnum String type, @RequestBody PreviewParameters reportParameters, HttpServletResponse response) { templateService.download(type, reportParameters, response); } @PostMapping("/template/export") @Operation(summary = "模板导出") -// @PreAuthorize("@ss.hasPermission('report:template:query')") + @PreAuthorize("@ss.hasPermission('report:design')") public void generateTemplate(@Valid @RequestBody ReportTemplateGenerateReqDTO reqDTO, HttpServletResponse response) { OutputStream out = null; try { @@ -150,7 +153,7 @@ public class ReportTemplateController { @GetMapping("/template/excel/import") @Operation(summary = "导入excel模板") -// @PreAuthorize("@ss.hasPermission('report:template:import')") + @PreAuthorize("@ss.hasPermission('report:design')") public ReportDefinitionWrapper importExcel(@RequestParam("file") MultipartFile file) { ReportDefinition report = ExcelParserUtils.parser(file); if (report != null) { @@ -163,6 +166,7 @@ public class ReportTemplateController { @GetMapping("/scriptValidation") @Operation(summary = "校验表达式") @Parameter(name = "content", description = "表达式", required = true) + @PreAuthorize("@ss.hasPermission('report:design')") public List scriptValidation(@Param("content") @NotEmpty(message = "表达式不能为空") String content) { content = StringUtils.decode(content); ANTLRInputStream antlrInputStream = new ANTLRInputStream(content); @@ -185,6 +189,7 @@ public class ReportTemplateController { @GetMapping("/parseDataSet") @Operation(summary = "解析表达式中的数据集") @Parameter(name = "expr", description = "表达式", required = true) + @PreAuthorize("@ss.hasPermission('report:design')") public Map parseDatasetName(@Param("expr") @NotEmpty(message = "表达式不能为空") String expr) { ANTLRInputStream antlrInputStream = new ANTLRInputStream(expr); ReportParserLexer lexer = new ReportParserLexer(antlrInputStream); diff --git a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/dal/mysql/dataset/ReportDatasetMapper.java b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/dal/mysql/dataset/ReportDatasetMapper.java index 51a4cc91b..52f2ac652 100644 --- a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/dal/mysql/dataset/ReportDatasetMapper.java +++ b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/dal/mysql/dataset/ReportDatasetMapper.java @@ -1,9 +1,14 @@ package com.cf.imes.module.report.dal.mysql.dataset; import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; +import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.cf.imes.framework.organ.core.aop.OrganIgnore; import com.cf.imes.module.report.dal.dataobject.dataset.ReportDatasetDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; +import java.util.Set; + /** * 报表数据集 Mapper * @@ -12,4 +17,14 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface ReportDatasetMapper extends BaseMapperX { + + /** + * 查询数据集列表 + * @param + * @return + */ + @OrganIgnore + default List selectNormalDatasetList(Set datasetIds) { + return selectList(new LambdaQueryWrapperX().in(ReportDatasetDO::getId, datasetIds)); + } } diff --git a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/dal/mysql/datasource/ReportDatasourceMapper.java b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/dal/mysql/datasource/ReportDatasourceMapper.java index e1e7f855d..11f37945a 100644 --- a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/dal/mysql/datasource/ReportDatasourceMapper.java +++ b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/dal/mysql/datasource/ReportDatasourceMapper.java @@ -1,10 +1,15 @@ package com.cf.imes.module.report.dal.mysql.datasource; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; +import com.cf.imes.framework.organ.core.aop.OrganIgnore; import com.cf.imes.module.report.dal.dataobject.datasource.ReportDatasourceDO; -import org.apache.ibatis.annotations.Delete; +import com.cf.imes.module.report.enums.template.ReportTemplateTypeEnum; import org.apache.ibatis.annotations.Mapper; +import java.util.List; +import java.util.Set; + /** * 报表数据源 Mapper * @@ -14,6 +19,38 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface ReportDatasourceMapper extends BaseMapperX { - @Delete("DELETE FROM report_datasource WHERE buildin_type = 0") - int physicsDeleteBuildinDatasource(); + /** + * 根据数据源id查询数据源 + * 普通用户用:organId+buildType:1 or buildType:0 + * + * @param id 数据源id + * @return + */ + @OrganIgnore + default ReportDatasourceDO selectNormalDatasourceById(Long id, Long organId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .eq(ReportDatasourceDO::getId, id) + .and(wr -> wr.or(wrapper -> wrapper + .eq(ReportDatasourceDO::getOrganId, organId) + .eq(ReportDatasourceDO::getBuildinType, ReportTemplateTypeEnum.CUSTOM)) + .or(wrapper -> wrapper.eq(ReportDatasourceDO::getBuildinType, ReportTemplateTypeEnum.SYSTEM))); + return selectOne(queryWrapper); + } + + /** + * 查询数据源列表 + * 普通用户用:organId+buildinType:1 or buildinType:0 + * @param + * @return + */ + @OrganIgnore + default List selectNormalDatasourceList(Set datasourceIds, Long organId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .in(ReportDatasourceDO::getId, datasourceIds) + .and(wr -> wr.or(wrapper -> wrapper + .eq(ReportDatasourceDO::getOrganId, organId) + .eq(ReportDatasourceDO::getBuildinType, ReportTemplateTypeEnum.CUSTOM)) + .or(wrapper -> wrapper.eq(ReportDatasourceDO::getBuildinType, ReportTemplateTypeEnum.SYSTEM))); + return selectList(queryWrapper); + } } diff --git a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/dal/mysql/template/ReportTemplateMapper.java b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/dal/mysql/template/ReportTemplateMapper.java index 601b9f9e3..ad2fd1994 100644 --- a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/dal/mysql/template/ReportTemplateMapper.java +++ b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/dal/mysql/template/ReportTemplateMapper.java @@ -1,9 +1,15 @@ package com.cf.imes.module.report.dal.mysql.template; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; +import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.cf.imes.framework.organ.core.aop.OrganIgnore; import com.cf.imes.module.report.dal.dataobject.template.ReportTemplateDO; +import com.cf.imes.module.report.enums.template.ReportTemplateTypeEnum; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 报表模板信息 Mapper * @@ -12,4 +18,44 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface ReportTemplateMapper extends BaseMapperX { + + /** + * 根据模板id查询模板 + * 普通用户用:organId+type:1 or type:0 + * + * @param id 模板id + * @return + */ + @OrganIgnore + default ReportTemplateDO selectNormalTemplateById(Long id, Long organId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .eq(ReportTemplateDO::getId, id) + .and(wr -> wr.or(wrapper -> wrapper + .eq(ReportTemplateDO::getOrganId, organId) + .eq(ReportTemplateDO::getType, ReportTemplateTypeEnum.CUSTOM)) + .or(wrapper -> wrapper.eq(ReportTemplateDO::getType, ReportTemplateTypeEnum.SYSTEM))); + return selectOne(queryWrapper); + } + + /** + * 查询模板列表 + * 普通用户用:organId+type:1 or type:0 + * @param name + * @param organId + * @return + */ + @OrganIgnore + default List selectNormalTemplateList(String name, Long organId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapperX() + .likeIfPresent(ReportTemplateDO::getName, name) + .orderByDesc(ReportTemplateDO::getCreateTime) + .and(wr -> wr.or(wrapper -> wrapper + .eq(ReportTemplateDO::getOrganId, organId) + .eq(ReportTemplateDO::getType, ReportTemplateTypeEnum.CUSTOM)) + .or(wrapper -> wrapper.eq(ReportTemplateDO::getType, ReportTemplateTypeEnum.SYSTEM))) + // 不返回content xml,点击具体的模板中返回xml + .select(ReportTemplateDO::getId, ReportTemplateDO::getName, ReportTemplateDO::getCreateTime, ReportTemplateDO::getRemark); + return selectList(queryWrapper); + } + } diff --git a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/dataset/ReportDatasetServiceImpl.java b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/dataset/ReportDatasetServiceImpl.java index b7b5f24c4..a7c386a8c 100644 --- a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/dataset/ReportDatasetServiceImpl.java +++ b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/dataset/ReportDatasetServiceImpl.java @@ -40,10 +40,10 @@ public class ReportDatasetServiceImpl implements ReportDatasetService { @Override public Long createDataset(ReportDatasetSaveReqVO createReqVO) { - // 插入 - ReportDatasetDO dataset = BeanUtils.toBean(createReqVO, ReportDatasetDO.class); // 校验内置模板操作权限 validateSystemDataset(createReqVO.getDatasourceId()); + // 插入 + ReportDatasetDO dataset = BeanUtils.toBean(createReqVO, ReportDatasetDO.class); datasetMapper.insert(dataset); // 返回 return dataset.getId(); @@ -59,10 +59,10 @@ public class ReportDatasetServiceImpl implements ReportDatasetService { @Override public void updateDataset(ReportDatasetSaveReqVO updateReqVO) { - // 校验存在 - validateDatasetExists(updateReqVO.getId()); // 校验内置模板操作权限 validateSystemDataset(updateReqVO.getDatasourceId()); + // 校验存在 + validateDatasetExists(updateReqVO.getId()); // 更新 ReportDatasetDO updateObj = BeanUtils.toBean(updateReqVO, ReportDatasetDO.class); datasetMapper.updateById(updateObj); @@ -101,7 +101,7 @@ public class ReportDatasetServiceImpl implements ReportDatasetService { * @param datasourceId 数据源id */ private void validateSystemDataset(Long datasourceId) { - ReportDatasourceDO reportDatasourceDO = reportDatasourceMapper.selectById(datasourceId); + ReportDatasourceDO reportDatasourceDO = reportDatasourceMapper.selectNormalDatasourceById(datasourceId, SecurityFrameworkUtils.getUserOrganId()); if (ObjectUtil.isNull(reportDatasourceDO)) { throw exception(DATASOURCE_NOT_EXISTS); } diff --git a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/datasource/ReportDatasourceService.java b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/datasource/ReportDatasourceService.java index df1eede30..b602e7e75 100644 --- a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/datasource/ReportDatasourceService.java +++ b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/datasource/ReportDatasourceService.java @@ -3,7 +3,6 @@ package com.cf.imes.module.report.service.datasource; import com.bstek.datasource.bean.PreviewParams; import com.bstek.ureport.definition.dataset.Field; import com.cf.imes.module.report.controller.admin.datasource.vo.ReportBeanDatasourceRespVO; -import com.cf.imes.module.report.controller.admin.datasource.vo.ReportDatasourceReqVO; import com.cf.imes.module.report.controller.admin.datasource.vo.ReportDatasourceSaveReqVO; import com.cf.imes.module.report.dal.dataobject.datasource.ReportDatasourceDO; @@ -85,18 +84,4 @@ public interface ReportDatasourceService { * @return */ List getSpringBeanResultFieldList(String clazz); - - /** - * 获取内置数据源列表 - * - * @return - */ - List getBuildinDatasourceList(); - - /** - * 保存内置数据源列表 - * - * @param buildinDatasources - */ - void saveBuildinDatasources(List buildinDatasources); } diff --git a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/datasource/ReportDatasourceServiceImpl.java b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/datasource/ReportDatasourceServiceImpl.java index ef88f9e04..5df8cbf3a 100644 --- a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/datasource/ReportDatasourceServiceImpl.java +++ b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/datasource/ReportDatasourceServiceImpl.java @@ -22,7 +22,6 @@ import com.cf.imes.framework.organ.core.aop.OrganIgnore; import com.cf.imes.framework.security.core.LoginUser; import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils; import com.cf.imes.module.report.controller.admin.dataset.vo.ReportDatasetReqVO; -import com.cf.imes.module.report.controller.admin.dataset.vo.ReportDatasetSaveReqVO; import com.cf.imes.module.report.controller.admin.datasource.vo.ReportBeanDatasourceRespVO; import com.cf.imes.module.report.controller.admin.datasource.vo.ReportDatasourceSaveReqVO; import com.cf.imes.module.report.dal.dataobject.dataset.ReportDatasetDO; @@ -92,10 +91,10 @@ public class ReportDatasourceServiceImpl implements ReportDatasourceService { @Override public Long createDatasource(ReportDatasourceSaveReqVO createReqVO) { - ReportDatasourceDO datasource = BeanUtils.toBean(createReqVO, ReportDatasourceDO.class); // 校验内置数据源操作权限 validateSystemDatasource(createReqVO.getBuildinType()); // 插入 + ReportDatasourceDO datasource = BeanUtils.toBean(createReqVO, ReportDatasourceDO.class); datasourceMapper.insert(datasource); // 返回 return datasource.getId(); @@ -103,10 +102,10 @@ public class ReportDatasourceServiceImpl implements ReportDatasourceService { @Override public void updateDatasource(ReportDatasourceSaveReqVO updateReqVO) { - // 校验存在 - validateDatasourceExists(updateReqVO.getId()); // 校验内置数据源操作权限 validateSystemDatasource(updateReqVO.getBuildinType()); + // 校验存在 + validateDatasourceExists(updateReqVO.getId()); ReportDatasourceDO updateObj = BeanUtils.toBean(updateReqVO, ReportDatasourceDO.class); // 更新 datasourceMapper.updateById(updateObj); @@ -127,7 +126,7 @@ public class ReportDatasourceServiceImpl implements ReportDatasourceService { @Override public ReportDatasourceDO getDatasource(Long id) { - ReportDatasourceDO reportDatasourceDO = datasourceMapper.selectById(id); + ReportDatasourceDO reportDatasourceDO = datasourceMapper.selectNormalDatasourceById(id, SecurityFrameworkUtils.getUserOrganId()); // 查询数据集 queryDatasetInSource(reportDatasourceDO); return reportDatasourceDO; @@ -142,8 +141,8 @@ public class ReportDatasourceServiceImpl implements ReportDatasourceService { // 普通用户查看机构下的和system数据源 queryWrapper.or(wrapper -> wrapper .eq(ReportDatasourceDO::getOrganId, loginUser.getOrganId()) - .eq(ReportDatasourceDO::getType, ReportTemplateTypeEnum.CUSTOM)) - .or(wrapper -> wrapper.eq(ReportDatasourceDO::getType, ReportTemplateTypeEnum.SYSTEM)); + .eq(ReportDatasourceDO::getBuildinType, ReportTemplateTypeEnum.CUSTOM)) + .or(wrapper -> wrapper.eq(ReportDatasourceDO::getBuildinType, ReportTemplateTypeEnum.SYSTEM)); } List reportDatasourceDOS = datasourceMapper.selectList(queryWrapper); // 查询数据集 @@ -287,52 +286,6 @@ public class ReportDatasourceServiceImpl implements ReportDatasourceService { } } - @Override - public List getBuildinDatasourceList() { - List reportDatasourceDOS = datasourceMapper.selectList(new LambdaQueryWrapperX() - .eqIfPresent(ReportDatasourceDO::getBuildinType, ReportTemplateTypeEnum.SYSTEM) - .orderByDesc(ReportDatasourceDO::getCreateTime)); - // 查询数据集 - if (CollUtil.isNotEmpty(reportDatasourceDOS)) { - reportDatasourceDOS.forEach(reportDatasourceDO -> { - queryDatasetInSource(reportDatasourceDO); - }); - } - return reportDatasourceDOS; - } - - @Override - public void saveBuildinDatasources(List buildinDatasources) { -// LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); -// boolean isSuperAdmin = loginUser != null && loginUser.getIsSupAdmin(); -// // 非超管不能操作内置模板 -// if (!isSuperAdmin) { -// throw exception(DATASOURCE_BUILDIN_OPERATION_PERMISSION_ERROR); -// } -// // 全删内置数据源 -// int deleteNum = datasourceMapper.physicsDeleteBuildinDatasource(); -// log.info("[ReportDatasourceService][saveBuildinDatasources]删除内置数据源{}条", deleteNum); -// buildinDatasources.forEach(ds -> { -// // 新增数据源 -// ds.setBuildinType(ReportTemplateTypeEnum.SYSTEM.getType()); -// ds.setId(null); -// Long datasourceId = createDatasource(ds); -// List datasets = ds.getDatasets(); -// List batchInsertDataset = new ArrayList<>(); -// datasets.forEach(dataset -> { -// // 新增数据集 -// dataset.setDatasourceId(datasourceId); -// dataset.setId(null); -// batchInsertDataset.add(dataset); -// }); -// -// // 批量插入数据集 -// if (CollUtil.isNotEmpty(batchInsertDataset)) { -// datasetService.batchCreateDataset(batchInsertDataset); -// } -// }); - } - /** * 查询数据源下的数据集 * @@ -352,7 +305,7 @@ public class ReportDatasourceServiceImpl implements ReportDatasourceService { * @param id 数据源id */ private ReportDatasourceDO validateDatasourceExists(Long id) { - ReportDatasourceDO reportDatasourceDO = datasourceMapper.selectById(id); + ReportDatasourceDO reportDatasourceDO = datasourceMapper.selectNormalDatasourceById(id, SecurityFrameworkUtils.getUserOrganId()); if (reportDatasourceDO == null) { throw exception(DATASOURCE_NOT_EXISTS); } else { diff --git a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/template/ReportTemplateServiceImpl.java b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/template/ReportTemplateServiceImpl.java index 8a37d326a..48acb4d16 100644 --- a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/template/ReportTemplateServiceImpl.java +++ b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/service/template/ReportTemplateServiceImpl.java @@ -28,9 +28,10 @@ import com.bstek.ureport.export.html.HtmlReport; import com.bstek.ureport.model.Report; import com.bstek.ureport.parser.ReportParser; import com.bstek.ureport.utils.ToolUtils; +import com.cf.imes.framework.common.exception.ServiceException; +import com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants; import com.cf.imes.framework.common.util.object.BeanUtils; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; -import com.cf.imes.framework.organ.core.aop.OrganIgnore; import com.cf.imes.framework.security.core.LoginUser; import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils; import com.cf.imes.module.report.api.template.dto.ReportTemplateGenerateReqDTO; @@ -199,9 +200,19 @@ public class ReportTemplateServiceImpl implements ReportTemplateService { * * @param id */ - private ReportTemplateDO validateTemplateExists(Long id) { - ReportTemplateDO reportTemplateDO = templateMapper.selectById(id); - if (reportTemplateDO == null) { + public ReportTemplateDO validateTemplateExists(Long id) { + ReportTemplateDO reportTemplateDO; + LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new ServiceException(GlobalErrorCodeConstants.UNAUTHORIZED); + } + // 非超管查询内置模板+机构下的 + if (loginUser.getIsSupAdmin()) { + reportTemplateDO = templateMapper.selectById(id); + } else { + reportTemplateDO = templateMapper.selectNormalTemplateById(id, loginUser.getOrganId()); + } + if (ObjectUtil.isNull(reportTemplateDO)) { throw exception(TEMPLATE_NOT_EXISTS); } else { return reportTemplateDO; @@ -231,18 +242,13 @@ public class ReportTemplateServiceImpl implements ReportTemplateService { @Override public ReportTemplateDO getReportTemplate(Long id) { // 校验模板 - validateTemplateExists(id); - // 查询模板 - ReportTemplateDO template = templateMapper.selectById(id); - return template; + return validateTemplateExists(id); } @Override public ReportDefinitionWrapper getReportTemplateDefinition(Long id) { // 校验模板 - validateTemplateExists(id); - // 查询模板 - ReportTemplateDO template = templateMapper.selectById(id); + ReportTemplateDO template = validateTemplateExists(id); String xmlContent = template.getContent(); InputStream is; if (StringUtils.isNotEmpty(xmlContent)) { @@ -274,13 +280,13 @@ public class ReportTemplateServiceImpl implements ReportTemplateService { if (CollUtil.isNotEmpty(datasourceIds)) { // 查询模板下的数据源 - reportDatasourceDOS = datasourceMapper.selectList(new LambdaQueryWrapperX().in(ReportDatasourceDO::getId, datasourceIds)); + reportDatasourceDOS = datasourceMapper.selectNormalDatasourceList(datasourceIds, SecurityFrameworkUtils.getUserOrganId()); } List reportDatasetDOS = new ArrayList<>(); if (CollUtil.isNotEmpty(datasetIds)) { // 查询模板下的数据集 - reportDatasetDOS = datasetMapper.selectList(new LambdaQueryWrapperX().in(ReportDatasetDO::getId, datasetIds)); + reportDatasetDOS = datasetMapper.selectNormalDatasetList(datasetIds); } // 转换ureport对象后的数据源列表 List datasourceDefinitions = new ArrayList<>(); @@ -322,7 +328,6 @@ public class ReportTemplateServiceImpl implements ReportTemplateService { } @Override - @OrganIgnore public List getReportTemplateList(ReportTemplateReqVO reqVO) { LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapperX().likeIfPresent(ReportTemplateDO::getName, reqVO.getName()) @@ -330,14 +335,11 @@ public class ReportTemplateServiceImpl implements ReportTemplateService { // 不返回content xml,点击具体的模板中返回xml .select(ReportTemplateDO::getId, ReportTemplateDO::getName, ReportTemplateDO::getCreateTime, ReportTemplateDO::getRemark); if (ObjectUtil.isNotNull(loginUser) && Boolean.FALSE.equals(loginUser.getIsSupAdmin())) { - // 普通用户查看机构下的和system模板 - queryWrapper.or(wrapper -> wrapper - .eq(ReportTemplateDO::getOrganId, loginUser.getOrganId()) - .eq(ReportTemplateDO::getType, ReportTemplateTypeEnum.CUSTOM)) - .or(wrapper -> wrapper.eq(ReportTemplateDO::getType, ReportTemplateTypeEnum.SYSTEM)); + return templateMapper.selectNormalTemplateList(reqVO.getName(), loginUser.getOrganId()); + } else { + // 超管查看全部 + return templateMapper.selectList(queryWrapper); } - // 超管查看全部 - return templateMapper.selectList(queryWrapper); } @Override @@ -436,9 +438,7 @@ public class ReportTemplateServiceImpl implements ReportTemplateService { validateProducerType(reqDTO.getProducerType()); Long templateId = reqDTO.getTemplateId(); // 校验模板 - validateTemplateExists(templateId); - // 查询模板 - ReportTemplateDO template = templateMapper.selectById(templateId); + ReportTemplateDO template = validateTemplateExists(templateId); String xmlContent = template.getContent(); ReportRender reportRender = new ReportRender(); // 解析xml diff --git a/cf-module-report/cf-module-report-biz/src/test/java/com/cf/imes/module/report/service/template/ReportDatasetServiceImplTest.java b/cf-module-report/cf-module-report-biz/src/test/java/com/cf/imes/module/report/service/template/ReportDatasetServiceImplTest.java index 060a06a64..3d1c38df3 100644 --- a/cf-module-report/cf-module-report-biz/src/test/java/com/cf/imes/module/report/service/template/ReportDatasetServiceImplTest.java +++ b/cf-module-report/cf-module-report-biz/src/test/java/com/cf/imes/module/report/service/template/ReportDatasetServiceImplTest.java @@ -4,6 +4,7 @@ import com.cf.imes.framework.test.core.util.RandomUtils; import com.cf.imes.module.report.controller.admin.dataset.vo.ReportDatasetReqVO; import com.cf.imes.module.report.controller.admin.dataset.vo.ReportDatasetSaveReqVO; import com.cf.imes.module.report.controller.admin.datasource.vo.ReportDatasourceSaveReqVO; +import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplateRespVO; import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplateSaveReqVO; import com.cf.imes.module.report.dal.dataobject.dataset.ReportDatasetDO; import com.cf.imes.module.report.dal.dataobject.datasource.ReportDatasourceDO; @@ -49,8 +50,9 @@ public class ReportDatasetServiceImplTest extends ReportCommonServiceImplTest{ // 2、插入template、断言自增id // 3、用id查template、断言对象 ReportTemplateSaveReqVO createReqVO = prepareTemplateReqVO(null); - Long templateId = reportTemplateService.createReportTemplate(createReqVO); - assertNotNull(templateId); + ReportTemplateRespVO reportTemplate = reportTemplateService.createReportTemplate(createReqVO); + assertNotNull(reportTemplate); + Long templateId = reportTemplate.getId(); ReportTemplateDO template = reportTemplateService.getReportTemplate(templateId); assertNotNull(template); diff --git a/cf-module-report/cf-module-report-biz/src/test/java/com/cf/imes/module/report/service/template/ReportDatasourceServiceImplTest.java b/cf-module-report/cf-module-report-biz/src/test/java/com/cf/imes/module/report/service/template/ReportDatasourceServiceImplTest.java index 96b107fb1..63670c962 100644 --- a/cf-module-report/cf-module-report-biz/src/test/java/com/cf/imes/module/report/service/template/ReportDatasourceServiceImplTest.java +++ b/cf-module-report/cf-module-report-biz/src/test/java/com/cf/imes/module/report/service/template/ReportDatasourceServiceImplTest.java @@ -3,6 +3,7 @@ package com.cf.imes.module.report.service.template; import com.cf.imes.framework.test.core.util.RandomUtils; import com.cf.imes.module.report.controller.admin.datasource.vo.ReportDatasourceReqVO; import com.cf.imes.module.report.controller.admin.datasource.vo.ReportDatasourceSaveReqVO; +import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplateRespVO; import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplateSaveReqVO; import com.cf.imes.module.report.dal.dataobject.datasource.ReportDatasourceDO; import com.cf.imes.module.report.dal.dataobject.template.ReportTemplateDO; @@ -41,7 +42,8 @@ public class ReportDatasourceServiceImplTest extends ReportCommonServiceImplTest // 2、插入template、断言自增id // 3、用id查template、断言对象 ReportTemplateSaveReqVO createReqVO = prepareTemplateReqVO(null); - Long templateId = reportTemplateService.createReportTemplate(createReqVO); + ReportTemplateRespVO reportTemplate = reportTemplateService.createReportTemplate(createReqVO); + Long templateId = reportTemplate.getId(); assertNotNull(templateId); ReportTemplateDO template = reportTemplateService.getReportTemplate(templateId); assertNotNull(template); diff --git a/cf-module-report/cf-module-report-biz/src/test/java/com/cf/imes/module/report/service/template/ReportTemplateServiceImplTest.java b/cf-module-report/cf-module-report-biz/src/test/java/com/cf/imes/module/report/service/template/ReportTemplateServiceImplTest.java index 2fc4a5da7..095131ed0 100644 --- a/cf-module-report/cf-module-report-biz/src/test/java/com/cf/imes/module/report/service/template/ReportTemplateServiceImplTest.java +++ b/cf-module-report/cf-module-report-biz/src/test/java/com/cf/imes/module/report/service/template/ReportTemplateServiceImplTest.java @@ -2,6 +2,7 @@ package com.cf.imes.module.report.service.template; import com.cf.imes.framework.test.core.util.RandomUtils; import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplateReqVO; +import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplateRespVO; import com.cf.imes.module.report.controller.admin.template.vo.ReportTemplateSaveReqVO; import com.cf.imes.module.report.dal.dataobject.template.ReportTemplateDO; import com.cf.imes.module.report.enums.template.ReportTemplateTypeEnum; @@ -35,7 +36,8 @@ public class ReportTemplateServiceImplTest extends ReportCommonServiceImplTest { ReportTemplateSaveReqVO createReqVO = prepareTemplateReqVO(null); System.out.println("template压缩后大小:" + createReqVO.getContent().length()); // 插入 - Long templateId = reportTemplateService.createReportTemplate(createReqVO); + ReportTemplateRespVO reportTemplate = reportTemplateService.createReportTemplate(createReqVO); + Long templateId = reportTemplate.getId(); // 断言 assertNotNull(templateId); // 校验是否插入 @@ -56,7 +58,8 @@ public class ReportTemplateServiceImplTest extends ReportCommonServiceImplTest { ReportTemplateSaveReqVO createReqVO = prepareTemplateReqVO(null); System.out.println("template压缩后大小:" + createReqVO.getContent().length()); // 插入 - Long templateId = reportTemplateService.createReportTemplate(createReqVO); + ReportTemplateRespVO reportTemplate = reportTemplateService.createReportTemplate(createReqVO); + Long templateId = reportTemplate.getId(); //准备更新参数 ReportTemplateSaveReqVO updateReqVO = prepareTemplateReqVO(templateId); @@ -86,7 +89,8 @@ public class ReportTemplateServiceImplTest extends ReportCommonServiceImplTest { // 准备参数 ReportTemplateSaveReqVO createReqVO = prepareTemplateReqVO(null); // 插入 - Long templateId = reportTemplateService.createReportTemplate(createReqVO); + ReportTemplateRespVO reportTemplate = reportTemplateService.createReportTemplate(createReqVO); + Long templateId = reportTemplate.getId(); // 删除 reportTemplateService.deleteReportTemplate(templateId); @@ -111,8 +115,8 @@ public class ReportTemplateServiceImplTest extends ReportCommonServiceImplTest { // 准备参数 ReportTemplateSaveReqVO createReqVO = prepareTemplateReqVO(null); // 插入 - Long templateId = reportTemplateService.createReportTemplate(createReqVO); - + ReportTemplateRespVO reportTemplate = reportTemplateService.createReportTemplate(createReqVO); + Long templateId = reportTemplate.getId(); ReportTemplateReqVO reqVO = new ReportTemplateReqVO(); reqVO.setType(ReportTemplateTypeEnum.SYSTEM.getType());