diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/exception/SysRuntimeExceptionHandler.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/exception/SysRuntimeExceptionHandler.java index 93006848..549d2847 100644 --- a/adc-da-jwtLogin/src/main/java/com/adc/da/login/exception/SysRuntimeExceptionHandler.java +++ b/adc-da-jwtLogin/src/main/java/com/adc/da/login/exception/SysRuntimeExceptionHandler.java @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.RestControllerAdvice; *

* Created at 2020/8/6 5:03 下午 */ -@RestControllerAdvice +//@RestControllerAdvice public class SysRuntimeExceptionHandler { @ExceptionHandler(TokenRuntimeException.class) diff --git a/adc-da-jwtLogin/src/main/java/com/adc/da/login/exception/TokenRuntimeException.java b/adc-da-jwtLogin/src/main/java/com/adc/da/login/exception/TokenRuntimeException.java index 71be3519..01fa4a49 100644 --- a/adc-da-jwtLogin/src/main/java/com/adc/da/login/exception/TokenRuntimeException.java +++ b/adc-da-jwtLogin/src/main/java/com/adc/da/login/exception/TokenRuntimeException.java @@ -12,7 +12,7 @@ import lombok.Data; * Created at 2020/8/6 4:58 下午 */ @Data -public class TokenRuntimeException extends RuntimeException{ +public class TokenRuntimeException extends Exception{ private String code = "401"; private String msg; diff --git a/adc-da-main/src/main/java/com/adc/da/main/advice/AdcDaBaseExceptionAdvice.java b/adc-da-main/src/main/java/com/adc/da/main/advice/AdcDaBaseExceptionAdvice.java index 44ae7eae..38faf354 100644 --- a/adc-da-main/src/main/java/com/adc/da/main/advice/AdcDaBaseExceptionAdvice.java +++ b/adc-da-main/src/main/java/com/adc/da/main/advice/AdcDaBaseExceptionAdvice.java @@ -13,11 +13,23 @@ import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseStatus; +import java.util.HashSet; +import java.util.Set; + @Slf4j @ControllerAdvice @Order(value=4) public class AdcDaBaseExceptionAdvice { + private static Set errMsg = new HashSet<>(); + + static { + errMsg.add("token已过期"); + errMsg.add("未登录"); + errMsg.add("token解析错误"); + errMsg.add("员工不存在"); + } + @ResponseStatus(HttpStatus.OK) @ExceptionHandler(AdcDaBaseException.class) @@ -34,8 +46,8 @@ public class AdcDaBaseExceptionAdvice { log.error(exception.getMessage(), exception); // TODO 在数据库中记录程序异常,这个地方的异常是未处理的异常,需要管理员查看并进行处理以防重复出现 if(exception.getStackTrace() != null){ - if("token已过期".equals(exception.getMessage())){ - return Result.error(ResponseMessageCodeEnum.ERROR_TOKEN.getCode(), "token已过期,请重新登录"); + if(errMsg.contains(exception.getMessage())){ + return Result.error(ResponseMessageCodeEnum.ERROR_TOKEN.getCode(), "token无效,请登录"); } } return Result.error(ResponseMessageCodeEnum.ERROR.getCode(), "程序异常,请重试。如果重复出现请联系管理员处理!"); diff --git a/adc-da-search/src/main/java/com/adc/da/search/controller/SearchCenterController.java b/adc-da-search/src/main/java/com/adc/da/search/controller/SearchCenterController.java index e09f6b97..59214e17 100644 --- a/adc-da-search/src/main/java/com/adc/da/search/controller/SearchCenterController.java +++ b/adc-da-search/src/main/java/com/adc/da/search/controller/SearchCenterController.java @@ -18,6 +18,7 @@ import com.adc.da.search.entity.SarAdvanceSearchVO; import com.adc.da.search.entity.SeniorSearchInfoEO; import com.adc.da.search.service.ElasticsearchService; import com.adc.da.search.service.SearchCenterService; +import com.adc.da.search.util.ElasticsearchConstant; import com.adc.da.util.IOUtils; import com.alibaba.fastjson.JSONObject; import io.swagger.annotations.Api; @@ -117,7 +118,9 @@ public class SearchCenterController extends BaseController> } else { if (searchInfoEO.getQueryStatus() != null && StringUtils.isNotBlank(searchInfoEO.getQueryStatus()) && searchInfoEO.getQueryStatus().equals("advancedSearch") && null != searchInfoEO.getSelectValue() && StringUtils.isNotBlank(searchInfoEO.getSelectValue())) { result = searchCenterService.searchSarBykey(searchInfoEO); - }else { + }else if("titleSearch".equals(searchInfoEO.getSelectType())){ + result = searchCenterService.searchSarConditionBykeyTitle(searchInfoEO); + }else{ result = searchCenterService.searchSarConditionBykey(searchInfoEO); } // 非动态消息的需要查询为我推荐 diff --git a/adc-da-search/src/main/java/com/adc/da/search/service/SearchCenterService.java b/adc-da-search/src/main/java/com/adc/da/search/service/SearchCenterService.java index 418fe9b7..f95e82cc 100644 --- a/adc-da-search/src/main/java/com/adc/da/search/service/SearchCenterService.java +++ b/adc-da-search/src/main/java/com/adc/da/search/service/SearchCenterService.java @@ -13,6 +13,8 @@ public interface SearchCenterService { List> searchSarConditionBykey(SeniorSearchInfoEO searchInfoEO) throws Exception; + List> searchSarConditionBykeyTitle(SeniorSearchInfoEO searchInfoEO) throws Exception; + /** * 查询结果集searchResponse装换成List形式 * @param searchResponse 需要转换的数据 diff --git a/adc-da-search/src/main/java/com/adc/da/search/service/impl/SearchCenterServiceImpl.java b/adc-da-search/src/main/java/com/adc/da/search/service/impl/SearchCenterServiceImpl.java index 1435b43c..35bf27db 100644 --- a/adc-da-search/src/main/java/com/adc/da/search/service/impl/SearchCenterServiceImpl.java +++ b/adc-da-search/src/main/java/com/adc/da/search/service/impl/SearchCenterServiceImpl.java @@ -203,6 +203,115 @@ public class SearchCenterServiceImpl implements SearchCenterService { return result; } + @Override + public List> searchSarConditionBykeyTitle(SeniorSearchInfoEO searchInfoEO) throws Exception { + //判断是否高级查询 isHight = true(searchInfoEO.getIsHigh()为空)时,证明不是高级查询 + boolean isHight = StringUtils.isBlank(searchInfoEO.getIsHigh()); + List> result = new ArrayList<>(); + SearchRequestBuilder searchRequestBuilder; + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + BoolQueryBuilder boolQueryShould = QueryBuilders.boolQuery(); + BoolQueryBuilder boolQueryMust = QueryBuilders.boolQuery(); + + updateIndex(searchInfoEO.getSelectIndex()); + String sortField1 = ""; + String sortField2 = ""; + String sortField3 = ""; + if("laws".equals(searchInfoEO.getSelectIndex())){ + sortField1 = "lawsNumber"; + sortField2 = "lawsYear"; + sortField3 = "lawsType.keyword"; + }else { + sortField1 = "standNumber"; + sortField2 = "standYear"; + sortField3 = "standSort.keyword"; + } + searchRequestBuilder = client.prepareSearch(searchInfoEO.getSelectIndex()) + .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) + .setFrom((searchInfoEO.getPage()-1)*searchInfoEO.getPageSize()) + .addSort(new ScoreSortBuilder().order(SortOrder.DESC)) + .addSort("standSortOrder", SortOrder.ASC) + .addSort(sortField1, SortOrder.ASC) + .addSort(sortField2, SortOrder.DESC) + .addSort(sortField3, SortOrder.ASC) + .addSort("issue_time_data", SortOrder.DESC) + .setSize(searchInfoEO.getPageSize()); + + if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue()) && StringUtils.isBlank(searchInfoEO.getIsHigh())){ + QueryBuilder multiQueryBuilder; + switch (searchInfoEO.getSelectIndex()){ + case "stand": + boolQueryShould + .should(QueryBuilders.wildcardQuery("standSort.keyword", searchInfoEO.getSelectValue().toUpperCase()).boost(1005f)) + .should(QueryBuilders.termQuery("standNumber", searchInfoEO.getSelectValue().toUpperCase()).boost(1004f)) + .should(QueryBuilders.wildcardQuery("standYear.keyword", searchInfoEO.getSelectValue().toUpperCase()).boost(1003f)) + .should(QueryBuilders.wildcardQuery("nameshow.keyword", searchInfoEO.getSelectValue().toUpperCase()).boost(1002f)) + .should(QueryBuilders.wildcardQuery("numbershow.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1000f)) + .should(QueryBuilders.wildcardQuery("numbershow.keyword", "*" + searchInfoEO.getSelectValue() + "*").boost(999f)); + break; + case "laws": + boolQueryShould.should(QueryBuilders.wildcardQuery("lawsNumber.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("lawsName.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("lawsNo.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("lawsEnName.keyword", "*"+searchInfoEO.getSelectValue()+"*")); + break; + case "bussstand": + boolQueryShould + .should(QueryBuilders.wildcardQuery("standSort.keyword", searchInfoEO.getSelectValue().toUpperCase()).boost(1005f)) + .should(QueryBuilders.termQuery("standNumber", searchInfoEO.getSelectValue().toUpperCase()).boost(1004f)) + .should(QueryBuilders.wildcardQuery("standYear.keyword", searchInfoEO.getSelectValue().toUpperCase()).boost(1003f)) + .should(QueryBuilders.wildcardQuery("nameshow.keyword", searchInfoEO.getSelectValue().toUpperCase()).boost(1002f)) + .should(QueryBuilders.wildcardQuery("stand_code.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1000f)) + .should(QueryBuilders.wildcardQuery("stand_code.keyword", "*" + searchInfoEO.getSelectValue() + "*").boost(999F)); + break; + default: break; + } + } + + if(boolQueryShould!=null){ + boolQueryBuilder.must(QueryBuilders.matchQuery("validFlag", 0)); + if(StringUtils.isNotEmpty(searchInfoEO.getSelectValue())){ + if (StringUtils.isNotBlank(searchInfoEO.getType())) { + boolQueryShould.must(QueryBuilders.wildcardQuery("type.keyword", "*"+searchInfoEO.getType()+"*")); + } + if (StringUtils.isNotBlank(searchInfoEO.getStandType()) && StringUtils.isNotBlank(searchInfoEO.getSelectIndex())) { + if(searchInfoEO.getSelectIndex().equals("bussstand")){ + boolQueryShould.must(QueryBuilders.wildcardQuery("type.keyword", "*"+searchInfoEO.getStandType()+"*")); + }else { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("standType.keyword", "*"+searchInfoEO.getStandType()+"*")); + } + } + if (StringUtils.isNotBlank(searchInfoEO.getStandSort())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("numbershow.keyword", "*"+searchInfoEO.getStandSort()+" "+"*")); + } + if (StringUtils.isNotBlank(searchInfoEO.getTextStatus())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("textStatus.keyword", "*"+searchInfoEO.getTextStatus()+"*")); + } + + if (StringUtils.isNotBlank(searchInfoEO.getLawsSyqy())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("lawsSyqy.keyword", "*"+searchInfoEO.getLawsSyqy()+"*")); + } + + if (StringUtils.isNotBlank(searchInfoEO.getLawsSycx())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("lawsSycx.keyword", "*"+searchInfoEO.getLawsSycx()+"*")); + } + boolQueryBuilder.must(boolQueryShould); + }else { + if ("stand".equals(searchInfoEO.getSelectIndex()) && StringUtils.isNotBlank(searchInfoEO.getStandType())) { + boolQueryBuilder.must(QueryBuilders.wildcardQuery("standType.keyword", "*"+searchInfoEO.getStandType()+"*")); + } + boolQueryBuilder.must(boolQueryShould); + } + + searchRequestBuilder.setQuery(boolQueryBuilder).setTrackTotalHits(true); + + // 获取查询到的结果 + result = countStandSearchResult(searchRequestBuilder,searchInfoEO); + } + + return result; + } + // 条件 @Override public List> searchSarConditionBykey(SeniorSearchInfoEO searchInfoEO) throws Exception { @@ -259,30 +368,16 @@ public class SearchCenterServiceImpl implements SearchCenterService { RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery(ISSUE_TIME).format(EPOCH_MILLIS).from(starttime).to(endtime).includeLower(true).includeUpper(true); boolQueryShould.should(rangeQueryBuilder); } -// boolQueryShould.should(QueryBuilders.wildcardQuery("standSort.keyword", "*"+searchInfoEO.getSelectValue()+"*")) -// .should(QueryBuilders.wildcardQuery("standNumber.keyword", "*"+searchInfoEO.getSelectValue()+"*")) -// .should(QueryBuilders.wildcardQuery("standYear.keyword", "*"+searchInfoEO.getSelectValue()+"*")) -// .should(QueryBuilders.wildcardQuery("stand_name.keyword", "*"+searchInfoEO.getSelectValue()+"*")) -// .should(QueryBuilders.wildcardQuery("standEnName.keyword", "*"+searchInfoEO.getSelectValue()+"*")) -// .should(QueryBuilders.wildcardQuery("standNatureName.keyword", "*"+searchInfoEO.getSelectValue()+"*")) -// .should(QueryBuilders.wildcardQuery("textStatusName.keyword", "*"+searchInfoEO.getSelectValue()+"*")) -// .should(QueryBuilders.wildcardQuery("isRelateAccessName.keyword", "*"+searchInfoEO.getSelectValue()+"*")) -// .should(QueryBuilders.wildcardQuery("numbershow.keyword", "*"+searchInfoEO.getSelectValue()+"*")) -// .should(QueryBuilders.matchPhraseQuery("content", "*"+searchInfoEO.getSelectValue()+"*")) -// .should(QueryBuilders.wildcardQuery("standSystem.keyword", "*"+searchInfoEO.getSelectValue()+"*")); + boolQueryShould.should(QueryBuilders.wildcardQuery("numbershow.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("stand_name.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("numbershow.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("standEnName.keyword", "*"+searchInfoEO.getSelectValue()+"*")); break; case "laws": -// boolQueryShould.should(QueryBuilders.wildcardQuery("lawsTypeName.keyword", "*"+searchInfoEO.getSelectValue()+"*")) -// .should(QueryBuilders.wildcardQuery("lawsNumber.keyword", "*"+searchInfoEO.getSelectValue()+"*")) -// .should(QueryBuilders.wildcardQuery("lawsName.keyword", "*"+searchInfoEO.getSelectValue()+"*")) -// .should(QueryBuilders.wildcardQuery("lawsNo.keyword", "*"+searchInfoEO.getSelectValue()+"*")) -// .should(QueryBuilders.wildcardQuery("issueCompany.keyword", "*"+searchInfoEO.getSelectValue()+"*")) -// .should(QueryBuilders.wildcardQuery("lawsTextStateName.keyword", "*"+searchInfoEO.getSelectValue()+"*")) -// .should(QueryBuilders.wildcardQuery("isRelateAccessName.keyword", "*"+searchInfoEO.getSelectValue()+"*")) -// .should(QueryBuilders.wildcardQuery("lawsYearName.keyword", "*"+searchInfoEO.getSelectValue()+"*")) -// .should(QueryBuilders.wildcardQuery("lawsBulletin.keyword", "*"+searchInfoEO.getSelectValue()+"*")) -// .should(QueryBuilders.wildcardQuery("lawsLabel.keyword", "*"+searchInfoEO.getSelectValue()+"*")) -// .should(QueryBuilders.wildcardQuery("lawsRemark.keyword", "*"+searchInfoEO.getSelectValue()+"*")); + boolQueryShould.should(QueryBuilders.wildcardQuery("lawsNumber.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("lawsName.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("lawsNo.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("lawsEnName.keyword", "*"+searchInfoEO.getSelectValue()+"*")); if (isRqFormat(searchInfoEO.getSelectValue())) { Long starttime = dateFormatToStr(searchInfoEO.getSelectValue()).getTime(); Long endtime = dateFormatToStr(searchInfoEO.getSelectValue()).getTime(); @@ -295,12 +390,10 @@ public class SearchCenterServiceImpl implements SearchCenterService { } break; case "bussstand": -// boolQueryShould.should(QueryBuilders.wildcardQuery("standSort.keyword", "*"+searchInfoEO.getSelectValue()+"*")) -// .should(QueryBuilders.wildcardQuery("stand_code.keyword", "*"+searchInfoEO.getSelectValue()+"*")) -// .should(QueryBuilders.wildcardQuery("standYear.keyword", "*"+searchInfoEO.getSelectValue()+"*")) -// .should(QueryBuilders.wildcardQuery("stand_name.keyword", "*"+searchInfoEO.getSelectValue()+"*")) -// .should(QueryBuilders.wildcardQuery("standEnName.keyword", "*"+searchInfoEO.getSelectValue()+"*")) -// .should(QueryBuilders.wildcardQuery("textStatusBuss.keyword", "*"+searchInfoEO.getSelectValue()+"*")); + boolQueryShould.should(QueryBuilders.wildcardQuery("numbershow.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("stand_name.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("standEnName.keyword", "*"+searchInfoEO.getSelectValue()+"*")) + .should(QueryBuilders.wildcardQuery("nameshow.keyword", "*"+searchInfoEO.getSelectValue()+"*")); if (isRqFormat(searchInfoEO.getSelectValue())) { Long starttime = dateFormatToStr(searchInfoEO.getSelectValue()).getTime(); Long endtime = dateFormatToStr(searchInfoEO.getSelectValue()).getTime(); @@ -798,14 +891,14 @@ public class SearchCenterServiceImpl implements SearchCenterService { String[] lawsStr = null; String[] bussstandStr = null; if (StringUtils.isNotBlank(searchInfoEO.getSelectType()) && "titleSearch".equals(searchInfoEO.getSelectType())){ - standStr = new String[]{"numbershow","nameshow"}; + standStr = new String[]{"numbershow","nameshow","standNumber"}; lawsStr = new String[]{"lawsNo","lawsName"}; bussstandStr = new String[]{"numbershow","nameshow"}; }else { - standStr = new String[]{"content", "standEnName", "standNatureName", + standStr = new String[]{"standEnName", "standNatureName","standNumber", "textStatusName", "isRelateAccessName", "numbershow","nameshow", "standSystem", "NYLXCLASS", "CLLX"}; - lawsStr = new String[]{"content", "lawsEnName","lawsName", "lawsNo", "issueCompany", "lawsTextState", "lawsSyqy", "lawsSycx", "isRelateAccess", "lawsNotisyncNum", "lawsBulletin", "lawsLabel", "lawsRemark"}; - bussstandStr = new String[]{"content", "stand_code", "standEnName", "nameshow", "standstateshow", "numbershow", "textStatusBuss", "textStatusBussName", "NYLXCLASS", "CLLX"}; + lawsStr = new String[]{"lawsEnName","lawsName", "lawsNo", "issueCompany", "lawsTextState", "lawsSyqy", "lawsSycx", "isRelateAccess", "lawsNotisyncNum", "lawsBulletin", "lawsLabel", "lawsRemark"}; + bussstandStr = new String[]{"stand_code", "standEnName", "nameshow", "standstateshow", "numbershow", "textStatusBuss", "textStatusBussName", "NYLXCLASS", "CLLX"}; for (String field : fieldList) { // 关键字查询属性字段 String keyWordField2 = field + "Name"; diff --git a/adc-da-search/src/main/java/com/adc/da/search/util/ElasticsearchConstant.java b/adc-da-search/src/main/java/com/adc/da/search/util/ElasticsearchConstant.java index 5c3a1cd3..88578e2a 100644 --- a/adc-da-search/src/main/java/com/adc/da/search/util/ElasticsearchConstant.java +++ b/adc-da-search/src/main/java/com/adc/da/search/util/ElasticsearchConstant.java @@ -14,4 +14,19 @@ public class ElasticsearchConstant { public static final String SUCCESS_DELETED = "DELETED"; //删除过程中未找到对应数据返回结果 public static final String HAVE_NOT_FOUND= "NOT_FOUND"; + + //字符串转换为小写 + public static String exChangeLower(String str){ + //把一个字符串中的大写转为小写 + String real = ""; + for(int i=0;i