Commit 2cd0df20 authored by tianyiming's avatar tianyiming

修改bug30410

parent 2396cca9
...@@ -341,6 +341,13 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -341,6 +341,13 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
filterParams = JSONObject.parseObject(JSONObject.toJSONString(filter.get("filterParams"))); filterParams = JSONObject.parseObject(JSONObject.toJSONString(filter.get("filterParams")));
// 组装人员过滤条件 // 组装人员过滤条件
this.getPersonBoolQueryBuilder(filterParams, boolMust, filterType); this.getPersonBoolQueryBuilder(filterParams, boolMust, filterType);
}
if ("custom".equals(filterType)) {
JSONArray leftGroup = filterParams.getJSONArray("group1");
JSONArray rightGroup = filterParams.getJSONArray("group2");
licensesStatusStr = getFilterPermitStatusOrLicensesStatus(leftGroup, rightGroup, StatisticalAnalysisEnum.person.getCode());
} else {
// 资质判断 // 资质判断
if (filterParams.containsKey("expiryDate")) { if (filterParams.containsKey("expiryDate")) {
Object permitStatus = filterParams.get("expiryDate"); Object permitStatus = filterParams.get("expiryDate");
...@@ -351,12 +358,9 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -351,12 +358,9 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
} }
} }
} }
if (filterParams.containsKey("certNo") && filterParams.getJSONArray("certNo").size() == 1 && "0".equals(filterParams.getJSONArray("certNo").get(0).toString())) {
licensesStatusStr = noLicenseReq;
} }
if ("custom".equals(filterType)) {
JSONArray leftGroup = filterParams.getJSONArray("group1");
JSONArray rightGroup = filterParams.getJSONArray("group2");
licensesStatusStr = getFilterPermitStatusOrLicensesStatus(leftGroup, rightGroup, StatisticalAnalysisEnum.person.getCode());
} }
// 组装人员排序条件 // 组装人员排序条件
this.getPersonBoolQuerySort(filter, builder); this.getPersonBoolQuerySort(filter, builder);
...@@ -400,6 +404,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -400,6 +404,7 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
String nearStr = licensesStatusMap.get(near); String nearStr = licensesStatusMap.get(near);
String normalStr = licensesStatusMap.get(normal); String normalStr = licensesStatusMap.get(normal);
String noneStr = licensesStatusMap.get(none); String noneStr = licensesStatusMap.get(none);
String noLicenseStr = licensesStatusMap.get(noLicense);
if (!ObjectUtils.isEmpty(licenses)) { if (!ObjectUtils.isEmpty(licenses)) {
if (!"".equals(licensesStatusStr)) { if (!"".equals(licensesStatusStr)) {
licensesStatus = licensesStatusMap.get(licensesStatusStr); licensesStatus = licensesStatusMap.get(licensesStatusStr);
...@@ -407,6 +412,10 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -407,6 +412,10 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
List<String> permissionStatusList = new ArrayList<>(); List<String> permissionStatusList = new ArrayList<>();
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("certNo")){
permissionStatusList.add(noLicenseStr);
continue;
}
if (!json.containsKey("expiryDate")) { if (!json.containsKey("expiryDate")) {
permissionStatusList.add(noneStr); permissionStatusList.add(noneStr);
continue; continue;
...@@ -423,23 +432,26 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -423,23 +432,26 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
} }
} }
} }
long cq = permissionStatusList.stream().filter(e -> e.equals(overdueStr)).count(); long overdue = permissionStatusList.stream().filter(e -> e.equals(overdueStr)).count();
long lq = permissionStatusList.stream().filter(e -> e.equals(nearStr)).count(); long near = permissionStatusList.stream().filter(e -> e.equals(nearStr)).count();
long no = permissionStatusList.stream().filter(e -> e.equals(noneStr)).count(); long no = permissionStatusList.stream().filter(e -> e.equals(noLicenseStr)).count();
long zc = permissionStatusList.stream().filter(e -> e.equals(normalStr)).count(); long none = permissionStatusList.stream().filter(e -> e.equals(noneStr)).count();
long normal = permissionStatusList.stream().filter(e -> e.equals(normalStr)).count();
// 需按照资质严重顺序进行判断,先判断超期,再判断临期,再判断无有效期,最后判断正常 // 需按照资质严重顺序进行判断,先判断超期,再判断临期,再判断无有效期,最后判断正常
if (cq > 0) { if (overdue > 0) {
licensesStatus = overdueStr; licensesStatus = overdueStr;
} else if (lq > 0) { } else if (near > 0) {
licensesStatus = nearStr; licensesStatus = nearStr;
} else if (no > 0) { } else if (no > 0) {
licensesStatus = noLicenseStr;
} else if (none > 0) {
licensesStatus = noneStr; licensesStatus = noneStr;
} else if (zc > 0) { } else if (normal > 0) {
licensesStatus = normalStr; licensesStatus = normalStr;
} }
} }
} else { } else {
licensesStatus = licensesStatusMap.get(noLicense); licensesStatus = noLicenseStr;
} }
} else { } else {
licensesStatus = !"".equals(licensesStatusStr) ? licensesStatusMap.get(licensesStatusStr) : licensesStatusMap.get(noLicenseReq); licensesStatus = !"".equals(licensesStatusStr) ? licensesStatusMap.get(licensesStatusStr) : licensesStatusMap.get(noLicenseReq);
...@@ -529,40 +541,46 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -529,40 +541,46 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
licencesQueryBuilder.add(this.getNotNeedLicencesBuilderWithPerson(), or); licencesQueryBuilder.add(this.getNotNeedLicencesBuilderWithPerson(), or);
} }
} else if (k.equals("expiryDate")) { } else if (k.equals("expiryDate")) {
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
path,
existsQuery(path + "." + "certNo"),
ScoreMode.None
);
boolMust.must(nestedQuery);
// 不需要资质的人员查询构造条件 // 不需要资质的人员查询构造条件
BoolQueryBuilder notNeedLicensesQueryBuilder = this.getNotLicencesBuilderWithPerson(); BoolQueryBuilder notNeedLicensesQueryBuilder = this.getNotLicencesBuilderWithPerson();
boolMust.must(notNeedLicensesQueryBuilder); boolMust.must(notNeedLicensesQueryBuilder);
if (item.equals(overdue)) { if (item.equals(overdue)) {
// 超期:小于当前日期 // 超期:小于当前日期
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery( NestedQueryBuilder overdueQuery = QueryBuilders.nestedQuery(
path, path,
QueryBuilders.rangeQuery(nestedField).lt(LocalDate.now().format(formatter)), QueryBuilders.rangeQuery(nestedField).lt(LocalDate.now().format(formatter)),
ScoreMode.None ScoreMode.None
); );
boolMust.must(nestedQuery); boolMust.must(overdueQuery);
} else if (item.equals(near)) { } else if (item.equals(near)) {
// 临期:小于等于当前日期加上30天 // 临期:小于等于当前日期加上30天
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery( NestedQueryBuilder nearQuery = QueryBuilders.nestedQuery(
path, path,
QueryBuilders.rangeQuery(nestedField).lte(LocalDate.now().plusDays(30).format(formatter)).gte(LocalDate.now().format(formatter)), QueryBuilders.rangeQuery(nestedField).lte(LocalDate.now().plusDays(30).format(formatter)).gte(LocalDate.now().format(formatter)),
ScoreMode.None ScoreMode.None
); );
boolMust.must(nestedQuery); boolMust.must(nearQuery);
} else if (item.equals(normal)) { } else if (item.equals(normal)) {
// 正常:大于当前日期加上30天 // 正常:大于当前日期加上30天
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery( NestedQueryBuilder normalQuery = QueryBuilders.nestedQuery(
path, path,
QueryBuilders.rangeQuery(nestedField).gt(LocalDate.now().plusDays(30).format(formatter)), QueryBuilders.rangeQuery(nestedField).gt(LocalDate.now().plusDays(30).format(formatter)),
ScoreMode.None ScoreMode.None
); );
boolMust.must(nestedQuery); boolMust.must(normalQuery);
} else if (item.equals(none)) { } else if (item.equals(none)) {
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery( NestedQueryBuilder noneQuery = QueryBuilders.nestedQuery(
path, path,
QueryBuilders.boolQuery().mustNot(existsQuery(nestedField)), QueryBuilders.boolQuery().mustNot(existsQuery(nestedField)),
ScoreMode.None ScoreMode.None
); );
boolMust.must(nestedQuery); boolMust.must(noneQuery);
} }
} else if (k.equals("certType") || k.equals("permissionLevel")) { } else if (k.equals("certType") || k.equals("permissionLevel")) {
NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery( NestedQueryBuilder nestedQuery = QueryBuilders.nestedQuery(
...@@ -925,6 +943,12 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -925,6 +943,12 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
private String getFilterPermitStatusOrLicensesStatus(JSONArray leftGroup, JSONArray rightGroup, String code) { private String getFilterPermitStatusOrLicensesStatus(JSONArray leftGroup, JSONArray rightGroup, String code) {
String filed = code.equals(StatisticalAnalysisEnum.company.getCode()) ? "permitStatus" : "expiryDate"; String filed = code.equals(StatisticalAnalysisEnum.company.getCode()) ? "permitStatus" : "expiryDate";
List<Object> LeftNoLicenseList = leftGroup.stream().filter(e->"certNo".equals(((JSONObject) e).getString("field")) && ((JSONObject) e).containsKey("value") && ((JSONObject) e).getString("value").equals("0") && ((JSONObject) e).containsKey("itemCondition") && !((JSONObject) e).getString("itemCondition").equals("notIn") ).collect(Collectors.toList());
List<Object> rightNoLicenseList = rightGroup.stream().filter(e->"certNo".equals(((JSONObject) e).getString("field")) && ((JSONObject) e).containsKey("value") && ((JSONObject) e).getString("value").equals("0") && ((JSONObject) e).containsKey("itemCondition") && !((JSONObject) e).getString("itemCondition").equals("notIn") ).collect(Collectors.toList());
Boolean noLicense = false;
if (LeftNoLicenseList.size() > 0 || rightNoLicenseList.size() > 0) {
noLicense = true;
}
List<Object> leftPermitList = leftGroup.stream().filter(e -> filed.equals(((JSONObject) e).getString("field")) && ((JSONObject) e).containsKey("value") && ((JSONObject) e).containsKey("itemCondition") && !((JSONObject) e).getString("itemCondition").equals("notIn")).collect(Collectors.toList()); List<Object> leftPermitList = leftGroup.stream().filter(e -> filed.equals(((JSONObject) e).getString("field")) && ((JSONObject) e).containsKey("value") && ((JSONObject) e).containsKey("itemCondition") && !((JSONObject) e).getString("itemCondition").equals("notIn")).collect(Collectors.toList());
List<Object> rightPermitList = rightGroup.stream().filter(e -> filed.equals(((JSONObject) e).getString("field")) && ((JSONObject) e).containsKey("value") && ((JSONObject) e).containsKey("itemCondition") && !((JSONObject) e).getString("itemCondition").equals("notIn")).collect(Collectors.toList()); List<Object> rightPermitList = rightGroup.stream().filter(e -> filed.equals(((JSONObject) e).getString("field")) && ((JSONObject) e).containsKey("value") && ((JSONObject) e).containsKey("itemCondition") && !((JSONObject) e).getString("itemCondition").equals("notIn")).collect(Collectors.toList());
int count = 0; int count = 0;
...@@ -939,9 +963,9 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -939,9 +963,9 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
isRight = true; isRight = true;
} }
String statusStr = ""; String statusStr = "";
if (count == 1 && isLeft) { if (count == 1 && isLeft && !noLicense) {
statusStr = ((JSONObject) leftPermitList.get(0)).getString("value"); statusStr = ((JSONObject) leftPermitList.get(0)).getString("value");
} else if (count == 1 && isRight) { } else if (count == 1 && isRight && !noLicense) {
statusStr = ((JSONObject) rightPermitList.get(0)).getString("value"); statusStr = ((JSONObject) rightPermitList.get(0)).getString("value");
} }
return statusStr; return statusStr;
...@@ -1694,6 +1718,10 @@ public class ComprehensiveStatisticalAnalysisServiceImpl { ...@@ -1694,6 +1718,10 @@ public class ComprehensiveStatisticalAnalysisServiceImpl {
for (int i = 0; i < group.size(); i++) { for (int i = 0; i < group.size(); i++) {
JSONObject itemObj = group.getJSONObject(i); JSONObject itemObj = group.getJSONObject(i);
String andOr = i == 0 ? null : itemObj.getString("andOr"); String andOr = i == 0 ? null : itemObj.getString("andOr");
if (group.size() > 1 && i == 0) {
JSONObject nextItemObj = group.getJSONObject(i + 1);
andOr = nextItemObj.getString("andOr").equals(or) ? or : and;
}
String field = itemObj.getString("field"); String field = itemObj.getString("field");
String itemCondition = itemObj.getString("itemCondition"); String itemCondition = itemObj.getString("itemCondition");
Object value = itemObj.get("value"); Object value = itemObj.get("value");
......
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