自定义报表多线程查询报错解决

This commit is contained in:
2025-06-25 13:14:52 +08:00
parent 5f7414111e
commit 0e2a75da5e

View File

@@ -78,10 +78,7 @@ import java.time.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.concurrent.ExecutionException; import java.util.concurrent.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
@@ -869,7 +866,7 @@ public class CustomReportServiceImpl implements CustomReportService {
//存放限值指标的map //存放限值指标的map
Map<String, ReportTemplateDTO> limitTargetMapX = reportLimitList.stream().collect(Collectors.toMap(ReportTemplateDTO::getItemName, Function.identity())); Map<String, ReportTemplateDTO> limitTargetMapX = reportLimitList.stream().collect(Collectors.toMap(ReportTemplateDTO::getItemName, Function.identity()));
List<ReportTemplateDTO> endList = new ArrayList<>(); List<ReportTemplateDTO> endList = new CopyOnWriteArrayList<>();
if (CollUtil.isNotEmpty(reportTemplateDTOList)) { if (CollUtil.isNotEmpty(reportTemplateDTOList)) {
//开始组织sql //开始组织sql
reportTemplateDTOList = new LinkedHashSet<>(reportTemplateDTOList).stream().sorted(Comparator.comparing(ReportTemplateDTO::getItemName)).collect(Collectors.toList()); reportTemplateDTOList = new LinkedHashSet<>(reportTemplateDTOList).stream().sorted(Comparator.comparing(ReportTemplateDTO::getItemName)).collect(Collectors.toList());
@@ -1121,12 +1118,8 @@ public class CustomReportServiceImpl implements CustomReportService {
*/ */
private void downReport(JSONArray jsonArray, HttpServletResponse response) { private void downReport(JSONArray jsonArray, HttpServletResponse response) {
InputStream reportStream = IoUtil.toStream(jsonArray.toString(), CharsetUtil.UTF_8); InputStream reportStream = IoUtil.toStream(jsonArray.toString(), CharsetUtil.UTF_8);
//String newContent = fileStorageUtil.uploadStream(reportStream, OssPath.HARMONIC_EXCEL_REPORT, FileUtil.generateFileName("json"));
response.setContentType("application/octet-stream;charset=UTF-8"); response.setContentType("application/octet-stream;charset=UTF-8");
response.setHeader("Content-Disposition", "attachment;filename=" + "aa"); response.setHeader("Content-Disposition", "attachment;filename=" + "aa");
//入库前判断是否有了,有了就更新
OutputStream toClient = null; OutputStream toClient = null;
try { try {
toClient = new BufferedOutputStream(response.getOutputStream()); toClient = new BufferedOutputStream(response.getOutputStream());
@@ -1142,9 +1135,7 @@ public class CustomReportServiceImpl implements CustomReportService {
} }
private void analyzeReportZhejiang(ReportSearchParam reportSearchParam, ExcelRptTemp private void analyzeReportZhejiang(ReportSearchParam reportSearchParam, ExcelRptTemp excelRptTemp, HttpServletResponse response) {
excelRptTemp, HttpServletResponse response) {
//指标 //指标
List<ReportTemplateDTO> reportTemplateDTOList = new ArrayList<>(); List<ReportTemplateDTO> reportTemplateDTOList = new ArrayList<>();
//限值 //限值
@@ -1159,7 +1150,6 @@ public class CustomReportServiceImpl implements CustomReportService {
throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON); throw new BusinessException(HarmonicResponseEnum.CUSTOM_REPORT_JSON);
} }
DictData pqdDic = dicDataFeignClient.getDicDataByCodeAndType(DicDataEnum.PQD.getCode(), DicDataTypeEnum.CS_DATA_TYPE.getCode()).getData(); DictData pqdDic = dicDataFeignClient.getDicDataByCodeAndType(DicDataEnum.PQD.getCode(), DicDataTypeEnum.CS_DATA_TYPE.getCode()).getData();
List<EleEpdPqd> eleEpdPqdList = eleEpdMapper.selectList(new LambdaQueryWrapper<EleEpdPqd>().eq(EleEpdPqd::getDataType, pqdDic.getId()).isNotNull(EleEpdPqd::getPrimaryFormula)); List<EleEpdPqd> eleEpdPqdList = eleEpdMapper.selectList(new LambdaQueryWrapper<EleEpdPqd>().eq(EleEpdPqd::getDataType, pqdDic.getId()).isNotNull(EleEpdPqd::getPrimaryFormula));
Map<String, List<EleEpdPqd>> pqdMap = eleEpdPqdList.stream().filter(item -> StrUtil.isNotBlank(item.getPrimaryFormula())).collect(Collectors.groupingBy(EleEpdPqd::getName)); Map<String, List<EleEpdPqd>> pqdMap = eleEpdPqdList.stream().filter(item -> StrUtil.isNotBlank(item.getPrimaryFormula())).collect(Collectors.groupingBy(EleEpdPqd::getName));
@@ -1217,14 +1207,11 @@ public class CustomReportServiceImpl implements CustomReportService {
}); });
}); });
//处理指标最终判定合格还是不合格 //处理指标最终判定合格还是不合格
dealTargetResult(assNoPassMap, limitTargetMapX, endList); dealTargetResult(assNoPassMap, limitTargetMapX, endList);
long dealEnd = System.currentTimeMillis(); long dealEnd = System.currentTimeMillis();
System.out.println("查询数据库花费时间" + (dealEnd - deal) / 1000 + "S"); System.out.println("查询数据库花费时间" + (dealEnd - deal) / 1000 + "S");
} }
if (CollUtil.isNotEmpty(endList)) { if (CollUtil.isNotEmpty(endList)) {
long jie = System.currentTimeMillis(); long jie = System.currentTimeMillis();
//数据单位信息 //数据单位信息
@@ -1253,11 +1240,9 @@ public class CustomReportServiceImpl implements CustomReportService {
}else { }else {
finalTerminalMap = new HashMap<>(); finalTerminalMap = new HashMap<>();
} }
//2、把itemName的value赋给v和m //2、把itemName的value赋给v和m
dealExcelResult(jsonArray, assMap, unit,finalTerminalMap); dealExcelResult(jsonArray, assMap, unit,finalTerminalMap);
long jieEnd = System.currentTimeMillis(); long jieEnd = System.currentTimeMillis();
System.out.println("组装信息耗时 " + (jieEnd - jie) / 1000 + "S"); System.out.println("组装信息耗时 " + (jieEnd - jie) / 1000 + "S");
} }