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 ...@@ -51,4 +51,5 @@ public interface JyjcOpeningApplicationMapper extends BaseMapper<JyjcOpeningAppl
*/ */
List<String> selectUnitCodeListByAgencyClassify(@Param("agencyClassifies") List<String> agencyClassifies); List<String> selectUnitCodeListByAgencyClassify(@Param("agencyClassifies") List<String> agencyClassifies);
List<String> selectOpeningSeqInEnterpriseCertSeq(@Param("enterpriseCertSeqs") List<String> enterpriseCertSeqs);
} }
...@@ -143,4 +143,38 @@ ...@@ -143,4 +143,38 @@
#{agencyClassify} #{agencyClassify}
</foreach> </foreach>
</select> </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> </mapper>
...@@ -304,7 +304,9 @@ public class RuleActionHandler { ...@@ -304,7 +304,9 @@ public class RuleActionHandler {
// 需要匹配核准项目时,将符合核准项目要求的单位code和指定的单位code取交集,否则直接符合指定的机构 // 需要匹配核准项目时,将符合核准项目要求的单位code和指定的单位code取交集,否则直接符合指定的机构
List<String> designatedUnitMatch = isMatchItem ? Arrays.stream(defaultInspectionCode.split(",")).filter(unitCodes::contains).collect(Collectors.toList()) : Arrays.asList(defaultInspectionCode.split(",")); List<String> designatedUnitMatch = isMatchItem ? Arrays.stream(defaultInspectionCode.split(",")).filter(unitCodes::contains).collect(Collectors.toList()) : Arrays.asList(defaultInspectionCode.split(","));
if(!designatedUnitMatch.isEmpty()){ 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-可不予受理 // 返回下一步是否可不予返回,供下一节点审核时显示判断是否显示不予受理按钮,在提交时数据会写入到主表:true-必须处理,false-可不予受理
this.setIsCanNoAccept(matchEnterpriseInfos, isMustAccept); this.setIsCanNoAccept(matchEnterpriseInfos, isMustAccept);
} }
...@@ -316,6 +318,19 @@ public class RuleActionHandler { ...@@ -316,6 +318,19 @@ public class RuleActionHandler {
return matchEnterpriseInfos; 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) { 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 { ...@@ -331,7 +346,9 @@ public class RuleActionHandler {
List<TzBaseEnterpriseInfoDto> matchEnterpriseInfos = new ArrayList<>(); List<TzBaseEnterpriseInfoDto> matchEnterpriseInfos = new ArrayList<>();
// 按照资质 + areaCode,进行设备单位的筛选 // 按照资质 + areaCode,进行设备单位的筛选
if (!legalUnitCodes.isEmpty()) { 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); this.setIsCanNoAccept(matchEnterpriseInfos, isCanNoAccept);
} }
...@@ -347,8 +364,10 @@ public class RuleActionHandler { ...@@ -347,8 +364,10 @@ public class RuleActionHandler {
String areaCode = isMatchArea ? inspectionEquipInfo.getAreaCode() : ""; String areaCode = isMatchArea ? inspectionEquipInfo.getAreaCode() : "";
// 所有符合单位的code // 所有符合单位的code
Set<String> unitCodes = unitLicenceList.stream().map(TzBaseUnitLicence::getUnitCode).collect(Collectors.toSet()); 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-可不予受理 // 返回下一步是否可不予返回,供下一节点审核时显示判断是否显示不予受理按钮,在提交时数据会写入到主表:true-必须处理,false-可不予受理
this.setIsCanNoAccept(matchEnterpriseInfos, isCanNoAccept); this.setIsCanNoAccept(matchEnterpriseInfos, isCanNoAccept);
return matchEnterpriseInfos; return matchEnterpriseInfos;
......
...@@ -71,12 +71,14 @@ public interface TzBaseEnterpriseInfoMapper extends BaseMapper<TzBaseEnterpriseI ...@@ -71,12 +71,14 @@ public interface TzBaseEnterpriseInfoMapper extends BaseMapper<TzBaseEnterpriseI
/** /**
* 查询非自检机构的单位 * 查询非自检机构的单位
*
* @param codes 单位code * @param codes 单位code
* @param city 开通区县 * @param city 开通区县
* @param openBizType 开通业务类型 * @param openBizType 开通业务类型
* @param certOpeningSeqs 证对应开通ID
* @return 非自检机构开通的单位 * @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查找企业详情信息 * 根据ID查找企业详情信息
......
...@@ -304,6 +304,12 @@ ...@@ -304,6 +304,12 @@
<foreach collection="list" item="item" index="index" open="(" close=")" separator=","> <foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
#{item} #{item}
</foreach> </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>
<if test="city != null and city != ''"> <if test="city != null and city != ''">
and tjoa.detection_region like concat('%',#{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