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,13 +185,8 @@ public class PanelGroupController {
|
||||
@DePermissionProxy(value = "proxy")
|
||||
@I18n
|
||||
public void innerExportDetails(@RequestBody PanelViewDetailsRequest request) throws Exception {
|
||||
if("dataset".equals(request.getDownloadType())){
|
||||
DataSetExportRequest exportRequest = panelGroupService.composeDatasetExportRequest(request);
|
||||
exportCenterService.addTask(exportRequest.getId(), "dataset", exportRequest);
|
||||
}else{
|
||||
exportCenterService.addTask(request.getViewId(), "chart", request);
|
||||
}
|
||||
}
|
||||
|
||||
@ApiOperation("更新仪表板状态")
|
||||
@PostMapping("/updatePanelStatus/{panelId}")
|
||||
|
@ -51,4 +51,7 @@ public class ChartExtRequest {
|
||||
|
||||
private Boolean excelExportFlag = false;
|
||||
|
||||
@ApiModelProperty(hidden = true)
|
||||
private String downloadType;
|
||||
|
||||
}
|
||||
|
@ -44,4 +44,6 @@ public class PanelViewDetailsRequest {
|
||||
|
||||
private String downloadType;
|
||||
|
||||
private String viewType;
|
||||
|
||||
}
|
||||
|
@ -338,7 +338,24 @@ public class ChartViewService {
|
||||
if (CommonConstants.VIEW_DATA_FROM.TEMPLATE.equals(view.getDataFrom())) {
|
||||
return extendDataService.getChartDataInfo(id, view);
|
||||
} 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) {
|
||||
|
@ -309,8 +309,8 @@ public class ExportCenterService {
|
||||
|
||||
public void findExcelData(PanelViewDetailsRequest request) {
|
||||
ChartViewWithBLOBs viewInfo = chartViewService.get(request.getViewId());
|
||||
request.setDownloadType(viewInfo.getType());
|
||||
if ("table-info".equals(viewInfo.getType())) {
|
||||
request.setViewType(viewInfo.getType());
|
||||
if ("table-info".equals(viewInfo.getType()) || "dataset".equals(request.getDownloadType())) {
|
||||
try {
|
||||
ChartExtRequest componentFilterInfo = request.getComponentFilterInfo();
|
||||
componentFilterInfo.setGoPage(1L);
|
||||
@ -318,9 +318,14 @@ public class ExportCenterService {
|
||||
componentFilterInfo.setExcelExportFlag(true);
|
||||
componentFilterInfo.setProxy(request.getProxy());
|
||||
componentFilterInfo.setUser(request.getUserId());
|
||||
componentFilterInfo.setDownloadType(request.getDownloadType());
|
||||
ChartViewDTO chartViewInfo = chartViewService.getData(request.getViewId(), componentFilterInfo);
|
||||
List<Object[]> tableRow = (List) chartViewInfo.getData().get("sourceData");
|
||||
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) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
@ -409,7 +414,7 @@ public class ExportCenterService {
|
||||
cellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
|
||||
//设置单元格填充样式(使用纯色背景颜色填充)
|
||||
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);
|
||||
} else {
|
||||
Boolean mergeHead = false;
|
||||
|
Loading…
Reference in New Issue
Block a user