diff --git a/core/backend/src/main/java/io/dataease/controller/datasource/DriverMgmController.java b/core/backend/src/main/java/io/dataease/controller/datasource/DriverMgmController.java index deac73e95a..4ab71a7fb8 100644 --- a/core/backend/src/main/java/io/dataease/controller/datasource/DriverMgmController.java +++ b/core/backend/src/main/java/io/dataease/controller/datasource/DriverMgmController.java @@ -98,6 +98,13 @@ public class DriverMgmController { return driverService.save(deDriver); } + @RequiresPermissions("datasource:read") + @ApiOperation("获取驱动") + @GetMapping("/getDriver/{id}") + public DeDriver getDriver(@PathVariable String id) throws Exception { + return driverService.get(id); + } + @RequiresPermissions("datasource:read") @ApiOperation("更新驱动") @PostMapping("/update") diff --git a/core/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java b/core/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java index 4e66473900..2ce30795b5 100644 --- a/core/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/core/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -1116,21 +1116,31 @@ public class DataSetTableService { } private void handleFromItems(PlainSelect plainSelect, String dsType) throws Exception { - FromItem fromItem = plainSelect.getFromItem(); if (fromItem instanceof ParenthesedSelect) { - PlainSelect selectBody = ((ParenthesedSelect) fromItem).getPlainSelect(); - Select subSelectTmp = (Select) CCJSqlParserUtil.parse(removeVariables(selectBody.toString(), dsType)); - ((ParenthesedSelect) fromItem).setSelect(subSelectTmp.getSelectBody()); - if (dsType.equals(DatasourceTypes.oracle.getType())) { - if (fromItem.getAlias() != null) { + if(((ParenthesedSelect) fromItem).getSelect() instanceof SetOperationList){ + StringBuilder result = new StringBuilder(); + SetOperationList setOperationList = (SetOperationList) ((ParenthesedSelect) fromItem).getSelect().getSelectBody(); + for (int i = 0; i < setOperationList.getSelects().size(); i++) { + result.append(handlePlainSelect((PlainSelect) setOperationList.getSelects().get(i), null, dsType)); + if (i < setOperationList.getSelects().size() - 1) { + result.append(" ").append(setOperationList.getOperations().get(i).toString()).append(" "); + } + } + }else { + PlainSelect selectBody = ((ParenthesedSelect) fromItem).getSelect().getPlainSelect(); + Select subSelectTmp = (Select) CCJSqlParserUtil.parse(removeVariables(selectBody.toString(), dsType)); + ((ParenthesedSelect) fromItem).setSelect(subSelectTmp.getSelectBody()); + if (dsType.equals(DatasourceTypes.oracle.getType())) { + if (fromItem.getAlias() != null) { + fromItem.setAlias(new Alias(fromItem.getAlias().toString(), false)); + } + } else { + if (fromItem.getAlias() == null) { + throw new Exception("Failed to parse sql, Every derived table must have its own alias!"); + } fromItem.setAlias(new Alias(fromItem.getAlias().toString(), false)); } - } else { - if (fromItem.getAlias() == null) { - throw new Exception("Failed to parse sql, Every derived table must have its own alias!"); - } - fromItem.setAlias(new Alias(fromItem.getAlias().toString(), false)); } plainSelect.setFromItem(fromItem); } diff --git a/core/backend/src/main/java/io/dataease/service/datasource/DriverService.java b/core/backend/src/main/java/io/dataease/service/datasource/DriverService.java index 0c71929d91..f9aad2e882 100644 --- a/core/backend/src/main/java/io/dataease/service/datasource/DriverService.java +++ b/core/backend/src/main/java/io/dataease/service/datasource/DriverService.java @@ -94,6 +94,9 @@ public class DriverService { return deDriver; } + public DeDriver get(String id) { + return deDriverMapper.selectByPrimaryKey(id); + } public List listDriverDetails(String driverId) { DeDriverDetailsExample example = new DeDriverDetailsExample(); diff --git a/core/frontend/src/api/system/datasource.js b/core/frontend/src/api/system/datasource.js index 365d2b7da3..0aa70d6556 100644 --- a/core/frontend/src/api/system/datasource.js +++ b/core/frontend/src/api/system/datasource.js @@ -122,6 +122,14 @@ export function listDriverDetails(id) { }) } +export function getDriver(id) { + return request({ + url: '/driver/getDriver/' + id, + method: 'get', + loading: true + }) +} + export function deleteDriverFile(data) { return request({ url: '/driver/deleteDriverFile', diff --git a/core/frontend/src/views/system/datasource/DriverFormDetail.vue b/core/frontend/src/views/system/datasource/DriverFormDetail.vue index 2ecb47d8af..4d314faeae 100644 --- a/core/frontend/src/views/system/datasource/DriverFormDetail.vue +++ b/core/frontend/src/views/system/datasource/DriverFormDetail.vue @@ -107,7 +107,7 @@