import
parent
a0d18e1bce
commit
3ead1e18b5
|
|
@ -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<QualFilingPersonnelInfoCO> personnelList) {
|
||||
if (CollectionUtils.isEmpty(personnelList)) {
|
||||
return;
|
||||
}
|
||||
List<Long> personnelIdList = personnelList.stream()
|
||||
.map(QualFilingPersonnelInfoCO::getSourcePersonnelId)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toList());
|
||||
if (CollectionUtils.isEmpty(personnelIdList)) {
|
||||
return;
|
||||
}
|
||||
List<PersonnelProfessionalCapabilityCO> capabilityList =
|
||||
qualFilingPersonnelCertMapper.getProfessionalCapabilityCodeList(personnelIdList);
|
||||
Map<Long, List<String>> 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<String> codes = capabilityMap.get(personnel.getSourcePersonnelId());
|
||||
if (codes != null) {
|
||||
personnel.setProfessionalCapabilityCodeList(codes);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public PageResult<QualFilingCO> page(QualFilingPageQuery query) {
|
||||
QualFilingQuery domainQuery = new QualFilingQuery();
|
||||
domainQuery.setPageNum(query.getCurrent());
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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<QualFilingPersonnelCertDO> {
|
||||
|
||||
/**
|
||||
* 根据人员id列表查询专业能力证书类型编码(GROUP_CONCAT聚合)
|
||||
*
|
||||
* @param personnelIds 人员id列表
|
||||
* @return 人员专业能力证书类型编码聚合列表
|
||||
*/
|
||||
List<PersonnelProfessionalCapabilityCO> getProfessionalCapabilityCodeList(
|
||||
@Param("personnelIds") List<Long> personnelIds);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<QualFilingPersonnelDO> {
|
||||
|
||||
/**
|
||||
* 根据备案ID查询备案人员信息(关联机构人员、岗位)
|
||||
*
|
||||
* @param fillingId 备案ID
|
||||
* @return 备案人员信息列表
|
||||
*/
|
||||
List<QualFilingPersonnelInfoCO> getFillingPersonInfo(@Param("fillingId") Long fillingId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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`
|
||||
</sql>
|
||||
|
||||
</mapper>
|
||||
<!-- 根据人员id列表查询专业能力证书类型编码(GROUP_CONCAT聚合) -->
|
||||
<select id="getProfessionalCapabilityCodeList"
|
||||
resultType="org.qinan.safetyeval.client.co.PersonnelProfessionalCapabilityCO">
|
||||
SELECT personnel_id,
|
||||
GROUP_CONCAT(cert_type_code) AS professionalCapabilityCodeList
|
||||
FROM org_personnel_cert
|
||||
WHERE personnel_id IN
|
||||
<foreach collection="personnelIds" item="personnelId" open="(" separator="," close=")">
|
||||
#{personnelId}
|
||||
</foreach>
|
||||
GROUP BY personnel_id
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
|
|
|||
|
|
@ -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`
|
||||
</sql>
|
||||
|
||||
<select id="getFillingPersonInfo" resultType="org.qinan.safetyeval.client.co.QualFilingPersonnelInfoCO">
|
||||
SELECT fp.source_personnel_id, fp.id, p.user_name personName, po.position_name, p.post_id, p.gender_code, p.gender_name
|
||||
, p.birth_date, p.register_engineer_flag, p.evaluator_cert_no
|
||||
FROM org_personnel p
|
||||
join qual_filing_personnel fp on p.id = fp.source_personnel_id
|
||||
left join org_department d on p.dept_id = d.id and d.delete_enum = 'false'
|
||||
left join org_position po on po.id = p.post_id and po.delete_enum = 'false'
|
||||
WHERE fp.filing_id = #{fillingId}
|
||||
and fp.delete_enum = 'false'
|
||||
and p.delete_enum = 'false'
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
|
|
|||
Loading…
Reference in New Issue