From 014e71a1aa4ea1ef49c76b41c5db9171504c140d Mon Sep 17 00:00:00 2001 From: luotaiqian <1147642922@qq.com> Date: Wed, 5 Aug 2026 10:16:25 +0800 Subject: [PATCH] person --- .../convertor/QualFilingCmdConvertor.java | 119 ++++++++++++++++++ .../app/executor/QualFilingExecutor.java | 42 ++----- .../domain/constant/CertTypeCodeEnum.java | 17 ++- .../utils/ComplianceCheckUtil.java | 13 +- 4 files changed, 145 insertions(+), 46 deletions(-) create mode 100644 safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingCmdConvertor.java diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingCmdConvertor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingCmdConvertor.java new file mode 100644 index 0000000..9f5f768 --- /dev/null +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingCmdConvertor.java @@ -0,0 +1,119 @@ +package org.qinan.safetyeval.app.change.convertor; + +import com.alibaba.fastjson.JSON; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Named; +import org.qinan.safetyeval.client.co.QualFilingCO; +import org.qinan.safetyeval.client.dto.QualFilingAddCmd; +import org.qinan.safetyeval.client.dto.QualFilingCommitmentAddCmd; +import org.qinan.safetyeval.client.dto.QualFilingEquipmentAddCmd; +import org.qinan.safetyeval.client.dto.QualFilingMaterialAddCmd; +import org.qinan.safetyeval.client.dto.QualFilingPersonnelAddCmd; +import org.qinan.safetyeval.client.dto.QualFilingPersonnelCertAddCmd; +import org.qinan.safetyeval.domain.entity.QualFilingCommitmentEntity; +import org.qinan.safetyeval.domain.entity.QualFilingEntity; +import org.qinan.safetyeval.domain.entity.QualFilingEquipmentEntity; +import org.qinan.safetyeval.domain.entity.QualFilingMaterialEntity; +import org.qinan.safetyeval.domain.entity.QualFilingPersonnelCertEntity; +import org.qinan.safetyeval.domain.entity.QualFilingPersonnelEntity; + +import java.util.List; + +/** + * 资质备案申请命令转换器 + * 将备案各 AddCmd 转换为领域实体 / CO + * + * @author safety-eval + */ +@Mapper(componentModel = "spring") +public interface QualFilingCmdConvertor { + + /** + * 备案基本信息Cmd转CO + */ + QualFilingCO convertFilingCmdToCO(QualFilingAddCmd qualFilingAddCmd); + + /** + * 备案基本信息Cmd转实体(businessScope 由 List 序列化为 JSON 字符串) + */ + @Mapping(target = "businessScope", source = "businessScope", qualifiedByName = "listToJsonString") + @Mapping(target = "orgId", ignore = true) + @Mapping(target = "originFilingId", ignore = true) + @Mapping(target = "rejectReason", ignore = true) + @Mapping(target = "submitTime", ignore = true) + @Mapping(target = "approveTime", ignore = true) + @Mapping(target = "alertStatus", ignore = true) + @Mapping(target = "tenantId", ignore = true) + QualFilingEntity convertFilingCmdToEntity(QualFilingAddCmd qualFilingAddCmd); + + /** + * 备案承诺书Cmd转实体 + */ + @Mapping(target = "id", ignore = true) + @Mapping(target = "filingId", ignore = true) + @Mapping(target = "tenantId", ignore = true) + @Mapping(target = "orgId", ignore = true) + QualFilingCommitmentEntity convertCommitmentCmdToEntity(QualFilingCommitmentAddCmd qualFilingCommitmentAddCmd); + + /** + * 备案装备Cmd转实体 + */ + @Mapping(target = "id", ignore = true) + @Mapping(target = "filingId", ignore = true) + @Mapping(target = "tenantId", ignore = true) + @Mapping(target = "orgId", ignore = true) + QualFilingEquipmentEntity convertEquipmentCmdToEntity(QualFilingEquipmentAddCmd qualFilingEquipmentAddCmd); + + /** + * 批量转换备案装备Cmd为实体 + */ + List convertEquipmentCmdListToEntityList(List qualFilingEquipmentAddCmds); + + /** + * 备案材料清单Cmd转实体 + */ + @Mapping(target = "id", ignore = true) + @Mapping(target = "filingId", ignore = true) + @Mapping(target = "tenantId", ignore = true) + @Mapping(target = "orgId", ignore = true) + QualFilingMaterialEntity convertMaterialCmdToEntity(QualFilingMaterialAddCmd qualFilingMaterialAddCmd); + + /** + * 批量转换备案材料清单Cmd为实体 + */ + List convertMaterialCmdListToEntityList(List qualFilingMaterialAddCmds); + + /** + * 备案人员Cmd转实体 + */ + @Mapping(target = "id", ignore = true) + @Mapping(target = "filingId", ignore = true) + @Mapping(target = "tenantId", ignore = true) + @Mapping(target = "orgId", ignore = true) + QualFilingPersonnelEntity convertPersonnelCmdToEntity(QualFilingPersonnelAddCmd qualFilingPersonnelAddCmd); + + /** + * 批量转换备案人员Cmd为实体 + */ + List convertPersonnelCmdListToEntityList(List qualFilingPersonnelAddCmds); + + /** + * 备案人员证书Cmd转实体 + */ + @Mapping(target = "id", ignore = true) + @Mapping(target = "filingId", ignore = true) + @Mapping(target = "tenantId", ignore = true) + @Mapping(target = "orgId", ignore = true) + QualFilingPersonnelCertEntity convertPersonnelCertCmdToEntity(QualFilingPersonnelCertAddCmd qualFilingPersonnelCertAddCmd); + + /** + * 批量转换备案人员证书Cmd为实体 + */ + List convertPersonnelCertCmdListToEntityList(List qualFilingPersonnelCertAddCmds); + + @Named("listToJsonString") + default String listToJsonString(List list) { + return list == null ? null : JSON.toJSONString(list); + } +} diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingExecutor.java index fa3f14c..142602f 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingExecutor.java @@ -22,7 +22,6 @@ import org.qinan.safetyeval.infrastructure.adapter.ThreadLocalUserInfoAdapter; import org.qinan.safetyeval.infrastructure.dataobject.*; import org.qinan.safetyeval.infrastructure.mapper.*; import org.qinan.safetyeval.infrastructure.utils.ComplianceCheckUtil; -import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @@ -75,6 +74,8 @@ public class QualFilingExecutor implements QualFilingApi { private QualFilingPersonnelChangeCmdConvertor qualFilingPersonnelChangeCmdConvertor; @Resource private QualFilingComplianceCmdConvertor qualFilingComplianceCmdConvertor; + @Resource + private QualFilingCmdConvertor qualFilingCmdConvertor; @Override public SingleResponse add(QualFilingAddCmd cmd) { @@ -191,42 +192,21 @@ public class QualFilingExecutor implements QualFilingApi { } } - QualFilingCO co = new QualFilingCO(); - BeanUtils.copyProperties(cmd.getQualFilingAddCmd(), co); + QualFilingCO co = qualFilingCmdConvertor.convertFilingCmdToCO(cmd.getQualFilingAddCmd()); // 拷贝基本信息 - QualFilingEntity entity = new QualFilingEntity(); - BeanUtils.copyProperties(cmd.getQualFilingAddCmd(), entity); - entity.setBusinessScope(JSON.toJSONString(cmd.getQualFilingAddCmd().getBusinessScope())); + QualFilingEntity entity = qualFilingCmdConvertor.convertFilingCmdToEntity(cmd.getQualFilingAddCmd()); //备案承诺书 - QualFilingCommitmentEntity commitmentEntity = new QualFilingCommitmentEntity(); - BeanUtils.copyProperties(cmd.getQualFilingCommitmentAddCmd(), commitmentEntity); + QualFilingCommitmentEntity commitmentEntity = qualFilingCmdConvertor.convertCommitmentCmdToEntity(cmd.getQualFilingCommitmentAddCmd()); //备案装备 - List equipmentEntities = cmd.getQualFilingEquipmentAddCmds().stream().map(item -> { - QualFilingEquipmentEntity equipmentEntity = new QualFilingEquipmentEntity(); - BeanUtils.copyProperties(item, equipmentEntity); - return equipmentEntity; - }).collect(Collectors.toList()); + List equipmentEntities = qualFilingCmdConvertor.convertEquipmentCmdListToEntityList(cmd.getQualFilingEquipmentAddCmds()); //备案材料清单 - List materialEntities = cmd.getQualFilingMaterialAddCmds().stream().map(item -> { - QualFilingMaterialEntity materialEntity = new QualFilingMaterialEntity(); - BeanUtils.copyProperties(item, materialEntity); - return materialEntity; - }).collect(Collectors.toList()); + List materialEntities = qualFilingCmdConvertor.convertMaterialCmdListToEntityList(cmd.getQualFilingMaterialAddCmds()); //备案人员 - List personnelEntities = cmd.getQualFilingPersonnelAddCmds().stream().map(item -> { - QualFilingPersonnelEntity personnelEntity = new QualFilingPersonnelEntity(); - BeanUtils.copyProperties(item, personnelEntity); - return personnelEntity; - }).collect(Collectors.toList()); + List personnelEntities = qualFilingCmdConvertor.convertPersonnelCmdListToEntityList(cmd.getQualFilingPersonnelAddCmds()); //备案人员证书列表 - List personnelCertEntities = Collections.emptyList(); - if (!CollectionUtils.isEmpty(cmd.getQualFilingPersonnelCertAddCmds())) { - personnelCertEntities = cmd.getQualFilingPersonnelCertAddCmds().stream().map(item -> { - QualFilingPersonnelCertEntity personnelCertEntity = new QualFilingPersonnelCertEntity(); - BeanUtils.copyProperties(item, personnelCertEntity); - return personnelCertEntity; - }).collect(Collectors.toList()); - } + List personnelCertEntities = CollectionUtils.isEmpty(cmd.getQualFilingPersonnelCertAddCmds()) + ? Collections.emptyList() + : qualFilingCmdConvertor.convertPersonnelCertCmdListToEntityList(cmd.getQualFilingPersonnelCertAddCmds()); Long id = qualFilingDomainService.aggregationSaveOrEdit(entity, commitmentEntity, equipmentEntities, materialEntities, personnelEntities, personnelCertEntities); co.setId(id); if (cmd.getQualFilingAddCmd().getFilingStatusCode() != null diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/CertTypeCodeEnum.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/CertTypeCodeEnum.java index 4451fc2..2340fb8 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/CertTypeCodeEnum.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/CertTypeCodeEnum.java @@ -1,25 +1,24 @@ package org.qinan.safetyeval.domain.constant; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + import java.util.Objects; /** * 证书类型编码 */ +@RequiredArgsConstructor +@Getter public enum CertTypeCodeEnum { - REGISTERED_SAFETY_ENGINEER("注册安全工程师"), - EVALUATOR("评价师"), + REGISTERED_SAFETY_ENGINEER("registered_safety_engineer","注册安全工程师"), + EVALUATOR("evaluator","评价师"), ; private final String code; + private final String desc; - CertTypeCodeEnum(String code) { - this.code = code; - } - - public String getCode() { - return code; - } public static CertTypeCodeEnum ofCode(String code) { if (code == null) { diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/utils/ComplianceCheckUtil.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/utils/ComplianceCheckUtil.java index d66c6d7..d7c8b05 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/utils/ComplianceCheckUtil.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/utils/ComplianceCheckUtil.java @@ -425,12 +425,13 @@ public class ComplianceCheckUtil { personCapabilityMap.computeIfAbsent(pc.getPersonnelId(), k -> new HashSet<>()) .add(pc.getProfessionalCapabilityCode()); IndustryProfessionalPersonCo co = personnelMap.get(pc.getPersonnelId()); - - // 人员学科能力 - Set pdcSet = Arrays.stream(co.getProfessionalCapabilityCode().split(CommonUtil.COMMA)) - .collect(Collectors.toSet()); - personCapabilityMap.computeIfAbsent(pc.getPersonnelId(), k -> new HashSet<>()) - .addAll(pdcSet); + if (co != null) { + // 人员学科能力 + Set pdcSet = Arrays.stream(co.getProfessionalCapabilityCode().split(CommonUtil.COMMA)) + .collect(Collectors.toSet()); + personCapabilityMap.computeIfAbsent(pc.getPersonnelId(), k -> new HashSet<>()) + .addAll(pdcSet); + } } // 数据来源:industryProfessionalPersonCos(备案人员自带专业能力)+ certCapabilityList(证书专业能力)