Commit 03787433 authored by tianbo's avatar tianbo

feat(module-jg): 增加使用登记单据 ES 查询接口

- 在 JgUseRegistrationController 中添加 queryESForPage 方法- 在 JgUseRegistrationServiceImpl 中实现 queryESForPage 方法 - 新增 EsUseRegistrationInfo 实体类用于 ES 查询 - 新增 EsUseRegistrationInfoDao 接口用于 ES 数据访问 - 在 TZSCommonConstant 中添加 ES索引名称常量
parent 069fe1a5
...@@ -30,4 +30,15 @@ public class TZSCommonConstant { ...@@ -30,4 +30,15 @@ public class TZSCommonConstant {
public static final String REGULATOR_UNIT_TREE_ALL = "REGULATOR_UNIT_TREE_ALL"; public static final String REGULATOR_UNIT_TREE_ALL = "REGULATOR_UNIT_TREE_ALL";
// 行政审批局redis缓存key // 行政审批局redis缓存key
public static final String ADMINISTRATION_UNIT_TREE = "ADMINISTRATION_UNIT_TREE"; public static final String ADMINISTRATION_UNIT_TREE = "ADMINISTRATION_UNIT_TREE";
public static final String ES_INDEX_NAME_USE_REGISTRATION_INFO = "tzs_jg_use_registration_info";
public static final String ES_INDEX_NAME_USER_INFO = "idx_biz_user_info";
public static final String ES_INDEX_NAME_ENTERPRISE_INFO = "idx_biz_enterprise_info";
public static final String ES_INDEX_NAME_EQUIPMENT_INFO = "idx_biz_equipment_info";
public static final String ES_INDEX_NAME_JG_ALL = "idx_biz_view_jg_all";
} }
package com.yeejoin.amos.boot.module.common.api.dao;
import com.yeejoin.amos.boot.module.common.api.entity.EsUseRegistrationInfo;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface EsUseRegistrationInfoDao extends PagingAndSortingRepository<EsUseRegistrationInfo, String> {
}
package com.yeejoin.amos.boot.module.common.api.entity;
import cn.hutool.core.util.StrUtil;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.*;
import java.time.LocalDate;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* 使用登记单据搜索实体
*/
@Data
@Document(indexName = "tzs_jg_use_registration_info", shards = 3, replicas = 2, createIndex = false)
public class EsUseRegistrationInfo {
@Id
@MultiField(
mainField = @Field(type = FieldType.Text, name = "sequence_nbr"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String sequenceNbr;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "apply_no"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String applyNo;
@Field(type = FieldType.Date, name = "audit_pass_date", format = DateFormat.date_hour_minute_second)
private LocalDate auditPassDate;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "audit_status"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String auditStatus;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "cancel_reason"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String cancelReason;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "code96333"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String code96333;
@Field(type = FieldType.Date, name = "create_date", format = DateFormat.date_hour_minute_second)
private LocalDate createDate;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "create_user_id"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String createUserId;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "equ_category"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String equCategory;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "equ_category_code"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String equCategoryCode;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "equ_code"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String equCode;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "equ_define"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String equDefine;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "equ_define_code"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String equDefineCode;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "equ_list_code"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String equListCode;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "equ_list_name"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String equListName;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "equip_ids"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String equipIds;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "instance_id"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String instanceId;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "is_delete"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String isDelete;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "manage_type"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String manageType;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "next_execute_ids"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String nextExecuteIds;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "next_execute_user_ids"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String nextExecuteUserIds;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "next_task_id"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String nextTaskId;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "org_branch_name"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String orgBranchName;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "project_contraption_id"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String projectContraptionId;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "promoter"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String promoter;
@Field(type = FieldType.Date, name = "rec_date", format = DateFormat.date_hour_minute_second)
private LocalDate recDate;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "receive_company_code"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String receiveCompanyCode;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "receive_org_name"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String receiveOrgName;
@Field(type = FieldType.Date, name = "reg_date", format = DateFormat.date)
private LocalDate regDate;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "reg_type"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String regType;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "status"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String status;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "supervision_org_code"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String supervisionOrgCode;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "supervisory_code"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String supervisoryCode;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "transfer_to_user_ids"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String transferToUserIds;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "use_address"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String useAddress;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "use_registration_code"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String useRegistrationCode;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "use_unit_credit_code"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String useUnitCreditCode;
@MultiField(
mainField = @Field(type = FieldType.Text, name = "use_unit_name"),
otherFields = {
@InnerField(suffix = "keyword", type = FieldType.Keyword)
}
)
private String useUnitName;
// 预处理:建立下划线字段名到驼峰字段名的映射缓存
public static final Map<String, String> UNDERSCORE_TO_CAMEL = new ConcurrentHashMap<>();
// 实体类字段映射
static {
initFieldMapping();
}
public static void initFieldMapping() {
java.lang.reflect.Field[] fields = EsUseRegistrationInfo.class.getDeclaredFields();
for (java.lang.reflect.Field field : fields) {
String underscoreName = StrUtil.toUnderlineCase(field.getName());
UNDERSCORE_TO_CAMEL.put(underscoreName, field.getName());
}
}
}
\ No newline at end of file
package com.yeejoin.amos.boot.module.jg.biz.controller; package com.yeejoin.amos.boot.module.jg.biz.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
...@@ -417,4 +416,16 @@ public class JgUseRegistrationController extends BaseController { ...@@ -417,4 +416,16 @@ public class JgUseRegistrationController extends BaseController {
Page<JgNoticeToBeSubmitDto> page = new Page<>(current, size); Page<JgNoticeToBeSubmitDto> page = new Page<>(current, size);
return ResponseHelper.buildResponse(jgUseRegistrationServiceImpl.queryRegistrationToBeSubmitPage(page,getSelectedOrgInfo())); return ResponseHelper.buildResponse(jgUseRegistrationServiceImpl.queryRegistrationToBeSubmitPage(page,getSelectedOrgInfo()));
} }
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/queryESForPage")
@ApiOperation(httpMethod = "GET", value = "使用登记单据信息列表,从ES中获取数据", notes = "使用登记单据信息列表,从ES中获取数据")
public ResponseModel<IPage<JSONObject>> queryESForPage(JgUseRegistrationDto dto,
@RequestParam(value = "current") String current,
@RequestParam(value = "size") String size,
@RequestParam(value = "sort", required = false) String sort,
@ApiParam(value = "客户端类型: jgAudit-监管审核;jgLook-监管查看")
@RequestParam(value = "client", required = false, defaultValue = "jgAudit") String client) {
return ResponseHelper.buildResponse(jgUseRegistrationServiceImpl.queryESForPage(getSelectedOrgInfo(), current, size, sort, client, dto));
}
} }
...@@ -20,6 +20,7 @@ import com.google.common.collect.Sets; ...@@ -20,6 +20,7 @@ import com.google.common.collect.Sets;
import com.yeejoin.amos.boot.biz.common.annotation.ResultFieldMapping; import com.yeejoin.amos.boot.biz.common.annotation.ResultFieldMapping;
import com.yeejoin.amos.boot.biz.common.bo.CompanyBo; import com.yeejoin.amos.boot.biz.common.bo.CompanyBo;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams; import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity; import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.yeejoin.amos.boot.biz.common.entity.DataDictionary; import com.yeejoin.amos.boot.biz.common.entity.DataDictionary;
import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity; import com.yeejoin.amos.boot.biz.common.entity.TzsBaseEntity;
...@@ -79,6 +80,16 @@ import org.apache.commons.compress.utils.Lists; ...@@ -79,6 +80,16 @@ import org.apache.commons.compress.utils.Lists;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.RangeQueryBuilder;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.sort.SortOrder;
import org.redisson.api.RLock; import org.redisson.api.RLock;
import org.redisson.api.RedissonClient; import org.redisson.api.RedissonClient;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
...@@ -109,14 +120,13 @@ import java.io.UnsupportedEncodingException; ...@@ -109,14 +120,13 @@ import java.io.UnsupportedEncodingException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.sql.*; import java.sql.Timestamp;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.Date;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
...@@ -126,6 +136,10 @@ import java.util.stream.IntStream; ...@@ -126,6 +136,10 @@ import java.util.stream.IntStream;
import java.util.stream.Stream; import java.util.stream.Stream;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream; import java.util.zip.ZipOutputStream;
import static com.yeejoin.amos.boot.module.common.api.constant.TZSCommonConstant.ES_INDEX_NAME_USE_REGISTRATION_INFO;
import static com.yeejoin.amos.boot.module.common.api.entity.EsUseRegistrationInfo.UNDERSCORE_TO_CAMEL;
import static com.yeejoin.amos.boot.module.jg.biz.service.impl.CommonServiceImpl.getCompanyType;
import static java.util.stream.Collectors.toList; import static java.util.stream.Collectors.toList;
import static java.util.stream.Collectors.toSet; import static java.util.stream.Collectors.toSet;
...@@ -280,6 +294,8 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD ...@@ -280,6 +294,8 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
@Autowired @Autowired
private PieLineLevelTypeHandler pieLineLevelTypeHandler; private PieLineLevelTypeHandler pieLineLevelTypeHandler;
@Autowired
private RestHighLevelClient restHighLevelClient;
/** /**
* @param auditPassDate 通过时间 * @param auditPassDate 通过时间
...@@ -5128,4 +5144,222 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD ...@@ -5128,4 +5144,222 @@ public class JgUseRegistrationServiceImpl extends BaseService<JgUseRegistrationD
String companyCode = reginParams.getCompany().getCompanyCode(); String companyCode = reginParams.getCompany().getCompanyCode();
return jgUseRegistrationMapper.queryRegistrationToBeSubmitPage(page, companyCode); return jgUseRegistrationMapper.queryRegistrationToBeSubmitPage(page, companyCode);
} }
public IPage<JSONObject> queryESForPage(ReginParams selectedOrgInfo, String current, String size, String sort, String client, JgUseRegistrationDto dto) {
int pageNumber = ObjectUtils.isEmpty(current) ? 1 : Integer.parseInt(current);
int pageSize = ObjectUtils.isEmpty(size) ? 20 : Integer.parseInt(size);
Page<JSONObject> result = new Page<>(pageNumber, pageSize);
SearchRequest request = new SearchRequest();
request.indices(ES_INDEX_NAME_USE_REGISTRATION_INFO);
SearchSourceBuilder builder = new SearchSourceBuilder();
builder.trackTotalHits(true);
dto.setCurrentUserId(selectedOrgInfo.getUserModel().getUserId());
// 构建查询条件
BoolQueryBuilder boolMust = buildQueryConditions(selectedOrgInfo, client, dto);
// 排序
if (org.apache.commons.lang3.StringUtils.isNotEmpty(sort)) {
String[] sortSplit = sort.split(",");
String sortField = sortSplit[0];
// 为避免Elasticsearch text字段无法排序的问题,统一加上.keyword后缀
if (!sortField.endsWith(".keyword")) {
sortField = sortField + ".keyword";
}
builder.sort(sortField, sortSplit[1].startsWith("asc") ? SortOrder.ASC : SortOrder.DESC);
} else {
builder.sort("create_date.keyword", SortOrder.DESC);
}
builder.query(boolMust);
builder.from((pageNumber - 1) * pageSize);
builder.size(pageSize);
request.source(builder);
SearchResponse response;
try {
request.source(builder);
response = restHighLevelClient.search(request, RequestOptions.DEFAULT);
result.setTotal(Objects.requireNonNull(response.getHits().getTotalHits()).value);
List<JSONObject> records = new ArrayList<>();
for (SearchHit hit : response.getHits().getHits()) {
// 将下划线转换成驼峰
Map<String, Object> sourceMap = hit.getSourceAsMap();
JSONObject x = new JSONObject();
for (Map.Entry<String, Object> entry : sourceMap.entrySet()) {
x.put(UNDERSCORE_TO_CAMEL.get(entry.getKey()), entry.getValue());
}
x.put("companyType", selectedOrgInfo.getCompany().getCompanyType());
x.put("regType", RegTypeEnum.getNameByCode(String.valueOf(x.get("regType"))).orElse(RegTypeEnum.REGISTRATION_NEW.getName()));
if ("8000".equals(String.valueOf(x.get("equListCode"))) && !ValidationUtil.isEmpty(x.get("projectContraptionId"))) {
x.put("canVoided", idxBizJgProjectContraptionMapper.countContraptionInUseTimesForDeleteByIntoManagement(Objects.toString(x.get("projectContraptionId"))) == 0);
} else {
x.put("canVoided", Optional.ofNullable(x.get("useRegistrationCode")).map(this::countUseTimesForInvalid)
.orElse(true));
}
records.add(x);
}
result.setRecords(records);
} catch (IOException e) {
log.error("查询使用登记单据ES异常", e);
throw new RuntimeException(e);
}
return result;
}
/**
* 构建查询条件
*/
private BoolQueryBuilder buildQueryConditions(ReginParams selectedOrgInfo, String client, JgUseRegistrationDto dto) {
BoolQueryBuilder boolMust = QueryBuilders.boolQuery();
CompanyBo company = selectedOrgInfo.getCompany();
String companyCode = CompanyTypeEnum.INDIVIDUAL.getName().equals(company.getCompanyType()) ? company.getCompanyCode().split("_", 2)[1] : company.getCompanyCode();
String companyType = getCompanyType(company);
dto.setCurrentUserId(selectedOrgInfo.getUserModel().getUserId());
// 监管查询自己单位下 + 管辖辖区下的数据
if (BaseController.COMPANY_TYPE_SUPERVISION.equals(companyType)) {
BoolQueryBuilder meBuilder = QueryBuilders.boolQuery();
// 监管单位按设备属地查看
if ("jgLook".equals(client)) {
meBuilder.must(QueryBuilders.prefixQuery("supervision_org_code.keyword", company.getOrgCode()));
} else if ("jgAudit".equals(client)) {
meBuilder.should(QueryBuilders.termQuery("receive_company_code.keyword", companyCode));
meBuilder.should(QueryBuilders.wildcardQuery("transfer_to_user_ids.keyword", "*" + dto.getCurrentUserId() + "*"));
meBuilder.minimumShouldMatch(1);
}
boolMust.must(meBuilder);
}
// 企业按照单位统一信用代码查询
if (BaseController.COMPANY_TYPE_COMPANY.equals(companyType)) {
BoolQueryBuilder orBuilder = QueryBuilders.boolQuery();
orBuilder.should(QueryBuilders.termQuery("use_unit_credit_code.keyword", companyCode));
orBuilder.should(QueryBuilders.wildcardQuery("transfer_to_user_ids.keyword", "*" + dto.getCurrentUserId() + "*"));
orBuilder.minimumShouldMatch(1);
boolMust.must(orBuilder);
}
// 使用登记单号查询
if (!ValidationUtil.isEmpty(dto.getApplyNo())) {
BoolQueryBuilder meBuilder = QueryBuilders.boolQuery();
meBuilder.must(QueryBuilders.termQuery("apply_no.keyword", dto.getApplyNo()));
boolMust.must(meBuilder);
}
// 使用单据状态查询
if (!ValidationUtil.isEmpty(dto.getStatus())) {
BoolQueryBuilder meBuilder = QueryBuilders.boolQuery();
meBuilder.must(QueryBuilders.termQuery("status.keyword", dto.getStatus()));
boolMust.must(meBuilder);
}
// 使用地址查询
if (!ValidationUtil.isEmpty(dto.getFullAddress())) {
BoolQueryBuilder meBuilder = QueryBuilders.boolQuery();
meBuilder.must(QueryBuilders.wildcardQuery("use_address.keyword", "*" + dto.getFullAddress() + "*"));
boolMust.must(meBuilder);
}
// 使用单位名称查询
if (!ValidationUtil.isEmpty(dto.getUseUnitName())) {
BoolQueryBuilder meBuilder = QueryBuilders.boolQuery();
meBuilder.must(QueryBuilders.wildcardQuery("use_unit_name.keyword", "*" + dto.getUseUnitName() + "*"));
boolMust.must(meBuilder);
}
// 使用登记证号查询
if (!ValidationUtil.isEmpty(dto.getUseRegistrationCode())) {
BoolQueryBuilder meBuilder = QueryBuilders.boolQuery();
meBuilder.must(QueryBuilders.termQuery("use_registration_code.keyword", dto.getUseRegistrationCode()));
boolMust.must(meBuilder);
}
// 设备属地监管部门筛选
if (!ValidationUtil.isEmpty(dto.getOrgBranchCode())) {
BoolQueryBuilder meBuilder = QueryBuilders.boolQuery();
meBuilder.must(QueryBuilders.prefixQuery("supervision_org_code.keyword", dto.getOrgBranchCode()));
boolMust.must(meBuilder);
}
// 接收机构筛选
if (!ValidationUtil.isEmpty(dto.getReceiveCompanyCode())) {
BoolQueryBuilder meBuilder = QueryBuilders.boolQuery();
meBuilder.must(QueryBuilders.termQuery("receive_company_code.keyword", dto.getReceiveCompanyCode()));
boolMust.must(meBuilder);
}
// 办理日期筛选
if (!ValidationUtil.isEmpty(dto.getAuditPassDateRange()) && !dto.getAuditPassDateRange().equals("[, ]")) {
String dateRangeStr = dto.getAuditPassDateRange();
JSONArray jsonArray = JSONArray.parseArray(dateRangeStr);
RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("audit_pass_date")
.gte(jsonArray.getString(0))
.lte(jsonArray.getString(1))
.timeZone("+08:00");// 明确指定时区(东八区)查询
boolMust.must(rangeQuery);
}
// 创建日期筛选
if (!ValidationUtil.isEmpty(dto.getApplicationDate())) {
BoolQueryBuilder meBuilder = QueryBuilders.boolQuery();
meBuilder.must(QueryBuilders.prefixQuery("create_date.keyword", dto.getApplicationDate()));
boolMust.must(meBuilder);
}
// 设备种类筛选
if (!ValidationUtil.isEmpty(dto.getEquList())) {
BoolQueryBuilder meBuilder = QueryBuilders.boolQuery();
meBuilder.must(QueryBuilders.termQuery("equ_list_code.keyword", dto.getEquList()));
boolMust.must(meBuilder);
}
// 设备类别筛选
if (!ValidationUtil.isEmpty(dto.getEquCategory())) {
BoolQueryBuilder meBuilder = QueryBuilders.boolQuery();
meBuilder.must(QueryBuilders.termQuery("equ_category_code.keyword", dto.getEquCategory()));
boolMust.must(meBuilder);
}
// 设备品种筛选
if (!ValidationUtil.isEmpty(dto.getEquDefine())) {
BoolQueryBuilder meBuilder = QueryBuilders.boolQuery();
meBuilder.must(QueryBuilders.termQuery("equ_define_code.keyword", dto.getEquDefine()));
boolMust.must(meBuilder);
}
// 设备代码筛选
if (!ValidationUtil.isEmpty(dto.getEquCode())) {
BoolQueryBuilder meBuilder = QueryBuilders.boolQuery();
meBuilder.must(QueryBuilders.wildcardQuery("equ_code", "*" + dto.getEquCode() + "*"));
boolMust.must(meBuilder);
}
// 设备96333码筛选
if (!ValidationUtil.isEmpty(dto.getCode96333())) {
BoolQueryBuilder meBuilder = QueryBuilders.boolQuery();
meBuilder.must(QueryBuilders.wildcardQuery("code96333", "*" + dto.getCode96333() + "*"));
boolMust.must(meBuilder);
}
// 设备监管码筛选
if (!ValidationUtil.isEmpty(dto.getSupervisoryCode())) {
BoolQueryBuilder meBuilder = QueryBuilders.boolQuery();
meBuilder.must(QueryBuilders.wildcardQuery("supervisory_code", "*" + dto.getSupervisoryCode() + "*"));
boolMust.must(meBuilder);
}
BoolQueryBuilder meBuilder = QueryBuilders.boolQuery();
meBuilder.must(QueryBuilders.termQuery("is_delete.keyword", "0"));
boolMust.must(meBuilder);
return boolMust;
}
} }
\ No newline at end of file
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