实验报告

This commit is contained in:
ls
2025-05-04 15:09:57 +08:00
parent 47461a5d6c
commit 808f938ada
8 changed files with 164 additions and 19 deletions

View File

@@ -436,6 +436,15 @@ public class DateUtils extends PropertyEditorSupport {
return getSdFormat(pattern).format(getCalendar().getTime()); return getSdFormat(pattern).format(getCalendar().getTime());
} }
public static String formatDate(String dateStr, String pattern) {
try {
Date date = parseDate(dateStr, "yyyy-MM-dd HH:mm");
return getSdFormat(pattern).format(date);
} catch (ParseException e) {
return dateStr;
}
}
/** /**
* 指定日期按指定格式显示 * 指定日期按指定格式显示
* *

View File

@@ -10,5 +10,5 @@ import org.jeecg.modules.database.entity.Equipment;
* @Version: V1.0 * @Version: V1.0
*/ */
public interface IEquipmentService extends IService<Equipment> { public interface IEquipmentService extends IService<Equipment> {
Equipment getByManagementNo(String managementNo);
} }

View File

@@ -1,5 +1,6 @@
package org.jeecg.modules.database.service.impl; package org.jeecg.modules.database.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.modules.database.entity.Equipment; import org.jeecg.modules.database.entity.Equipment;
import org.jeecg.modules.database.mapper.EquipmentMapper; import org.jeecg.modules.database.mapper.EquipmentMapper;
@@ -15,4 +16,8 @@ import org.springframework.stereotype.Service;
@Service @Service
public class EquipmentServiceImpl extends ServiceImpl<EquipmentMapper, Equipment> implements IEquipmentService { public class EquipmentServiceImpl extends ServiceImpl<EquipmentMapper, Equipment> implements IEquipmentService {
@Override
public Equipment getByManagementNo(String managementNo) {
return getOne(new LambdaQueryWrapper<Equipment>().eq(Equipment::getManagementNo, managementNo), false);
}
} }

View File

@@ -2,12 +2,17 @@ package org.jeecg.modules.database.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.modules.database.entity.Equipment;
import org.jeecg.modules.database.entity.ExperimentDeviationEquipment; import org.jeecg.modules.database.entity.ExperimentDeviationEquipment;
import org.jeecg.modules.database.mapper.ExperimentDeviationEquipmentMapper; import org.jeecg.modules.database.mapper.ExperimentDeviationEquipmentMapper;
import org.jeecg.modules.database.service.IEquipmentService;
import org.jeecg.modules.database.service.IExperimentDeviationEquipmentService; import org.jeecg.modules.database.service.IExperimentDeviationEquipmentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.Serializable;
import java.util.List; import java.util.List;
import java.util.Objects;
/** /**
* @Description: 试验加偏设备信息 * @Description: 试验加偏设备信息
@@ -18,8 +23,28 @@ import java.util.List;
@Service @Service
public class ExperimentDeviationEquipmentServiceImpl extends ServiceImpl<ExperimentDeviationEquipmentMapper, ExperimentDeviationEquipment> public class ExperimentDeviationEquipmentServiceImpl extends ServiceImpl<ExperimentDeviationEquipmentMapper, ExperimentDeviationEquipment>
implements IExperimentDeviationEquipmentService { implements IExperimentDeviationEquipmentService {
@Autowired
private IEquipmentService equipmentService;
@Override @Override
public List<ExperimentDeviationEquipment> getByExperimentId(String experimentId) { public List<ExperimentDeviationEquipment> getByExperimentId(String experimentId) {
return list(new LambdaQueryWrapper<ExperimentDeviationEquipment>().eq(ExperimentDeviationEquipment::getExperimentId, experimentId)); List<ExperimentDeviationEquipment> list = list(
new LambdaQueryWrapper<ExperimentDeviationEquipment>().eq(ExperimentDeviationEquipment::getExperimentId, experimentId));
list.forEach(this::assembleDetails);
return list;
}
@Override
public ExperimentDeviationEquipment getById(Serializable id) {
ExperimentDeviationEquipment byId = super.getById(id);
this.assembleDetails(byId);
return byId;
}
private void assembleDetails(ExperimentDeviationEquipment experimentDeviationEquipment) {
Equipment one = equipmentService.getByManagementNo(experimentDeviationEquipment.getEquipmentNo());
if (Objects.nonNull(one)) {
experimentDeviationEquipment.setEquipmentName(one.getName());
}
} }
} }

View File

@@ -495,6 +495,7 @@ public class ExperimentDocServiceImpl extends ServiceImpl<ExperimentDocMapper, E
private Map<String, Object> assembleSbsyjlb(String experimentId) { private Map<String, Object> assembleSbsyjlb(String experimentId) {
List<ExperimentDeviationEquipment> equipmentList = experimentDeviationEquipmentService.getByExperimentId(experimentId); List<ExperimentDeviationEquipment> equipmentList = experimentDeviationEquipmentService.getByExperimentId(experimentId);
Experiment experiment = experimentService.getById(experimentId);
List<Map<String, Object>> list = new ArrayList<>(); List<Map<String, Object>> list = new ArrayList<>();
for (int i = 0; i < equipmentList.size(); i++) { for (int i = 0; i < equipmentList.size(); i++) {
ExperimentDeviationEquipment v = equipmentList.get(i); ExperimentDeviationEquipment v = equipmentList.get(i);
@@ -503,14 +504,13 @@ public class ExperimentDocServiceImpl extends ServiceImpl<ExperimentDocMapper, E
params.put("设备名称", Optional.ofNullable(v.getEquipmentName()).orElse("")); params.put("设备名称", Optional.ofNullable(v.getEquipmentName()).orElse(""));
params.put("管理编号", Optional.ofNullable(v.getEquipmentNo()).orElse("")); params.put("管理编号", Optional.ofNullable(v.getEquipmentNo()).orElse(""));
String measurementValidity = v.getMeasurementValidity(); String measurementValidity = v.getMeasurementValidity();
params.put("使用日期", ""); params.put("使用日期", experiment.getStartDate());
params.put("归还日期", ""); params.put("归还日期", experiment.getEndDate());
params.put("计量有效期", Optional.ofNullable(measurementValidity).orElse("")); params.put("计量有效期", Optional.ofNullable(measurementValidity).orElse(""));
params.put("异常记录", ""); params.put("异常记录", "");
list.add(params); list.add(params);
} }
Experiment experiment = experimentService.getById(experimentId);
Map<String, Object> root = new HashMap<>(); Map<String, Object> root = new HashMap<>();
root.put("equipment", list); root.put("equipment", list);
root.put("试验编号", experiment.getExperimentNo()); root.put("试验编号", experiment.getExperimentNo());
@@ -525,35 +525,141 @@ public class ExperimentDocServiceImpl extends ServiceImpl<ExperimentDocMapper, E
} }
ExperimentReport latestReport = experimentReportService.getLatestReport(experimentId); ExperimentReport latestReport = experimentReportService.getLatestReport(experimentId);
Map<String, Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
params.put("批准人员", Optional.ofNullable(latestReport).map(v -> sysUserService.getById(v.getConfirmer())) params.put("批准人员名", Optional.ofNullable(latestReport).map(v -> sysUserService.getById(v.getConfirmer()))
.map(SysUser::getRealname).orElse("")); .map(SysUser::getRealname).orElse(""));
params.put("批准时间", Optional.ofNullable(latestReport).map(v -> DateUtils.formatDate(v.getConfirmerTime(), "yyyy 年 M 月 d 日"))
.orElse(" 年 月 日"));
params.put("审核人名称", Optional.ofNullable(latestReport).map(v -> sysUserService.getById(v.getAuditor())) params.put("审核人名称", Optional.ofNullable(latestReport).map(v -> sysUserService.getById(v.getAuditor()))
.map(SysUser::getRealname).orElse("")); .map(SysUser::getRealname).orElse(""));
params.put("审核时间", Optional.ofNullable(latestReport).map(v -> DateUtils.formatDate(v.getAuditorTime(), "yyyy 年 M 月 d 日"))
.orElse(" 年 月 日"));
params.put("校对人名称", Optional.ofNullable(latestReport).map(v -> sysUserService.getById(v.getProofreader())) params.put("校对人名称", Optional.ofNullable(latestReport).map(v -> sysUserService.getById(v.getProofreader()))
.map(SysUser::getRealname).orElse("")); .map(SysUser::getRealname).orElse(""));
params.put("负责人名称", experiment.getSupervisorName()); params.put("审核时间", Optional.ofNullable(latestReport)
.map(v -> DateUtils.formatDate(v.getProofreaderTime(), "yyyy 年 M 月 d 日"))
.orElse(" 年 月 日"));
params.put("负责人名称", experiment.getSupervisorName());
params.put("试验完成时间", DateUtils.formatDate(experiment.getEndDate(), "yyyy 年 M 月 d 日"));
params.put("编写时间", DateUtils.formatDate(experiment.getStartDate(), "yyyy 年 M 月 d 日"));
params.put("试验报告名称", experiment.getName()); params.put("试验报告名称", experiment.getName());
params.put("试验编号", experiment.getExperimentNo()); params.put("试验编号", experiment.getExperimentNo());
params.put("校对驳回意见", Optional.ofNullable(latestReport).map(ExperimentReport::getProofreaderMemo).orElse("")); params.put("校对驳回意见", Optional.ofNullable(latestReport).map(ExperimentReport::getProofreaderMemo).orElse(""));
params.put("审核驳回意见", Optional.ofNullable(latestReport).map(ExperimentReport::getAuditorMemo).orElse("")); params.put("审核驳回意见", Optional.ofNullable(latestReport).map(ExperimentReport::getAuditorMemo).orElse(""));
params.put("批准驳回意见", Optional.ofNullable(latestReport).map(ExperimentReport::getConfirmerMemo).orElse("")); params.put("批准驳回意见", Optional.ofNullable(latestReport).map(ExperimentReport::getConfirmerMemo).orElse(""));
return new HashMap<>(); return params;
} }
private Map<String, Object> assembleFzsyjhb(String experimentId) { private Map<String, Object> assembleFzsyjhb(String experimentId) {
Experiment experiment = experimentService.getById(experimentId); Experiment experiment = experimentService.getById(experimentId);
Map<String, Object> root = new HashMap<>(); Map<String, Object> root = new HashMap<>();
root.put("试验编号", experiment.getExperimentNo()); root.put("试验编号", experiment.getExperimentNo());
root.put("能量", ""); root.put("试验开始时间", DateUtils.formatDate(experiment.getStartDate(), "yyyy 年 M 月 d 日"));
root.put("束流", ""); root.put("试验结束时间", DateUtils.formatDate(experiment.getEndDate(), "yyyy 年 M 月 d 日"));
root.put("X能量", ""); List<ExperimentRadiationProcess> radiationProcessList = experimentRadiationProcessService.getByExperimentId(experimentId);
root.put("管电流", ""); boolean hasXgy = false, hasDgy = false, hasX = false, hasElectronics = false, hasProton = false;
root.put("管电压", ""); List<RadiationDetailDTO> detailDTOList = new ArrayList<>();
root.put("质子能量", ""); for (ExperimentRadiationProcess radiationProcess : radiationProcessList) {
root.put("面积", ""); String radiationDetailJson = radiationProcess.getRadiationDetail();
root.put("均衡性", ""); RadiationMapDTO radiationMap = JSON.parseObject(radiationDetailJson, RadiationMapDTO.class);
if (CollUtil.isNotEmpty(radiationMap.getXgy())) {
hasXgy = true;
}
if (CollUtil.isNotEmpty(radiationMap.getDgy())) {
hasDgy = true;
}
if (CollUtil.isNotEmpty(radiationMap.getX())) {
hasX = true;
}
if (CollUtil.isNotEmpty(radiationMap.getElectronics())) {
hasElectronics = true;
}
if (CollUtil.isNotEmpty(radiationMap.getProton())) {
hasProton = true;
}
detailDTOList.addAll(radiationMap.assembleDetails());
}
root.put("小钴源", hasXgy ? "☑小钴源" : "□小钴源");
root.put("大钴源", hasDgy ? "☑大钴源" : "□大钴源");
root.put("X光机", hasX ? "☑X光机" : "□X光机");
root.put("电子加速器", hasElectronics ? "☑电子加速器" : "□电子加速器");
root.put("质子加速器", hasProton ? "☑质子加速器" : "□质子加速器");
OptionalDouble maxEnergy = detailDTOList.stream().map(obj -> obj.getEnergy()) // 获取point字段
.filter(point -> StringUtils.isNotBlank(point))
.filter(str -> str.matches("-?\\d+(\\.\\d+)?")) // 只保留数字格式的字符串
.mapToDouble(Double::parseDouble) // 转换为double
.max();
OptionalDouble maxBeam = detailDTOList.stream().map(obj -> obj.getBeam()) // 获取point字段
.filter(point -> StringUtils.isNotBlank(point))
.filter(str -> str.matches("-?\\d+(\\.\\d+)?")) // 只保留数字格式的字符串
.mapToDouble(Double::parseDouble) // 转换为double
.max();
OptionalDouble maxElectronEnergy = detailDTOList.stream().map(obj -> obj.getElectronEnergy()) // 获取point字段
.filter(point -> StringUtils.isNotBlank(point))
.filter(str -> str.matches("-?\\d+(\\.\\d+)?")) // 只保留数字格式的字符串
.mapToDouble(Double::parseDouble) // 转换为double
.max();
OptionalDouble maxTubeCurrent = detailDTOList.stream().map(obj -> obj.getTubeCurrent()) // 获取point字段
.filter(point -> StringUtils.isNotBlank(point))
.filter(str -> str.matches("-?\\d+(\\.\\d+)?")) // 只保留数字格式的字符串
.mapToDouble(Double::parseDouble) // 转换为double
.max();
OptionalDouble maxProtonEnergy = detailDTOList.stream().map(obj -> obj.getProtonEnergy()) // 获取point字段
.filter(point -> StringUtils.isNotBlank(point))
.filter(str -> str.matches("-?\\d+(\\.\\d+)?")) // 只保留数字格式的字符串
.mapToDouble(Double::parseDouble) // 转换为double
.max();
OptionalDouble maxScanArea = detailDTOList.stream().map(obj -> obj.getScanArea()) // 获取point字段
.filter(point -> StringUtils.isNotBlank(point))
.filter(str -> str.matches("-?\\d+(\\.\\d+)?")) // 只保留数字格式的字符串
.mapToDouble(Double::parseDouble) // 转换为double
.max();
OptionalDouble maxX = detailDTOList.stream().map(obj -> obj.getXy()) // 获取point字段
.filter(point -> StringUtils.isNotBlank(point))
.map(str -> str.split(",")[0]) // 只保留数字格式的字符串
.mapToDouble(Double::parseDouble) // 转换为double
.max();
OptionalDouble maxY = detailDTOList.stream().map(obj -> obj.getXy()) // 获取point字段
.filter(point -> StringUtils.isNotBlank(point))
.map(str -> str.split(",")[0]) // 只保留数字格式的字符串
.mapToDouble(Double::parseDouble) // 转换为double
.max();
String environmentSelect = detailDTOList.stream().map(obj -> obj.getEnvironmentSelect()) // 获取point字段
.filter(point -> StringUtils.isNotBlank(point)).findFirst().orElse("");
String typeSelect = detailDTOList.stream().map(obj -> obj.getTypeSelect()) // 获取point字段
.filter(point -> StringUtils.isNotBlank(point)).findFirst().orElse("");
String environmentSelectStr = "□真空 □大气";
if (StringUtils.equals(environmentSelect, "真空")) {
environmentSelectStr = "☑真空 □大气";
}
if (StringUtils.equals(environmentSelect, "大气")) {
environmentSelectStr = "□真空 ☑大气 ";
}
String typeSelectStr = "□标定 □辐照";
if (StringUtils.equals(typeSelect, "标定")) {
typeSelectStr = "☑标定 □辐照";
}
if (StringUtils.equals(typeSelect, "辐照")) {
typeSelectStr = "□标定 ☑辐照 ";
}
root.put("电子能量", maxElectronEnergy.orElse(0));
root.put("束流", maxBeam.orElse(0));
root.put("X能量", maxEnergy.orElse(0));
root.put("管电流", maxTubeCurrent.orElse(0));
root.put("管电压", "0");
root.put("质子能量", maxProtonEnergy.orElse(0));
root.put("面积", maxScanArea.orElse(0));
root.put("均匀性", maxX.orElse(0) + "," + maxY.orElse(0));
root.put("辐射环境", environmentSelectStr);
root.put("试验类型", typeSelectStr);
return root; return root;
} }

Binary file not shown.

Binary file not shown.

Binary file not shown.