Commit 3a4f61be authored by tianyiming's avatar tianyiming

feat: 添加不需要资质人员的查询条件及统计其他分类数据

parent f9bd8555
......@@ -444,6 +444,16 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
boolMust.must(queryBuilder);
}
} else if (k.equals("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*"));
boolMust.must(notNeedLicensesQueryBuilder);
EnhancedDynamicQueryBuilder enhancedDynamicQueryBuilder = new EnhancedDynamicQueryBuilder();
if (item.equals("overdue")) {
// 超期:小于当前日期
......@@ -2632,11 +2642,11 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
List<Map<String, Object>> data = new ArrayList<>();
if (StatisticalAnalysisEnum.equip.getCode().equals(businessType)) {
if (orgCode.equals("50")) {
DynamicQueryBuilder dynamicQueryBuilder = new DynamicQueryBuilder();
dynamicQueryBuilder.or(QueryBuilders.prefixQuery("ORG_BRANCH_CODE", orgCode));
dynamicQueryBuilder.or(QueryBuilders.boolQuery().must(QueryBuilders.termQuery("ORG_BRANCH_CODE","")));
dynamicQueryBuilder.or(QueryBuilders.boolQuery().mustNot(QueryBuilders.existsQuery("ORG_BRANCH_CODE")));
boolMust.must(dynamicQueryBuilder.build());
DynamicQueryBuilder dynamicQueryBuilder = new DynamicQueryBuilder();
dynamicQueryBuilder.or(QueryBuilders.prefixQuery("ORG_BRANCH_CODE", orgCode));
dynamicQueryBuilder.or(QueryBuilders.boolQuery().must(QueryBuilders.termQuery("ORG_BRANCH_CODE", "")));
dynamicQueryBuilder.or(QueryBuilders.boolQuery().mustNot(QueryBuilders.existsQuery("ORG_BRANCH_CODE")));
boolMust.must(dynamicQueryBuilder.build());
} else {
boolMust.must(QueryBuilders.prefixQuery("ORG_BRANCH_CODE", orgCode));
}
......@@ -2661,7 +2671,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
if (orgCode.equals("50")) {
DynamicQueryBuilder dynamicQueryBuilder = new DynamicQueryBuilder();
dynamicQueryBuilder.or(QueryBuilders.prefixQuery("ORG_BRANCH_CODE", orgCode));
dynamicQueryBuilder.or(QueryBuilders.boolQuery().must(QueryBuilders.termQuery("ORG_BRANCH_CODE","")));
dynamicQueryBuilder.or(QueryBuilders.boolQuery().must(QueryBuilders.termQuery("ORG_BRANCH_CODE", "")));
dynamicQueryBuilder.or(QueryBuilders.boolQuery().mustNot(QueryBuilders.existsQuery("ORG_BRANCH_CODE")));
equipBoolMust.must(dynamicQueryBuilder.build());
} else {
......@@ -2846,10 +2856,12 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
Long equipCount = staticCountByGroup.values().stream().reduce(0L, Long::sum);
tabTotalMap.put(StatisticalAnalysisEnum.equip.getCode(), equipCount);
List<String> codes = new ArrayList<>();
// 组装数据
List<Map<String, Object>> dataMapList = new ArrayList<>();
for (Map<String, Object> categoryMap : staticCountByGroupMap) {
String code = categoryMap.get("value").toString();
codes.add(code);
Map<String, Object> map = new HashMap<>();
map.put("key", categoryMap.get("key"));
map.put("label", categoryMap.get("label"));
......@@ -2871,14 +2883,77 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
nextInspectQuery.must(QueryBuilders.termQuery(groupField, code));
getStatisticCountByDate(StatisticalAnalysisEnum.equip.getKey(), "NEXT_INSPECT_DATE", nextInspectQuery, nextInspectCountByGroup);
map.put("NEXT_INSPECT_DATE", nextInspectCountByGroup);
staticCountByGroup.remove(code);
dataMapList.add(map);
}
// 统计种类/类别/品种数据不对的数据字段
if(!ObjectUtils.isEmpty(staticCountByGroup)){
statisticOtherCount(request, dataMapList, staticCountByGroup, boolMust, groupField);
}
if (!ObjectUtils.isEmpty(equipCode)) {
tabTotalMap.put(equipCode, dataMapList.stream().mapToLong(map -> (Long) map.get("value")).sum());
}
return dataMapList;
}
private void statisticOtherCount(SearchRequest request, List<Map<String, Object>> dataMapList, Map<String, Long> staticCountByGroup, BoolQueryBuilder boolMust, String groupField) {
String type = "other";
Long otherCount = 0L;
Long oneCount = 0L;
Long twoCount = 0L;
Long threeCount = 0L;
Long redCount = 0L;
Long yellowCount = 0L;
Long greenCount = 0L;
Long grayCount = 0L;
for (String key : staticCountByGroup.keySet()) {
otherCount += staticCountByGroup.get(key);
// 统计该分类下的数据完整性的分组数量 DATA_QUALITY_SCORE
BoolQueryBuilder scoreQuery = QueryBuilderUtils.copyBoolQuery(boolMust);
scoreQuery.must(QueryBuilders.termQuery(groupField, key));
SearchSourceBuilder scoreBuilder = new SearchSourceBuilder();
Map<String, Long> scoreCountByGroup = new HashMap<>();
getStatisticCountByGroup(request, scoreBuilder, scoreQuery, "DATA_QUALITY_SCORE", scoreCountByGroup);
oneCount += scoreCountByGroup.containsKey("1") ? scoreCountByGroup.get("1") : 0L;
twoCount += scoreCountByGroup.containsKey("2") ? scoreCountByGroup.get("2") : 0L;
threeCount += scoreCountByGroup.containsKey("3") ? scoreCountByGroup.get("3") : 0L;
// 统计该分类下红黄绿码分别的分组数量 NEXT_INSPECT_DATE
Map<String, Long> nextInspectCountByGroup = new HashMap<>();
BoolQueryBuilder nextInspectQuery = QueryBuilderUtils.copyBoolQuery(boolMust);
nextInspectQuery.must(QueryBuilders.termQuery(groupField, key));
getStatisticCountByDate(StatisticalAnalysisEnum.equip.getKey(), "NEXT_INSPECT_DATE", nextInspectQuery, nextInspectCountByGroup);
redCount += nextInspectCountByGroup.containsKey("red") ? nextInspectCountByGroup.get("red") : 0L;
yellowCount += nextInspectCountByGroup.containsKey("yellow") ? nextInspectCountByGroup.get("yellow") : 0L;
greenCount += nextInspectCountByGroup.containsKey("green") ? nextInspectCountByGroup.get("green") : 0L;
grayCount += nextInspectCountByGroup.containsKey("gray") ? nextInspectCountByGroup.get("gray") : 0L;
}
Map<String, Object> map = new HashMap<>();
map.put("key", type);
map.put("label", "其他");
map.put("code", type);
map.put("fieldKey", type);
map.put("noChild", Boolean.TRUE);
map.put("value", otherCount);
map.put("img", dpEquipPhotoPrefix + type + dpEquipPhotoSuffix);
map.put("measurementUnit", "台套");
Map<String,Long> scoreCount = new HashMap<>();
scoreCount.put("1", oneCount);
scoreCount.put("2", twoCount);
scoreCount.put("3", threeCount);
map.put("DATA_QUALITY_SCORE", scoreCount);
Map<String,Long> nextInspectCount = new HashMap<>();
nextInspectCount.put("red", redCount);
nextInspectCount.put("yellow", yellowCount);
nextInspectCount.put("green", greenCount);
nextInspectCount.put("gray", grayCount);
map.put("NEXT_INSPECT_DATE", nextInspectCount);
dataMapList.add(map);
}
private void getStatisticCountByDate(String index, String field, BoolQueryBuilder nextInspectQuery, Map<String, Long> nextInspectCountByGroup) {
// 超期
BoolQueryBuilder overdueQuery = QueryBuilderUtils.copyBoolQuery(nextInspectQuery);
......
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