fix: 【数据导出中心】修复切换tab页导致cpu暴增

This commit is contained in:
taojinlong
2025-04-14 17:37:48 +08:00
committed by taojinlong
parent 8263fddf86
commit df1eae3c21
6 changed files with 156 additions and 100 deletions

View File

@@ -127,8 +127,12 @@ public class ChartDataServer implements ChartDataApi {
} else {
viewDTO.setResultCount(viewLimit);
}
chartDataManage.encodeData(viewDTO);
chartViewInfo = getData(viewDTO);
if (CommonConstants.VIEW_DATA_FROM.TEMPLATE.equalsIgnoreCase(viewDTO.getDataFrom())) {
chartViewInfo = extendDataManage.getChartDataInfo(viewDTO.getId(), viewDTO);
} else {
chartViewInfo = chartDataManage.calcData(chartViewInfo);
}
List<Object[]> tableRow = (List) chartViewInfo.getData().get("sourceData");
if ("dataset".equals(request.getDownloadType())) {
request.setHeader(dsHeader);

View File

@@ -2,6 +2,8 @@ package io.dataease.exportCenter.manage;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.core.type.TypeReference;
import io.dataease.api.chart.dto.ViewDetailField;
import io.dataease.api.chart.request.ChartExcelRequest;
@@ -31,6 +33,7 @@ import io.dataease.engine.utils.Utils;
import io.dataease.exception.DEException;
import io.dataease.exportCenter.dao.auto.entity.CoreExportTask;
import io.dataease.exportCenter.dao.auto.mapper.CoreExportTaskMapper;
import io.dataease.exportCenter.dao.ext.mapper.ExportTaskExtMapper;
import io.dataease.exportCenter.util.ExportCenterUtils;
import io.dataease.extensions.datasource.api.PluginManageApi;
import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO;
@@ -86,6 +89,8 @@ public class ExportCenterManage implements BaseExportApi {
@Resource
private CoreExportTaskMapper exportTaskMapper;
@Resource
private ExportTaskExtMapper exportTaskExtMapper;
@Resource
private DatasetGroupManage datasetGroupManage;
@Resource
DataVisualizationServer dataVisualizationServer;
@@ -263,27 +268,58 @@ public class ExportCenterManage implements BaseExportApi {
}
}
public List<ExportTaskDTO> exportTasks(String status) {
public IPage<ExportTaskDTO> pager(Page<ExportTaskDTO> page, String status) {
if (!STATUS.contains(status)) {
DEException.throwException("Invalid status: " + status);
}
QueryWrapper<CoreExportTask> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("user_id", AuthUtils.getUser().getUserId());
if (!status.equalsIgnoreCase("ALL")) {
queryWrapper.eq("export_status", status);
}
queryWrapper.orderByDesc("export_time");
List<CoreExportTask> exportTasks = exportTaskMapper.selectList(queryWrapper);
List<ExportTaskDTO> result = new ArrayList<>();
exportTasks.forEach(exportTask -> {
ExportTaskDTO exportTaskDTO = new ExportTaskDTO();
BeanUtils.copyBean(exportTaskDTO, exportTask);
if (status.equalsIgnoreCase("ALL") || status.equalsIgnoreCase(exportTaskDTO.getExportStatus())) {
setExportFromAbsName(exportTaskDTO);
IPage<ExportTaskDTO> pager = exportTaskExtMapper.pager(page, queryWrapper);
List<ExportTaskDTO> records = pager.getRecords();
records.forEach(exportTask -> {
if (status.equalsIgnoreCase("ALL") || status.equalsIgnoreCase(exportTask.getExportStatus())) {
setExportFromAbsName(exportTask);
}
if (status.equalsIgnoreCase("ALL") || status.equalsIgnoreCase(exportTaskDTO.getExportStatus())) {
proxy().setOrg(exportTaskDTO);
if (status.equalsIgnoreCase("ALL") || status.equalsIgnoreCase(exportTask.getExportStatus())) {
proxy().setOrg(exportTask);
}
result.add(exportTaskDTO);
});
return pager;
}
public Map<String, Long> exportTasks() {
Map<String, Long> result = new HashMap<>();
QueryWrapper<CoreExportTask> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("user_id", AuthUtils.getUser().getUserId());
queryWrapper.eq("export_status", "IN_PROGRESS");
result.put("IN_PROGRESS", exportTaskMapper.selectCount(queryWrapper));
queryWrapper.clear();
queryWrapper.eq("user_id", AuthUtils.getUser().getUserId());
queryWrapper.eq("export_status", "SUCCESS");
result.put("SUCCESS", exportTaskMapper.selectCount(queryWrapper));
queryWrapper.clear();
queryWrapper.eq("user_id", AuthUtils.getUser().getUserId());
queryWrapper.eq("export_status", "FAILED");
result.put("FAILED", exportTaskMapper.selectCount(queryWrapper));
queryWrapper.clear();
queryWrapper.eq("user_id", AuthUtils.getUser().getUserId());
queryWrapper.eq("export_status", "PENDING");
result.put("PENDING", exportTaskMapper.selectCount(queryWrapper));
queryWrapper.clear();
queryWrapper.eq("user_id", AuthUtils.getUser().getUserId());
result.put("ALL", exportTaskMapper.selectCount(queryWrapper));
return result;
}

View File

@@ -1,5 +1,7 @@
package io.dataease.exportCenter.server;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.dataease.api.exportCenter.ExportCenterApi;
import io.dataease.exportCenter.manage.ExportCenterManage;
import io.dataease.exportCenter.util.ExportCenterUtils;
@@ -11,6 +13,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/exportCenter")
@@ -20,8 +23,14 @@ public class ExportCenterServer implements ExportCenterApi {
private ExportCenterManage exportCenterManage;
@Override
public List<ExportTaskDTO> exportTasks(String status) {
return exportCenterManage.exportTasks(status);
public Map<String, Long> exportTasks() {
return exportCenterManage.exportTasks();
}
@Override
public IPage<ExportTaskDTO> pager(int goPage, int pageSize, String status) {
Page<ExportTaskDTO> page = new Page<>(goPage, pageSize);
return exportCenterManage.pager(page, status);
}
@Override