diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java index ebc9257..3b8403a 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -24,10 +24,10 @@ String MEASURE_DATA = "检定数据管理"; String MULTIFUNCTION_CHECK_DATA = "多功能核查数据"; String MEASURE_DATA_APPROVAL = "检定数据管理审批"; - String ORIGINAL_RECORD_APPROVAL = "检定数据原始记录审批"; String RESISTANCE_CHECK_DATA = "活塞式压力"; String ELECTRICAL_SAFETY_CHECK_DATA = "多功能电气安全"; String DC_POWER_SUPPLY_CHECK_DATA = "直流稳压电源核查数据"; + String RESISTANCE_THERMOMETER_CHECK_DATA = "二等铂电阻温度计"; String FILE_CHANGE_FORM = "文件更改申请单"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java index ebc9257..3b8403a 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -24,10 +24,10 @@ String MEASURE_DATA = "检定数据管理"; String MULTIFUNCTION_CHECK_DATA = "多功能核查数据"; String MEASURE_DATA_APPROVAL = "检定数据管理审批"; - String ORIGINAL_RECORD_APPROVAL = "检定数据原始记录审批"; String RESISTANCE_CHECK_DATA = "活塞式压力"; String ELECTRICAL_SAFETY_CHECK_DATA = "多功能电气安全"; String DC_POWER_SUPPLY_CHECK_DATA = "直流稳压电源核查数据"; + String RESISTANCE_THERMOMETER_CHECK_DATA = "二等铂电阻温度计"; String FILE_CHANGE_FORM = "文件更改申请单"; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureApproval.java index 1237e6f..eae9f61 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureApproval.java @@ -105,6 +105,18 @@ @TableField(exist = false) private String appearanceFunctionCheck; + @ApiModelProperty(value = "外观检查(二等铂打印需要)",dataType = "String") + @TableField(exist = false) + private String appearance; + + @ApiModelProperty(value = "绝缘电阻(二等铂打印需要)",dataType = "String") + @TableField(exist = false) + private String insulationResistanceValue; + + @ApiModelProperty(value = "角度调整误差(二等铂打印需要)",dataType = "String") + @TableField(exist = false) + private String angleAdjustError; + @ApiModelProperty(value = "密封试验",dataType = "String") @TableField(exist = false) private String sealingTest; @@ -314,6 +326,10 @@ @TableField(exist = false) private List measureDataSafetyValueList; + @ApiModelProperty(value = "检定数据-二等铂(打印需要)",dataType = "List") + @TableField(exist = false) + private List measureDataResistanceThermometerList; + @ApiModelProperty(value = "标准装置编号", dataType = "String") @TableField(exist = false) private String belongStandardEquipment; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java index ebc9257..3b8403a 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -24,10 +24,10 @@ String MEASURE_DATA = "检定数据管理"; String MULTIFUNCTION_CHECK_DATA = "多功能核查数据"; String MEASURE_DATA_APPROVAL = "检定数据管理审批"; - String ORIGINAL_RECORD_APPROVAL = "检定数据原始记录审批"; String RESISTANCE_CHECK_DATA = "活塞式压力"; String ELECTRICAL_SAFETY_CHECK_DATA = "多功能电气安全"; String DC_POWER_SUPPLY_CHECK_DATA = "直流稳压电源核查数据"; + String RESISTANCE_THERMOMETER_CHECK_DATA = "二等铂电阻温度计"; String FILE_CHANGE_FORM = "文件更改申请单"; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureApproval.java index 1237e6f..eae9f61 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureApproval.java @@ -105,6 +105,18 @@ @TableField(exist = false) private String appearanceFunctionCheck; + @ApiModelProperty(value = "外观检查(二等铂打印需要)",dataType = "String") + @TableField(exist = false) + private String appearance; + + @ApiModelProperty(value = "绝缘电阻(二等铂打印需要)",dataType = "String") + @TableField(exist = false) + private String insulationResistanceValue; + + @ApiModelProperty(value = "角度调整误差(二等铂打印需要)",dataType = "String") + @TableField(exist = false) + private String angleAdjustError; + @ApiModelProperty(value = "密封试验",dataType = "String") @TableField(exist = false) private String sealingTest; @@ -314,6 +326,10 @@ @TableField(exist = false) private List measureDataSafetyValueList; + @ApiModelProperty(value = "检定数据-二等铂(打印需要)",dataType = "List") + @TableField(exist = false) + private List measureDataResistanceThermometerList; + @ApiModelProperty(value = "标准装置编号", dataType = "String") @TableField(exist = false) private String belongStandardEquipment; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataResistanceThermometer.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataResistanceThermometer.java index 00f8005..9568db6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataResistanceThermometer.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataResistanceThermometer.java @@ -351,4 +351,7 @@ @TableField(exist = false) private String dwstDt; + @ApiModelProperty(value = "标准器编号",dataType = "String") + @TableField(exist = false) + private String standardizerNo; } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java index ebc9257..3b8403a 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -24,10 +24,10 @@ String MEASURE_DATA = "检定数据管理"; String MULTIFUNCTION_CHECK_DATA = "多功能核查数据"; String MEASURE_DATA_APPROVAL = "检定数据管理审批"; - String ORIGINAL_RECORD_APPROVAL = "检定数据原始记录审批"; String RESISTANCE_CHECK_DATA = "活塞式压力"; String ELECTRICAL_SAFETY_CHECK_DATA = "多功能电气安全"; String DC_POWER_SUPPLY_CHECK_DATA = "直流稳压电源核查数据"; + String RESISTANCE_THERMOMETER_CHECK_DATA = "二等铂电阻温度计"; String FILE_CHANGE_FORM = "文件更改申请单"; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureApproval.java index 1237e6f..eae9f61 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureApproval.java @@ -105,6 +105,18 @@ @TableField(exist = false) private String appearanceFunctionCheck; + @ApiModelProperty(value = "外观检查(二等铂打印需要)",dataType = "String") + @TableField(exist = false) + private String appearance; + + @ApiModelProperty(value = "绝缘电阻(二等铂打印需要)",dataType = "String") + @TableField(exist = false) + private String insulationResistanceValue; + + @ApiModelProperty(value = "角度调整误差(二等铂打印需要)",dataType = "String") + @TableField(exist = false) + private String angleAdjustError; + @ApiModelProperty(value = "密封试验",dataType = "String") @TableField(exist = false) private String sealingTest; @@ -314,6 +326,10 @@ @TableField(exist = false) private List measureDataSafetyValueList; + @ApiModelProperty(value = "检定数据-二等铂(打印需要)",dataType = "List") + @TableField(exist = false) + private List measureDataResistanceThermometerList; + @ApiModelProperty(value = "标准装置编号", dataType = "String") @TableField(exist = false) private String belongStandardEquipment; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataResistanceThermometer.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataResistanceThermometer.java index 00f8005..9568db6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataResistanceThermometer.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataResistanceThermometer.java @@ -351,4 +351,7 @@ @TableField(exist = false) private String dwstDt; + @ApiModelProperty(value = "标准器编号",dataType = "String") + @TableField(exist = false) + private String standardizerNo; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java index d30ba7b..1f5d8d9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java @@ -220,6 +220,22 @@ @TableField(exist = false) private List checkDataDcPowerList; + @ApiModelProperty(value = "核查数据-二等铂电阻温度计(打印)",dataType = "List") + @TableField(exist = false) + private List checkDataResistanceThermometerList; + + @ApiModelProperty(value = "温度值结论",dataType = "String") + @TableField(exist = false) + private String temperatureConclusion; + + @ApiModelProperty(value = "RTP结论",dataType = "String") + @TableField(exist = false) + private String RTPConclusion; + + @ApiModelProperty(value = "绝缘电阻表校准结论",dataType = "String") + @TableField(exist = false) + private String resistanceConclusion; + @ApiModelProperty(value = "标准装置编号", dataType = "String") @TableField(exist = false) private String belongStandardEquipment; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java index ebc9257..3b8403a 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrintFileModuleNameEnum.java @@ -24,10 +24,10 @@ String MEASURE_DATA = "检定数据管理"; String MULTIFUNCTION_CHECK_DATA = "多功能核查数据"; String MEASURE_DATA_APPROVAL = "检定数据管理审批"; - String ORIGINAL_RECORD_APPROVAL = "检定数据原始记录审批"; String RESISTANCE_CHECK_DATA = "活塞式压力"; String ELECTRICAL_SAFETY_CHECK_DATA = "多功能电气安全"; String DC_POWER_SUPPLY_CHECK_DATA = "直流稳压电源核查数据"; + String RESISTANCE_THERMOMETER_CHECK_DATA = "二等铂电阻温度计"; String FILE_CHANGE_FORM = "文件更改申请单"; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureApproval.java index 1237e6f..eae9f61 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureApproval.java @@ -105,6 +105,18 @@ @TableField(exist = false) private String appearanceFunctionCheck; + @ApiModelProperty(value = "外观检查(二等铂打印需要)",dataType = "String") + @TableField(exist = false) + private String appearance; + + @ApiModelProperty(value = "绝缘电阻(二等铂打印需要)",dataType = "String") + @TableField(exist = false) + private String insulationResistanceValue; + + @ApiModelProperty(value = "角度调整误差(二等铂打印需要)",dataType = "String") + @TableField(exist = false) + private String angleAdjustError; + @ApiModelProperty(value = "密封试验",dataType = "String") @TableField(exist = false) private String sealingTest; @@ -314,6 +326,10 @@ @TableField(exist = false) private List measureDataSafetyValueList; + @ApiModelProperty(value = "检定数据-二等铂(打印需要)",dataType = "List") + @TableField(exist = false) + private List measureDataResistanceThermometerList; + @ApiModelProperty(value = "标准装置编号", dataType = "String") @TableField(exist = false) private String belongStandardEquipment; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataResistanceThermometer.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataResistanceThermometer.java index 00f8005..9568db6 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataResistanceThermometer.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataResistanceThermometer.java @@ -351,4 +351,7 @@ @TableField(exist = false) private String dwstDt; + @ApiModelProperty(value = "标准器编号",dataType = "String") + @TableField(exist = false) + private String standardizerNo; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java index d30ba7b..1f5d8d9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/BizEquipmentStandardCheckRecordApproval.java @@ -220,6 +220,22 @@ @TableField(exist = false) private List checkDataDcPowerList; + @ApiModelProperty(value = "核查数据-二等铂电阻温度计(打印)",dataType = "List") + @TableField(exist = false) + private List checkDataResistanceThermometerList; + + @ApiModelProperty(value = "温度值结论",dataType = "String") + @TableField(exist = false) + private String temperatureConclusion; + + @ApiModelProperty(value = "RTP结论",dataType = "String") + @TableField(exist = false) + private String RTPConclusion; + + @ApiModelProperty(value = "绝缘电阻表校准结论",dataType = "String") + @TableField(exist = false) + private String resistanceConclusion; + @ApiModelProperty(value = "标准装置编号", dataType = "String") @TableField(exist = false) private String belongStandardEquipment; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/impl/ResistanceThermometerHandler.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/impl/ResistanceThermometerHandler.java new file mode 100644 index 0000000..8fe1813 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/impl/ResistanceThermometerHandler.java @@ -0,0 +1,459 @@ +package com.casic.missiles.service.Impl.eqpt.standard.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import com.casic.missiles.dto.business.deviceMeasure.MeasureEquipmentInfoDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.PrintFileModuleNameEnum; +import com.casic.missiles.enums.business.MeasureItemBelongStandardEquipmentDictEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BizBusinessDeviceMeasureApprovalMapper; +import com.casic.missiles.mapper.business.BizBusinessDeviceMeasureEquipmentMapper; +import com.casic.missiles.mapper.business.BizBusinessDeviceMeasureInfoMapper; +import com.casic.missiles.model.business.*; +import com.casic.missiles.model.equipment.BizEquipmentInfo; +import com.casic.missiles.model.equipment.BizEquipmentStandardCheckDataResistanceThermometer; +import com.casic.missiles.model.equipment.BizEquipmentStandardCheckRecordApproval; +import com.casic.missiles.service.Impl.eqpt.standard.StandardEquipmentPrint; +import com.casic.missiles.service.Impl.eqpt.standard.StandardEquipmentSupport; +import com.casic.missiles.service.listeners.register.PrintFileRegister; +import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.SnowflakeUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; +import org.springframework.util.ObjectUtils; + +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * @Author: TuT + * @CreateTime: 2024-02-23 10:34 + * @Description: ResistanceThermometerHandler + */ +@Component(MeasureItemBelongStandardEquipmentDictEnum.RESISTANCE_THERMOMETER) +@RequiredArgsConstructor +@Slf4j +public class ResistanceThermometerHandler extends StandardEquipmentSupport implements PrintFileModuleNameEnum, StandardEquipmentPrint { + + private final BizBusinessDeviceMeasureInfoMapper bizBusinessDeviceMeasureInfoMapper; + + private final PrintFileRegister printFileRegister; + + private final BizBusinessDeviceMeasureEquipmentMapper bizBusinessDeviceMeasureEquipmentMapper; + + private final BizBusinessDeviceMeasureApprovalMapper bizBusinessDeviceMeasureApprovalMapper; + + @Override + public List doCheckCertificateFile(BizEquipmentStandardCheckRecordApproval request) { + for (BizEquipmentInfo checkEquipment : request.getCheckEquipmentList()) { + checkEquipment.setEquipmentType("核查标准"); + } + + try { + if (ObjectUtil.isEmpty(request)) { + return null; + } + DictCodeUtils.convertDictCodeToName(request.getEquipmentInfo()); + for (BizEquipmentInfo bizEquipmentInfo : request.getCheckEquipmentList()) { + DictCodeUtils.convertDictCodeToName(bizEquipmentInfo); + } + Map map = BeanUtil.beanToMap(request); + + List thermometerList = request.getCheckDataResistanceThermometerList(); + if (CollectionUtils.isEmpty(thermometerList)) { + return null; + } + + Comparator comparator = (s1, s2) -> { + int v1 = Integer.parseInt(s1); + int v2 = Integer.parseInt(s2); + + // 先按绝对值降序,如果绝对值相等,则按原值升序(使得负数在正数后) + return Math.abs(v2) != Math.abs(v1) + ? Integer.compare(Math.abs(v2), Math.abs(v1)) + : Integer.compare(v1, v2); + }; + + //最低和最高温度点重复性 + TreeMap> repTreeMap = thermometerList.stream() + .filter(t -> TEMPERATURE.equals(t.getParams()) && REPEATABILITY.equals(t.getCheckType())) + .collect(Collectors.groupingBy(BizEquipmentStandardCheckDataResistanceThermometer::getCheckPoint, + () -> new TreeMap<>(comparator), + Collectors.toList())); + + map.put("lowerRep", repTreeMap.get(repTreeMap.firstKey()).get(0)); + map.put("upperRep", repTreeMap.get(repTreeMap.lastKey()).get(0)); + //最低和最高温度点稳定性 + TreeMap> staTreeMap = thermometerList.stream() + .filter(t -> TEMPERATURE.equals(t.getParams()) && STABILITY.equals(t.getCheckType())) + .collect(Collectors.groupingBy(BizEquipmentStandardCheckDataResistanceThermometer::getCheckPoint, + () -> new TreeMap<>(comparator), + Collectors.toList())); + + List lowerStaList = staTreeMap.get(staTreeMap.firstKey()); + BizEquipmentStandardCheckDataResistanceThermometer lowerSta = lowerStaList.get(0); + lowerSta.setConclusion(lowerSta.getLessThan() == 0 ? "否" : "是"); + map.put("lowerSta", lowerSta); + + List upperStaList = staTreeMap.get(staTreeMap.lastKey()); + BizEquipmentStandardCheckDataResistanceThermometer upperSta = upperStaList.get(0); + upperSta.setConclusion(upperSta.getLessThan() == 0 ? "否" : "是"); + map.put("upperSta", upperSta); + //RTP值重复性 + List rtpRepList = thermometerList.stream() + .filter(t -> RTP.equals(t.getParams()) && REPEATABILITY.equals(t.getCheckType())) + .collect(Collectors.toList()); + map.put("RTPRep", rtpRepList.get(0)); + //RTP值稳定性 + List rtpStaList = thermometerList.stream() + .filter(t -> RTP.equals(t.getParams()) && STABILITY.equals(t.getCheckType())) + .collect(Collectors.toList()); + map.put("RTPSta", rtpStaList.get(0)); + + //绝缘电阻表校准 + List resistanceList = thermometerList.stream() + .filter(t -> INSULATION_RESISTANCE_METER_CALIBRATION.equals(t.getParams())) + .collect(Collectors.toList()); + map.put("resistanceList", resistanceList); + + String wordUrl = printFileRegister.registerPrintFile(RESISTANCE_THERMOMETER_CHECK_DATA, "数据打印", null, map, false, null, null); + List urlList = new ArrayList<>(); + if (StringUtils.isNotEmpty(wordUrl)) { + urlList.add(wordUrl); + } + if (map.containsKey("pdfUrl")) { + urlList.add((String) map.get("pdfUrl")); + } + return urlList; + } catch (Exception ex) { + log.info("-----package data is exception, this is {}", ex); + throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED); + } + } + + @Override + public List doCreateOriginalFile(BizBusinessDeviceMeasureApproval request) { + try { + if (ObjectUtil.isEmpty(request)) { + return null; + } + if (CollectionUtils.isEmpty(request.getMeasureDataResistanceThermometerList())) { + List list = Collections.emptyList(); + request.setMeasureDataResistanceThermometerList(list); + } + BizBusinessDeviceMeasureInfo measureInfo = bizBusinessDeviceMeasureInfoMapper.selectDetailById(request.getDataId()); + DictCodeUtils.convertDictCodeToName(request); + Map map = BeanUtil.beanToMap(request); + map.put("dataNo", measureInfo.getDataNo()); + + List equipmentList = bizBusinessDeviceMeasureEquipmentMapper.selectEquipmentListByDataId(request.getDataId()); + if (CollectionUtils.isEmpty(equipmentList)) { + equipmentList = new ArrayList<>(); + equipmentList.add(new MeasureEquipmentInfoDTO()); + } + map.put("equipmentList", equipmentList); + + prepareCustomCoverParams(map, request.getMeasureDataResistanceThermometerList()); + + List resistanceThermometerList = request.getMeasureDataResistanceThermometerList(); + + switch (request.getItemCategoryName()) { + case THERMAL_RESISTANCE: + //工业铂铜热电阻 + this.assembleThermalTesistanceParams(resistanceThermometerList, map); + break; + case THERMOSTATIC_BATH: + //恒温槽 + this.assembleThermostaticBathParams(resistanceThermometerList, map); + break; + case BIMETAL_THERMOMETER: + //双金属温度计 + this.assembleBimetalThermometerParams(resistanceThermometerList, map); + break; + default: + break; + } + + List templateUrls = new ArrayList<>(); + templateUrls.add(bizBusinessDeviceMeasureApprovalMapper.customTemplateUrl(MEASURE_DATA, "1", request.getItemCategoryName())); + //与证书模板区分 + SnowflakeUtil snowflakeUtil = new SnowflakeUtil(); + map.put("id", snowflakeUtil.nextId()); + log.debug("original before ----"); + //除了选用的模板不一致,模板配置流程是一致的 + String originalUrlFile = printFileRegister.registerPrintFile(MEASURE_DATA, "原始记录打印", null, map, true, null, templateUrls); + log.debug("originalUrlFile after------------{}", originalUrlFile); + List urlList = new ArrayList<>(); + urlList.add(originalUrlFile); + if (map.containsKey("pdfUrl")) { + urlList.add((String) map.get("pdfUrl")); + } + return urlList; + } catch (Exception ex) { + log.debug("doCreateOriginalFile Exception is -----------{}", ex); + throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED); + } + } + + /** + * 双金属温度计模板参数 + * + * @param resistanceThermometerList + * @param map + */ + private void assembleBimetalThermometerParams(List resistanceThermometerList, Map map) { + resistanceThermometerList.forEach(r -> { + r.setStandardizerNo("/"); + }); + map.put("bimetalList", resistanceThermometerList); + } + + /** + * 恒温槽模板参数 + * + * @param resistanceThermometerList + * @param map + */ + private void assembleThermostaticBathParams(List resistanceThermometerList, Map map) { + //波动性测试 + TreeMap> volatileTreeMap = resistanceThermometerList.stream().filter(t -> "1".equals(t.getDataType())).collect(Collectors.groupingBy(BizBusinessDeviceMeasureDataResistanceThermometer::getUpperLowerPoint, TreeMap::new, Collectors.toList())); + String firstKey = volatileTreeMap.firstKey(); + List volLowerList = volatileTreeMap.get(firstKey); + List volMapList = new ArrayList<>(); + for (BizBusinessDeviceMeasureDataResistanceThermometer thermometer : volLowerList) { + Map volMap = BeanUtil.beanToMap(thermometer); + volMapList.add(volMap); + } + + String lastKey = volatileTreeMap.lastKey(); + List volUpperList = volatileTreeMap.get(lastKey); + List volUpperMapList = new ArrayList<>(); + for (BizBusinessDeviceMeasureDataResistanceThermometer thermometer : volUpperList) { + Map volMap = BeanUtil.beanToMap(thermometer); + volUpperMapList.add(volMap); + } + + map.put("volLower", volLowerList.get(0)); + map.put("volLowerList", volMapList); + map.put("volUpper", volUpperList.get(0)); + map.put("volUpperList", volUpperMapList); + + TreeMap> uniformityTreeMap = resistanceThermometerList.stream().filter(t -> "2".equals(t.getDataType())).collect(Collectors.groupingBy(BizBusinessDeviceMeasureDataResistanceThermometer::getUpperLowerPoint, TreeMap::new, Collectors.toList())); + String uniFirstKey = uniformityTreeMap.firstKey(); + List lowerList = uniformityTreeMap.get(uniFirstKey); + List uniLowerList = lowerList.stream().sorted(Comparator.comparing(BizBusinessDeviceMeasureDataResistanceThermometer::getLocation)).collect(Collectors.toList()); + List uniLowerMapList = new ArrayList<>(); + for (BizBusinessDeviceMeasureDataResistanceThermometer thermometer : uniLowerList) { + Map uniMap = BeanUtil.beanToMap(thermometer); + uniLowerMapList.add(uniMap); + } + String uniLastKey = uniformityTreeMap.lastKey(); + List upperList = uniformityTreeMap.get(uniLastKey); + List uniUpperList = upperList.stream().sorted(Comparator.comparing(BizBusinessDeviceMeasureDataResistanceThermometer::getLocation)).collect(Collectors.toList()); + List uniUpperMapList = new ArrayList<>(); + for (BizBusinessDeviceMeasureDataResistanceThermometer thermometer : uniUpperList) { + Map uniMap = BeanUtil.beanToMap(thermometer); + uniUpperMapList.add(uniMap); + } + map.put("uniLower", uniLowerList.get(0)); + map.put("uniLowerList", uniLowerMapList); + map.put("uniUpper", uniUpperList.get(0)); + map.put("uniUpperList", uniUpperMapList); + } + + + /** + * 工业铂铜热电阻模板参数 + * + * @param resistanceThermometerList + * @param map + */ + private void assembleThermalTesistanceParams(List resistanceThermometerList, Map map) { + List toleranceLevelZeroList = resistanceThermometerList.stream().filter(t -> "1".equals(t.getDataCategory()) && NOMINAL_TEMPERATURE_ZERO.equals(t.getNominalTemperature())).collect(Collectors.toList()); + + List toleranceLevelHundredList = resistanceThermometerList.stream().filter(t -> "1".equals(t.getDataCategory()) && NOMINAL_TEMPERATURE_HUNDRED.equals(t.getNominalTemperature())).collect(Collectors.toList()); + + List rtZeroList = resistanceThermometerList.stream().filter(t -> "2".equals(t.getDataCategory()) && RT_ZERO.equals(t.getItem())).collect(Collectors.toList()); + List rtHundredList = resistanceThermometerList.stream().filter(t -> "2".equals(t.getDataCategory()) && RT_HUNDRED.equals(t.getItem())).collect(Collectors.toList()); + List alphaList = resistanceThermometerList.stream().filter(t -> "2".equals(t.getDataCategory()) && ALPHA.equals(t.getItem())).collect(Collectors.toList()); + List deltaZeroList = resistanceThermometerList.stream().filter(t -> "2".equals(t.getDataCategory()) && DELTA_ZERO.equals(t.getItem())).collect(Collectors.toList()); + List deltaHundredList = resistanceThermometerList.stream().filter(t -> "2".equals(t.getDataCategory()) && DELTA_HUNDRED.equals(t.getItem())).collect(Collectors.toList()); + List deltaAlphaList = resistanceThermometerList.stream().filter(t -> "2".equals(t.getDataCategory()) && DELTA_ALPHA.equals(t.getItem())).collect(Collectors.toList()); + + map.put("toleranceLevelZero", toleranceLevelZeroList.get(0)); + map.put("toleranceLevelHundred", toleranceLevelHundredList.get(0)); + map.put("rtZero", rtZeroList.get(0)); + map.put("rtHundred", rtHundredList.get(0)); + map.put("alpha", alphaList.get(0)); + map.put("deltaZero", deltaZeroList.get(0)); + map.put("deltaHundred", deltaHundredList.get(0)); + map.put("deltaAlpha", deltaAlphaList.get(0)); + } + + /** + * 封面基本信息的定制化参数 + * + * @param map + * @param measureDataResistanceThermometerList + */ + private void prepareCustomCoverParams(Map map, List measureDataResistanceThermometerList) { + //定制参数 + //初始化方框 + map.put("test", "\uF0A3"); + map.put("calibrate", "\uF0A3"); + map.put("measure", "\uF0A3"); + //选择方框 + switch ((String) map.get("measureCategoryName")) { + case TEST_REPORT: + map.put("test", "\uF052"); + break; + case CALIBRATE_REPORT: + map.put("calibrate", "\uF052"); + break; + case MEASURE_REPORT: + map.put("measure", "\uF052"); + break; + default: + return; + } + //填充有效日期 + if (!ObjectUtils.isEmpty(map.get(MEASURE_TRACE_DATE))) { + String traceDate = (String) map.get(MEASURE_TRACE_DATE); + try { + map.put(MEASURE_TRACE_DATE, new SimpleDateFormat("yyyy年MM月dd日").format(new SimpleDateFormat("yyyy-MM-dd").parse(traceDate))); + } catch (Exception e) { + throw new BusinessException(1500, String.format(traceDate, "检定有效日期,格式不正确")); + } + } + } + + @Override + public List doCreateCertificateFile(BizBusinessDeviceMeasureApproval request) { + try { + //过滤不能生成证书的 + if (checkOutUnablePrint(request)) { + log.debug("该报告没有证书报告"); + return null; + } + BizBusinessDeviceMeasureInfo measureInfo = bizBusinessDeviceMeasureInfoMapper.selectDetailById(request.getDataId()); + DictCodeUtils.convertDictCodeToName(request); + Map map = BeanUtil.beanToMap(request); + map.put("dataNo", measureInfo.getDataNo()); + + prepareCustomCoverParams(map, request.getMeasureDataResistanceThermometerList()); + + List thermometerList = request.getMeasureDataResistanceThermometerList(); + switch (request.getItemCategoryName()) { + case THERMAL_RESISTANCE: + //工业铂铜热电阻 + this.assembleThermalTesistanceCertificateParams(thermometerList, map); + break; + case THERMOSTATIC_BATH: + //恒温槽 + this.assembleThermostaticBathCertificateParams(thermometerList, map); + break; + case BIMETAL_THERMOMETER: + //双金属温度计 + this.assembleBimetalThermometerCertificateParams(thermometerList, map); + break; + default: + break; + } + + prepareCoverParams(map, request.getLabCode()); + List customTemplateUrls = new ArrayList<>(); + log.debug("--------get Certificate template is ...."); + //查询对应封面模板和检定证书模板 + customTemplateUrls.add(bizBusinessDeviceMeasureApprovalMapper.customTemplateUrl(MEASURE_DATA, "2", request.getMeasureCategoryName())); + customTemplateUrls.add(bizBusinessDeviceMeasureApprovalMapper.customTemplateUrl(MEASURE_DATA, "2", request.getItemCategoryName())); + SnowflakeUtil snowflakeUtil = new SnowflakeUtil(); + map.put("id", snowflakeUtil.nextId()); + map.put("pdfStatus", 1); + List urlList = new ArrayList<>(); + //除了选用的模板不一致,模板配置流程是一致的 + log.debug("certificate before------------"); + String wordUrl = printFileRegister.registerPrintFile(MEASURE_DATA, "证书打印", null, map, false, null, customTemplateUrls); + urlList.add(wordUrl); + if (map.containsKey("pdfUrl")) { + urlList.add((String) map.get("pdfUrl")); + } + log.debug("certificate after------------{}", wordUrl); + return urlList; + } catch (Exception ex) { + log.debug("doCreateCertificateFile Exception is------------{}", ex); + throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED); + } + } + + /** + * 双金属温度计检定证书参数 + * + * @param thermometerList + * @param map + */ + private void assembleBimetalThermometerCertificateParams(List thermometerList, Map map) { + map.put("bimtalResList", thermometerList); + } + + /** + * 恒温槽检定证书参数 + * + * @param thermometerList + * @param map + */ + private void assembleThermostaticBathCertificateParams(List thermometerList, Map map) { + List pointList = thermometerList.stream().map(BizBusinessDeviceMeasureDataResistanceThermometer::getUpperLowerPoint).sorted().distinct().collect(Collectors.toList()); + map.put("lowerPoint", pointList.get(0)); + map.put("upperPoint", pointList.get(1)); + + List lowerVolatility = thermometerList.stream().filter(t -> pointList.get(0).equals(t.getUpperLowerPoint())).map(BizBusinessDeviceMeasureDataResistanceThermometer::getVolatility).sorted(Comparator.reverseOrder()).collect(Collectors.toList()); + + List upperVolatility = thermometerList.stream().filter(t -> pointList.get(1).equals(t.getUpperLowerPoint())).map(BizBusinessDeviceMeasureDataResistanceThermometer::getVolatility).sorted(Comparator.reverseOrder()).collect(Collectors.toList()); + + map.put("lowerVolatility", lowerVolatility.get(0)); + map.put("upperVolatility", upperVolatility.get(0)); + + List lowerMaxWork = thermometerList.stream().filter(t -> pointList.get(0).equals(t.getUpperLowerPoint())).map(BizBusinessDeviceMeasureDataResistanceThermometer::getMaxWorkTemperatureDifferent).sorted(Comparator.reverseOrder()).collect(Collectors.toList()); + List upperMaxWork = thermometerList.stream().filter(t -> pointList.get(1).equals(t.getUpperLowerPoint())).map(BizBusinessDeviceMeasureDataResistanceThermometer::getMaxWorkTemperatureDifferent).sorted(Comparator.reverseOrder()).collect(Collectors.toList()); + map.put("lowerMaxWork", lowerMaxWork.get(0)); + map.put("upperMaxWork", upperMaxWork.get(0)); + } + + /** + * 工业铂铜热电阻检定证书参数 + * + * @param thermometerList + * @param map + */ + private void assembleThermalTesistanceCertificateParams(List thermometerList, Map map) { + List resultList = thermometerList.stream().filter(t -> "2".equals(t.getDataCategory())).collect(Collectors.toList()); + map.put("thermometerList", resultList); + } + + /** + * 检查是否能生成证书 + */ + private Boolean checkOutUnablePrint(BizBusinessDeviceMeasureApproval measureItemInfo) { + //通过检定项名称,获取对应的模块配置列表 + if (StringUtils.isNotEmpty(measureItemInfo.getItemCategoryName())) { + if (MEASURE_ITEMS_WITHOUT_CERTIFICATE.contains(measureItemInfo.getItemCategoryName())) { + log.warn(BusinessExceptionEnum.ITEM_CATEGORY_NOT_NULL.getMessage()); + return true; + } + if (CHECKOUT_REPORT.equals(measureItemInfo.getMeasureCategoryName())) { + log.warn(BusinessExceptionEnum.TEST_CATEGORY_IS_NONE.getMessage()); + return true; + } + } else { + log.warn(BusinessExceptionEnum.ITEM_CATEGORY_IS_NULL.getMessage()); + return true; + } + return false; + } +}