From dd5014c00fec47df106b2744818c3e311ea6d4dd Mon Sep 17 00:00:00 2001 From: luotaiqian <1147642922@qq.com> Date: Tue, 11 Aug 2026 11:13:31 +0800 Subject: [PATCH] upgrade --- .../app/executor/OrgPersonnelExecutor.java | 39 ++++++++++++++----- .../client/co/QualFilingPersonnelInfoCO.java | 3 ++ .../client/dto/OrgPersonnelModifyCmd.java | 6 +++ .../gateway/OrgPersonnelCertGateway.java | 5 +++ .../OrgPersonnelCertDomainService.java | 7 ++++ .../OrgPersonnelCertGatewayImpl.java | 7 ++++ .../resources/mapper/OrgPersonnelMapper.xml | 2 +- 7 files changed, 58 insertions(+), 11 deletions(-) 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 60619c50..cfd32413 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 @@ -184,8 +184,11 @@ public class OrgPersonnelExecutor implements OrgPersonnelApi { existing == null ? null : existing.getPostId(), result.getPostId())) { syncPersonGbsRoleByPost(result); } + // 保存证书信息:先按人员ID+类型删除,再新增 + savePersonnelCerts(cmd, cmd.getId()); OrgPersonnelCO co = orgPersonnelConvertor.toCO(result); enrich(co); + fillCerts(co, cmd.getId()); return SingleResponse.success(co); } @@ -344,18 +347,34 @@ public class OrgPersonnelExecutor implements OrgPersonnelApi { 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); + addCert(personnelId, cmd.getRegisteredSafetyEngineerCert(), CertTypeCodeEnum.REGISTERED_SAFETY_ENGINEER.getCode()); + addCert(personnelId, cmd.getEvaluatorCert(), CertTypeCodeEnum.EVALUATOR.getCode()); + } + + /** + * 修改人员时保存证书:先按人员ID+类型删除,再新增 + */ + private void savePersonnelCerts(OrgPersonnelModifyCmd cmd, Long personnelId) { + if (orgPersonnelCertDomainService == null) { + return; } - if (cmd.getEvaluatorCert() != null) { - OrgPersonnelCertEntity certEntity = orgPersonnelCertConvertor.addCmdToEntity(cmd.getEvaluatorCert()); - certEntity.setPersonnelId(personnelId); - certEntity.setCertTypeCode(CertTypeCodeEnum.EVALUATOR.getCode()); - orgPersonnelCertDomainService.add(certEntity); + orgPersonnelCertDomainService.deleteByPersonnelIdAndCertType(personnelId, CertTypeCodeEnum.REGISTERED_SAFETY_ENGINEER.getCode()); + orgPersonnelCertDomainService.deleteByPersonnelIdAndCertType(personnelId, CertTypeCodeEnum.EVALUATOR.getCode()); + addCert(personnelId, cmd.getRegisteredSafetyEngineerCert(), CertTypeCodeEnum.REGISTERED_SAFETY_ENGINEER.getCode()); + addCert(personnelId, cmd.getEvaluatorCert(), CertTypeCodeEnum.EVALUATOR.getCode()); + } + + /** + * 新增单条人员证书 + */ + private void addCert(Long personnelId, OrgPersonnelCertAddCmd certCmd, String certTypeCode) { + if (certCmd == null) { + return; } + OrgPersonnelCertEntity certEntity = orgPersonnelCertConvertor.addCmdToEntity(certCmd); + certEntity.setPersonnelId(personnelId); + certEntity.setCertTypeCode(certTypeCode); + orgPersonnelCertDomainService.add(certEntity); } /** diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingPersonnelInfoCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingPersonnelInfoCO.java index 43d79c8a..7847ef6e 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingPersonnelInfoCO.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingPersonnelInfoCO.java @@ -73,6 +73,9 @@ public class QualFilingPersonnelInfoCO { @ApiModelProperty(value = "能力codeList") private List personnelCertFilingPageCOList; + @ApiModelProperty(value = "发表著作") + private String publications; + @ApiModelProperty(value = "能力认定") private List capabilityAssessment; } diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/OrgPersonnelModifyCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/OrgPersonnelModifyCmd.java index ecdd7ad6..8642ff7a 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/OrgPersonnelModifyCmd.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/OrgPersonnelModifyCmd.java @@ -134,6 +134,12 @@ public class OrgPersonnelModifyCmd { @ApiModelProperty(value = "申报专业能力证明材料地址") private String proofMaterialUrl; + @ApiModelProperty(value = "注安证书信息") + private OrgPersonnelCertAddCmd registeredSafetyEngineerCert; + + @ApiModelProperty(value = "评价师证书信息") + private OrgPersonnelCertAddCmd evaluatorCert; + @ApiModelProperty(value = "能力认定") private List capabilityAssessment; diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/OrgPersonnelCertGateway.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/OrgPersonnelCertGateway.java index b92fa5f5..d0edb847 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/OrgPersonnelCertGateway.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/OrgPersonnelCertGateway.java @@ -27,5 +27,10 @@ public interface OrgPersonnelCertGateway { void delete(Long id); + /** + * 根据人员ID和证书类型删除证书(逻辑删除) + */ + void deleteByPersonnelIdAndCertType(Long personnelId, String certTypeCode); + PageResult page(OrgPersonnelCertQuery query); } 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 a42641cd..19a84d4b 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 @@ -55,6 +55,13 @@ public class OrgPersonnelCertDomainService { orgPersonnelCertGateway.delete(id); } + /** + * 根据人员ID和证书类型删除证书(逻辑删除) + */ + public void deleteByPersonnelIdAndCertType(Long personnelId, String certTypeCode) { + orgPersonnelCertGateway.deleteByPersonnelIdAndCertType(personnelId, certTypeCode); + } + public PageResult page(OrgPersonnelCertQuery query) { return orgPersonnelCertGateway.page(query); } diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/OrgPersonnelCertGatewayImpl.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/OrgPersonnelCertGatewayImpl.java index f83e049f..5df53396 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/OrgPersonnelCertGatewayImpl.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/OrgPersonnelCertGatewayImpl.java @@ -95,6 +95,13 @@ public class OrgPersonnelCertGatewayImpl implements OrgPersonnelCertGateway { orgPersonnelCertMapper.deleteById(id); } + @Override + public void deleteByPersonnelIdAndCertType(Long personnelId, String certTypeCode) { + orgPersonnelCertMapper.delete(new LambdaQueryWrapper() + .eq(OrgPersonnelCertDO::getPersonnelId, personnelId) + .eq(OrgPersonnelCertDO::getCertTypeCode, certTypeCode)); + } + @Override public PageResult page(OrgPersonnelCertQuery query) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); diff --git a/safety-eval-infrastructure/src/main/resources/mapper/OrgPersonnelMapper.xml b/safety-eval-infrastructure/src/main/resources/mapper/OrgPersonnelMapper.xml index 303905d3..50cae45f 100644 --- a/safety-eval-infrastructure/src/main/resources/mapper/OrgPersonnelMapper.xml +++ b/safety-eval-infrastructure/src/main/resources/mapper/OrgPersonnelMapper.xml @@ -90,7 +90,7 @@