feat(数据集): 添加同步任务时,过滤掉空目录
This commit is contained in:
parent
712e212eb1
commit
63d3e5d015
@ -12,5 +12,8 @@ import lombok.Data;
|
|||||||
public class VAuthModelRequest extends VAuthModelDTO {
|
public class VAuthModelRequest extends VAuthModelDTO {
|
||||||
|
|
||||||
private String userId;
|
private String userId;
|
||||||
|
private String privileges;
|
||||||
|
private Integer datasetMode;
|
||||||
|
private boolean clearEmptyDir;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,4 +17,5 @@ public class VAuthModelDTO extends VAuthModelWithBLOBs implements ITreeBase<VAu
|
|||||||
private String privileges;
|
private String privileges;
|
||||||
|
|
||||||
private List<VAuthModelDTO> children;
|
private List<VAuthModelDTO> children;
|
||||||
|
private long allLeafs = 0l;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,10 +5,13 @@ import io.dataease.commons.utils.AuthUtils;
|
|||||||
import io.dataease.commons.utils.TreeUtils;
|
import io.dataease.commons.utils.TreeUtils;
|
||||||
import io.dataease.controller.request.authModel.VAuthModelRequest;
|
import io.dataease.controller.request.authModel.VAuthModelRequest;
|
||||||
import io.dataease.dto.authModel.VAuthModelDTO;
|
import io.dataease.dto.authModel.VAuthModelDTO;
|
||||||
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Author: wangjiahao
|
* Author: wangjiahao
|
||||||
@ -21,9 +24,88 @@ public class VAuthModelService {
|
|||||||
@Resource
|
@Resource
|
||||||
private ExtVAuthModelMapper extVAuthModelMapper;
|
private ExtVAuthModelMapper extVAuthModelMapper;
|
||||||
|
|
||||||
public List<VAuthModelDTO> queryAuthModel(VAuthModelRequest request){
|
public List<VAuthModelDTO> queryAuthModel(VAuthModelRequest request) {
|
||||||
request.setUserId(String.valueOf(AuthUtils.getUser().getUserId()));
|
request.setUserId(String.valueOf(AuthUtils.getUser().getUserId()));
|
||||||
List<VAuthModelDTO> result = extVAuthModelMapper.queryAuthModel(request);
|
List<VAuthModelDTO> result = extVAuthModelMapper.queryAuthModel(request);
|
||||||
return TreeUtils.mergeTree(result );
|
result = filterData(request, result);
|
||||||
|
List<VAuthModelDTO> vAuthModelDTOS = TreeUtils.mergeTree(result);
|
||||||
|
if (request.isClearEmptyDir()) {
|
||||||
|
setAllLeafs(vAuthModelDTOS);
|
||||||
|
removeEmptyDir(vAuthModelDTOS);
|
||||||
|
}
|
||||||
|
return vAuthModelDTOS;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<VAuthModelDTO> filterData(VAuthModelRequest request, List<VAuthModelDTO> result){
|
||||||
|
if (request.getDatasetMode() != null && request.getDatasetMode() == 1) {
|
||||||
|
result = result.stream().filter(vAuthModelDTO -> {
|
||||||
|
if (vAuthModelDTO.getNodeType().equalsIgnoreCase("spine") || (vAuthModelDTO.getNodeType().equalsIgnoreCase("leaf") && vAuthModelDTO.getMode().equals(1L)) && !vAuthModelDTO.getModelInnerType().equalsIgnoreCase("excel") && !vAuthModelDTO.getModelInnerType().equalsIgnoreCase("custom")) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
if (request.getPrivileges() != null) {
|
||||||
|
result = result.stream().filter(vAuthModelDTO -> {
|
||||||
|
if (vAuthModelDTO.getNodeType().equalsIgnoreCase("spine") || (vAuthModelDTO.getNodeType().equalsIgnoreCase("leaf") && vAuthModelDTO.getPrivileges() != null && vAuthModelDTO.getPrivileges().contains(request.getPrivileges()))) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void removeEmptyDir(List<VAuthModelDTO> result) {
|
||||||
|
if (CollectionUtils.isEmpty(result)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Iterator iterator = result.listIterator();
|
||||||
|
while (iterator.hasNext()) {
|
||||||
|
VAuthModelDTO tmp = (VAuthModelDTO) iterator.next();
|
||||||
|
if (tmp.getNodeType().equalsIgnoreCase("spine") && tmp.getAllLeafs() == 0) {
|
||||||
|
iterator.remove();
|
||||||
|
} else {
|
||||||
|
removeEmptyDir(tmp.getChildren());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setAllLeafs(List<VAuthModelDTO> result) {
|
||||||
|
for (VAuthModelDTO vAuthModelDTO : result) {
|
||||||
|
if (CollectionUtils.isEmpty(vAuthModelDTO.getChildren())) {
|
||||||
|
vAuthModelDTO.setAllLeafs(0);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
long leafs = 0l;
|
||||||
|
for (VAuthModelDTO child : vAuthModelDTO.getChildren()) {
|
||||||
|
if (child.getNodeType().equalsIgnoreCase("leaf")) {
|
||||||
|
leafs = leafs + 1;
|
||||||
|
} else {
|
||||||
|
leafs = +leafs + getLeafs(child);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
vAuthModelDTO.setAllLeafs(leafs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private long getLeafs(VAuthModelDTO child) {
|
||||||
|
long leafs = 0l;
|
||||||
|
if (CollectionUtils.isEmpty(child.getChildren())) {
|
||||||
|
child.setAllLeafs(0);
|
||||||
|
return leafs;
|
||||||
|
}
|
||||||
|
for (VAuthModelDTO childChild : child.getChildren()) {
|
||||||
|
if (childChild.getNodeType().equalsIgnoreCase("leaf")) {
|
||||||
|
leafs = leafs + 1;
|
||||||
|
} else {
|
||||||
|
leafs = +leafs + getLeafs(childChild);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
child.setAllLeafs(leafs);
|
||||||
|
return leafs;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<de-container>
|
<de-container>
|
||||||
<de-aside-container>
|
<de-aside-container>
|
||||||
<dataset-group-selector-tree :privileges="privileges" :mode="mode" :type="type" :custom-type="customType" :show-mode="showMode" @getTable="getTable" />
|
<dataset-group-selector-tree :privileges="privileges" :mode="mode" :clearEmptyDir="clearEmptyDir" :type="type" :custom-type="customType" :show-mode="showMode" @getTable="getTable" />
|
||||||
</de-aside-container>
|
</de-aside-container>
|
||||||
<de-main-container>
|
<de-main-container>
|
||||||
<dataset-table-data :table="table" />
|
<dataset-table-data :table="table" />
|
||||||
@ -49,7 +49,12 @@ export default {
|
|||||||
type: String,
|
type: String,
|
||||||
required: false,
|
required: false,
|
||||||
default: 'use'
|
default: 'use'
|
||||||
}
|
},
|
||||||
|
clearEmptyDir: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@ -129,7 +129,12 @@ export default {
|
|||||||
type: String,
|
type: String,
|
||||||
required: false,
|
required: false,
|
||||||
default: 'use'
|
default: 'use'
|
||||||
}
|
},
|
||||||
|
clearEmptyDir: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -224,7 +229,7 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
treeNode(group) {
|
treeNode(group) {
|
||||||
queryAuthModel({ modelType: 'dataset' }).then(res => {
|
queryAuthModel({ modelType: 'dataset', privileges: this.privileges, datasetMode: this.mode, clearEmptyDir: this.clearEmptyDir}).then(res => {
|
||||||
this.data = res.data
|
this.data = res.data
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|||||||
@ -168,7 +168,7 @@
|
|||||||
|
|
||||||
<!--添加任务-选择数据集-->
|
<!--添加任务-选择数据集-->
|
||||||
<el-dialog v-dialogDrag :title="$t('dataset.task.create')" :visible="selectDatasetFlag" :show-close="false" width="70%" class="dialog-css" :destroy-on-close="true">
|
<el-dialog v-dialogDrag :title="$t('dataset.task.create')" :visible="selectDatasetFlag" :show-close="false" width="70%" class="dialog-css" :destroy-on-close="true">
|
||||||
<table-selector privileges="manage" :mode="1" :custom-type="customType" show-mode="datasetTask" @getTable="getTable" />
|
<table-selector privileges="manage" :mode="1" :clearEmptyDir="true" :custom-type="customType" show-mode="datasetTask" @getTable="getTable" />
|
||||||
<div slot="footer" class="dialog-footer">
|
<div slot="footer" class="dialog-footer">
|
||||||
<el-button size="mini" @click="closeCreateTask">{{ $t('chart.cancel') }}</el-button>
|
<el-button size="mini" @click="closeCreateTask">{{ $t('chart.cancel') }}</el-button>
|
||||||
<el-button type="primary" size="mini" :disabled="!table.id" @click="create(undefined)">{{ $t('chart.confirm') }}</el-button>
|
<el-button type="primary" size="mini" :disabled="!table.id" @click="create(undefined)">{{ $t('chart.confirm') }}</el-button>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user