(improvement) (semantic) add auth check and exception catch for batch download (#385)

Co-authored-by: jolunoluo
This commit is contained in:
LXW
2023-11-15 09:58:50 +08:00
committed by GitHub
parent 36c8938ff7
commit 9f09598ccd

View File

@@ -132,17 +132,35 @@ public class DownloadServiceImpl implements DownloadService {
MetricSchemaResp metricSchemaResp = metrics.get(0);
List<DimSchemaResp> dimensions = getMetricRelaDimensions(metricSchemaResp, dimensionRespMap);
for (MetricSchemaResp metric : metrics) {
DataDownload downloadData = getSingleMetricDownloadData(metric, dimensions,
batchDownloadReq.getDateInfo(), user);
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet" + sheetCount)
.head(downloadData.getHeaders()).build();
excelWriter.write(downloadData.getData(), writeSheet);
try {
DataDownload downloadData = getSingleMetricDownloadData(metric, dimensions,
batchDownloadReq.getDateInfo(), user);
WriteSheet writeSheet = EasyExcel.writerSheet("Sheet" + sheetCount)
.head(downloadData.getHeaders()).build();
excelWriter.write(downloadData.getData(), writeSheet);
} catch (RuntimeException e) {
EasyExcel.write(file).sheet("Sheet1").head(buildErrMessageHead())
.doWrite(buildErrMessageData(e.getMessage()));
return;
}
}
sheetCount++;
}
excelWriter.finish();
}
private List<List<String>> buildErrMessageHead() {
List<List<String>> headers = Lists.newArrayList();
headers.add(Lists.newArrayList("异常提示"));
return headers;
}
private List<List<String>> buildErrMessageData(String errMsg) {
List<List<String>> data = Lists.newArrayList();
data.add(Lists.newArrayList(errMsg));
return data;
}
public DataDownload getSingleMetricDownloadData(MetricSchemaResp metricSchemaResp, List<DimSchemaResp> dimensions,
DateConf dateConf, User user) throws Exception {
QueryResultWithSchemaResp queryResult = getQueryResult(dimensions, metricSchemaResp, dateConf, user);
@@ -202,6 +220,7 @@ public class DownloadServiceImpl implements DownloadService {
queryStructReq.setAggregators(Lists.newArrayList(aggregator));
queryStructReq.setDateInfo(dateConf);
queryStructReq.setModelId(metricResp.getModelId());
queryStructReq.setLimit(10000L);
return queryService.queryByStructWithAuth(queryStructReq, user);
}