Commit 95cd3508 authored by tianbo's avatar tianbo

fix(boot-module-jg):修复气瓶合规性检查中的数据问题

- 添加过滤条件,只查询 IS_INTO_MANAGEMENT 为 true 的数据 - 使用 filter替代 must 查询,提高查询效率 - 增加重复数据检查,避免序列号重复 - 优化未注册气瓶的判断逻辑 - 添加使用登记证发证登记机关查询
parent 79fb59d5
......@@ -16,6 +16,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.AcroFields;
import com.itextpdf.text.pdf.BaseFont;
......@@ -3279,14 +3280,14 @@ public class CommonServiceImpl implements ICommonService {
List<Map<String, Object>> result = Lists.newArrayList();
try {
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
boolQuery.must(QueryBuilders.termQuery("IS_INTO_MANAGEMENT", true));
for (String sequenceCode : sequenceCodes) {
String[] keys = sequenceCode.split("-", 2);
BoolQueryBuilder combinationQuery = QueryBuilders.boolQuery()
.must(QueryBuilders.termQuery("produceUnitCreditCode", keys[0]))
.must(QueryBuilders.termQuery("FACTORY_NUM", keys[1]));
.filter(QueryBuilders.termQuery("produceUnitCreditCode", keys[0]))
.filter(QueryBuilders.termQuery("FACTORY_NUM", keys[1]));
boolQuery.should(combinationQuery);
boolQuery.must(QueryBuilders.matchQuery("SEQUENCE_CODE", sequenceCode));
}
boolQuery.minimumShouldMatch(1);
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder()
......@@ -3295,6 +3296,8 @@ public class CommonServiceImpl implements ICommonService {
SearchRequest searchRequest = new SearchRequest(IDX_BIZ_EQUIPMENT_INFO)
.source(sourceBuilder);
SearchResponse response = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
Set<String> useRegistrationList = Sets.newHashSet();
for (SearchHit hit : response.getHits().getHits()) {
Map<String, Object> src = hit.getSourceAsMap();
Map<String, Object> map = Maps.newHashMap();
......@@ -3306,21 +3309,26 @@ public class CommonServiceImpl implements ICommonService {
map.put("useUnitName", Objects.toString(src.get("USE_UNIT_NAME"), ""));
map.put("useUnitCreditCode", Objects.toString(src.get("USE_UNIT_CREDIT_CODE"), ""));
map.put("carNumber", Objects.toString(src.get("carNumber"), ""));
// map.put("registrationAuthority", Objects.toString(src.get("##"), ""));
map.put("nextInspectDate", nextInspectDate);
map.put("isIntoManagement", isIntoManagement);
result.add(map);
useRegistrationList.add(useRegistrationCode);
}
// 判断气瓶合规校验结果
sequenceCodes.forEach(sequenceCode -> {
Map<String, Object> targetCylinder = result.stream().filter(m -> m.get("sequenceCode").equals(sequenceCode)).findFirst().orElse(null);
List<Map<String, Object>> useRegistrationCylinders = result.stream().filter(m -> m.get("sequenceCode").equals(sequenceCode)).collect(Collectors.toList());
if (useRegistrationCylinders.size() > 1) {
throw new BadRequest("气瓶序列号:【" + sequenceCode + "】有重复数据,请联系平台处理");
}
Map<String, Object> targetCylinder = useRegistrationCylinders.stream().findFirst().orElse(null);
if (ValidationUtil.isEmpty(targetCylinder)) {
Map<String, Object> map = Maps.newHashMap();
map.put("sequenceCode", sequenceCode);
map.put("checkResult", CylinderComplianceStatus.NOT_EXIST.name());
map.put("checkResult", CylinderComplianceStatus.NOT_EXIST.getDesc());
map.put("checkResultCode", CylinderComplianceStatus.NOT_EXIST.getCode());
result.add(map);
} else {
if (ValidationUtil.isEmpty(targetCylinder.get("useRegistrationCode")) || !Boolean.TRUE.equals(targetCylinder.get("isIntoManagement"))) {
if (ValidationUtil.isEmpty(targetCylinder.get("useRegistrationCode")) || !"true".equals(targetCylinder.get("isIntoManagement"))) {
targetCylinder.put("checkResult", CylinderComplianceStatus.NOT_REGISTERED.getDesc());
targetCylinder.put("checkResultCode", CylinderComplianceStatus.NOT_REGISTERED.getCode());
} else if (ValidationUtil.isEmpty(targetCylinder.get("nextInspectDate")) || DateUtil.parse((String) targetCylinder.get("nextInspectDate")).getTime() < System.currentTimeMillis()) {
......@@ -3333,6 +3341,16 @@ public class CommonServiceImpl implements ICommonService {
}
});
// 查询合规气瓶使用登记证的发证登记机关
useRegistrationList = useRegistrationList.stream().filter(code -> !ValidationUtil.isEmpty(code)).collect(Collectors.toSet());
if (ValidationUtil.isEmpty(useRegistrationList)) {
return result;
}
List<JgUseRegistrationManage> manageList = jgUseRegistrationManageMapper.selectList(new LambdaQueryWrapper<JgUseRegistrationManage>().in(JgUseRegistrationManage::getUseRegistrationCode, useRegistrationList));
if (!ValidationUtil.isEmpty(manageList)) {
result.forEach(map -> {
manageList.stream().filter(i -> i.getUseRegistrationCode().equals(map.get("useRegistrationCode"))).findFirst().ifPresent(i -> map.put("registrationAuthority", i.getReceiveOrgName()));
});
}
} catch (IOException e) {
log.error("查询气瓶合规信息异常", 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