提交 63d3e5d0 authored 作者: taojinlong's avatar taojinlong

feat(数据集): 添加同步任务时,过滤掉空目录

上级 712e212e
...@@ -12,5 +12,8 @@ import lombok.Data; ...@@ -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 ...@@ -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; ...@@ -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 { ...@@ -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;
} }
} }
<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 { ...@@ -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 { ...@@ -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 { ...@@ -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 @@ ...@@ -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>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论