From aeb676bc6bc819210c87e3862e69f7d064ef2777 Mon Sep 17 00:00:00 2001 From: ls Date: Mon, 26 May 2025 10:59:10 +0800 Subject: [PATCH] update --- ...xperimentDeviationEquipmentController.java | 4 +- .../impl/ExperimentDocServiceImpl.java | 80 +++++++++--------- templates/fzsyjhb.docx | Bin 15736 -> 15996 bytes 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/controller/ExperimentDeviationEquipmentController.java b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/controller/ExperimentDeviationEquipmentController.java index 9f4c8ea..1f25af4 100644 --- a/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/controller/ExperimentDeviationEquipmentController.java +++ b/physical-module-system/physical-system-biz/src/main/java/org/jeecg/modules/database/controller/ExperimentDeviationEquipmentController.java @@ -39,7 +39,7 @@ public class ExperimentDeviationEquipmentController @Autowired private IExperimentDeviationEquipmentService experimentDeviationEquipmentService; @Autowired - private IEquipmentService equipmentService; + private IEquipmentService equipmentService; /** * 分页列表查询 @@ -76,7 +76,7 @@ public class ExperimentDeviationEquipmentController @PostMapping(value = "/add") public Result add(@RequestBody ExperimentDeviationEquipment experimentDeviationEquipment) { String equipmentNo = experimentDeviationEquipment.getEquipmentNo(); - if (StringUtils.isNotBlank(equipmentNo)) { + if (StringUtils.isNotBlank(equipmentNo) && StringUtils.isBlank(experimentDeviationEquipment.getMeasurementValidity())) { Equipment equipment = equipmentService.getByManagementNo(equipmentNo); experimentDeviationEquipment.setMeasurementValidity(equipment.getExpireDate()); } 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 891c159..a9a7b50 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 @@ -288,13 +288,11 @@ public class ExperimentDocServiceImpl extends ServiceImpl detailDTOList = radiationMap.assembleDetails(); maxPoint = detailDTOList.stream().map(obj -> obj.getPoint()) // 获取point字段 - .filter(point -> StringUtils.isNotBlank(point)) - .filter(str -> str.matches("-?\\d+(\\.\\d+)?")) // 只保留数字格式的字符串 + .filter(point -> StringUtils.isNotBlank(point)).filter(str -> str.matches("-?\\d+(\\.\\d+)?")) // 只保留数字格式的字符串 .mapToDouble(Double::parseDouble) // 转换为double .max(); maxRate = detailDTOList.stream().map(obj -> obj.getActualMeasurementRate()) // 获取point字段 - .filter(point -> StringUtils.isNotBlank(point)) - .filter(str -> str.matches("-?\\d+(\\.\\d+)?")) // 只保留数字格式的字符串 + .filter(point -> StringUtils.isNotBlank(point)).filter(str -> str.matches("-?\\d+(\\.\\d+)?")) // 只保留数字格式的字符串 .mapToDouble(Double::parseDouble) // 转换为double .max(); } @@ -328,11 +326,9 @@ public class ExperimentDocServiceImpl extends ServiceImpl x.getPoint()).filter(point -> StringUtils.isNotBlank(point)).collect( Collectors.joining(",")); OptionalDouble maxMeasurementPoint = list.stream().map(obj -> obj.getPoint()) // 获取point字段 - .filter(point -> StringUtils.isNotBlank(point)) - .filter(str -> str.matches("-?\\d+(\\.\\d+)?")) // 只保留数字格式的字符串 + .filter(point -> StringUtils.isNotBlank(point)).filter(str -> str.matches("-?\\d+(\\.\\d+)?")) // 只保留数字格式的字符串 .mapToDouble(Double::parseDouble) // 转换为double .max(); @@ -493,6 +484,9 @@ public class ExperimentDocServiceImpl extends ServiceImpl assembleSbsyjlb(String experimentId) { List equipmentList = experimentDeviationEquipmentService.getByExperimentId(experimentId); Experiment experiment = experimentService.getById(experimentId); @@ -503,10 +497,10 @@ public class ExperimentDocServiceImpl extends ServiceImpl s.getExpireDate()).orElse("")); params.put("异常记录", ""); list.add(params); } @@ -537,8 +531,7 @@ public class ExperimentDocServiceImpl extends ServiceImpl sysUserService.getById(v.getProofreader())) .map(SysUser::getRealname).orElse("")); - params.put("审核时间", Optional.ofNullable(latestReport) - .map(v -> DateUtils.formatDate(v.getProofreaderTime(), "yyyy 年 M 月 d 日")) + params.put("审核时间", Optional.ofNullable(latestReport).map(v -> DateUtils.formatDate(v.getProofreaderTime(), "yyyy 年 M 月 d 日")) .orElse(" 年 月 日")); params.put("负责人名称", experiment.getSupervisorName()); @@ -589,45 +582,37 @@ public class ExperimentDocServiceImpl extends ServiceImpl obj.getEnergy()) // 获取point字段 - .filter(point -> StringUtils.isNotBlank(point)) - .filter(str -> str.matches("-?\\d+(\\.\\d+)?")) // 只保留数字格式的字符串 + .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+)?")) // 只保留数字格式的字符串 + .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+)?")) // 只保留数字格式的字符串 + .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+)?")) // 只保留数字格式的字符串 + .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+)?")) // 只保留数字格式的字符串 + .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+)?")) // 只保留数字格式的字符串 + .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]) // 只保留数字格式的字符串 + .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]) // 只保留数字格式的字符串 + .filter(point -> StringUtils.isNotBlank(point)).map(str -> str.split(",")[0]) // 只保留数字格式的字符串 .mapToDouble(Double::parseDouble) // 转换为double .max(); @@ -660,6 +645,21 @@ public class ExperimentDocServiceImpl extends ServiceImpl first = detailDTOList.stream().filter(v -> StringUtils.isNotBlank(v.getCalibrationDistance())).map( + s -> 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(); + + root.put("剂量率", maxActualMeasurementRate); + root.put("总剂量", maxPoint); return root; } diff --git a/templates/fzsyjhb.docx b/templates/fzsyjhb.docx index f6f92697b2a36a7752336c590ac4db0d5e3f02b4..2e8e777ddc78e7e7decd13162eae9a8ea603db2d 100644 GIT binary patch delta 10370 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 delta 10160 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 H|Lp${OTb_o