Commit 54a74bd0 authored by tianyiming's avatar tianyiming

调整有无资质查询,以及资质状态查询调整

parent 9cba217c
...@@ -55,6 +55,8 @@ import java.time.LocalDate; ...@@ -55,6 +55,8 @@ import java.time.LocalDate;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import static org.elasticsearch.index.query.QueryBuilders.existsQuery;
/** /**
* 综合统计分析服务实现类 * 综合统计分析服务实现类
* *
...@@ -193,6 +195,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -193,6 +195,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
page.setRecords(new ArrayList<>()); page.setRecords(new ArrayList<>());
page.setTotal(0); page.setTotal(0);
result.put("pageData", page); result.put("pageData", page);
result.put("businessType", businessType);
return result; return result;
} }
if (StatisticalAnalysisEnum.equip.getCode().equals(businessType)) { if (StatisticalAnalysisEnum.equip.getCode().equals(businessType)) {
...@@ -202,6 +205,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -202,6 +205,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
} else { } else {
result = queryPersonPage(filter, page, current, size); result = queryPersonPage(filter, page, current, size);
} }
result.put("businessType", businessType);
return result; return result;
} }
...@@ -229,30 +233,53 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -229,30 +233,53 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
if (!((JSONArray) v).contains("all")) { if (!((JSONArray) v).contains("all")) {
String field = k; String field = k;
if (k.equals("equipType") || k.equals("unitType") || k.equals("newPost") || k.equals("subPost")) { if (k.equals("equipType") || k.equals("unitType") || k.equals("newPost") || k.equals("subPost")) {
boolMust.must(QueryBuilders.existsQuery(field)); boolMust.must(existsQuery(field));
((JSONArray) v).forEach(item -> boolMust.must(QueryBuilders.wildcardQuery(k.equals("equipType") ? field : field + ".keyword", "*" + item + "*"))); ((JSONArray) v).forEach(item -> boolMust.must(QueryBuilders.wildcardQuery(k.equals("equipType") ? field : field + ".keyword", "*" + item + "*")));
// boolMust.minimumShouldMatch(1);
} else if (k.equals("education")) { } else if (k.equals("education")) {
boolMust.must(QueryBuilders.existsQuery(field)); boolMust.must(existsQuery(field));
TermsQueryBuilder termsQuery = QueryBuilders.termsQuery(field, (JSONArray) v); TermsQueryBuilder termsQuery = QueryBuilders.termsQuery(field, (JSONArray) v);
boolMust.must(termsQuery); boolMust.must(termsQuery);
} else if (k.equals("certNo") || k.equals("expiryDate") || k.equals("permissionLevel") || k.equals("certType") || k.equals("jobItem") || k.equals("permissionItem")) { } else if (k.equals("certNo") || k.equals("expiryDate") || k.equals("permissionLevel") || k.equals("certType") || k.equals("jobItem") || k.equals("permissionItem")) {
String path = "licenses"; String path = "licenses";
((JSONArray) v).forEach(item -> { ((JSONArray) v).forEach(item -> {
String nestedField = path + "." + k; String nestedField = path + "." + k;
// 根据证书编号判断有无资质 // 根据证书编号判断有无资质
if (k.equals("certNo")) { if (k.equals("certNo")) {
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery( NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path, path,
QueryBuilders.existsQuery(nestedField), existsQuery(nestedField),
ScoreMode.Avg ScoreMode.Avg
); );
// 以下人员类型有资质要求
// 人员类型(newPost):检验人员:66151、检测人员:66152
// 人员子类型(subPost): 持证人员:6712、持证人员(P):6764、持证人员(R2):6765
if (item.equals("1")) { if (item.equals("1")) {
boolMust.must(nestedQuery); boolMust.must(nestedQuery);
} else { } else if (item.equals("0")) {
// 无资质
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery()
.should(QueryBuilders.wildcardQuery("newPost.keyword", "*66151*"))
.should(QueryBuilders.wildcardQuery("newPost.keyword", "*66152*"))
.should(QueryBuilders.wildcardQuery("subPost.keyword", "*6712*"))
.should(QueryBuilders.wildcardQuery("subPost.keyword", "*6764*"))
.should(QueryBuilders.wildcardQuery("subPost.keyword", "*6765*"))
.minimumShouldMatch(1);
boolMust.must(queryBuilder);
boolMust.mustNot(nestedQuery); boolMust.mustNot(nestedQuery);
} else {
// 无资质要求
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery()
.mustNot(QueryBuilders.wildcardQuery("newPost.keyword", "*66151*"))
.mustNot(QueryBuilders.wildcardQuery("newPost.keyword", "*66152*"))
.mustNot(QueryBuilders.wildcardQuery("subPost.keyword", "*6712*"))
.mustNot(QueryBuilders.wildcardQuery("subPost.keyword", "*6764*"))
.mustNot(QueryBuilders.wildcardQuery("subPost.keyword", "*6765*"));
boolMust.must(queryBuilder);
} }
} else if (k.equals("expiryDate")) { } else if (k.equals("expiryDate")) {
boolMust.must(existsQuery(nestedField));
if (item.equals("overdue")) { if (item.equals("overdue")) {
// 超期:小于当前日期 // 超期:小于当前日期
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery( NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
...@@ -277,14 +304,6 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -277,14 +304,6 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
ScoreMode.Avg ScoreMode.Avg
); );
boolMust.must(nestedQuery); boolMust.must(nestedQuery);
} else {
// 无资质要求
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path,
QueryBuilders.existsQuery(nestedField),
ScoreMode.Avg
);
boolMust.mustNot(nestedQuery);
} }
} else if (k.equals("certType") || k.equals("permissionLevel")) { } else if (k.equals("certType") || k.equals("permissionLevel")) {
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery( NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
...@@ -393,7 +412,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -393,7 +412,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
BoolQueryBuilder boolMust = QueryBuilders.boolQuery(); BoolQueryBuilder boolMust = QueryBuilders.boolQuery();
String orgCode = filter.getString("orgCode"); String orgCode = filter.getString("orgCode");
boolMust.must(QueryBuilders.prefixQuery("superviseOrgCode", orgCode)); boolMust.must(QueryBuilders.prefixQuery("superviseOrgCode.keyword", orgCode));
JSONObject filterParams = null; JSONObject filterParams = null;
if (!ObjectUtils.isEmpty(filter.get("filterParams"))) { if (!ObjectUtils.isEmpty(filter.get("filterParams"))) {
filterParams = JSONObject.parseObject(JSONObject.toJSONString(filter.get("filterParams"))); filterParams = JSONObject.parseObject(JSONObject.toJSONString(filter.get("filterParams")));
...@@ -405,11 +424,11 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -405,11 +424,11 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
if (!((JSONArray) v).contains("all")) { if (!((JSONArray) v).contains("all")) {
String field = k; String field = k;
if (k.equals("regulatoryLabels") || k.equals("equipCategory") || k.equals("unitType")) { if (k.equals("regulatoryLabels") || k.equals("equipCategory") || k.equals("unitType")) {
boolMust.must(QueryBuilders.existsQuery(field)); boolMust.must(existsQuery(field));
((JSONArray) v).forEach(item -> boolMust.should(QueryBuilders.wildcardQuery(field + ".keyword", "*" + item + "*"))); ((JSONArray) v).forEach(item -> boolMust.should(QueryBuilders.wildcardQuery(field + ".keyword", "*" + item + "*")));
boolMust.minimumShouldMatch(1); boolMust.minimumShouldMatch(1);
} else if (k.equals("industrySupervisor") || k.equals("operatingStatus")) { } else if (k.equals("industrySupervisor") || k.equals("operatingStatus")) {
boolMust.must(QueryBuilders.existsQuery(field)); boolMust.must(existsQuery(field));
TermsQueryBuilder termsQuery = QueryBuilders.termsQuery(field + ".keyword", ((JSONArray) v).get(0)); TermsQueryBuilder termsQuery = QueryBuilders.termsQuery(field + ".keyword", ((JSONArray) v).get(0));
boolMust.must(termsQuery); boolMust.must(termsQuery);
} else if (k.equals("itemCode") || k.equals("subItemCode") || k.equals("permitStatus")) { } else if (k.equals("itemCode") || k.equals("subItemCode") || k.equals("permitStatus")) {
...@@ -550,7 +569,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -550,7 +569,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
boolMust.must(queryBuilder.build()); boolMust.must(queryBuilder.build());
} else if (k.equals("NEXT_INSPECT_DATE")) { } else if (k.equals("NEXT_INSPECT_DATE")) {
String finalField = field; String finalField = field;
boolMust.must(QueryBuilders.existsQuery(finalField)); boolMust.must(existsQuery(finalField));
EnhancedDynamicQueryBuilder queryBuilder = new EnhancedDynamicQueryBuilder(); EnhancedDynamicQueryBuilder queryBuilder = new EnhancedDynamicQueryBuilder();
((JSONArray) v).forEach(item -> { ((JSONArray) v).forEach(item -> {
if (item.equals("overdue")) { if (item.equals("overdue")) {
...@@ -567,7 +586,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -567,7 +586,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
boolMust.must(queryBuilder.build()); boolMust.must(queryBuilder.build());
} else if (k.equals("USC_DATE")) { } else if (k.equals("USC_DATE")) {
String finalField = field; String finalField = field;
boolMust.must(QueryBuilders.existsQuery(finalField)); boolMust.must(existsQuery(finalField));
EnhancedDynamicQueryBuilder queryBuilder = new EnhancedDynamicQueryBuilder(); EnhancedDynamicQueryBuilder queryBuilder = new EnhancedDynamicQueryBuilder();
((JSONArray) v).forEach(item -> { ((JSONArray) v).forEach(item -> {
if (item.equals("15")) { if (item.equals("15")) {
...@@ -589,10 +608,10 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -589,10 +608,10 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
String finalField = k; String finalField = k;
((JSONArray) v).forEach(item -> { ((JSONArray) v).forEach(item -> {
if (item.equals("1")) { if (item.equals("1")) {
boolMust.must(QueryBuilders.existsQuery(finalField)); boolMust.must(existsQuery(finalField));
boolMust.mustNot(QueryBuilders.termQuery(finalField, "null")); boolMust.mustNot(QueryBuilders.termQuery(finalField, "null"));
} else { } else {
boolMust.mustNot(QueryBuilders.existsQuery(finalField)); boolMust.mustNot(existsQuery(finalField));
} }
}); });
} else if (k.equals("createDate")) { } else if (k.equals("createDate")) {
...@@ -608,7 +627,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -608,7 +627,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
} else if (k.equals("EQU_DEFINE")) { } else if (k.equals("EQU_DEFINE")) {
field = "EQU_DEFINE_CODE"; field = "EQU_DEFINE_CODE";
} }
boolMust.must(QueryBuilders.existsQuery(field)); boolMust.must(existsQuery(field));
TermsQueryBuilder termsQuery = QueryBuilders.termsQuery(field, (JSONArray) v); TermsQueryBuilder termsQuery = QueryBuilders.termsQuery(field, (JSONArray) v);
boolMust.must(termsQuery); boolMust.must(termsQuery);
} }
...@@ -932,7 +951,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -932,7 +951,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
Object value = itemObj.get("value"); Object value = itemObj.get("value");
String andOr = itemObj.getString("andOr"); String andOr = itemObj.getString("andOr");
// 组装查询条件 // 组装查询条件
getItemQueryNew(field, itemCondition, value, andOr, builder); getItemQuery(field, itemCondition, value, andOr, builder);
} }
} }
...@@ -952,7 +971,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -952,7 +971,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
}); });
} }
private void getItemQueryNew(String field, String itemCondition, Object value, String isOr, EnhancedDynamicQueryBuilder builder) { private void getItemQuery(String field, String itemCondition, Object value, String isOr, EnhancedDynamicQueryBuilder builder) {
// 如果包含需要特殊处理的字段,则调用对应的处理方法,否则调用通用处理方法 // 如果包含需要特殊处理的字段,则调用对应的处理方法,否则调用通用处理方法
if (equipHandleOtherFields.contains(field) || companyHandleOtherFields.contains(field) || personHandleOtherFields.contains(field)) { if (equipHandleOtherFields.contains(field) || companyHandleOtherFields.contains(field) || personHandleOtherFields.contains(field)) {
handleOtherField(field, itemCondition, value, isOr, builder); handleOtherField(field, itemCondition, value, isOr, builder);
...@@ -1023,13 +1042,49 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -1023,13 +1042,49 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
if (field.equals("certNo")) { if (field.equals("certNo")) {
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery( NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path, path,
QueryBuilders.existsQuery(nestedField), existsQuery(nestedField),
ScoreMode.Avg ScoreMode.Avg
); );
if (itemCondition.equals("eq") || itemCondition.equals("in")) { // 无资质查询
builder.add(value.equals("1") ? nestedQuery : QueryBuilders.boolQuery().mustNot(nestedQuery), isOr); BoolQueryBuilder noCertQuery = QueryBuilders.boolQuery()
.should(QueryBuilders.wildcardQuery("newPost.keyword", "*66151*"))
.should(QueryBuilders.wildcardQuery("newPost.keyword", "*66152*"))
.should(QueryBuilders.wildcardQuery("subPost.keyword", "*6712*"))
.should(QueryBuilders.wildcardQuery("subPost.keyword", "*6764*"))
.should(QueryBuilders.wildcardQuery("subPost.keyword", "*6765*"))
.minimumShouldMatch(1);
// 无资质要求查询
BoolQueryBuilder noCertRequestQuery = QueryBuilders.boolQuery()
.mustNot(QueryBuilders.wildcardQuery("newPost.keyword", "*66151*"))
.mustNot(QueryBuilders.wildcardQuery("newPost.keyword", "*66152*"))
.mustNot(QueryBuilders.wildcardQuery("subPost.keyword", "*6712*"))
.mustNot(QueryBuilders.wildcardQuery("subPost.keyword", "*6764*"))
.mustNot(QueryBuilders.wildcardQuery("subPost.keyword", "*6765*"));
if (value.equals("1")) {
if (itemCondition.equals("eq") || itemCondition.equals("in")) {
builder.add(nestedQuery, isOr);
} else {
builder.add(QueryBuilders.boolQuery().mustNot(nestedQuery), isOr);
}
} else if (value.equals("0")) {
if (itemCondition.equals("eq") || itemCondition.equals("in")) {
builder.add(noCertQuery, isOr);
} else {
EnhancedDynamicQueryBuilder builders = new EnhancedDynamicQueryBuilder();
builders.add(nestedQuery, and);
builders.add(noCertRequestQuery, and);
builder.add(builders.build(), isOr);
}
} else { } else {
builder.add(value.equals("1") ? QueryBuilders.boolQuery().mustNot(nestedQuery) : nestedQuery, isOr); if (itemCondition.equals("eq") || itemCondition.equals("in")) {
builder.add(noCertRequestQuery, isOr);
} else {
EnhancedDynamicQueryBuilder builders = new EnhancedDynamicQueryBuilder();
builders.add(nestedQuery, and);
builders.add(noCertQuery, and);
builder.add(builders.build(), isOr);
}
} }
} else if (field.equals("expiryDate")) { } else if (field.equals("expiryDate")) {
if (value.equals("overdue")) { if (value.equals("overdue")) {
...@@ -1067,14 +1122,8 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -1067,14 +1122,8 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
QueryBuilders.boolQuery().filter(QueryBuilders.rangeQuery(nestedField).gt(LocalDate.now().plusDays(30).format(formatter))), QueryBuilders.boolQuery().filter(QueryBuilders.rangeQuery(nestedField).gt(LocalDate.now().plusDays(30).format(formatter))),
ScoreMode.Avg ScoreMode.Avg
); );
NestedQueryBuilder noLicensesNestedQuery = QueryBuilders.nestedQuery(
path,
QueryBuilders.existsQuery(nestedField),
ScoreMode.Avg
);
builder.add(overdueNestedQuery, or); builder.add(overdueNestedQuery, or);
builder.add(normalNestedQuery, or); builder.add(normalNestedQuery, or);
builder.add(noLicensesNestedQuery, or);
} }
} else if (value.equals("normal")) { } else if (value.equals("normal")) {
if (itemCondition.equals("eq") || itemCondition.equals("in")) { if (itemCondition.equals("eq") || itemCondition.equals("in")) {
...@@ -1092,22 +1141,10 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -1092,22 +1141,10 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
); );
NestedQueryBuilder noLicensesNestedQuery = QueryBuilders.nestedQuery( NestedQueryBuilder noLicensesNestedQuery = QueryBuilders.nestedQuery(
path, path,
QueryBuilders.existsQuery(nestedField), existsQuery(nestedField),
ScoreMode.Avg ScoreMode.Avg
); );
builder.add(elseNestedQuery, or); builder.add(elseNestedQuery, or);
builder.add(noLicensesNestedQuery, or);
}
} else {
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path,
QueryBuilders.existsQuery(nestedField),
ScoreMode.Avg
);
if (itemCondition.equals("eq") || itemCondition.equals("in")) {
builder.add(nestedQuery, isOr);
} else {
builder.add(QueryBuilders.boolQuery().mustNot(nestedQuery), isOr);
} }
} }
} else { } else {
...@@ -1248,10 +1285,11 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -1248,10 +1285,11 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
} }
} }
} else if (field.equals("IS_SUPERVISORY_CODE")) { } else if (field.equals("IS_SUPERVISORY_CODE")) {
String finalField = "SUPERVISORY_CODE";
if (value.equals("1")) { if (value.equals("1")) {
builder.add(QueryBuilders.boolQuery().must(QueryBuilders.existsQuery(field)).mustNot(QueryBuilders.termsQuery(field, "null")), isOr); builder.add(QueryBuilders.boolQuery().must(existsQuery(finalField)).mustNot(QueryBuilders.termsQuery(finalField, "null")), isOr);
} else { } else {
builder.add(QueryBuilders.boolQuery().mustNot(QueryBuilders.existsQuery(field)), isOr); builder.add(QueryBuilders.boolQuery().mustNot(existsQuery(finalField)), isOr);
} }
} else if (field.equals("USC_DATE")) { } else if (field.equals("USC_DATE")) {
if (value.equals("15")) { if (value.equals("15")) {
......
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