Commit cda5d73c authored by suhuiguang's avatar suhuiguang Committed by hcing

refactor(amos-boot-module-statistics): 重构人员统计分析中的资质查询逻辑

- 提取重复的资质查询条件构建方法,提高代码复用性 - 优化无资质和需要资质的人员查询逻辑,提升代码可读性 - 移除冗余的查询条件组装代码,简化统计分析过程
parents 3a4f61be 3eca3bf5
......@@ -216,6 +216,7 @@ public class JgEquipTransferServiceImpl extends BaseService<JgEquipTransferDto,
.distinct()
.collect(Collectors.toList()), ","));
transfer.setEquAddress(projectContraption.getAddress());
transfer.setSupervisoryCode(projectContraption.getSupervisoryCode());
transfer.setEquCode(org.apache.commons.lang3.StringUtils.join(
idxBizJgRegisterInfoServiceImpl.lambdaQuery()
.in(IdxBizJgRegisterInfo::getRecord, records)
......
......@@ -1532,24 +1532,9 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
ScoreMode.None
);
// 无资质查询
BoolQueryBuilder noCertQuery = QueryBuilders.boolQuery()
.should(QueryBuilders.wildcardQuery("newPost", "*66151*"))
.should(QueryBuilders.wildcardQuery("newPost", "*66152*"))
.should(QueryBuilders.wildcardQuery("newPost", "*6552*"))
.should(QueryBuilders.wildcardQuery("newPost", "*6763*"))
.should(QueryBuilders.wildcardQuery("subPost", "*6713*"))
.should(QueryBuilders.wildcardQuery("subPost", "*6764*"))
.should(QueryBuilders.wildcardQuery("subPost", "*6765*"))
.minimumShouldMatch(1);
BoolQueryBuilder noCertQuery = this.getNotLicencesBuilderWithPerson();
// 无资质要求查询
BoolQueryBuilder noCertRequestQuery = QueryBuilders.boolQuery()
.mustNot(QueryBuilders.wildcardQuery("newPost", "*66151*"))
.mustNot(QueryBuilders.wildcardQuery("newPost", "*66152*"))
.mustNot(QueryBuilders.wildcardQuery("newPost", "*6552*"))
.mustNot(QueryBuilders.wildcardQuery("newPost", "*6763*"))
.mustNot(QueryBuilders.wildcardQuery("subPost", "*6713*"))
.mustNot(QueryBuilders.wildcardQuery("subPost", "*6764*"))
.mustNot(QueryBuilders.wildcardQuery("subPost", "*6765*"));
BoolQueryBuilder noCertRequestQuery = this.getNotNeedLicencesBuilderWithPerson();
if (value.equals("1")) {
if (itemCondition.equals("eq") || itemCondition.equals("in")) {
......@@ -1662,6 +1647,43 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
}
}
/**
* 需要资质的人员查询构造条件
* 无资质:需要资质但是没有填写
* @return
*/
private BoolQueryBuilder getNotLicencesBuilderWithPerson() {
return QueryBuilders.boolQuery()
.should(QueryBuilders.wildcardQuery("newPost", "*66151*"))
.should(QueryBuilders.wildcardQuery("newPost", "*66152*"))
.should(QueryBuilders.boolQuery().must(QueryBuilders.wildcardQuery("newPost", "*6552*"))
.must(QueryBuilders.wildcardQuery("subPost", "*6713*")))
.should(QueryBuilders.boolQuery().must(QueryBuilders.wildcardQuery("newPost", "*6763*"))
.should(QueryBuilders.wildcardQuery("subPost", "*6764*"))
.should(QueryBuilders.wildcardQuery("subPost", "*6765*"))
.minimumShouldMatch(1)
)
.minimumShouldMatch(1);
}
/**
* 无资质要求的人员查询构造条件
* 无资质要求:不需要资质
* @return
*/
private BoolQueryBuilder getNotNeedLicencesBuilderWithPerson() {
return QueryBuilders.boolQuery()
.mustNot(QueryBuilders.wildcardQuery("newPost", "*66151*"))
.mustNot(QueryBuilders.wildcardQuery("newPost", "*66152*"))
.mustNot(QueryBuilders.boolQuery().must(QueryBuilders.wildcardQuery("newPost", "*6552*"))
.must(QueryBuilders.wildcardQuery("subPost", "*6713*")))
.mustNot(QueryBuilders.boolQuery().must(QueryBuilders.wildcardQuery("newPost", "*6763*"))
.should(QueryBuilders.wildcardQuery("subPost", "*6764*"))
.should(QueryBuilders.wildcardQuery("subPost", "*6765*"))
.minimumShouldMatch(1)
);
}
private void companyFieldHandle(String field, String itemCondition, Object value, String isOr, EnhancedDynamicQueryBuilder builder) {
if (field.equals("itemCode") || field.equals("subItemCode") || field.equals("permitStatus")) {
String path = "licenses";
......@@ -3052,17 +3074,8 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
String path = "licenses";
String nestedField = path + ".expiryDate";
// 不需要资质的人员查询构造条件
BoolQueryBuilder notNeedLicensesQueryBuilder = QueryBuilders.boolQuery()
.mustNot(QueryBuilders.wildcardQuery("newPost", "*66151*"))
.mustNot(QueryBuilders.wildcardQuery("newPost", "*66152*"))
.mustNot(QueryBuilders.wildcardQuery("newPost", "*6552*"))
.mustNot(QueryBuilders.wildcardQuery("newPost", "*6763*"))
.mustNot(QueryBuilders.wildcardQuery("subPost", "*6713*"))
.mustNot(QueryBuilders.wildcardQuery("subPost", "*6764*"))
.mustNot(QueryBuilders.wildcardQuery("subPost", "*6765*"));
// 需要资质的人员必须条件
BoolQueryBuilder needLicensesQueryBuilder = this.getNotLicencesBuilderWithPerson();
// 资质正常
BoolQueryBuilder normalBoolQuery = QueryBuilderUtils.copyBoolQuery(boolQuery);
NestedQueryBuilder normalNestedQuery = QueryBuilders.nestedQuery(
......@@ -3071,7 +3084,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
ScoreMode.None
);
normalBoolQuery.must(normalNestedQuery);
normalBoolQuery.must(notNeedLicensesQueryBuilder);
normalBoolQuery.must(needLicensesQueryBuilder);
Long normalCount = getStatisticCount(normalBoolQuery, StatisticalAnalysisEnum.person.getKey());
result.put("zzzc", normalCount);
......@@ -3083,7 +3096,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
ScoreMode.None
);
nearBoolQuery.must(nearNestedQuery);
nearBoolQuery.must(notNeedLicensesQueryBuilder);
nearBoolQuery.must(needLicensesQueryBuilder);
Long nearCount = getStatisticCount(nearBoolQuery, StatisticalAnalysisEnum.person.getKey());
result.put("zzlq", nearCount);
......@@ -3095,7 +3108,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
ScoreMode.None
);
overBoolQuery.must(overNestedQuery);
overBoolQuery.must(notNeedLicensesQueryBuilder);
overBoolQuery.must(needLicensesQueryBuilder);
Long overCount = getStatisticCount(overBoolQuery, StatisticalAnalysisEnum.person.getKey());
result.put("zzcq", overCount);
......@@ -3107,7 +3120,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
ScoreMode.None
);
nothingBoolQuery.must(nothingNestedQuery);
nothingBoolQuery.must(notNeedLicensesQueryBuilder);
nothingBoolQuery.must(needLicensesQueryBuilder);
Long nothingCount = getStatisticCount(nothingBoolQuery, StatisticalAnalysisEnum.person.getKey());
result.put("wyxq", nothingCount);
......@@ -3121,19 +3134,10 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
existsQuery(nestedField),
ScoreMode.None
);
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery()
.should(QueryBuilders.wildcardQuery("newPost", "*66151*"))
.should(QueryBuilders.wildcardQuery("newPost", "*66152*"))
.should(QueryBuilders.wildcardQuery("newPost", "*6552*"))
.should(QueryBuilders.wildcardQuery("newPost", "*6763*"))
.should(QueryBuilders.wildcardQuery("subPost", "*6713*"))
.should(QueryBuilders.wildcardQuery("subPost", "*6764*"))
.should(QueryBuilders.wildcardQuery("subPost", "*6765*"))
.minimumShouldMatch(1);
EnhancedDynamicQueryBuilder noLicensesQuery = new EnhancedDynamicQueryBuilder();
noLicensesQuery.add(QueryBuilders.boolQuery().mustNot(nestedQuery), and);
noLicensesQuery.add(queryBuilder, and);
noLicensesQuery.add(needLicensesQueryBuilder, and);
enhancedDynamicQueryBuilder.add(noLicensesQuery.build(), "AND");
mainBuilder.and(enhancedDynamicQueryBuilder.build());
......@@ -3142,19 +3146,20 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
result.put("wzz", otLicensesCount);
// 无资质要求查询
BoolQueryBuilder notNeedLicensesBoolQuery = QueryBuilderUtils.copyBoolQuery(boolQuery);
DynamicQueryBuilder mainBuilderNotNeed = new DynamicQueryBuilder();
EnhancedDynamicQueryBuilder dynamicQueryBuilder = new EnhancedDynamicQueryBuilder();
EnhancedDynamicQueryBuilder notNeedLicensesQuery = new EnhancedDynamicQueryBuilder();
notNeedLicensesQuery.add(notNeedLicensesQueryBuilder, and);
dynamicQueryBuilder.add(notNeedLicensesQuery.build(), "AND");
mainBuilderNotNeed.and(dynamicQueryBuilder.build());
notNeedLicensesBoolQuery.must(mainBuilderNotNeed.build());
Long notNeedLicensesCount = getStatisticCount(notNeedLicensesBoolQuery, StatisticalAnalysisEnum.person.getKey());
result.put("wzzyq", notNeedLicensesCount);
// BoolQueryBuilder notNeedLicensesBoolQuery = QueryBuilderUtils.copyBoolQuery(boolQuery);
// // 不需要资质的人员查询构造条件
// BoolQueryBuilder notNeedLicensesQueryBuilder = this.getNotNeedLicencesBuilderWithPerson();
// DynamicQueryBuilder mainBuilderNotNeed = new DynamicQueryBuilder();
// EnhancedDynamicQueryBuilder dynamicQueryBuilder = new EnhancedDynamicQueryBuilder();
//
// EnhancedDynamicQueryBuilder notNeedLicensesQuery = new EnhancedDynamicQueryBuilder();
// notNeedLicensesQuery.add(notNeedLicensesQueryBuilder, and);
// dynamicQueryBuilder.add(notNeedLicensesQuery.build(), "AND");
//
// mainBuilderNotNeed.and(dynamicQueryBuilder.build());
// notNeedLicensesBoolQuery.must(mainBuilderNotNeed.build());
// Long notNeedLicensesCount = getStatisticCount(notNeedLicensesBoolQuery, StatisticalAnalysisEnum.person.getKey());
// result.put("wzzyq", notNeedLicensesCount);
return result;
}
......
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