diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java index 09696ab..4d188dd 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java @@ -37,6 +37,11 @@ */ String MEASURE_VALID_DATE = "measureValidDate"; + /** + * 测试、校准或检定日期 + */ + String MEASURE_TRACE_DATE = "traceDate"; + /** * 检定有效日期-年 diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java index 09696ab..4d188dd 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java @@ -37,6 +37,11 @@ */ String MEASURE_VALID_DATE = "measureValidDate"; + /** + * 测试、校准或检定日期 + */ + String MEASURE_TRACE_DATE = "traceDate"; + /** * 检定有效日期-年 diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/impl/MultiCalibrationHandler.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/impl/MultiCalibrationHandler.java index 3b31e24..ae27601 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/impl/MultiCalibrationHandler.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/impl/MultiCalibrationHandler.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.PrintFileModuleNameEnum; -import com.casic.missiles.enums.business.MeasureCategoryEnum; import com.casic.missiles.enums.business.MeasureItemBelongStandardEquipmentDictEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BizBusinessDeviceMeasureApprovalMapper; @@ -26,7 +25,10 @@ import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java index 09696ab..4d188dd 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MeasureCategoryEnum.java @@ -37,6 +37,11 @@ */ String MEASURE_VALID_DATE = "measureValidDate"; + /** + * 测试、校准或检定日期 + */ + String MEASURE_TRACE_DATE = "traceDate"; + /** * 检定有效日期-年 diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/impl/MultiCalibrationHandler.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/impl/MultiCalibrationHandler.java index 3b31e24..ae27601 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/impl/MultiCalibrationHandler.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/impl/MultiCalibrationHandler.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.PrintFileModuleNameEnum; -import com.casic.missiles.enums.business.MeasureCategoryEnum; import com.casic.missiles.enums.business.MeasureItemBelongStandardEquipmentDictEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BizBusinessDeviceMeasureApprovalMapper; @@ -26,7 +25,10 @@ import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/impl/MultiElectricalHandler.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/impl/MultiElectricalHandler.java new file mode 100644 index 0000000..7f80e40 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/eqpt/standard/impl/MultiElectricalHandler.java @@ -0,0 +1,246 @@ +package com.casic.missiles.service.Impl.eqpt.standard.impl; + +import cn.hutool.core.bean.BeanUtil; +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.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 com.casic.missiles.utils.SpringContextUtil; +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.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +/** + * @Author: TuT + * @CreateTime: 2024-01-29 11:07 + * @Description: MultiElectricalHandler + */ +@Component(MeasureItemBelongStandardEquipmentDictEnum.ELECTRICAL_SAFETY) +@RequiredArgsConstructor +@Slf4j +public class MultiElectricalHandler extends StandardEquipmentSupport implements PrintFileModuleNameEnum, StandardEquipmentPrint { + @Override + public List doCheckCertificateFile(BizEquipmentStandardCheckRecordApproval measureItemInfo) { + + return null; + } + + @Override + public String doCreateOriginalFile(BizBusinessDeviceMeasureApproval request) { + try { + if (ObjectUtils.isEmpty(request)) { + return null; + } + if (CollectionUtils.isEmpty(request.getMeasureDataElectricalSafetyList())) { + List list = Collections.emptyList(); + request.setMeasureDataElectricalSafetyList(list); + } + Long dataId = request.getDataId(); + BizBusinessDeviceMeasureInfoMapper measureInfoMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureInfoMapper.class); + BizBusinessDeviceMeasureInfo measureInfo = measureInfoMapper.selectDetailById(dataId); + DictCodeUtils.convertDictCodeToName(request); + Map map = BeanUtil.beanToMap(request); + map.put("dataNo", measureInfo.getDataNo()); + + BizBusinessDeviceMeasureEquipmentMapper equipmentMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureEquipmentMapper.class); + List equipmentList = equipmentMapper.selectEquipmentListByDataId(dataId); + if (CollectionUtils.isEmpty(equipmentList)) { + equipmentList = new ArrayList<>(); + equipmentList.add(new MeasureEquipmentInfoDTO()); + } + map.put("equipmentList", equipmentList); + + prepareCustomCoverParams(map, request.getMeasureDataElectricalSafetyList()); + + List electricalSafetyList = request.getMeasureDataElectricalSafetyList(); + + List voltageList = new ArrayList<>(); + List indicationErrorList = new ArrayList<>(); + for (BizBusinessDeviceMeasureDataElectricalSafety electricalSafety : electricalSafetyList) { + String dataType = electricalSafety.getDataType(); + if ("1".equals(dataType)) { + voltageList.add(electricalSafety); + } else if ("2".equals(dataType)) { + indicationErrorList.add(electricalSafety); + } + } + doCustomParam(indicationErrorList); + map.put("voltageList", voltageList); + map.put("errorList", indicationErrorList); + List templateUrls = new ArrayList<>(); + BizBusinessDeviceMeasureApprovalMapper approvalMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class); + templateUrls.add(approvalMapper.customTemplateUrl(MEASURE_DATA, "1", request.getItemCategoryName())); + //与证书模板区分 + SnowflakeUtil snowflakeUtil = new SnowflakeUtil(); + map.put("id", snowflakeUtil.nextId()); + log.debug("original before ----"); + //除了选用的模板不一致,模板配置流程是一致的 + PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); + String originalUrlFile = printFileRegister.registerPrintFile(MEASURE_DATA, "原始记录打印", null, map, true, null, templateUrls); + log.debug("originalUrlFile after------------{}", originalUrlFile); + return originalUrlFile; + } catch (Exception ex) { + log.debug("doCreateOriginalFile Exception is -----------{}", ex); + throw new BusinessException(BusinessExceptionEnum.MEASURE_APPROVAL_UPDATE_FAILED); + } + } + + /** + * 封面基本信息的定制化参数 + * + * @param map + * @param measureDataElectricalSafetyList + */ + private void prepareCustomCoverParams(Map map, List measureDataElectricalSafetyList) { + //定制参数 + //初始化方框 + 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, "检定有效日期,格式不正确")); + } + } + } + + private void doCustomParam(List measureDataElectricalSafetyList) { + measureDataElectricalSafetyList.forEach(electricalSafety -> { + String rangeRangeStr = electricalSafety.getRangeRange() + electricalSafety.getUnit(); + electricalSafety.setRangeRange(rangeRangeStr); + }); + } + + @Override + public List doCreateCertificateFile(BizBusinessDeviceMeasureApproval request) { + try { + //过滤不能生成证书的 + if (checkOutUnablePrint(request)) { + log.debug("该报告没有证书报告"); + return null; + } + if (CollectionUtils.isEmpty(request.getMeasureDataElectricalSafetyList())) { + List list = new ArrayList<>(); + list.add(new BizBusinessDeviceMeasureDataElectricalSafety()); + request.setMeasureDataElectricalSafetyList(list); + } + Long dataId = request.getDataId(); + BizBusinessDeviceMeasureInfoMapper measureInfoMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureInfoMapper.class); + BizBusinessDeviceMeasureInfo measureInfo = measureInfoMapper.selectDetailById(dataId); + + DictCodeUtils.convertDictCodeToName(request); + Map map = BeanUtil.beanToMap(request); + map.put("dataNo", measureInfo.getDataNo()); + + BizBusinessDeviceMeasureEquipmentMapper equipmentMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureEquipmentMapper.class); + List equipmentList = equipmentMapper.selectEquipmentListByDataId(dataId); + if (CollectionUtils.isEmpty(equipmentList)) { + equipmentList = new ArrayList<>(); + equipmentList.add(new MeasureEquipmentInfoDTO()); + } + map.put("equipmentList", equipmentList); + + prepareCustomCoverParams(map, request.getMeasureDataElectricalSafetyList()); + + List electricalSafetyList = request.getMeasureDataElectricalSafetyList(); + + List voltageList = new ArrayList<>(); + List indicationErrorList = new ArrayList<>(); + for (BizBusinessDeviceMeasureDataElectricalSafety electricalSafety : electricalSafetyList) { + String dataType = electricalSafety.getDataType(); + if ("1".equals(dataType)) { + voltageList.add(electricalSafety); + } else if ("2".equals(dataType)) { + indicationErrorList.add(electricalSafety); + } + } +// doCustomParam(indicationErrorList); + map.put("voltageList", voltageList); + map.put("errorList", indicationErrorList); + //准备封面参数 + prepareCoverParams(map, request.getLabCode()); + List customTemplateUrls = new ArrayList<>(); + BizBusinessDeviceMeasureApprovalMapper bizBusinessMapper = SpringContextUtil.getBean(BizBusinessDeviceMeasureApprovalMapper.class); + log.debug("--------get Certificate template is ...."); + //查询对应封面模板和检定证书模板 + customTemplateUrls.add(bizBusinessMapper.customTemplateUrl(MEASURE_DATA, "2", request.getMeasureCategoryName())); + customTemplateUrls.add(bizBusinessMapper.customTemplateUrl(MEASURE_DATA, "2", request.getItemCategoryName())); + SnowflakeUtil snowflakeUtil = new SnowflakeUtil(); + map.put("id", snowflakeUtil.nextId()); + map.put("pdfStatus", 1); + List urlList = new ArrayList<>(); + PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class); + //除了选用的模板不一致,模板配置流程是一致的 + 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); + } + } + + /** + * 检查是否能生成证书 + */ + 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; + } +}