diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/orchestrator/QualFilingOrchestrator.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/orchestrator/QualFilingOrchestrator.java index d4daf07..07a97c7 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/orchestrator/QualFilingOrchestrator.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/orchestrator/QualFilingOrchestrator.java @@ -31,20 +31,22 @@ import org.qinan.safetyeval.domain.query.QualFilingQuery; import org.qinan.safetyeval.domain.support.QualFilingExpertCheckSupport; import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter; import org.qinan.safetyeval.infrastructure.mapper.QualFilingMapper; +import org.qinan.safetyeval.infrastructure.mapper.QualFilingPersonnelCertMapper; +import org.qinan.safetyeval.infrastructure.mapper.QualFilingPersonnelMapper; import org.qinan.safetyeval.infrastructure.support.OrgContextResolver; +import org.qinan.safetyeval.infrastructure.utils.CommonUtil; import org.qinan.safetyeval.infrastructure.utils.ComplianceCheckUtil; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; 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.time.LocalDateTime; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -116,6 +118,11 @@ public class QualFilingOrchestrator { @Autowired private QualFilingMapper qualFilingMapper; + @Autowired + private QualFilingPersonnelMapper qualFilingPersonnelMapper; + @Resource + private QualFilingPersonnelCertMapper qualFilingPersonnelCertMapper; + @Value("${safety-eval.public-api.tenant-id:0}") private Long fallbackTenantId; @@ -225,13 +232,49 @@ public class QualFilingOrchestrator { if (commitment != null) { detail.setCommitment(toCommitmentCO(commitment)); } - detail.setPersonnelList(qualFilingPersonnelGateway.listByFilingId(id).stream() - .map(this::toPersonnelCO).collect(Collectors.toList())); + detail.setPersonnelList(qualFilingPersonnelMapper.getFillingPersonInfo(id)); + setProfessionalCapabilityCodeList(detail.getPersonnelList()); + + detail.setEquipmentList(qualFilingEquipmentGateway.listByFilingId(id).stream() .map(this::toEquipmentCO).collect(Collectors.toList())); return detail; } + + /** + * setProfessionalCapabilityCodeList + * + * @param personnelList personnelList + */ + private void setProfessionalCapabilityCodeList(List personnelList) { + if (CollectionUtils.isEmpty(personnelList)) { + return; + } + List personnelIdList = personnelList.stream() + .map(QualFilingPersonnelInfoCO::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 (QualFilingPersonnelInfoCO personnel : personnelList) { + List codes = capabilityMap.get(personnel.getSourcePersonnelId()); + if (codes != null) { + personnel.setProfessionalCapabilityCodeList(codes); + } + } + } + public PageResult page(QualFilingPageQuery query) { QualFilingQuery domainQuery = new QualFilingQuery(); domainQuery.setPageNum(query.getCurrent()); diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/PersonnelProfessionalCapabilityCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/PersonnelProfessionalCapabilityCO.java new file mode 100644 index 0000000..7b4b918 --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/PersonnelProfessionalCapabilityCO.java @@ -0,0 +1,22 @@ +package org.qinan.safetyeval.client.co; + +import lombok.Data; + +/** + * 人员专业能力证书类型编码聚合结果 + * + * @author safety-eval + */ +@Data +public class PersonnelProfessionalCapabilityCO { + + /** + * 人员id + */ + private Long personnelId; + + /** + * 专业能力证书类型编码列表(GROUP_CONCAT 逗号分隔) + */ + private String professionalCapabilityCodeList; +} diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/QualFilingPersonnelCertMapper.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/QualFilingPersonnelCertMapper.java index d42c135..fb14775 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/QualFilingPersonnelCertMapper.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/QualFilingPersonnelCertMapper.java @@ -2,8 +2,21 @@ package org.qinan.safetyeval.infrastructure.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.PersonnelProfessionalCapabilityCO; import org.qinan.safetyeval.infrastructure.dataobject.QualFilingPersonnelCertDO; +import java.util.List; + @Mapper public interface QualFilingPersonnelCertMapper extends BaseMapper { + + /** + * 根据人员id列表查询专业能力证书类型编码(GROUP_CONCAT聚合) + * + * @param personnelIds 人员id列表 + * @return 人员专业能力证书类型编码聚合列表 + */ + List getProfessionalCapabilityCodeList( + @Param("personnelIds") List personnelIds); } diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/QualFilingPersonnelMapper.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/QualFilingPersonnelMapper.java index 26d7a66..9f8f90b 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/QualFilingPersonnelMapper.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/mapper/QualFilingPersonnelMapper.java @@ -2,8 +2,20 @@ package org.qinan.safetyeval.infrastructure.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.QualFilingPersonnelInfoCO; import org.qinan.safetyeval.infrastructure.dataobject.QualFilingPersonnelDO; +import java.util.List; + @Mapper public interface QualFilingPersonnelMapper extends BaseMapper { + + /** + * 根据备案ID查询备案人员信息(关联机构人员、岗位) + * + * @param fillingId 备案ID + * @return 备案人员信息列表 + */ + List getFillingPersonInfo(@Param("fillingId") Long fillingId); } diff --git a/safety-eval-infrastructure/src/main/resources/mapper/QualFilingPersonnelCertMapper.xml b/safety-eval-infrastructure/src/main/resources/mapper/QualFilingPersonnelCertMapper.xml index f6ec311..8da2a35 100644 --- a/safety-eval-infrastructure/src/main/resources/mapper/QualFilingPersonnelCertMapper.xml +++ b/safety-eval-infrastructure/src/main/resources/mapper/QualFilingPersonnelCertMapper.xml @@ -42,4 +42,17 @@ `id`, `filing_id`, `filing_personnel_id`, `cert_name`, `cert_type_code`, `cert_level`, `cert_category_code`, `cert_category_name`, `operation_category_code`, `operation_category_name`, `cert_no`, `issue_org`, `valid_start_date`, `valid_end_date`, `review_date`, `cert_attachment_url`, `source_cert_id`, `business_scope`, `professional_capability_code`, `industry_professional_standards_id`, `delete_enum`, `remarks`, `create_name`, `update_name`, `tenant_id`, `org_id`, `version`, `create_time`, `update_time`, `create_id`, `update_id`, `env` - + + + + diff --git a/safety-eval-infrastructure/src/main/resources/mapper/QualFilingPersonnelMapper.xml b/safety-eval-infrastructure/src/main/resources/mapper/QualFilingPersonnelMapper.xml index 0a1528e..97592db 100644 --- a/safety-eval-infrastructure/src/main/resources/mapper/QualFilingPersonnelMapper.xml +++ b/safety-eval-infrastructure/src/main/resources/mapper/QualFilingPersonnelMapper.xml @@ -48,4 +48,16 @@ `id`, `filing_id`, `source_personnel_id`, `person_name`, `person_type_code`, `position_name`, `title_code_arr`, `gender_code`, `gender_name`, `birth_date`, `join_work_date`, `id_card_no`, `current_address`, `office_address`, `education_code`, `education_name`, `graduate_school`, `major`, `qual_scope`, `publications`, `professional_level_cert`, `register_engineer_flag`, `ability_declaration`, `work_experience`, `proof_material_url`, `delete_enum`, `remarks`, `create_name`, `update_name`, `tenant_id`, `org_id`, `version`, `create_time`, `update_time`, `create_id`, `update_id`, `env` + +