package cn.iocoder.yudao.module.bi.controller.admin.config; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.module.bi.controller.admin.config.vo.BiDataSourceConfigImportExcelVO; import cn.iocoder.yudao.module.bi.controller.admin.config.vo.BiDataSourceConfigImportReqVO; import cn.iocoder.yudao.module.bi.controller.admin.config.vo.BiDataSourceConfigImportRespVO; import cn.iocoder.yudao.module.bi.dal.dataobject.BiDataSourceConfigDO; import cn.iocoder.yudao.module.bi.service.config.BiDataSourceConfigService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.io.IOException; import java.util.Arrays; import java.util.List; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - BI 数据源配置") @RestController @RequestMapping("/bi/data-source-config") @Validated public class BiDataSourceConfigController { @Resource private BiDataSourceConfigService dataSourceConfigService; @PostMapping("/create") @Operation(summary = "创建数据源配置") @PreAuthorize("@ss.hasPermission('bi:data-source-config:create')") public CommonResult create(@Valid @RequestBody BiDataSourceConfigDO config) { return success(dataSourceConfigService.create(config)); } @PutMapping("/update") @Operation(summary = "更新数据源配置") @PreAuthorize("@ss.hasPermission('bi:data-source-config:update')") public CommonResult update(@Valid @RequestBody BiDataSourceConfigDO config) { dataSourceConfigService.update(config); return success(true); } @DeleteMapping("/delete") @Operation(summary = "删除数据源配置") @Parameter(name = "id", description = "编号", required = true) @PreAuthorize("@ss.hasPermission('bi:data-source-config:delete')") public CommonResult delete(@RequestParam("id") Long id) { dataSourceConfigService.delete(id); return success(true); } @GetMapping("/get") @Operation(summary = "获取数据源配置") @Parameter(name = "id", description = "编号", required = true) public CommonResult get(@RequestParam("id") Long id) { return success(dataSourceConfigService.get(id)); } @GetMapping("/page") @Operation(summary = "分页查询数据源配置") public CommonResult> getPage( @RequestParam(value = "name", required = false) String name, @RequestParam(value = "type", required = false) String type, @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) { return success(dataSourceConfigService.getPage(name, type, pageNo, pageSize)); } @GetMapping("/get-import-template") @Operation(summary = "获得导入数据源配置模板") public void importTemplate(HttpServletResponse response) throws IOException { // 手动创建导出 demo List list = Arrays.asList( BiDataSourceConfigImportExcelVO.builder().name("示例数据源").type("mysql") .config("{}").status(1).build() ); // 输出 ExcelUtils.write(response, "数据源配置导入模板.xls", "数据源配置列表", BiDataSourceConfigImportExcelVO.class, list); } @PostMapping("/import") @Operation(summary = "导入数据源配置") @PreAuthorize("@ss.hasPermission('bi:data-source-config:import')") public CommonResult importExcel(@Valid BiDataSourceConfigImportReqVO importReqVO) throws Exception { List list = ExcelUtils.read(importReqVO.getFile(), BiDataSourceConfigImportExcelVO.class); return success(dataSourceConfigService.importDataSourceConfigList(list, importReqVO)); } }