Commit 067762c9 authored by tianbo's avatar tianbo

feat(jyjc): 报检规则修改:核准项目和开通区域同时存在时匹配规则调整

- 实现通过企业证书序列号查询对应开通业务ID的功能 - 修改RuleActionHandler中的单位匹配逻辑,集成证书对应的开通业务ID验证 - 优化getInspectionUnitListByCodeNoZjjg方法增加证书开通ID过滤条件
parent 6c3959b4
......@@ -51,4 +51,5 @@ public interface JyjcOpeningApplicationMapper extends BaseMapper<JyjcOpeningAppl
*/
List<String> selectUnitCodeListByAgencyClassify(@Param("agencyClassifies") List<String> agencyClassifies);
List<String> selectOpeningSeqInEnterpriseCertSeq(@Param("enterpriseCertSeqs") List<String> enterpriseCertSeqs);
}
......@@ -143,4 +143,38 @@
#{agencyClassify}
</foreach>
</select>
<select id="selectOpeningSeqInEnterpriseCertSeq" resultType="java.lang.String">
SELECT
distinct t.sequence_nbr
FROM
tz_base_enterprise_cert ec
LEFT JOIN (
SELECT
oa.sequence_nbr,
oa.unit_code,
oa.open_biz_type,
his.history_data -> 'baseUnitLicences' -> 0 ->> 'agencyType' AS agency_type
FROM
"tz_jyjc_opening_application" oa
LEFT JOIN tz_jyjc_inspection_history his ON his.s_seq = oa.sequence_nbr
WHERE oa.status = '已完成'
) t ON t.unit_code = ec.unit_code
AND
CASE
WHEN t.open_biz_type = 'jy' THEN
'检验机构'
WHEN t.open_biz_type = 'jc' THEN
'检测机构'
WHEN t.open_biz_type = 'jc-sydw' THEN
'使用单位'
WHEN t.open_biz_type = 'jc-agw' THEN
'安装改造维修单位'
END = ec.unit_type
AND t.agency_type = ec.agency_type
WHERE ec.sequence_nbr in
<foreach collection="enterpriseCertSeqs" item="id" index="index" open="(" close=")" separator=",">
#{id}
</foreach>
</select>
</mapper>
......@@ -304,7 +304,9 @@ public class RuleActionHandler {
// 需要匹配核准项目时,将符合核准项目要求的单位code和指定的单位code取交集,否则直接符合指定的机构
List<String> designatedUnitMatch = isMatchItem ? Arrays.stream(defaultInspectionCode.split(",")).filter(unitCodes::contains).collect(Collectors.toList()) : Arrays.asList(defaultInspectionCode.split(","));
if(!designatedUnitMatch.isEmpty()){
matchEnterpriseInfos = tzBaseEnterpriseInfoMapper.getInspectionUnitListByCodeNoZjjg(designatedUnitMatch, areaCode, openBizType);
// 查询证对应开通业务ID
List<String> certOpeningSeqs = this.getOpeningSeqs(designatedUnitMatch, unitLicenceList);
matchEnterpriseInfos = tzBaseEnterpriseInfoMapper.getInspectionUnitListByCodeNoZjjg(designatedUnitMatch, areaCode, openBizType, certOpeningSeqs);
// 返回下一步是否可不予返回,供下一节点审核时显示判断是否显示不予受理按钮,在提交时数据会写入到主表:true-必须处理,false-可不予受理
this.setIsCanNoAccept(matchEnterpriseInfos, isMustAccept);
}
......@@ -316,6 +318,19 @@ public class RuleActionHandler {
return matchEnterpriseInfos;
}
/**
* 获取指定单位开通的检验机构
*
* @param useCodes
* @param unitLicenceList
*/
private List<String> getOpeningSeqs(List<String> useCodes, List<TzBaseUnitLicence> unitLicenceList) {
// 所有符合资质对应证ID
List<String> enterpriseCertSeqs = unitLicenceList.stream().filter(unitLicence -> useCodes.contains(unitLicence.getUnitCode())).map(TzBaseUnitLicence::getEnterpriseCertSeq).collect(Collectors.toList());
// 正对应开通ID
return openingApplicationMapper.selectOpeningSeqInEnterpriseCertSeq(enterpriseCertSeqs);
}
private List<TzBaseEnterpriseInfoDto> getInspectionUnitListForLegal(Boolean isMatchItem, List<TzBaseUnitLicence> unitLicenceList, Boolean isMatchArea, InspectionEquipInfo inspectionEquipInfo, String openBizType, String defaultInspectionCode, String legalInspectionCodes, Boolean isCanNoAccept) {
// 是否进行属地过滤
......@@ -331,7 +346,9 @@ public class RuleActionHandler {
List<TzBaseEnterpriseInfoDto> matchEnterpriseInfos = new ArrayList<>();
// 按照资质 + areaCode,进行设备单位的筛选
if (!legalUnitCodes.isEmpty()) {
matchEnterpriseInfos = tzBaseEnterpriseInfoMapper.getInspectionUnitListByCodeNoZjjg(legalUnitCodes, areaCode, openBizType);
// 查询证对应开通业务ID
List<String> certOpeningSeqs = this.getOpeningSeqs(legalUnitCodes, unitLicenceList);
matchEnterpriseInfos = tzBaseEnterpriseInfoMapper.getInspectionUnitListByCodeNoZjjg(legalUnitCodes, areaCode, openBizType, certOpeningSeqs);
// 返回下一步是否可不予返回,供下一节点审核时显示判断是否显示不予受理按钮,在提交时数据会写入
this.setIsCanNoAccept(matchEnterpriseInfos, isCanNoAccept);
}
......@@ -347,8 +364,10 @@ public class RuleActionHandler {
String areaCode = isMatchArea ? inspectionEquipInfo.getAreaCode() : "";
// 所有符合单位的code
Set<String> unitCodes = unitLicenceList.stream().map(TzBaseUnitLicence::getUnitCode).collect(Collectors.toSet());
// 查询证对应开通业务ID
List<String> certOpeningSeqs = this.getOpeningSeqs(new ArrayList<>(unitCodes), unitLicenceList);
// 不匹配核准项目时,不按照符合资质过滤,默认开通状态
List<TzBaseEnterpriseInfoDto> matchEnterpriseInfos = tzBaseEnterpriseInfoMapper.getInspectionUnitListByCodeNoZjjg(isMatchItem ? new ArrayList<>(unitCodes) : null, areaCode, openBizType);
List<TzBaseEnterpriseInfoDto> matchEnterpriseInfos = tzBaseEnterpriseInfoMapper.getInspectionUnitListByCodeNoZjjg(isMatchItem ? new ArrayList<>(unitCodes) : null, areaCode, openBizType, certOpeningSeqs);
// 返回下一步是否可不予返回,供下一节点审核时显示判断是否显示不予受理按钮,在提交时数据会写入到主表:true-必须处理,false-可不予受理
this.setIsCanNoAccept(matchEnterpriseInfos, isCanNoAccept);
return matchEnterpriseInfos;
......
......@@ -71,12 +71,14 @@ public interface TzBaseEnterpriseInfoMapper extends BaseMapper<TzBaseEnterpriseI
/**
* 查询非自检机构的单位
* @param codes 单位code
* @param city 开通区县
*
* @param codes 单位code
* @param city 开通区县
* @param openBizType 开通业务类型
* @param certOpeningSeqs 证对应开通ID
* @return 非自检机构开通的单位
*/
List<TzBaseEnterpriseInfoDto> getInspectionUnitListByCodeNoZjjg(@Param("list") List<String> codes, @Param("city") String city, @Param("openBizType") String openBizType);
List<TzBaseEnterpriseInfoDto> getInspectionUnitListByCodeNoZjjg(@Param("list") List<String> codes, @Param("city") String city, @Param("openBizType") String openBizType, @Param("certOpeningSeqs") List<String> certOpeningSeqs);
/**
* 根据ID查找企业详情信息
......
......@@ -304,6 +304,12 @@
<foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
<if test="certOpeningSeqs != null and certOpeningSeqs.size()>0">
AND tjoa.sequence_nbr in
<foreach collection="certOpeningSeqs" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
</if>
<if test="city != null and city != ''">
and tjoa.detection_region like concat('%',#{city},'%')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment