luotaiqian 2026-07-29 15:08:19 +08:00
parent 3b83a3f948
commit 7bad891f04
5 changed files with 42 additions and 13 deletions

View File

@ -3,6 +3,7 @@ package org.qinan.safetyeval.infrastructure.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.qinan.safetyeval.client.co.OrgPersonnelCertCapabilityComplianceCheckCO;
import org.qinan.safetyeval.client.co.OrgPersonnelCertDetailCO; import org.qinan.safetyeval.client.co.OrgPersonnelCertDetailCO;
import org.qinan.safetyeval.infrastructure.dataobject.OrgPersonnelCertDO; import org.qinan.safetyeval.infrastructure.dataobject.OrgPersonnelCertDO;
@ -17,7 +18,8 @@ public interface OrgPersonnelCertMapper extends BaseMapper<OrgPersonnelCertDO> {
* @param personnelIds id * @param personnelIds id
* @return * @return
*/ */
List<org.qinan.safetyeval.client.co.OrgPersonnelCertCapabilityComplianceCheckCO> selectCapabilityByPersonnelIds(@Param("personnelIds") List<Long> personnelIds); List<OrgPersonnelCertCapabilityComplianceCheckCO> selectCapabilityByPersonnelIds(
@Param("personnelIds") List<Long> personnelIds);
/** /**
* IDindustry_professional_standards * IDindustry_professional_standards

View File

@ -3,6 +3,7 @@ package org.qinan.safetyeval.infrastructure.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.qinan.safetyeval.client.co.IndustryProfessionalPersonCo;
import org.qinan.safetyeval.infrastructure.dataobject.OrgPersonnelDO; import org.qinan.safetyeval.infrastructure.dataobject.OrgPersonnelDO;
import org.qinan.safetyeval.infrastructure.persistence.domainobject.OrgPersonnelLeaderCountDO; import org.qinan.safetyeval.infrastructure.persistence.domainobject.OrgPersonnelLeaderCountDO;
@ -18,4 +19,12 @@ public interface OrgPersonnelMapper extends BaseMapper<OrgPersonnelDO> {
* @return * @return
*/ */
OrgPersonnelLeaderCountDO countLeaderFlags(@Param("ids") List<Long> ids); OrgPersonnelLeaderCountDO countLeaderFlags(@Param("ids") List<Long> ids);
/**
* idcode basic_discipline_major
*
* @param ids idorg_personnel.id
* @return
*/
List<IndustryProfessionalPersonCo> selectProfessionalCapabilityByPersonnelIds(@Param("ids") List<Long> ids);
} }

View File

@ -11,7 +11,6 @@ import org.qinan.safetyeval.client.co.QualFilingComplianceCheckResultCO;
import org.qinan.safetyeval.client.dto.*; import org.qinan.safetyeval.client.dto.*;
import org.qinan.safetyeval.domain.constant.*; import org.qinan.safetyeval.domain.constant.*;
import org.qinan.safetyeval.domain.exception.BizException; import org.qinan.safetyeval.domain.exception.BizException;
import org.qinan.safetyeval.infrastructure.convertor.QualFilingPersonnelCoConvertor;
import org.qinan.safetyeval.infrastructure.mapper.OrgPersonnelCertMapper; import org.qinan.safetyeval.infrastructure.mapper.OrgPersonnelCertMapper;
import org.qinan.safetyeval.infrastructure.mapper.OrgPersonnelMapper; import org.qinan.safetyeval.infrastructure.mapper.OrgPersonnelMapper;
import org.qinan.safetyeval.infrastructure.persistence.domainobject.IndustryProfessionalStandardsDO; import org.qinan.safetyeval.infrastructure.persistence.domainobject.IndustryProfessionalStandardsDO;
@ -99,7 +98,8 @@ public class ComplianceCheckUtil {
* @param personnelList * @param personnelList
* @return * @return
*/ */
private List<OrgPersonnelCertCapabilityComplianceCheckCO> queryOrgPersonnelCertCapability(List<QualFilingPersonnelAddCmd> personnelList) { private List<OrgPersonnelCertCapabilityComplianceCheckCO> queryOrgPersonnelCertCapability(
List<QualFilingPersonnelAddCmd> personnelList) {
if (CollectionUtils.isEmpty(personnelList)) { if (CollectionUtils.isEmpty(personnelList)) {
return Collections.emptyList(); return Collections.emptyList();
} }
@ -167,8 +167,9 @@ public class ComplianceCheckUtil {
/** /**
* >= 30% >= 30% >= 60% * >= 30% >= 30% >= 60%
*/ */
private QualFilingComplianceCheckResultCO checkPersonnelRatio(List<String> businessScope private QualFilingComplianceCheckResultCO checkPersonnelRatio(
, List<QualFilingPersonnelAddCmd> personnelList, List<OrgPersonnelCertCapabilityComplianceCheckCO> personnelCertCoList, boolean throwException) { List<String> businessScope, List<QualFilingPersonnelAddCmd> personnelList
, List<OrgPersonnelCertCapabilityComplianceCheckCO> personnelCertCoList, boolean throwException) {
if (personnelList == null || personnelList.isEmpty()) { if (personnelList == null || personnelList.isEmpty()) {
return buildResult(QualFilingComplianceCheckEnum.PERSONNEL_RATIO, return buildResult(QualFilingComplianceCheckEnum.PERSONNEL_RATIO,
QualFilingComplianceCheckEnum.STATUS_FAIL, "无人员数据"); QualFilingComplianceCheckEnum.STATUS_FAIL, "无人员数据");
@ -188,9 +189,13 @@ public class ComplianceCheckUtil {
&& sumRate >= 60; && sumRate >= 60;
String currentValue = "注册安全工程师 " + engineerRate + "%,高级职称 " + seniorTitleRate + "%,合计 " + sumRate + "%"; String currentValue = "注册安全工程师 " + engineerRate + "%,高级职称 " + seniorTitleRate + "%,合计 " + sumRate + "%";
// 根据人员id查询专业能力code并设置到CO中
List<IndustryProfessionalPersonCo> personnelCoList = SpringUtil.getBean(QualFilingPersonnelCoConvertor.class) List<Long> sourcePersonnelIds = personnelList.stream()
.convertCmdsToCos(personnelList); .map(QualFilingPersonnelAddCmd::getSourcePersonnelId)
.distinct()
.collect(Collectors.toList());
List<IndustryProfessionalPersonCo> personnelCoList = SpringUtil.getBean(OrgPersonnelMapper.class)
.selectProfessionalCapabilityByPersonnelIds(sourcePersonnelIds);
Pair<Boolean, String> booleanStringPair = industryProfessionalStandardsValid( Pair<Boolean, String> booleanStringPair = industryProfessionalStandardsValid(
businessScope, personnelCoList, personnelCertCoList); businessScope, personnelCoList, personnelCertCoList);
boolean personPassed = Boolean.TRUE.equals(booleanStringPair.getKey()); boolean personPassed = Boolean.TRUE.equals(booleanStringPair.getKey());

View File

@ -45,11 +45,12 @@
<select id="selectCapabilityByPersonnelIds" <select id="selectCapabilityByPersonnelIds"
resultType="org.qinan.safetyeval.client.co.OrgPersonnelCertCapabilityComplianceCheckCO"> resultType="org.qinan.safetyeval.client.co.OrgPersonnelCertCapabilityComplianceCheckCO">
SELECT personnel_id, SELECT personnel_id,
business_scope, business_scope,
professional_capability_code, ips.professional_capability_code,
industry_professional_standards_id industry_professional_standards_id
FROM org_personnel_cert FROM org_personnel_cert orc
WHERE delete_enum = 'false' join industry_professional_standards ips on orc.industry_professional_standards_id = ips.id
WHERE ips.delete_enum = 'false'
AND personnel_id IN AND personnel_id IN
<foreach collection="personnelIds" item="personnelId" open="(" separator="," close=")"> <foreach collection="personnelIds" item="personnelId" open="(" separator="," close=")">
#{personnelId} #{personnelId}

View File

@ -54,4 +54,16 @@
</foreach> </foreach>
</select> </select>
<!-- 根据人员id列表查询专业能力code关联 basic_discipline_major -->
<select id="selectProfessionalCapabilityByPersonnelIds" resultType="org.qinan.safetyeval.client.co.IndustryProfessionalPersonCo">
SELECT p.id AS source_personnel_id, bdm.professional_capability_code, bdm.industry_code
FROM org_personnel p
JOIN basic_discipline_major bdm ON p.basic_discipline_major_id = bdm.id
WHERE p.delete_enum = 'false'
AND p.id IN
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</select>
</mapper> </mapper>