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.classic.LoggerContext;
|
||||||
import ch.qos.logback.core.util.StatusPrinter;
|
import ch.qos.logback.core.util.StatusPrinter;
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
@@ -37,9 +38,11 @@ import org.slf4j.Logger;
|
|||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.ApplicationEventPublisher;
|
import org.springframework.context.ApplicationEventPublisher;
|
||||||
|
import org.springframework.util.ReflectionUtils;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@@ -498,9 +501,26 @@ public class ExperimentController extends JeecgController<Experiment, IExperimen
|
|||||||
dto.setSupervisorName(ex.getSupervisorName());
|
dto.setSupervisorName(ex.getSupervisorName());
|
||||||
dto.setReportCount(ex.getExperimentReportList().size() + "");
|
dto.setReportCount(ex.getExperimentReportList().size() + "");
|
||||||
List<ExperimentRating> experimentRatingList = ex.getExperimentRatingList();
|
List<ExperimentRating> experimentRatingList = ex.getExperimentRatingList();
|
||||||
String rateStr = experimentRatingList.stream().map(v -> v.getRateUserName() + ":" + v.getTotalScore()).collect(
|
try {
|
||||||
Collectors.joining("\n"));
|
for (int k = 0; k < experimentRatingList.size(); k++) {
|
||||||
dto.setRateUserAndScore(rateStr);
|
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<ExperimentRadiationProcess> radiationProcessList = experimentRadiationProcessService.getByExperimentId(ex.getId());
|
||||||
//辐照过程
|
//辐照过程
|
||||||
List<RadiationProcessExportDTO> detailList = new ArrayList<>();
|
List<RadiationProcessExportDTO> detailList = new ArrayList<>();
|
||||||
@@ -699,10 +719,44 @@ public class ExperimentController extends JeecgController<Experiment, IExperimen
|
|||||||
//update-end--Author:liusq Date:20210126 for:图片导出报错,ImageBasePath未设置----------------------
|
//update-end--Author:liusq Date:20210126 for:图片导出报错,ImageBasePath未设置----------------------
|
||||||
mv.addObject(NormalExcelConstants.PARAMS, exportParams);
|
mv.addObject(NormalExcelConstants.PARAMS, exportParams);
|
||||||
mv.addObject(NormalExcelConstants.DATA_LIST, resultList);
|
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;
|
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) {
|
private void addIfNotEmpty(List<RadiationProcessExportDTO> detailList, RadiationProcessExportDTO dto) {
|
||||||
if (dto != null) {
|
if (dto != null) {
|
||||||
detailList.add(dto);
|
detailList.add(dto);
|
||||||
@@ -718,13 +772,13 @@ public class ExperimentController extends JeecgController<Experiment, IExperimen
|
|||||||
List<ExperimentSampleInfo> sampleInfoList = radiationProcess.getSampleInfoList();
|
List<ExperimentSampleInfo> sampleInfoList = radiationProcess.getSampleInfoList();
|
||||||
detail.setRadiateType(radiationProcess.getRadiationSource());
|
detail.setRadiateType(radiationProcess.getRadiationSource());
|
||||||
if (CollUtil.isNotEmpty(sampleInfoList)) {
|
if (CollUtil.isNotEmpty(sampleInfoList)) {
|
||||||
detail.setSampleModel(sampleInfoList.stream().map(s -> s.getSampleModel()).collect(Collectors.joining(",")));
|
detail.setSampleModel(StrUtil.join(",", sampleInfoList.stream().map(s -> s.getSampleModel()).collect(Collectors.toSet())));
|
||||||
detail.setSampleType(sampleInfoList.stream().map(s -> s.getSampleType()).collect(Collectors.joining(",")));
|
detail.setSampleType(StrUtil.join(",", sampleInfoList.stream().map(s -> s.getSampleType()).collect(Collectors.toSet())));
|
||||||
detail.setSampleName(sampleInfoList.stream().map(s -> s.getSampleName()).collect(Collectors.joining(",")));
|
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())
|
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字段
|
OptionalDouble maxRate = xgy.stream().map(obj -> obj.getActualMeasurementRate()) // 获取point字段
|
||||||
.filter(point -> StringUtils.isNotBlank(point))
|
.filter(point -> StringUtils.isNotBlank(point))
|
||||||
.filter(str -> str.matches("-?\\d+(\\.\\d+)?")) // 只保留数字格式的字符串
|
.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()) : "");
|
detail.setTotalMeasurementRate(maxRate.isPresent() ? String.valueOf(maxRate.getAsDouble()) : "");
|
||||||
List<ExperimentIrradiationBoard> irradiationBoardList = experiment.getIrradiationBoardList();
|
List<ExperimentIrradiationBoard> irradiationBoardList = experiment.getIrradiationBoardList();
|
||||||
if (CollUtil.isNotEmpty(irradiationBoardList)) {
|
if (CollUtil.isNotEmpty(irradiationBoardList)) {
|
||||||
detail.setSourceArea(irradiationBoardList.stream().filter(k -> StringUtils.isNotBlank(k.getSourceArea()))
|
detail.setSourceArea(StrUtil.join(",", irradiationBoardList.stream().filter(k -> StringUtils.isNotBlank(k.getSourceArea()))
|
||||||
.map(s -> s.getSourceArea()).collect(Collectors.joining(",")));
|
.map(s -> s.getSourceArea()).collect(Collectors.toSet())));
|
||||||
}
|
}
|
||||||
|
|
||||||
//String measurementRate = radiationProcess.getMeasurementRate();
|
//String measurementRate = radiationProcess.getMeasurementRate();
|
||||||
|
|||||||
@@ -51,8 +51,47 @@ public class ExperimentExportDTO implements Serializable {
|
|||||||
private String supervisorName;
|
private String supervisorName;
|
||||||
@Excel(name = "已出报告份数", width = 15, needMerge = true)
|
@Excel(name = "已出报告份数", width = 15, needMerge = true)
|
||||||
private String reportCount;
|
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 = "辐照过程")
|
//@ExcelCollection(name = "辐照过程")
|
||||||
//private List<RadiationProcessExportDTO> radiationProcessList;
|
//private List<RadiationProcessExportDTO> radiationProcessList;
|
||||||
|
|||||||
Reference in New Issue
Block a user