Commit b6b854d4 authored by tianyiming's avatar tianyiming

refactor: 优化许可查询返回的处理逻辑

parent f2fde46a
...@@ -64,6 +64,7 @@ import org.typroject.tyboot.core.foundation.context.RequestContext; ...@@ -64,6 +64,7 @@ import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.exception.BaseException; import org.typroject.tyboot.core.foundation.exception.BaseException;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil; import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import javax.annotation.PostConstruct;
import java.io.IOException; import java.io.IOException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
...@@ -129,6 +130,33 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -129,6 +130,33 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
private static final Map<String, String> permitStatusMap = new HashMap<>(4);
private static final Map<String, String> licensesStatusMap = new HashMap<>(6);
private static final String overdue = "overdue";
private static final String near = "near";
private static final String normal = "normal";
private static final String none = "none";
private static final String noLicense = "noLicense";
private static final String noLicenseReq = "noLicenseReq";
@PostConstruct
public void init() {
permitStatusMap.put(overdue, "许可超期");
permitStatusMap.put(near, "许可临期");
permitStatusMap.put(normal, "许可正常");
permitStatusMap.put(none, "无有效期");
licensesStatusMap.put(overdue, "资质超期");
licensesStatusMap.put(near, "资质临期");
licensesStatusMap.put(normal, "资质正常");
licensesStatusMap.put(none, "无有效期");
licensesStatusMap.put(noLicense, "无资质");
licensesStatusMap.put(noLicenseReq, "无资质要求");
}
public List<Map<String, Object>> queryEquipmentCategory(String key) { public List<Map<String, Object>> queryEquipmentCategory(String key) {
List<Map<String, Object>> list; List<Map<String, Object>> list;
Map<String, List<Map<String, Object>>> resourceJson = JsonUtils.getResourceJson(equipCategory); Map<String, List<Map<String, Object>>> resourceJson = JsonUtils.getResourceJson(equipCategory);
...@@ -295,7 +323,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -295,7 +323,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
} }
dto.put("equipType", equipTypes.substring(0, equipTypes.length() - 1)); dto.put("equipType", equipTypes.substring(0, equipTypes.length() - 1));
} }
StringBuilder licensesStatus = new StringBuilder(); String licensesStatus = null;
if (dto.containsKey("licenses")) { if (dto.containsKey("licenses")) {
// 以下人员类型有资质要求 // 以下人员类型有资质要求
// 人员类型(newPost):检验人员:66151、检测人员:66152、作业人员:6552、检查人员:6763 // 人员类型(newPost):检验人员:66151、检测人员:66152、作业人员:6552、检查人员:6763
...@@ -309,7 +337,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -309,7 +337,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
for (Object object : licenses) { for (Object object : licenses) {
JSONObject json = JSONObject.parseObject(JSONObject.toJSONString(object)); JSONObject json = JSONObject.parseObject(JSONObject.toJSONString(object));
if (!json.containsKey("expiryDate")) { if (!json.containsKey("expiryDate")) {
licensesStatus.append("/无有效期"); permissionStatusList.add("无有效期");
continue; continue;
} }
String expiryDate = json.getString("expiryDate"); String expiryDate = json.getString("expiryDate");
...@@ -326,25 +354,23 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -326,25 +354,23 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
} }
long cq = permissionStatusList.stream().filter(e -> e.equals("超期")).count(); long cq = permissionStatusList.stream().filter(e -> e.equals("超期")).count();
long lq = permissionStatusList.stream().filter(e -> e.equals("临期")).count(); long lq = permissionStatusList.stream().filter(e -> e.equals("临期")).count();
long zc = permissionStatusList.stream().filter(e -> e.equals("正常")).count();
long no = permissionStatusList.stream().filter(e -> e.equals("无有效期")).count(); long no = permissionStatusList.stream().filter(e -> e.equals("无有效期")).count();
long zc = permissionStatusList.stream().filter(e -> e.equals("正常")).count();
// 需按照许可严重顺序进行判断,先判断超期,再判断临期,再判断无有效期,最后判断正常
if (cq > 0) { if (cq > 0) {
licensesStatus.append("/资质超期"); licensesStatus = "资质超期";
} } else if (lq > 0) {
if (lq > 0) { licensesStatus = "资质临期";
licensesStatus.append("/资质临期"); } else if (no > 0) {
} licensesStatus = "无有效期";
if (zc > 0) { } else if (zc > 0) {
licensesStatus.append("/资质正常"); licensesStatus = "资质正常";
}
if (no > 0) {
licensesStatus.append("/无有效期");
} }
} else { } else {
licensesStatus.append("无资质"); licensesStatus = "无资质";
} }
} else { } else {
licensesStatus.append("无资质要求"); licensesStatus = "无资质要求";
} }
} }
String licensesStatusStr = licensesStatus.toString(); String licensesStatusStr = licensesStatus.toString();
...@@ -435,7 +461,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -435,7 +461,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
BoolQueryBuilder notNeedLicensesQueryBuilder = this.getNotLicencesBuilderWithPerson(); BoolQueryBuilder notNeedLicensesQueryBuilder = this.getNotLicencesBuilderWithPerson();
boolMust.must(notNeedLicensesQueryBuilder); boolMust.must(notNeedLicensesQueryBuilder);
EnhancedDynamicQueryBuilder enhancedDynamicQueryBuilder = new EnhancedDynamicQueryBuilder(); EnhancedDynamicQueryBuilder enhancedDynamicQueryBuilder = new EnhancedDynamicQueryBuilder();
if (item.equals("overdue")) { if (item.equals(overdue)) {
// 超期:小于当前日期 // 超期:小于当前日期
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery( NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path, path,
...@@ -444,7 +470,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -444,7 +470,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
); );
enhancedDynamicQueryBuilder.add(nestedQuery, or); enhancedDynamicQueryBuilder.add(nestedQuery, or);
boolMust.must(enhancedDynamicQueryBuilder.build()); boolMust.must(enhancedDynamicQueryBuilder.build());
} else if (item.equals("near")) { } else if (item.equals(near)) {
// 临期:小于等于当前日期加上30天 // 临期:小于等于当前日期加上30天
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery( NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path, path,
...@@ -453,7 +479,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -453,7 +479,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
); );
enhancedDynamicQueryBuilder.add(nestedQuery, or); enhancedDynamicQueryBuilder.add(nestedQuery, or);
boolMust.must(enhancedDynamicQueryBuilder.build()); boolMust.must(enhancedDynamicQueryBuilder.build());
} else if (item.equals("normal")) { } else if (item.equals(normal)) {
// 正常:大于当前日期加上30天 // 正常:大于当前日期加上30天
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery( NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path, path,
...@@ -462,7 +488,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -462,7 +488,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
); );
enhancedDynamicQueryBuilder.add(nestedQuery, or); enhancedDynamicQueryBuilder.add(nestedQuery, or);
boolMust.must(enhancedDynamicQueryBuilder.build()); boolMust.must(enhancedDynamicQueryBuilder.build());
} else if (item.equals("none")) { } else if (item.equals(none)) {
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery( NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path, path,
QueryBuilders.boolQuery().mustNot(existsQuery(nestedField)), QueryBuilders.boolQuery().mustNot(existsQuery(nestedField)),
...@@ -544,7 +570,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -544,7 +570,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
field = "newPost"; field = "newPost";
} else if (field.equals("superviseOrgName")) { } else if (field.equals("superviseOrgName")) {
field = "superviseOrgCode"; field = "superviseOrgCode";
} else if (field.equals("licensesStauts")){ } else if (field.equals("licensesStauts")) {
field = "licenseMinExpiryDate"; field = "licenseMinExpiryDate";
} }
builder.sort(field, sort.getString("order").equals("desc") ? SortOrder.DESC : SortOrder.ASC); builder.sort(field, sort.getString("order").equals("desc") ? SortOrder.DESC : SortOrder.ASC);
...@@ -563,7 +589,23 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -563,7 +589,23 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
String orgCode = filter.getString("orgCode"); String orgCode = filter.getString("orgCode");
boolMust.must(QueryBuilders.prefixQuery("superviseOrgCode.keyword", orgCode)); boolMust.must(QueryBuilders.prefixQuery("superviseOrgCode.keyword", orgCode));
getCompanyBoolQueryBuilder(filter, boolMust);
JSONObject filterParams = JSONObject.parseObject(JSONObject.toJSONString(filter.get("filterParams")));
if (!ObjectUtils.isEmpty(filter.get("filterParams"))) {
String filterType = filter.getString("filterType");
getCompanyBoolQueryBuilder(filterParams, filterType, boolMust);
}
String permitStatusStr = "";
if (filterParams.containsKey("permitStatus")) {
Object permitStatus = filterParams.get("permitStatus");
if (permitStatus instanceof JSONArray) {
JSONArray jsonArray = (JSONArray) permitStatus;
if (!ObjectUtils.isEmpty(jsonArray) && !jsonArray.contains("all") && jsonArray.size() == 1) {
permitStatusStr = jsonArray.get(0).toString();
}
}
}
// 排序 // 排序
if (!ObjectUtils.isEmpty(filter.get("sort"))) { if (!ObjectUtils.isEmpty(filter.get("sort"))) {
...@@ -581,48 +623,52 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -581,48 +623,52 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
List<JSONObject> list = new LinkedList<>(); List<JSONObject> list = new LinkedList<>();
long totle = 0; long totle = 0;
try { try {
SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT); SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT);
for (SearchHit hit : response.getHits().getHits()) { for (SearchHit hit : response.getHits().getHits()) {
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(hit); JSONObject jsonObject = (JSONObject) JSONObject.toJSON(hit);
JSONObject dto = jsonObject.getJSONObject("sourceAsMap"); JSONObject dto = jsonObject.getJSONObject("sourceAsMap");
StringBuilder permissionStatus = new StringBuilder(); String permissionStatus = "";
String overdueStr = permitStatusMap.get(overdue);
String nearStr = permitStatusMap.get(near);
String normalStr = permitStatusMap.get(normal);
String noneStr = permitStatusMap.get(none);
if (dto.containsKey("licenses")) { if (dto.containsKey("licenses")) {
JSONArray licenses = dto.getJSONArray("licenses"); if (!"".equals(permitStatusStr)) {
if (!ObjectUtils.isEmpty(licenses)) { permissionStatus = permitStatusMap.get(permissionStatus);
} else {
List<String> permissionStatusList = new ArrayList<>(); List<String> permissionStatusList = new ArrayList<>();
for (Object object : licenses) { JSONArray licenses = dto.getJSONArray("licenses");
JSONObject json = JSONObject.parseObject(JSONObject.toJSONString(object)); if (!ObjectUtils.isEmpty(licenses)) {
String expiryDate = json.getString("expiryDate"); for (Object object : licenses) {
if (!ObjectUtils.isEmpty(expiryDate)) { JSONObject json = JSONObject.parseObject(JSONObject.toJSONString(object));
long daysBetween = ChronoUnit.DAYS.between(LocalDate.now(), LocalDate.parse(expiryDate, formatter)); String expiryDate = json.getString("expiryDate");
if (daysBetween <= 0) { if (!ObjectUtils.isEmpty(expiryDate)) {
permissionStatusList.add("超期"); long daysBetween = ChronoUnit.DAYS.between(LocalDate.now(), LocalDate.parse(expiryDate, formatter));
} else if (daysBetween <= 30) { if (daysBetween <= 0) {
permissionStatusList.add("临期"); permissionStatusList.add(overdueStr);
} else if (daysBetween <= 30) {
permissionStatusList.add(nearStr);
} else {
permissionStatusList.add(normalStr);
}
} else { } else {
permissionStatusList.add("正常"); permissionStatusList.add(noneStr);
} }
} else {
permissionStatusList.add("无有效期");
} }
} long cq = permissionStatusList.stream().filter(e -> e.equals(overdueStr)).count();
long cq = permissionStatusList.stream().filter(e -> e.equals("超期")).count(); long lq = permissionStatusList.stream().filter(e -> e.equals(nearStr)).count();
long lq = permissionStatusList.stream().filter(e -> e.equals("临期")).count(); long no = permissionStatusList.stream().filter(e -> e.equals(noneStr)).count();
long zc = permissionStatusList.stream().filter(e -> e.equals("正常")).count(); long zc = permissionStatusList.stream().filter(e -> e.equals(normalStr)).count();
long no = permissionStatusList.stream().filter(e -> e.equals("无有效期")).count(); if (cq > 0) {
if (cq > 0) { permissionStatus = overdueStr;
permissionStatus.append("/许可超期"); } else if (lq > 0) {
} permissionStatus = nearStr;
if (lq > 0) { } else if (no > 0) {
permissionStatus.append("/许可临期"); permissionStatus = noneStr;
} } else if (zc > 0) {
if (zc > 0) { permissionStatus = normalStr;
permissionStatus.append("/许可正常"); }
}
if (no > 0) {
permissionStatus.append("/无有效期");
} }
} }
} else if (!dto.containsKey("licenses") && (dto.get("unitType").toString().contains("检测单位") || } else if (!dto.containsKey("licenses") && (dto.get("unitType").toString().contains("检测单位") ||
...@@ -631,7 +677,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -631,7 +677,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
dto.get("unitType").toString().contains("充装单位") || dto.get("unitType").toString().contains("充装单位") ||
dto.get("unitType").toString().contains("设计单位") || dto.get("unitType").toString().contains("设计单位") ||
dto.get("unitType").toString().contains("安装改造维修单位"))) { dto.get("unitType").toString().contains("安装改造维修单位"))) {
permissionStatus.append("/无有效期"); permissionStatus = noneStr;
} }
String permissionStatusStr = permissionStatus.toString(); String permissionStatusStr = permissionStatus.toString();
permissionStatusStr = permissionStatusStr.startsWith("/") ? permissionStatusStr.substring(1) : permissionStatusStr; permissionStatusStr = permissionStatusStr.startsWith("/") ? permissionStatusStr.substring(1) : permissionStatusStr;
...@@ -666,110 +712,106 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -666,110 +712,106 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
/** /**
* 构造企业查询条件 * 构造企业查询条件
* *
* @param filter * @param filterParams
* @param filterType
* @param boolMust * @param boolMust
*/ */
private void getCompanyBoolQueryBuilder(JSONObject filter, BoolQueryBuilder boolMust) { private void getCompanyBoolQueryBuilder(JSONObject filterParams, String filterType, BoolQueryBuilder boolMust) {
JSONObject filterParams; deleteUnitCategory(filterParams);
if (!ObjectUtils.isEmpty(filter.get("filterParams"))) { //快捷筛选和自定义筛选解析筛选规则不一致
filterParams = JSONObject.parseObject(JSONObject.toJSONString(filter.get("filterParams"))); if (filterType.equals("advanced")) {
String filterType = filter.getString("filterType"); filterParams.forEach((k, v) -> {
deleteUnitCategory(filterParams); if (v instanceof JSONArray) {
//快捷筛选和自定义筛选解析筛选规则不一致 if (!((JSONArray) v).contains("all") && ((JSONArray) v).size() > 0) {
if (filterType.equals("advanced")) { String field = k;
filterParams.forEach((k, v) -> { if (k.equals("regulatoryLabels") || k.equals("equipCategory") || k.equals("unitType")) {
if (v instanceof JSONArray) { DynamicQueryBuilder dynamicQueryBuilder = new DynamicQueryBuilder();
if (!((JSONArray) v).contains("all") && ((JSONArray) v).size() > 0) { EnhancedDynamicQueryBuilder enhancedDynamicQueryBuilder = new EnhancedDynamicQueryBuilder();
String field = k; ((JSONArray) v).forEach(item -> enhancedDynamicQueryBuilder.add(QueryBuilders.wildcardQuery(field + ".keyword", "*" + item + "*"), or));
if (k.equals("regulatoryLabels") || k.equals("equipCategory") || k.equals("unitType")) { dynamicQueryBuilder.and(enhancedDynamicQueryBuilder.build().minimumShouldMatch(1));
DynamicQueryBuilder dynamicQueryBuilder = new DynamicQueryBuilder(); boolMust.must(dynamicQueryBuilder.build());
EnhancedDynamicQueryBuilder enhancedDynamicQueryBuilder = new EnhancedDynamicQueryBuilder(); } else if (k.equals("industrySupervisor") || k.equals("operatingStatus")) {
((JSONArray) v).forEach(item -> enhancedDynamicQueryBuilder.add(QueryBuilders.wildcardQuery(field + ".keyword", "*" + item + "*"), or)); TermsQueryBuilder termsQuery = QueryBuilders.termsQuery(field + ".keyword", ((JSONArray) v));
dynamicQueryBuilder.and(enhancedDynamicQueryBuilder.build().minimumShouldMatch(1)); boolMust.must(termsQuery);
boolMust.must(dynamicQueryBuilder.build()); } else if (k.equals("itemCode") || k.equals("subItemCode") || k.equals("permitStatus")) {
} else if (k.equals("industrySupervisor") || k.equals("operatingStatus")) { String path = "licenses";
TermsQueryBuilder termsQuery = QueryBuilders.termsQuery(field + ".keyword", ((JSONArray) v)); EnhancedDynamicQueryBuilder enhancedDynamicQueryBuilder = new EnhancedDynamicQueryBuilder();
boolMust.must(termsQuery); ((JSONArray) v).forEach(item -> {
} else if (k.equals("itemCode") || k.equals("subItemCode") || k.equals("permitStatus")) { String nestedField = path + "." + (k.equals("permitStatus") ? "expiryDate" : k + ".keyword");
String path = "licenses"; if (k.equals("permitStatus")) {
EnhancedDynamicQueryBuilder enhancedDynamicQueryBuilder = new EnhancedDynamicQueryBuilder(); if (item.equals(overdue)) {
((JSONArray) v).forEach(item -> { // 超期:小于当前日期
String nestedField = path + "." + (k.equals("permitStatus") ? "expiryDate" : k + ".keyword");
if (k.equals("permitStatus")) {
if (item.equals("overdue")) {
// 超期:小于当前日期
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path,
QueryBuilders.boolQuery().must(QueryBuilders.rangeQuery(nestedField).lt(LocalDate.now().format(formatter))),
ScoreMode.None
);
enhancedDynamicQueryBuilder.add(nestedQuery, or);
} else if (item.equals("near")) {
// 临期:小于等于当前日期加上30天
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path,
QueryBuilders.boolQuery().must(QueryBuilders.rangeQuery(nestedField).lte(LocalDate.now().plusDays(30).format(formatter)).gte(LocalDate.now().format(formatter))),
ScoreMode.None
);
enhancedDynamicQueryBuilder.add(nestedQuery, or);
} else if (item.equals("normal")) {
// 正常:大于当前日期加上30天
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path,
QueryBuilders.boolQuery().must(QueryBuilders.rangeQuery(nestedField).gt(LocalDate.now().plusDays(30).format(formatter))),
ScoreMode.None
);
enhancedDynamicQueryBuilder.add(nestedQuery, or);
} else if (item.equals("none")) {
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path,
QueryBuilders.boolQuery().mustNot(QueryBuilders.existsQuery(nestedField)),
ScoreMode.None
);
enhancedDynamicQueryBuilder.add(nestedQuery, or);
}
} else {
// 创建嵌套查询
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery( NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path, path,
QueryBuilders.termsQuery(nestedField, item), QueryBuilders.boolQuery().must(QueryBuilders.rangeQuery(nestedField).lt(LocalDate.now().format(formatter))),
ScoreMode.None
);
enhancedDynamicQueryBuilder.add(nestedQuery, or);
} else if (item.equals(near)) {
// 临期:小于等于当前日期加上30天
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path,
QueryBuilders.boolQuery().must(QueryBuilders.rangeQuery(nestedField).lte(LocalDate.now().plusDays(30).format(formatter)).gte(LocalDate.now().format(formatter))),
ScoreMode.None
);
enhancedDynamicQueryBuilder.add(nestedQuery, or);
} else if (item.equals(normal)) {
// 正常:大于当前日期加上30天
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path,
QueryBuilders.boolQuery().must(QueryBuilders.rangeQuery(nestedField).gt(LocalDate.now().plusDays(30).format(formatter))),
ScoreMode.None
);
enhancedDynamicQueryBuilder.add(nestedQuery, or);
} else if (item.equals(none)) {
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path,
QueryBuilders.boolQuery().mustNot(QueryBuilders.existsQuery(nestedField)),
ScoreMode.None ScoreMode.None
); );
enhancedDynamicQueryBuilder.add(nestedQuery, or); enhancedDynamicQueryBuilder.add(nestedQuery, or);
} }
}); } else {
boolMust.must(enhancedDynamicQueryBuilder.build()); // 创建嵌套查询
} NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path,
QueryBuilders.termsQuery(nestedField, item),
ScoreMode.None
);
enhancedDynamicQueryBuilder.add(nestedQuery, or);
}
});
boolMust.must(enhancedDynamicQueryBuilder.build());
} }
} else if (v instanceof String) { }
if (k.equals("fuzzyInput")) { } else if (v instanceof String) {
String fuzzyValue = String.valueOf(v); if (k.equals("fuzzyInput")) {
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery(); String fuzzyValue = String.valueOf(v);
queryBuilder.should(QueryBuilders.wildcardQuery("useUnit.keyword", "*" + fuzzyValue + "*")); BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
queryBuilder.should(QueryBuilders.wildcardQuery("address.keyword", "*" + fuzzyValue + "*")); queryBuilder.should(QueryBuilders.wildcardQuery("useUnit.keyword", "*" + fuzzyValue + "*"));
queryBuilder.should(QueryBuilders.wildcardQuery("superviseOrgName.keyword", "*" + fuzzyValue + "*")); queryBuilder.should(QueryBuilders.wildcardQuery("address.keyword", "*" + fuzzyValue + "*"));
queryBuilder.should(QueryBuilders.wildcardQuery("equipCategoryName.keyword", "*" + fuzzyValue + "*")); queryBuilder.should(QueryBuilders.wildcardQuery("superviseOrgName.keyword", "*" + fuzzyValue + "*"));
queryBuilder.should(QueryBuilders.wildcardQuery("contactUser.keyword", "*" + fuzzyValue + "*")); queryBuilder.should(QueryBuilders.wildcardQuery("equipCategoryName.keyword", "*" + fuzzyValue + "*"));
queryBuilder.minimumShouldMatch(1); queryBuilder.should(QueryBuilders.wildcardQuery("contactUser.keyword", "*" + fuzzyValue + "*"));
boolMust.must(queryBuilder); queryBuilder.minimumShouldMatch(1);
} else if (k.equals("unitCategory")) { boolMust.must(queryBuilder);
if (!"".equals(v) && !ObjectUtils.isEmpty(v) && !"all".equals(v)) { } else if (k.equals("unitCategory")) {
String category = v.toString(); if (!"".equals(v) && !ObjectUtils.isEmpty(v) && !"all".equals(v)) {
JSONArray unitTypeByType = UnitTypeNewEnum.getUnitTypeByType(category); String category = v.toString();
List<String> list = unitTypeByType.stream().map(e -> JSONObject.parseObject(JSONObject.toJSONString(e)).get("value").toString()).collect(Collectors.toList()); JSONArray unitTypeByType = UnitTypeNewEnum.getUnitTypeByType(category);
EnhancedDynamicQueryBuilder enhancedDynamicQueryBuilder = new EnhancedDynamicQueryBuilder(); List<String> list = unitTypeByType.stream().map(e -> JSONObject.parseObject(JSONObject.toJSONString(e)).get("value").toString()).collect(Collectors.toList());
list.forEach(item -> enhancedDynamicQueryBuilder.add(QueryBuilders.boolQuery().should(QueryBuilders.wildcardQuery("unitType.keyword", "*" + item + "*")), or)); EnhancedDynamicQueryBuilder enhancedDynamicQueryBuilder = new EnhancedDynamicQueryBuilder();
boolMust.must(enhancedDynamicQueryBuilder.build()); list.forEach(item -> enhancedDynamicQueryBuilder.add(QueryBuilders.boolQuery().should(QueryBuilders.wildcardQuery("unitType.keyword", "*" + item + "*")), or));
} boolMust.must(enhancedDynamicQueryBuilder.build());
} }
} }
}); }
} else { });
JSONArray leftGroup = filterParams.getJSONArray("group1"); } else {
JSONArray rightGroup = filterParams.getJSONArray("group2"); JSONArray leftGroup = filterParams.getJSONArray("group1");
Boolean isOrGroup = or.equals(filterParams.getString("groupAndOr")) ? Boolean.TRUE : Boolean.FALSE; JSONArray rightGroup = filterParams.getJSONArray("group2");
handleAdvancedFilter(boolMust, leftGroup, rightGroup, isOrGroup); Boolean isOrGroup = or.equals(filterParams.getString("groupAndOr")) ? Boolean.TRUE : Boolean.FALSE;
} handleAdvancedFilter(boolMust, leftGroup, rightGroup, isOrGroup);
} }
} }
...@@ -945,13 +987,13 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -945,13 +987,13 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
String finalField = field; String finalField = field;
EnhancedDynamicQueryBuilder queryBuilder = new EnhancedDynamicQueryBuilder(); EnhancedDynamicQueryBuilder queryBuilder = new EnhancedDynamicQueryBuilder();
((JSONArray) v).forEach(item -> { ((JSONArray) v).forEach(item -> {
if (item.equals("overdue")) { if (item.equals(overdue)) {
// 超期:小于当前日期 // 超期:小于当前日期
queryBuilder.add(QueryBuilders.boolQuery().filter(QueryBuilders.rangeQuery(finalField).lt(LocalDate.now().format(formatter))), or); queryBuilder.add(QueryBuilders.boolQuery().filter(QueryBuilders.rangeQuery(finalField).lt(LocalDate.now().format(formatter))), or);
} else if (item.equals("near")) { } else if (item.equals(near)) {
// 临期:小于等于当前日期加上30天 // 临期:小于等于当前日期加上30天
queryBuilder.add(QueryBuilders.boolQuery().filter(QueryBuilders.rangeQuery(finalField).gte(LocalDate.now().format(formatter)).lte(LocalDate.now().plusDays(30).format(formatter))), or); 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")) { } else if (item.equals(normal)) {
// 正常:大于当前日期加上30天 // 正常:大于当前日期加上30天
queryBuilder.add(QueryBuilders.boolQuery().filter(QueryBuilders.rangeQuery(finalField).gt(LocalDate.now().plusDays(30).format(formatter))), or); queryBuilder.add(QueryBuilders.boolQuery().filter(QueryBuilders.rangeQuery(finalField).gt(LocalDate.now().plusDays(30).format(formatter))), or);
} else { } else {
...@@ -1376,7 +1418,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -1376,7 +1418,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
if (!ObjectUtils.isEmpty(leftTechParam) && !ObjectUtils.isEmpty(leftParamRange)) { if (!ObjectUtils.isEmpty(leftTechParam) && !ObjectUtils.isEmpty(leftParamRange)) {
addTechParam(leftTechParam, leftParamRange, leftBuilder); addTechParam(leftTechParam, leftParamRange, leftBuilder);
} }
if(!ObjectUtils.isEmpty(leftGroupList)){ if (!ObjectUtils.isEmpty(leftGroupList)) {
// 非计数参数处理 // 非计数参数处理
groupHandler(leftGroupList, leftBuilder); groupHandler(leftGroupList, leftBuilder);
// 添加左侧筛选条件到最终筛选条件中 // 添加左侧筛选条件到最终筛选条件中
...@@ -1400,7 +1442,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -1400,7 +1442,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
if (!ObjectUtils.isEmpty(rightTechParam) && !ObjectUtils.isEmpty(rightParamRange)) { if (!ObjectUtils.isEmpty(rightTechParam) && !ObjectUtils.isEmpty(rightParamRange)) {
addTechParam(rightTechParam, rightParamRange, rightBuilder); addTechParam(rightTechParam, rightParamRange, rightBuilder);
} }
if(!ObjectUtils.isEmpty(rightGroupList)){ if (!ObjectUtils.isEmpty(rightGroupList)) {
// 非计数参数处理 // 非计数参数处理
groupHandler(rightGroupList, rightBuilder); groupHandler(rightGroupList, rightBuilder);
// 添加右侧筛选条件到最终筛选条件中 // 添加右侧筛选条件到最终筛选条件中
...@@ -1563,7 +1605,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -1563,7 +1605,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
} }
} }
} else if (field.equals("expiryDate")) { } else if (field.equals("expiryDate")) {
if (value.equals("overdue")) { if (value.equals(overdue)) {
if (itemCondition.equals("eq") || itemCondition.equals("in")) { if (itemCondition.equals("eq") || itemCondition.equals("in")) {
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery( NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path, path,
...@@ -1579,7 +1621,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -1579,7 +1621,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
); );
builder.add(nestedQuery, isOr); builder.add(nestedQuery, isOr);
} }
} else if (value.equals("near")) { } else if (value.equals(near)) {
if (itemCondition.equals("eq") || itemCondition.equals("in")) { if (itemCondition.equals("eq") || itemCondition.equals("in")) {
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery( NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path, path,
...@@ -1601,7 +1643,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -1601,7 +1643,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
builder.add(overdueNestedQuery, or); builder.add(overdueNestedQuery, or);
builder.add(normalNestedQuery, or); builder.add(normalNestedQuery, 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")) {
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery( NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path, path,
...@@ -1719,7 +1761,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -1719,7 +1761,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
QueryBuilders.boolQuery().filter(QueryBuilders.rangeQuery(nestedField).lte(LocalDate.now().plusDays(30).format(formatter)).gte(LocalDate.now().format(formatter))), QueryBuilders.boolQuery().filter(QueryBuilders.rangeQuery(nestedField).lte(LocalDate.now().plusDays(30).format(formatter)).gte(LocalDate.now().format(formatter))),
ScoreMode.None ScoreMode.None
); );
if (value.equals("overdue")) { if (value.equals(overdue)) {
if (itemCondition.equals("eq") || itemCondition.equals("in")) { if (itemCondition.equals("eq") || itemCondition.equals("in")) {
builder.add(QueryBuilders.boolQuery().must(overdueNestedQuery), isOr); builder.add(QueryBuilders.boolQuery().must(overdueNestedQuery), isOr);
} else { } else {
...@@ -1733,7 +1775,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -1733,7 +1775,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
builders.add(QueryBuilders.boolQuery().must(noneQuery), or); builders.add(QueryBuilders.boolQuery().must(noneQuery), or);
builder.add(builders.build(), isOr); builder.add(builders.build(), isOr);
} }
} else if (value.equals("near")) { } else if (value.equals(near)) {
if (itemCondition.equals("eq") || itemCondition.equals("in")) { if (itemCondition.equals("eq") || itemCondition.equals("in")) {
builder.add(QueryBuilders.boolQuery().must(nearNestedQuery), isOr); builder.add(QueryBuilders.boolQuery().must(nearNestedQuery), isOr);
} else { } else {
...@@ -1743,7 +1785,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -1743,7 +1785,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
builders.add(QueryBuilders.boolQuery().must(noneQuery), or); builders.add(QueryBuilders.boolQuery().must(noneQuery), or);
builder.add(builders.build(), isOr); builder.add(builders.build(), isOr);
} }
} else if (value.equals("normal")) { } else if (value.equals(normal)) {
if (itemCondition.equals("eq") || itemCondition.equals("in")) { if (itemCondition.equals("eq") || itemCondition.equals("in")) {
builder.add(normalNestedQuery, isOr); builder.add(normalNestedQuery, isOr);
} else { } else {
...@@ -1757,7 +1799,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -1757,7 +1799,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
builders.add(QueryBuilders.boolQuery().must(noneQuery), or); builders.add(QueryBuilders.boolQuery().must(noneQuery), or);
builder.add(builders.build(), isOr); builder.add(builders.build(), isOr);
} }
} else if (value.equals("none")) { } else if (value.equals(none)) {
if (itemCondition.equals("eq") || itemCondition.equals("in")) { if (itemCondition.equals("eq") || itemCondition.equals("in")) {
builder.add(QueryBuilders.boolQuery().must(existsQuery), or); builder.add(QueryBuilders.boolQuery().must(existsQuery), or);
} else { } else {
...@@ -1795,14 +1837,14 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -1795,14 +1837,14 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
private void equipFieldHandle(String field, String itemCondition, Object value, String isOr, EnhancedDynamicQueryBuilder builder) { private void equipFieldHandle(String field, String itemCondition, Object value, String isOr, EnhancedDynamicQueryBuilder builder) {
if (field.equals("NEXT_INSPECT_DATE")) { if (field.equals("NEXT_INSPECT_DATE")) {
if (value.equals("overdue")) { if (value.equals(overdue)) {
// 超期:小于当前日期 // 超期:小于当前日期
if (itemCondition.equals("eq") || itemCondition.equals("in")) { if (itemCondition.equals("eq") || itemCondition.equals("in")) {
builder.add(QueryBuilders.boolQuery().filter(QueryBuilders.rangeQuery(field).lt(LocalDate.now().format(formatter))), isOr); builder.add(QueryBuilders.boolQuery().filter(QueryBuilders.rangeQuery(field).lt(LocalDate.now().format(formatter))), isOr);
} else { } else {
builder.add(QueryBuilders.boolQuery().filter(QueryBuilders.rangeQuery(field).gt(LocalDate.now().format(formatter))), isOr); builder.add(QueryBuilders.boolQuery().filter(QueryBuilders.rangeQuery(field).gt(LocalDate.now().format(formatter))), isOr);
} }
} else if (value.equals("near")) { } else if (value.equals(near)) {
// 临期:小于等于当前日期加上30天 // 临期:小于等于当前日期加上30天
if (itemCondition.equals("eq") || itemCondition.equals("in")) { if (itemCondition.equals("eq") || itemCondition.equals("in")) {
builder.add(QueryBuilders.boolQuery().filter(QueryBuilders.rangeQuery(field).gte(LocalDate.now().format(formatter)).lte(LocalDate.now().plusDays(30).format(formatter))), isOr); builder.add(QueryBuilders.boolQuery().filter(QueryBuilders.rangeQuery(field).gte(LocalDate.now().format(formatter)).lte(LocalDate.now().plusDays(30).format(formatter))), isOr);
...@@ -1954,21 +1996,21 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -1954,21 +1996,21 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) {
JSONObject object = new JSONObject(); JSONObject object = new JSONObject();
if (0 == i) { if (0 == i) {
object.put("key", "normal"); object.put("key", normal);
object.put("value", "normal"); object.put("value", normal);
object.put("label", "许可正常"); object.put("label", permitStatusMap.get(normal));
} else if (1 == i) { } else if (1 == i) {
object.put("key", "near"); object.put("key", near);
object.put("value", "near"); object.put("value", near);
object.put("label", "许可临期"); object.put("label", permitStatusMap.get(near));
} else if (2 == i) { } else if (2 == i) {
object.put("key", "overdue"); object.put("key", overdue);
object.put("value", "overdue"); object.put("value", overdue);
object.put("label", "许可超期"); object.put("label", permitStatusMap.get(overdue));
} else { } else {
object.put("key", "none"); object.put("key", none);
object.put("value", "none"); object.put("value", none);
object.put("label", "无有效期"); object.put("label", permitStatusMap.get(none));
} }
permitStatus.add(object); permitStatus.add(object);
} }
...@@ -2568,21 +2610,21 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -2568,21 +2610,21 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) {
JSONObject object = new JSONObject(); JSONObject object = new JSONObject();
if (0 == i) { if (0 == i) {
object.put("key", "normal"); object.put("key", normal);
object.put("value", "normal"); object.put("value", normal);
object.put("label", "资质正常"); object.put("label", licensesStatusMap.get(normal));
} else if (1 == i) { } else if (1 == i) {
object.put("key", "near"); object.put("key", near);
object.put("value", "near"); object.put("value", near);
object.put("label", "资质临期"); object.put("label", licensesStatusMap.get(near));
} else if (2 == i) { } else if (2 == i) {
object.put("key", "overdue"); object.put("key", overdue);
object.put("value", "overdue"); object.put("value", overdue);
object.put("label", "资质超期"); object.put("label", licensesStatusMap.get(overdue));
} else { } else {
object.put("key", "none"); object.put("key", none);
object.put("value", "none"); object.put("value", none);
object.put("label", "无有效期"); object.put("label", licensesStatusMap.get(none));
} }
permissionStatus.add(object); permissionStatus.add(object);
} }
...@@ -2842,7 +2884,11 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -2842,7 +2884,11 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
// 构造企业查询条件 // 构造企业查询条件
filter.put("filterType", "advanced"); filter.put("filterType", "advanced");
getCompanyBoolQueryBuilder(filter, boolMust);
if (!ObjectUtils.isEmpty(filter.get("filterParams"))) {
String filterType = filter.getString("filterType");
getCompanyBoolQueryBuilder(filterParams, filterType, boolMust);
}
boolean is2LeveFlag = Optional.of(filter) boolean is2LeveFlag = Optional.of(filter)
.map(obj -> obj.getJSONObject("filterParams")) .map(obj -> obj.getJSONObject("filterParams"))
......
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