Merge pull request #8031 from dataease/pr@dev@fix_sql

Pr@dev@fix sql
This commit is contained in:
taojinlong 2024-02-18 11:23:54 +08:00 committed by GitHub
commit ec6c0a1a30
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 44 additions and 12 deletions

View File

@ -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")

View File

@ -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);
}

View File

@ -94,6 +94,9 @@ public class DriverService {
return deDriver;
}
public DeDriver get(String id) {
return deDriverMapper.selectByPrimaryKey(id);
}
public List<DeDriverDetails> listDriverDetails(String driverId) {
DeDriverDetailsExample example = new DeDriverDetailsExample();

View File

@ -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',

View File

@ -107,7 +107,7 @@
<script>
import i18n from '@/lang/index'
import {
deleteDriverFile,
deleteDriverFile, getDriver,
listDriverDetails,
updateDriver
} from '@/api/system/datasource'
@ -216,6 +216,10 @@ export default {
this.params.showModel === 'show' &&
!this.canEdit
this.listDriverDetails()
getDriver(this.driverForm.id).then((res) => {
this.driverForm = res.data
})
},
methods: {
beforeUpload(file) {