From d3c6c23ed1f26c53d5b387473daeaa8ab3dc9bdd Mon Sep 17 00:00:00 2001 From: ls Date: Tue, 27 May 2025 21:59:54 +0800 Subject: [PATCH] update --- .../java/org/jeecg/common/util/DateUtils.java | 4 +- .../impl/ExperimentDocServiceImpl.java | 66 +++++++++++++++--- templates/fzsyjhb.docx | Bin 15996 -> 16311 bytes 3 files changed, 58 insertions(+), 12 deletions(-) diff --git a/physical-base-core/src/main/java/org/jeecg/common/util/DateUtils.java b/physical-base-core/src/main/java/org/jeecg/common/util/DateUtils.java index ee2fd26..4d074c8 100644 --- a/physical-base-core/src/main/java/org/jeecg/common/util/DateUtils.java +++ b/physical-base-core/src/main/java/org/jeecg/common/util/DateUtils.java @@ -437,10 +437,10 @@ public class DateUtils extends PropertyEditorSupport { } public static String formatDate(String dateStr, String pattern) { - if (StringUtils.hasText(dateStr)) { + if (!StringUtils.hasText(dateStr)) { return ""; } - if (StringUtils.hasText(pattern)) { + if (!StringUtils.hasText(pattern)) { return dateStr; } try { diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/impl/ExperimentDocServiceImpl.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/impl/ExperimentDocServiceImpl.java index a9a7b50..4662e3b 100755 --- a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/impl/ExperimentDocServiceImpl.java +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/service/impl/ExperimentDocServiceImpl.java @@ -649,20 +649,66 @@ public class ExperimentDocServiceImpl extends ServiceImpl s.getCalibrationDistance()).findFirst(); root.put("标定距离", first.orElse("")); - OptionalDouble maxActualMeasurementRate = detailDTOList.stream().map(obj -> obj.getActualMeasurementRate()) // 获取point字段 - .filter(point -> StringUtils.isNotBlank(point)).filter(str -> str.matches("-?\\d+(\\.\\d+)?")) // 只保留数字格式的字符串 - .mapToDouble(Double::parseDouble) // 转换为double - .max(); - OptionalDouble maxPoint = detailDTOList.stream().map(obj -> obj.getPoint()) // 获取point字段 - .filter(point -> StringUtils.isNotBlank(point)).filter(str -> str.matches("-?\\d+(\\.\\d+)?")) // 只保留数字格式的字符串 - .mapToDouble(Double::parseDouble) // 转换为double - .max(); + //OptionalDouble maxActualMeasurementRate = detailDTOList.stream().map(obj -> obj.getActualMeasurementRate()) // 获取point字段 + // .filter(point -> StringUtils.isNotBlank(point)).filter(str -> str.matches("-?\\d+(\\.\\d+)?")) // 只保留数字格式的字符串 + // .mapToDouble(Double::parseDouble) // 转换为double + // .max(); + //OptionalDouble maxPoint = detailDTOList.stream().map(obj -> obj.getPoint()) // 获取point字段 + // .filter(point -> StringUtils.isNotBlank(point)).filter(str -> str.matches("-?\\d+(\\.\\d+)?")) // 只保留数字格式的字符串 + // .mapToDouble(Double::parseDouble) // 转换为double + // .max(); + // + //root.put("剂量率", maxActualMeasurementRate); + //root.put("总剂量", maxPoint); + if (CollUtil.isNotEmpty(radiationProcessList)) { + radiationProcessList.forEach(radiationProcess -> { + String radiationDetail = radiationProcess.getRadiationDetail(); + if (StringUtils.isNotBlank(radiationDetail)) { + RadiationMapDTO radiationMap = JSON.parseObject(radiationDetail, RadiationMapDTO.class); + List xgy = radiationMap.getXgy(); + if (CollUtil.isNotEmpty(xgy)) { + extractJhb("小钴源", xgy, root); + } + List dgy = radiationMap.getDgy(); + if (CollUtil.isNotEmpty(dgy)) { + extractJhb("大钴源", dgy, root); + } + List x = radiationMap.getX(); + if (CollUtil.isNotEmpty(x)) { + extractJhb("X光机", x, root); + } + List electronics = radiationMap.getElectronics(); + if (CollUtil.isNotEmpty(electronics)) { + extractJhb("电子加速器", electronics, root); + } + List proton = radiationMap.getProton(); + if (CollUtil.isNotEmpty(proton)) { + extractJhb("质子加速器", proton, root); + } - root.put("剂量率", maxActualMeasurementRate); - root.put("总剂量", maxPoint); + } + }); + } return root; } + private void extractJhb(String type, List detailDTOList, Map root) { + if (CollUtil.isEmpty(detailDTOList)) { + return; + } + String actualMeasurementRate = detailDTOList.stream().map(x -> x.getActualMeasurementRate()).filter( + point -> StringUtils.isNotBlank(point)).collect(Collectors.joining(",")); + OptionalDouble maxMeasurementPoint = detailDTOList.stream().map(obj -> obj.getPoint()) // 获取point字段 + .filter(point -> StringUtils.isNotBlank(point)).filter(str -> str.matches("-?\\d+(\\.\\d+)?")) // 只保留数字格式的字符串 + .mapToDouble(Double::parseDouble) // 转换为double + .max(); + String actualInjectionRate = detailDTOList.stream().map(x -> x.getActualInjectionRate()).filter( + point -> StringUtils.isNotBlank(point)).collect(Collectors.joining(",")); + root.put(type + "剂量率", chooseStr(actualMeasurementRate, actualInjectionRate)); + root.put(type + "总剂量", chooseStr(maxMeasurementPoint.getAsDouble() + "", "")); + + } + @Override public ExperimentDoc generate(String experimentId, String type) { String version = DateUtil.format(new Date(), DatePattern.PURE_DATETIME_PATTERN); diff --git a/templates/fzsyjhb.docx b/templates/fzsyjhb.docx index 2e8e777ddc78e7e7decd13162eae9a8ea603db2d..ed4dbc467bf0ba7e7120c2e9a0bd14e1a0b25150 100644 GIT binary patch delta 7565 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 TP(L^UJd=q(C