forked from github/dataease
Merge pull request #9977 from dataease/pr@dev@fix_export-details
fix(仪表板): 修复导出原始明细可能出现越权情况,部分明细表无法导出情况 #9702
This commit is contained in:
commit
c2f98f31e7
@ -185,12 +185,7 @@ public class PanelGroupController {
|
|||||||
@DePermissionProxy(value = "proxy")
|
@DePermissionProxy(value = "proxy")
|
||||||
@I18n
|
@I18n
|
||||||
public void innerExportDetails(@RequestBody PanelViewDetailsRequest request) throws Exception {
|
public void innerExportDetails(@RequestBody PanelViewDetailsRequest request) throws Exception {
|
||||||
if("dataset".equals(request.getDownloadType())){
|
exportCenterService.addTask(request.getViewId(), "chart", request);
|
||||||
DataSetExportRequest exportRequest = panelGroupService.composeDatasetExportRequest(request);
|
|
||||||
exportCenterService.addTask(exportRequest.getId(), "dataset", exportRequest);
|
|
||||||
}else{
|
|
||||||
exportCenterService.addTask(request.getViewId(), "chart", request);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation("更新仪表板状态")
|
@ApiOperation("更新仪表板状态")
|
||||||
|
@ -51,4 +51,7 @@ public class ChartExtRequest {
|
|||||||
|
|
||||||
private Boolean excelExportFlag = false;
|
private Boolean excelExportFlag = false;
|
||||||
|
|
||||||
|
@ApiModelProperty(hidden = true)
|
||||||
|
private String downloadType;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -44,4 +44,6 @@ public class PanelViewDetailsRequest {
|
|||||||
|
|
||||||
private String downloadType;
|
private String downloadType;
|
||||||
|
|
||||||
|
private String viewType;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -338,7 +338,24 @@ public class ChartViewService {
|
|||||||
if (CommonConstants.VIEW_DATA_FROM.TEMPLATE.equals(view.getDataFrom())) {
|
if (CommonConstants.VIEW_DATA_FROM.TEMPLATE.equals(view.getDataFrom())) {
|
||||||
return extendDataService.getChartDataInfo(id, view);
|
return extendDataService.getChartDataInfo(id, view);
|
||||||
} else {
|
} else {
|
||||||
return calcData(view, request, request.isCache());
|
String[] dsHeader = null;
|
||||||
|
Integer[] dsTypes = null;
|
||||||
|
//downloadType = dataset 为下载原始名字 这里做数据转换模拟 table-info类型图表导出
|
||||||
|
if("dataset".equals(request.getDownloadType())){
|
||||||
|
view.setType("table-info");
|
||||||
|
List<DatasetTableField> sourceFields = dataSetTableFieldsService.getFieldsByTableId(view.getTableId());
|
||||||
|
dsHeader = sourceFields.stream()
|
||||||
|
.map(DatasetTableField::getName)
|
||||||
|
.toArray(String[]::new);
|
||||||
|
dsTypes = sourceFields.stream()
|
||||||
|
.map(DatasetTableField::getDeType)
|
||||||
|
.toArray(Integer[]::new);
|
||||||
|
view.setXAxis(JSONObject.toJSONString(sourceFields));
|
||||||
|
}
|
||||||
|
ChartViewDTO result = calcData(view, request, request.isCache());
|
||||||
|
result.getData().put("header",dsHeader);
|
||||||
|
result.getData().put("dsTypes",dsTypes);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -309,8 +309,8 @@ public class ExportCenterService {
|
|||||||
|
|
||||||
public void findExcelData(PanelViewDetailsRequest request) {
|
public void findExcelData(PanelViewDetailsRequest request) {
|
||||||
ChartViewWithBLOBs viewInfo = chartViewService.get(request.getViewId());
|
ChartViewWithBLOBs viewInfo = chartViewService.get(request.getViewId());
|
||||||
request.setDownloadType(viewInfo.getType());
|
request.setViewType(viewInfo.getType());
|
||||||
if ("table-info".equals(viewInfo.getType())) {
|
if ("table-info".equals(viewInfo.getType()) || "dataset".equals(request.getDownloadType())) {
|
||||||
try {
|
try {
|
||||||
ChartExtRequest componentFilterInfo = request.getComponentFilterInfo();
|
ChartExtRequest componentFilterInfo = request.getComponentFilterInfo();
|
||||||
componentFilterInfo.setGoPage(1L);
|
componentFilterInfo.setGoPage(1L);
|
||||||
@ -318,9 +318,14 @@ public class ExportCenterService {
|
|||||||
componentFilterInfo.setExcelExportFlag(true);
|
componentFilterInfo.setExcelExportFlag(true);
|
||||||
componentFilterInfo.setProxy(request.getProxy());
|
componentFilterInfo.setProxy(request.getProxy());
|
||||||
componentFilterInfo.setUser(request.getUserId());
|
componentFilterInfo.setUser(request.getUserId());
|
||||||
|
componentFilterInfo.setDownloadType(request.getDownloadType());
|
||||||
ChartViewDTO chartViewInfo = chartViewService.getData(request.getViewId(), componentFilterInfo);
|
ChartViewDTO chartViewInfo = chartViewService.getData(request.getViewId(), componentFilterInfo);
|
||||||
List<Object[]> tableRow = (List) chartViewInfo.getData().get("sourceData");
|
List<Object[]> tableRow = (List) chartViewInfo.getData().get("sourceData");
|
||||||
request.setDetails(tableRow);
|
request.setDetails(tableRow);
|
||||||
|
if("dataset".equals(request.getDownloadType())){
|
||||||
|
request.setHeader((String[]) chartViewInfo.getData().get("header"));
|
||||||
|
request.setExcelTypes((Integer[]) chartViewInfo.getData().get("dsTypes"));
|
||||||
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
@ -409,7 +414,7 @@ public class ExportCenterService {
|
|||||||
cellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
|
cellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
|
||||||
//设置单元格填充样式(使用纯色背景颜色填充)
|
//设置单元格填充样式(使用纯色背景颜色填充)
|
||||||
cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
|
cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
|
||||||
if ("table-info".equals(request.getDownloadType())) {
|
if ("table-info".equals(request.getViewType())||"dataset".equals(request.getDownloadType())) {
|
||||||
exportTableDetails(request, wb, cellStyle, detailsSheet);
|
exportTableDetails(request, wb, cellStyle, detailsSheet);
|
||||||
} else {
|
} else {
|
||||||
Boolean mergeHead = false;
|
Boolean mergeHead = false;
|
||||||
|
Loading…
Reference in New Issue
Block a user