From be5c92d1d9adb675a96d21708d4699e1cdd2d169 Mon Sep 17 00:00:00 2001 From: luotaiqian <1147642922@qq.com> Date: Sat, 8 Aug 2026 11:57:59 +0800 Subject: [PATCH] upgrade --- .../app/convertor/OrgPersonnelConvertor.java | 2 + .../app/executor/OrgPersonnelExecutor.java | 58 +++++++++++++++++++ .../safetyeval/client/co/OrgPersonnelCO.java | 6 ++ .../client/dto/OrgPersonnelAddCmd.java | 7 +++ .../OrgPersonnelCertDomainService.java | 5 ++ .../convertor/OrgPersonnelDoConvertor.java | 12 ++++ 6 files changed, 90 insertions(+) diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/convertor/OrgPersonnelConvertor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/convertor/OrgPersonnelConvertor.java index c4f57f0d..5f5060e9 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/convertor/OrgPersonnelConvertor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/convertor/OrgPersonnelConvertor.java @@ -23,6 +23,8 @@ public interface OrgPersonnelConvertor { @Mapping(target = "changeCount", ignore = true) @Mapping(target = "resignApplyId", ignore = true) @Mapping(target = "resignAuditStatus", ignore = true) + @Mapping(target = "registeredSafetyEngineerCert", ignore = true) + @Mapping(target = "evaluatorCert", ignore = true) OrgPersonnelCO toCO(OrgPersonnelEntity entity); /** diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/OrgPersonnelExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/OrgPersonnelExecutor.java index 712829e6..3844ba7a 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/OrgPersonnelExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/OrgPersonnelExecutor.java @@ -13,11 +13,14 @@ import org.qinan.safetyeval.app.support.OrgPersonnelChangeRecorder; import org.qinan.safetyeval.app.support.OrgPersonnelExcelImporter; import org.qinan.safetyeval.app.support.OrgPersonnelViewEnricher; import org.qinan.safetyeval.client.api.OrgPersonnelApi; +import org.qinan.safetyeval.client.co.OrgPersonnelCertCO; import org.qinan.safetyeval.client.co.OrgPersonnelCO; import org.qinan.safetyeval.client.co.OrgPersonnelImportResultCO; import org.qinan.safetyeval.client.co.PersonnelProfessionalCapabilityCO; import org.qinan.safetyeval.client.co.QualFilingPersonnelInfoCO; import org.qinan.safetyeval.client.dto.*; +import org.qinan.safetyeval.domain.constant.CertTypeCodeEnum; +import org.qinan.safetyeval.domain.entity.OrgPersonnelCertEntity; import org.qinan.safetyeval.domain.entity.OrgPersonnelEntity; import org.qinan.safetyeval.domain.entity.OrgPositionEntity; import org.qinan.safetyeval.domain.exception.BizException; @@ -26,11 +29,13 @@ import org.qinan.safetyeval.domain.gateway.FaceCompareGateway; import org.qinan.safetyeval.domain.gateway.OrgResignApplyGateway; import org.qinan.safetyeval.domain.query.OrgPersonnelQuery; import org.qinan.safetyeval.domain.query.PageResult; +import org.qinan.safetyeval.domain.service.OrgPersonnelCertDomainService; import org.qinan.safetyeval.domain.service.OrgPersonnelDomainService; import org.qinan.safetyeval.domain.service.OrgPositionDomainService; import org.qinan.safetyeval.infrastructure.adapter.ThreadLocalUserInfoAdapter; import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter; import org.qinan.safetyeval.infrastructure.adapter.gbs.GbsUserFacadeClient; +import org.qinan.safetyeval.infrastructure.convertor.OrgPersonnelCertConvertor; import org.qinan.safetyeval.infrastructure.dataobject.OrgPersonnelDO; import org.qinan.safetyeval.infrastructure.mapper.OrgPersonnelMapper; import org.qinan.safetyeval.infrastructure.mapper.QualFilingPersonnelCertMapper; @@ -73,6 +78,13 @@ public class OrgPersonnelExecutor implements OrgPersonnelApi { @Autowired private OrgPersonnelConvertor orgPersonnelConvertor; + @Lazy + @Autowired(required = false) + private OrgPersonnelCertDomainService orgPersonnelCertDomainService; + + @Autowired + private OrgPersonnelCertConvertor orgPersonnelCertConvertor; + @Autowired(required = false) private OrgResignApplyGateway orgResignApplyGateway; @@ -120,6 +132,9 @@ public class OrgPersonnelExecutor implements OrgPersonnelApi { } OrgPersonnelCO co = orgPersonnelConvertor.toCO(result); enrich(co); + // 保存证书信息 + savePersonnelCerts(cmd, result.getId()); + fillCerts(co, result.getId()); UserAddCmd userAddCmd = new UserAddCmd(); userAddCmd.setId(result.getId()); userAddCmd.setAccount(result.getAccount()); @@ -148,6 +163,7 @@ public class OrgPersonnelExecutor implements OrgPersonnelApi { OrgPersonnelEntity entity = orgPersonnelDomainService.get(id); OrgPersonnelCO co = orgPersonnelConvertor.toCO(entity); enrich(co); + fillCerts(co, id); return SingleResponse.success(co); } @@ -326,6 +342,48 @@ public class OrgPersonnelExecutor implements OrgPersonnelApi { } } + /** + * 保存人员内嵌的注安证书和评价师证书 + */ + private void savePersonnelCerts(OrgPersonnelAddCmd cmd, Long personnelId) { + if (orgPersonnelCertDomainService == null) { + return; + } + if (cmd.getRegisteredSafetyEngineerCert() != null) { + OrgPersonnelCertEntity certEntity = orgPersonnelCertConvertor.addCmdToEntity(cmd.getRegisteredSafetyEngineerCert()); + certEntity.setPersonnelId(personnelId); + certEntity.setCertTypeCode(CertTypeCodeEnum.REGISTERED_SAFETY_ENGINEER.getCode()); + orgPersonnelCertDomainService.add(certEntity); + } + if (cmd.getEvaluatorCert() != null) { + OrgPersonnelCertEntity certEntity = orgPersonnelCertConvertor.addCmdToEntity(cmd.getEvaluatorCert()); + certEntity.setPersonnelId(personnelId); + certEntity.setCertTypeCode(CertTypeCodeEnum.EVALUATOR.getCode()); + orgPersonnelCertDomainService.add(certEntity); + } + } + + /** + * 根据人员ID查询证书并填充到CO中 + */ + private void fillCerts(OrgPersonnelCO co, Long personnelId) { + if (orgPersonnelCertDomainService == null || personnelId == null) { + return; + } + List certs = orgPersonnelCertDomainService.listByPersonnelId(personnelId); + if (certs == null) { + return; + } + for (OrgPersonnelCertEntity cert : certs) { + OrgPersonnelCertCO certCO = orgPersonnelCertConvertor.entityToCO(cert); + if (CertTypeCodeEnum.REGISTERED_SAFETY_ENGINEER.getCode().equals(cert.getCertTypeCode())) { + co.setRegisteredSafetyEngineerCert(certCO); + } else if (CertTypeCodeEnum.EVALUATOR.getCode().equals(cert.getCertTypeCode())) { + co.setEvaluatorCert(certCO); + } + } + } + @Override public SingleResponse updateOriginFace(OrgPersonnelUpdateOriginFaceCmd cmd) { OrgPersonnelEntity existing = orgPersonnelDomainService.get(cmd.getId()); diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/OrgPersonnelCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/OrgPersonnelCO.java index 3f5ec906..7b668b59 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/OrgPersonnelCO.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/OrgPersonnelCO.java @@ -151,6 +151,12 @@ public class OrgPersonnelCO { @ApiModelProperty(value = "离职申请审核状态(列表展示,非持久化)") private Integer resignAuditStatus; + @ApiModelProperty(value = "注安证书信息") + private OrgPersonnelCertCO registeredSafetyEngineerCert; + + @ApiModelProperty(value = "评价师证书信息") + private OrgPersonnelCertCO evaluatorCert; + @ApiModelProperty(value = "租户ID") private Long tenantId; } diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/OrgPersonnelAddCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/OrgPersonnelAddCmd.java index 2c2be9b5..dd7f37c4 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/OrgPersonnelAddCmd.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/OrgPersonnelAddCmd.java @@ -6,6 +6,7 @@ import java.util.List; import javax.validation.constraints.Pattern; import javax.validation.constraints.Size; import lombok.Data; +import org.qinan.safetyeval.client.co.OrgPersonnelCertCO; import org.qinan.safetyeval.domain.entity.CapabilityAssessmentDTO; import org.qinan.safetyeval.domain.entity.TitleCodeCo; @@ -131,6 +132,12 @@ public class OrgPersonnelAddCmd { @ApiModelProperty(value = "能力认定") private List capabilityAssessment; + @ApiModelProperty(value = "注安证书信息") + private OrgPersonnelCertAddCmd registeredSafetyEngineerCert; + + @ApiModelProperty(value = "评价师证书信息") + private OrgPersonnelCertAddCmd evaluatorCert; + @ApiModelProperty(value = "是否技术负责人") private Boolean technicalDirectorFlag; diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/OrgPersonnelCertDomainService.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/OrgPersonnelCertDomainService.java index 79897346..2ec927e2 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/OrgPersonnelCertDomainService.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/OrgPersonnelCertDomainService.java @@ -7,6 +7,7 @@ import org.qinan.safetyeval.domain.gateway.OrgPersonnelCertGateway; import org.qinan.safetyeval.domain.query.OrgPersonnelCertQuery; import org.qinan.safetyeval.domain.query.PageResult; +import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; @@ -29,6 +30,10 @@ public class OrgPersonnelCertDomainService { return orgPersonnelCertGateway.get(id); } + public List listByPersonnelId(Long personnelId) { + return orgPersonnelCertGateway.listByPersonnelId(personnelId); + } + public OrgPersonnelCertEntity modify(OrgPersonnelCertEntity entity) { OrgPersonnelCertEntity existing = orgPersonnelCertGateway.get(entity.getId()); if (existing == null) { diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/OrgPersonnelDoConvertor.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/OrgPersonnelDoConvertor.java index 593cb4ce..d25e220d 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/OrgPersonnelDoConvertor.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/OrgPersonnelDoConvertor.java @@ -4,6 +4,7 @@ import cn.hutool.json.JSONUtil; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Named; +import org.qinan.safetyeval.domain.entity.CapabilityAssessmentDTO; import org.qinan.safetyeval.domain.entity.OrgPersonnelEntity; import org.qinan.safetyeval.domain.entity.TitleCodeCo; import org.qinan.safetyeval.infrastructure.dataobject.OrgPersonnelDO; @@ -25,6 +26,7 @@ public interface OrgPersonnelDoConvertor { * @return */ @Mapping(target = "titleCodeArr", source = "titleCodeArr", qualifiedByName = "titleCodeListToJson") + @Mapping(target = "capabilityAssessment", source = "capabilityAssessment", qualifiedByName = "capabilityAssessmentListToJson") OrgPersonnelDO convertEeToDo(OrgPersonnelEntity orgPersonnelEntity); /** @@ -54,4 +56,14 @@ public interface OrgPersonnelDoConvertor { default String titleCodeListToJson(List list) { return list == null || list.isEmpty() ? null : JSONUtil.toJsonStr(list); } + + @Named("jsonToCapabilityAssessmentList") + default List jsonToCapabilityAssessmentList(String json) { + return json == null || json.isEmpty() ? null : JSONUtil.toList(json, CapabilityAssessmentDTO.class); + } + + @Named("capabilityAssessmentListToJson") + default String capabilityAssessmentListToJson(List list) { + return list == null || list.isEmpty() ? null : JSONUtil.toJsonStr(list); + } }