fix(数据导出): 导出明细数据错误

This commit is contained in:
taojinlong 2024-09-02 15:52:57 +08:00
parent 396ed75b40
commit 8bd43a30a6

View File

@ -9,6 +9,7 @@ import io.dataease.chart.constant.ChartConstants;
import io.dataease.chart.manage.ChartDataManage;
import io.dataease.constant.AuthConstant;
import io.dataease.constant.CommonConstants;
import io.dataease.dataset.manage.PermissionManage;
import io.dataease.dataset.server.DatasetFieldServer;
import io.dataease.engine.constant.DeTypeConstants;
import io.dataease.exception.DEException;
@ -38,7 +39,9 @@ import org.springframework.web.context.request.ServletRequestAttributes;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Author Junjun
@ -55,7 +58,8 @@ public class ChartDataServer implements ChartDataApi {
private VisualizationTemplateExtendDataManage extendDataManage;
@Value("${export.views.limit:500000}")
private Integer limit;
@Resource
private PermissionManage permissionManage;
@Resource
private DatasetFieldServer datasetFieldServer;
@ -84,15 +88,17 @@ public class ChartDataServer implements ChartDataApi {
if ("dataset".equals(request.getDownloadType())) {
viewDTO.setType("table-info");
List<DatasetTableFieldDTO> sourceFields = datasetFieldServer.listByDatasetGroup(viewDTO.getTableId());
List<String> fileNames = permissionManage.filterColumnPermissions(sourceFields, new HashMap<>(), viewDTO.getTableId(), null).stream().map(DatasetTableFieldDTO::getDataeaseName).collect(Collectors.toList());
sourceFields = sourceFields.stream().filter(datasetTableFieldDTO -> fileNames.contains(datasetTableFieldDTO.getDataeaseName())).collect(Collectors.toList());
dsHeader = sourceFields.stream()
.map(DatasetTableFieldDTO::getName)
.toArray(String[]::new);
dsTypes = sourceFields.stream()
.map(DatasetTableFieldDTO::getDeType)
.toArray(Integer[]::new);
TypeReference<List<ChartViewFieldDTO>> listTypeReference = new TypeReference<List<ChartViewFieldDTO>>(){
TypeReference<List<ChartViewFieldDTO>> listTypeReference = new TypeReference<List<ChartViewFieldDTO>>() {
};
viewDTO.setXAxis(JsonUtil.parseList(JsonUtil.toJSONString(sourceFields).toString(),listTypeReference));
viewDTO.setXAxis(JsonUtil.parseList(JsonUtil.toJSONString(sourceFields).toString(), listTypeReference));
}
if (ChartConstants.VIEW_RESULT_MODE.CUSTOM.equals(viewDTO.getResultMode())) {
Integer limitCount = viewDTO.getResultCount();