Commit 5e52fc76 authored by tianyiming's avatar tianyiming

refactor: 使用新枚举并优化统计逻辑

parent 43236926
...@@ -23,9 +23,7 @@ public enum UnitTypeEnum { ...@@ -23,9 +23,7 @@ public enum UnitTypeEnum {
azgzwxdw("安装改造维修单位", "1234", "license"), azgzwxdw("安装改造维修单位", "1234", "license"),
zzdw("制造单位", "1236", "license"), zzdw("制造单位", "1236", "license"),
sjdw("设计单位", "1235", "license"), sjdw("设计单位", "1235", "license"),
grzt("个人主体", "6599", "use"), grzt("个人主体", "6599", "use");
jyjg("检验机构", "1233-1", "license"),
jcjg("检测机构", "1233-2", "license");
private String name; private String name;
private String code; private String code;
......
...@@ -12,15 +12,15 @@ import java.util.Map; ...@@ -12,15 +12,15 @@ import java.util.Map;
@AllArgsConstructor @AllArgsConstructor
@Getter @Getter
public enum UnitTypeNewEnum { public enum UnitTypeNewEnum {
// todo 检验单位和检测单位的code待确认
/** /**
* *注册单位类型 * *注册单位类型
*/ */
sydw("企业","使用单位", "1232", "use"), sydw("企业","使用单位", "1232", "use"),
czdw("充装单位", "充装单位", "1231", "license"), czdw("充装单位", "充装单位", "1231", "license"),
jydw("检验单位", "检验单位","12331", "license"), jyjg("检验机构", "检验机构","1233-1", "license"),
jcdw("检测单位", "检测单位", "1233", "license"), jcjg("检测机构", "检测机构", "1233-2", "license"),
azgzwxdw("安装改造维修单位", "安装改造维修单位","1234", "license"), azgzwxdw("安装改造维修单位", "安装改造维修单位","1234", "license"),
zzdw("制造单位", "制造单位", "1236", "license"), zzdw("制造单位", "制造单位", "1236", "license"),
sjdw("设计单位", "设计单位", "1235", "license"), sjdw("设计单位", "设计单位", "1235", "license"),
......
...@@ -112,6 +112,8 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -112,6 +112,8 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
private final String UPLOAD_PATH = "/tzs/excelTempFile"; private final String UPLOAD_PATH = "/tzs/excelTempFile";
// 大屏统计图片路径前缀 // 大屏统计图片路径前缀
private final String dpEquipPhotoPrefix = "/upload/tzs/dpscreen/statistic/equip/"; private final String dpEquipPhotoPrefix = "/upload/tzs/dpscreen/statistic/equip/";
// 大屏统计图片路径后缀
private final String dpEquipPhotoSuffix = ".png";
private final List<String> equipHandleOtherFields = Arrays.asList("techParam", "paramRange", "JDJY", "DQJY", "SCJY", "DTJY", "QZ_OR_TANK"); private final List<String> equipHandleOtherFields = Arrays.asList("techParam", "paramRange", "JDJY", "DQJY", "SCJY", "DTJY", "QZ_OR_TANK");
private final List<String> companyHandleOtherFields = Arrays.asList("itemCode", "subItemCode", "permitStatus", "equipCategory", "regulatoryLabels", "unitType"); private final List<String> companyHandleOtherFields = Arrays.asList("itemCode", "subItemCode", "permitStatus", "equipCategory", "regulatoryLabels", "unitType");
...@@ -2712,25 +2714,25 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -2712,25 +2714,25 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
if (bucket.getKeyAsString().equals(UnitTypeEnum.sydw.getName())) { if (bucket.getKeyAsString().equals(UnitTypeEnum.sydw.getName())) {
result.put("sydw", bucket.getDocCount()); result.put("sydw", bucket.getDocCount());
} }
if (bucket.getKeyAsString().equals(UnitTypeEnum.grzt.getName())) { if (bucket.getKeyAsString().equals(UnitTypeNewEnum.grzt.getLabel())) {
result.put("grzt", bucket.getDocCount()); result.put("grzt", bucket.getDocCount());
} }
if (bucket.getKeyAsString().equals(UnitTypeEnum.sjdw.getName())) { if (bucket.getKeyAsString().equals(UnitTypeNewEnum.sjdw.getLabel())) {
result.put("sjdw", bucket.getDocCount()); result.put("sjdw", bucket.getDocCount());
} }
if (bucket.getKeyAsString().equals(UnitTypeEnum.zzdw.getName())) { if (bucket.getKeyAsString().equals(UnitTypeNewEnum.zzdw.getLabel())) {
result.put("zzdw", bucket.getDocCount()); result.put("zzdw", bucket.getDocCount());
} }
if (bucket.getKeyAsString().equals(UnitTypeEnum.azgzwxdw.getName())) { if (bucket.getKeyAsString().equals(UnitTypeNewEnum.azgzwxdw.getLabel())) {
result.put("azgzwxdw", bucket.getDocCount()); result.put("azgzwxdw", bucket.getDocCount());
} }
if (bucket.getKeyAsString().equals(UnitTypeEnum.czdw.getName())) { if (bucket.getKeyAsString().equals(UnitTypeNewEnum.czdw.getLabel())) {
result.put("czdw", bucket.getDocCount()); result.put("czdw", bucket.getDocCount());
} }
if (bucket.getKeyAsString().equals(UnitTypeEnum.jyjg.getName())) { if (bucket.getKeyAsString().equals(UnitTypeNewEnum.jyjg.getLabel())) {
result.put("jyjg", bucket.getDocCount()); result.put("jyjg", bucket.getDocCount());
} }
if (bucket.getKeyAsString().equals(UnitTypeEnum.jcjg.getName())) { if (bucket.getKeyAsString().equals(UnitTypeNewEnum.jcjg.getLabel())) {
result.put("jcjg", bucket.getDocCount()); result.put("jcjg", bucket.getDocCount());
} }
} }
...@@ -2793,34 +2795,75 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -2793,34 +2795,75 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
staticCountByGroupMap = resourceJson.get(EquipmentClassifityEnum.ZHTJFX.getCode()); staticCountByGroupMap = resourceJson.get(EquipmentClassifityEnum.ZHTJFX.getCode());
} }
SearchSourceBuilder nextInspectBuilder = new SearchSourceBuilder();
List<Map<String, Long>> staticCountByGroup = new ArrayList<>(); Map<String, Long> staticCountByGroup = new HashMap<>();
getStatisticCountByGroup(request, builder, boolMust, groupField, staticCountByGroup); getStatisticCountByGroup(request, builder, boolMust, groupField, staticCountByGroup);
Long otherCount = staticCountByGroup.stream().map(item -> item.values().stream().reduce(0L, Long::sum)).reduce(0L, Long::sum);
Long otherCount = staticCountByGroup.values().stream().reduce(0L, Long::sum);
tabTotalMap.put(StatisticalAnalysisEnum.equip.getCode(), otherCount); tabTotalMap.put(StatisticalAnalysisEnum.equip.getCode(), otherCount);
// 组装数据 // 组装数据
for (Map<String, Object> map : staticCountByGroupMap) { List<Map<String, Object>> dataMapList = new ArrayList<>();
for (Map<String, Object> categoryMap : staticCountByGroupMap) {
String code = categoryMap.get("value").toString();
} Map<String, Object> map = new HashMap<>();
map.putAll(categoryMap);
map.put("value", staticCountByGroup.get(code));
return staticCountByGroupMap; map.put("img", dpEquipPhotoPrefix + code + dpEquipPhotoSuffix);
} map.put("measurementUnit", "台套");
// 统计该分类下的数据完整性的分组数量 DATA_QUALITY_SCORE
private void getStatisticCountByGroup(SearchRequest request, SearchSourceBuilder builder, BoolQueryBuilder boolMust, String groupField, List<Map<String, Long>> staticCountByGroup) { BoolQueryBuilder scoreQuery = QueryBuilderUtils.copyBoolQuery(boolMust);
scoreQuery.must(QueryBuilders.termQuery(groupField, code));
SearchSourceBuilder scoreBuilder = new SearchSourceBuilder();
Map<String, Long> scoreCountByGroup = new HashMap<>();
getStatisticCountByGroup(request, scoreBuilder, scoreQuery, "DATA_QUALITY_SCORE", scoreCountByGroup);
map.put("DATA_QUALITY_SCORE", scoreCountByGroup);
// 统计该分类下红黄绿码分别的分组数量 NEXT_INSPECT_DATE
Map<String, Long> nextInspectCountByGroup = new HashMap<>();
BoolQueryBuilder nextInspectQuery = QueryBuilderUtils.copyBoolQuery(boolMust);
nextInspectQuery.must(QueryBuilders.termQuery(groupField, code));
getStatisticCountByDate(StatisticalAnalysisEnum.equip.getKey(), nextInspectQuery, nextInspectCountByGroup);
getStatisticCountByGroup(request, nextInspectBuilder, nextInspectQuery, "NEXT_INSPECT_DATE", nextInspectCountByGroup);
map.put("NEXT_INSPECT_DATE", nextInspectCountByGroup);
dataMapList.add(map);
}
return dataMapList;
}
private void getStatisticCountByDate(String key, BoolQueryBuilder nextInspectQuery, Map<String, Long> nextInspectCountByGroup) {
// 超期
// BoolQueryBuilder overdueQuery = QueryBuilderUtils.copyBoolQuery(nextInspectQuery);
// overdueQuery.must(QueryBuilders.rangeQuery("NEXT_INSPECT_DATE").lte(DateUtils.addDays(new Date(), -1)));
// if (item.equals("overdue")) {
// // 超期:小于当前日期
// queryBuilder.add(QueryBuilders.boolQuery().filter(QueryBuilders.rangeQuery(finalField).lt(LocalDate.now().format(formatter))), or);
// } else if (item.equals("near")) {
// // 临期:小于等于当前日期加上30天
// queryBuilder.add(QueryBuilders.boolQuery().filter(QueryBuilders.rangeQuery(finalField).gte(LocalDate.now().format(formatter)).lte(LocalDate.now().plusDays(30).format(formatter))), or);
// } else if (item.equals("normal")) {
// // 正常:大于当前日期加上30天
// queryBuilder.add(QueryBuilders.boolQuery().filter(QueryBuilders.rangeQuery(finalField).gt(LocalDate.now().plusDays(30).format(formatter))), or);
// } else {
// queryBuilder.add(QueryBuilders.boolQuery().mustNot(QueryBuilders.existsQuery(finalField)), or);
// }
// 临期
// 正常
// 无日期
}
private void getStatisticCountByGroup(SearchRequest request, SearchSourceBuilder builder, BoolQueryBuilder boolMust, String groupField, Map<String, Long> staticCountByGroup) {
builder.query(boolMust); builder.query(boolMust);
builder.aggregation(AggregationBuilders.terms(groupField).field(groupField).missing("null")); builder.aggregation(AggregationBuilders.terms("groupCount").field(groupField));
request.source(builder); request.source(builder);
try { try {
SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT); SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT);
Terms terms = response.getAggregations().get(groupField); Terms terms = response.getAggregations().get("groupCount");
for (Terms.Bucket bucket : terms.getBuckets()) { for (Terms.Bucket bucket : terms.getBuckets()) {
Map<String, Long> groupMap = new HashMap<>(); staticCountByGroup.put(bucket.getKeyAsString(), bucket.getDocCount());
groupMap.put(bucket.getKeyAsString(), bucket.getDocCount());
staticCountByGroup.add(groupMap);
} }
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
......
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