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/QualFilingAddCmdConvertor.java similarity index 99% rename from safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingCmdConvertor.java rename to safety-eval-app/src/main/java/org/qinan/safetyeval/app/change/convertor/QualFilingAddCmdConvertor.java index 9f5f768..c3d7a21 100644 --- 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/QualFilingAddCmdConvertor.java @@ -27,7 +27,7 @@ import java.util.List; * @author safety-eval */ @Mapper(componentModel = "spring") -public interface QualFilingCmdConvertor { +public interface QualFilingAddCmdConvertor { /** * 备案基本信息Cmd转CO diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingChangeExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingChangeExecutor.java index aa06b0c..581f380 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingChangeExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/QualFilingChangeExecutor.java @@ -26,6 +26,9 @@ import org.qinan.safetyeval.infrastructure.adapter.ThreadLocalUserInfoAdapter; import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter; import org.qinan.safetyeval.infrastructure.dataobject.QualFilingChangeCountDO; import org.qinan.safetyeval.infrastructure.mapper.QualFilingChangeMapper; +import org.qinan.safetyeval.infrastructure.mapper.QualFilingPersonnelCertMapper; +import org.qinan.safetyeval.infrastructure.persistence.mapper.QualFilingPersonnelChangeMapper; +import org.qinan.safetyeval.infrastructure.utils.CommonUtil; import org.qinan.safetyeval.infrastructure.utils.ComplianceCheckUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -33,6 +36,7 @@ import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.util.*; @@ -50,6 +54,10 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi { @Resource private QualFilingChangeMapper qualFilingChangeMapper; + @Resource + private QualFilingPersonnelChangeMapper qualFilingPersonnelChangeMapper; + @Resource + private QualFilingPersonnelCertMapper qualFilingPersonnelCertMapper; @Lazy @Autowired(required = false) @@ -438,9 +446,10 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi { } // 人员清单 - List personnelChangeEs = qualFilingPersonnelChangeGateway.listByFilingId(changeFilingId); - if (!CollectionUtils.isEmpty(personnelChangeEs)) { - detail.setPersonnelList(qualFilingPersonnelChangeCmdConvertor.convertChangeEListToCOList(personnelChangeEs)); + List personnelList = qualFilingPersonnelChangeMapper.getFillingChangePersonInfo(changeFilingId); + if (!CollectionUtils.isEmpty(personnelList)) { + setProfessionalCapabilityCodeList(personnelList); + detail.setPersonnelList(personnelList); } // 人员证书清单 @@ -452,6 +461,39 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi { return SingleResponse.success(detail); } + /** + * 为变更人员列表补充专业能力codeList + * + * @param personnelList personnelList + */ + private void setProfessionalCapabilityCodeList(List personnelList) { + if (CollectionUtils.isEmpty(personnelList)) { + return; + } + List personnelIdList = personnelList.stream() + .map(QualFilingPersonnelChangeInfoCO::getSourcePersonnelId) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + if (CollectionUtils.isEmpty(personnelIdList)) { + return; + } + List capabilityList = + qualFilingPersonnelCertMapper.getProfessionalCapabilityCodeList(personnelIdList); + Map> capabilityMap = capabilityList.stream() + .filter(item -> StringUtils.hasText(item.getProfessionalCapabilityCodeList())) + .collect(Collectors.toMap( + PersonnelProfessionalCapabilityCO::getPersonnelId, + item -> Arrays.asList(item.getProfessionalCapabilityCodeList() + .split(CommonUtil.COMMA)), + (a, b) -> a)); + for (QualFilingPersonnelChangeInfoCO personnel : personnelList) { + List codes = capabilityMap.get(personnel.getSourcePersonnelId()); + if (codes != null) { + personnel.setProfessionalCapabilityCodeList(codes); + } + } + } + /** * 将变更聚合Cmd转换为备案聚合Cmd,用于合规性校验 */ 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 142602f..4e80099 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 @@ -75,7 +75,7 @@ public class QualFilingExecutor implements QualFilingApi { @Resource private QualFilingComplianceCmdConvertor qualFilingComplianceCmdConvertor; @Resource - private QualFilingCmdConvertor qualFilingCmdConvertor; + private QualFilingAddCmdConvertor qualFilingAddCmdConvertor; @Override public SingleResponse add(QualFilingAddCmd cmd) { @@ -192,21 +192,21 @@ public class QualFilingExecutor implements QualFilingApi { } } - QualFilingCO co = qualFilingCmdConvertor.convertFilingCmdToCO(cmd.getQualFilingAddCmd()); + QualFilingCO co = qualFilingAddCmdConvertor.convertFilingCmdToCO(cmd.getQualFilingAddCmd()); // 拷贝基本信息 - QualFilingEntity entity = qualFilingCmdConvertor.convertFilingCmdToEntity(cmd.getQualFilingAddCmd()); + QualFilingEntity entity = qualFilingAddCmdConvertor.convertFilingCmdToEntity(cmd.getQualFilingAddCmd()); //备案承诺书 - QualFilingCommitmentEntity commitmentEntity = qualFilingCmdConvertor.convertCommitmentCmdToEntity(cmd.getQualFilingCommitmentAddCmd()); + QualFilingCommitmentEntity commitmentEntity = qualFilingAddCmdConvertor.convertCommitmentCmdToEntity(cmd.getQualFilingCommitmentAddCmd()); //备案装备 - List equipmentEntities = qualFilingCmdConvertor.convertEquipmentCmdListToEntityList(cmd.getQualFilingEquipmentAddCmds()); + List equipmentEntities = qualFilingAddCmdConvertor.convertEquipmentCmdListToEntityList(cmd.getQualFilingEquipmentAddCmds()); //备案材料清单 - List materialEntities = qualFilingCmdConvertor.convertMaterialCmdListToEntityList(cmd.getQualFilingMaterialAddCmds()); + List materialEntities = qualFilingAddCmdConvertor.convertMaterialCmdListToEntityList(cmd.getQualFilingMaterialAddCmds()); //备案人员 - List personnelEntities = qualFilingCmdConvertor.convertPersonnelCmdListToEntityList(cmd.getQualFilingPersonnelAddCmds()); + List personnelEntities = qualFilingAddCmdConvertor.convertPersonnelCmdListToEntityList(cmd.getQualFilingPersonnelAddCmds()); //备案人员证书列表 List personnelCertEntities = CollectionUtils.isEmpty(cmd.getQualFilingPersonnelCertAddCmds()) ? Collections.emptyList() - : qualFilingCmdConvertor.convertPersonnelCertCmdListToEntityList(cmd.getQualFilingPersonnelCertAddCmds()); + : qualFilingAddCmdConvertor.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-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingChangeAggregationCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingChangeAggregationCO.java index 19f7f47..3e81751 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingChangeAggregationCO.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingChangeAggregationCO.java @@ -25,7 +25,7 @@ public class QualFilingChangeAggregationCO extends QualFilingChangeCO { private List materials; @ApiModelProperty(value = "变更人员列表") - private List personnelList; + private List personnelList; @ApiModelProperty(value = "变更人员证书列表") private List personnelCertList; diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingPersonnelChangeInfoCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingPersonnelChangeInfoCO.java new file mode 100644 index 0000000..0b0f44e --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/QualFilingPersonnelChangeInfoCO.java @@ -0,0 +1,55 @@ +package org.qinan.safetyeval.client.co; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDate; +import java.util.List; + +/** + * 备案申请人员CO(Client Object) + * + * @author safety-eval + */ +@Data +public class QualFilingPersonnelChangeInfoCO { + + @ApiModelProperty(value = "主键ID") + private Long id; + + @ApiModelProperty(value = "备案变更ID") + private Long filingChangeId; + + @ApiModelProperty(value = "原始人员ID") + private Long sourcePersonnelId; + + @ApiModelProperty(value = "人员姓名") + private String personName; + + @ApiModelProperty(value = "部门名称") + private String deptName; + + @ApiModelProperty(value = "职位名称") + private String positionName; + + @ApiModelProperty(value = "性别编码(1男2女)") + private Integer genderCode; + + @ApiModelProperty(value = "性别名称") + private String genderName; + + @ApiModelProperty(value = "出生日期") + private LocalDate birthDate; + + @ApiModelProperty(value = "是否注册安全工程师(1是2否)") + private Integer registerEngineerFlag; + + @ApiModelProperty(value = "评价师证书编号") + private String evaluatorCertNo; + + @ApiModelProperty(value = "参加工作日期") + private LocalDate joinWorkDate; + + @ApiModelProperty(value = "能力codeList") + private List professionalCapabilityCodeList; +} diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/mapper/QualFilingPersonnelChangeMapper.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/mapper/QualFilingPersonnelChangeMapper.java index 23a679a..d10b407 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/mapper/QualFilingPersonnelChangeMapper.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/persistence/mapper/QualFilingPersonnelChangeMapper.java @@ -2,8 +2,12 @@ package org.qinan.safetyeval.infrastructure.persistence.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.qinan.safetyeval.client.co.QualFilingPersonnelChangeInfoCO; import org.qinan.safetyeval.infrastructure.persistence.domainobject.QualFilingPersonnelChangeDO; +import java.util.List; + /** * 备案申请人员-变更Mapper * @@ -12,4 +16,12 @@ import org.qinan.safetyeval.infrastructure.persistence.domainobject.QualFilingPe */ @Mapper public interface QualFilingPersonnelChangeMapper extends BaseMapper { + + /** + * 根据备案变更ID查询变更人员信息(关联机构人员、岗位、部门) + * + * @param filingChangeId 备案变更ID + * @return 变更人员信息列表 + */ + List getFillingChangePersonInfo(@Param("filingChangeId") Long filingChangeId); } diff --git a/safety-eval-infrastructure/src/main/resources/mapper/QualFilingPersonnelChangeMapper.xml b/safety-eval-infrastructure/src/main/resources/mapper/QualFilingPersonnelChangeMapper.xml index 7a6ce4d..35e878c 100644 --- a/safety-eval-infrastructure/src/main/resources/mapper/QualFilingPersonnelChangeMapper.xml +++ b/safety-eval-infrastructure/src/main/resources/mapper/QualFilingPersonnelChangeMapper.xml @@ -86,4 +86,17 @@ from qual_filing_personnel_change + + \ No newline at end of file