update
This commit is contained in:
@@ -3,6 +3,7 @@ package org.jeecg.modules.database.controller;
|
||||
import ch.qos.logback.classic.LoggerContext;
|
||||
import ch.qos.logback.core.util.StatusPrinter;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
@@ -37,9 +38,11 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.util.ReflectionUtils;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -498,9 +501,26 @@ public class ExperimentController extends JeecgController<Experiment, IExperimen
|
||||
dto.setSupervisorName(ex.getSupervisorName());
|
||||
dto.setReportCount(ex.getExperimentReportList().size() + "");
|
||||
List<ExperimentRating> experimentRatingList = ex.getExperimentRatingList();
|
||||
String rateStr = experimentRatingList.stream().map(v -> v.getRateUserName() + ":" + v.getTotalScore()).collect(
|
||||
Collectors.joining("\n"));
|
||||
dto.setRateUserAndScore(rateStr);
|
||||
try {
|
||||
for (int k = 0; k < experimentRatingList.size(); k++) {
|
||||
ExperimentRating data = experimentRatingList.get(k);
|
||||
|
||||
// 设置 rateUser1, rateUser2, rateUser3
|
||||
Field rateUserField = dto.getClass().getDeclaredField("rateUser" + (i + 1));
|
||||
rateUserField.setAccessible(true);
|
||||
rateUserField.set(dto, data.getRateUserName());
|
||||
|
||||
// 设置 rateScore1, rateScore2, rateScore3
|
||||
Field rateScoreField = dto.getClass().getDeclaredField("rateScore" + (i + 1));
|
||||
rateScoreField.setAccessible(true);
|
||||
rateScoreField.set(dto, data.getTotalScore());
|
||||
}
|
||||
} catch (NoSuchFieldException | IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
//String rateStr = experimentRatingList.stream().map(v -> v.getRateUserName() + ":" + v.getTotalScore()).collect(
|
||||
// Collectors.joining("\n"));
|
||||
//dto.setRateUserAndScore(rateStr);
|
||||
List<ExperimentRadiationProcess> radiationProcessList = experimentRadiationProcessService.getByExperimentId(ex.getId());
|
||||
//辐照过程
|
||||
List<RadiationProcessExportDTO> detailList = new ArrayList<>();
|
||||
@@ -699,10 +719,44 @@ public class ExperimentController extends JeecgController<Experiment, IExperimen
|
||||
//update-end--Author:liusq Date:20210126 for:图片导出报错,ImageBasePath未设置----------------------
|
||||
mv.addObject(NormalExcelConstants.PARAMS, exportParams);
|
||||
mv.addObject(NormalExcelConstants.DATA_LIST, resultList);
|
||||
List<String> fieldName = new ArrayList<>();
|
||||
int maxExperimentRatingListSize = getMaxExperimentRatingListSize(exportList);
|
||||
|
||||
ReflectionUtils.doWithFields(ExperimentExportDTO.class, v -> {
|
||||
String name = v.getName();
|
||||
if (!StringUtils.equals(name, "id") && !StringUtils.equals(name, "serialVersionUID")) {
|
||||
if (StringUtils.startsWith(name, "rateUser")) {
|
||||
String u = StrUtil.removePrefix(name, "rateUser");
|
||||
if (Integer.parseInt(u) <= maxExperimentRatingListSize) {
|
||||
fieldName.add(name);
|
||||
}
|
||||
} else if (StringUtils.startsWith(name, "rateScore")) {
|
||||
String u = StrUtil.removePrefix(name, "rateScore");
|
||||
if (Integer.parseInt(u) <= maxExperimentRatingListSize) {
|
||||
fieldName.add(name);
|
||||
}
|
||||
} else {
|
||||
fieldName.add(name);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
mv.addObject(NormalExcelConstants.EXPORT_FIELDS, StrUtil.join(",", fieldName));
|
||||
return mv;
|
||||
|
||||
}
|
||||
|
||||
public static int getMaxExperimentRatingListSize(List<Experiment> exportList) {
|
||||
int maxSize = 0;
|
||||
for (Experiment experiment : exportList) {
|
||||
List<?> experimentRatingList = experiment.getExperimentRatingList(); // 假设有 getter 方法
|
||||
if (experimentRatingList != null) {
|
||||
maxSize = Math.max(maxSize, experimentRatingList.size());
|
||||
}
|
||||
}
|
||||
return maxSize;
|
||||
}
|
||||
|
||||
private void addIfNotEmpty(List<RadiationProcessExportDTO> detailList, RadiationProcessExportDTO dto) {
|
||||
if (dto != null) {
|
||||
detailList.add(dto);
|
||||
@@ -718,13 +772,13 @@ public class ExperimentController extends JeecgController<Experiment, IExperimen
|
||||
List<ExperimentSampleInfo> sampleInfoList = radiationProcess.getSampleInfoList();
|
||||
detail.setRadiateType(radiationProcess.getRadiationSource());
|
||||
if (CollUtil.isNotEmpty(sampleInfoList)) {
|
||||
detail.setSampleModel(sampleInfoList.stream().map(s -> s.getSampleModel()).collect(Collectors.joining(",")));
|
||||
detail.setSampleType(sampleInfoList.stream().map(s -> s.getSampleType()).collect(Collectors.joining(",")));
|
||||
detail.setSampleName(sampleInfoList.stream().map(s -> s.getSampleName()).collect(Collectors.joining(",")));
|
||||
detail.setSampleModel(StrUtil.join(",", sampleInfoList.stream().map(s -> s.getSampleModel()).collect(Collectors.toSet())));
|
||||
detail.setSampleType(StrUtil.join(",", sampleInfoList.stream().map(s -> s.getSampleType()).collect(Collectors.toSet())));
|
||||
detail.setSampleName(StrUtil.join(",", sampleInfoList.stream().map(s -> s.getSampleName()).collect(Collectors.toSet())));
|
||||
}
|
||||
detail.setMeasurementRate(
|
||||
detail.setMeasurementRate(StrUtil.join(",",
|
||||
xgy.stream().filter(v -> StringUtils.isNotBlank(v.getActualMeasurementRate())).map(v -> v.getActualMeasurementRate())
|
||||
.collect(Collectors.joining(",")));
|
||||
.collect(Collectors.toSet())));
|
||||
OptionalDouble maxRate = xgy.stream().map(obj -> obj.getActualMeasurementRate()) // 获取point字段
|
||||
.filter(point -> StringUtils.isNotBlank(point))
|
||||
.filter(str -> str.matches("-?\\d+(\\.\\d+)?")) // 只保留数字格式的字符串
|
||||
@@ -733,8 +787,8 @@ public class ExperimentController extends JeecgController<Experiment, IExperimen
|
||||
detail.setTotalMeasurementRate(maxRate.isPresent() ? String.valueOf(maxRate.getAsDouble()) : "");
|
||||
List<ExperimentIrradiationBoard> irradiationBoardList = experiment.getIrradiationBoardList();
|
||||
if (CollUtil.isNotEmpty(irradiationBoardList)) {
|
||||
detail.setSourceArea(irradiationBoardList.stream().filter(k -> StringUtils.isNotBlank(k.getSourceArea()))
|
||||
.map(s -> s.getSourceArea()).collect(Collectors.joining(",")));
|
||||
detail.setSourceArea(StrUtil.join(",", irradiationBoardList.stream().filter(k -> StringUtils.isNotBlank(k.getSourceArea()))
|
||||
.map(s -> s.getSourceArea()).collect(Collectors.toSet())));
|
||||
}
|
||||
|
||||
//String measurementRate = radiationProcess.getMeasurementRate();
|
||||
|
||||
@@ -51,8 +51,47 @@ public class ExperimentExportDTO implements Serializable {
|
||||
private String supervisorName;
|
||||
@Excel(name = "已出报告份数", width = 15, needMerge = true)
|
||||
private String reportCount;
|
||||
@Excel(name = "试验员及评分", width = 15, needMerge = true)
|
||||
private String rateUserAndScore;
|
||||
|
||||
@Excel(name = "试验员", width = 15, needMerge = true)
|
||||
private String rateUser1;
|
||||
@Excel(name = "评分", width = 15, needMerge = true)
|
||||
private String rateScore1;
|
||||
@Excel(name = "试验员", width = 15, needMerge = true)
|
||||
private String rateUser2;
|
||||
@Excel(name = "评分", width = 15, needMerge = true)
|
||||
private String rateScore2;
|
||||
@Excel(name = "试验员", width = 15, needMerge = true)
|
||||
private String rateUser3;
|
||||
@Excel(name = "评分", width = 15, needMerge = true)
|
||||
private String rateScore3;
|
||||
@Excel(name = "试验员", width = 15, needMerge = true)
|
||||
private String rateUser4;
|
||||
@Excel(name = "评分", width = 15, needMerge = true)
|
||||
private String rateScore4;
|
||||
@Excel(name = "试验员", width = 15, needMerge = true)
|
||||
private String rateUser5;
|
||||
@Excel(name = "评分", width = 15, needMerge = true)
|
||||
private String rateScore5;
|
||||
|
||||
private String rateUser6;
|
||||
@Excel(name = "评分", width = 15, needMerge = true)
|
||||
private String rateScore6;
|
||||
|
||||
private String rateUser7;
|
||||
@Excel(name = "评分", width = 15, needMerge = true)
|
||||
private String rateScore7;
|
||||
|
||||
private String rateUser8;
|
||||
@Excel(name = "评分", width = 15, needMerge = true)
|
||||
private String rateScore8;
|
||||
|
||||
private String rateUser9;
|
||||
@Excel(name = "评分", width = 15, needMerge = true)
|
||||
private String rateScore9;
|
||||
|
||||
private String rateUser10;
|
||||
@Excel(name = "评分", width = 15, needMerge = true)
|
||||
private String rateScore10;
|
||||
|
||||
//@ExcelCollection(name = "辐照过程")
|
||||
//private List<RadiationProcessExportDTO> radiationProcessList;
|
||||
|
||||
Reference in New Issue
Block a user