Merge remote-tracking branch 'origin/develop_master' into develop_master

This commit is contained in:
yuezhihang
2022-06-27 17:24:43 +08:00
7 changed files with 162 additions and 37 deletions
@@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.RestControllerAdvice;
* <p>
* Created at 2020/8/6 5:03 下午
*/
@RestControllerAdvice
//@RestControllerAdvice
public class SysRuntimeExceptionHandler {
@ExceptionHandler(TokenRuntimeException.class)
@@ -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;
@@ -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<String> 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(), "程序异常,请重试。如果重复出现请联系管理员处理!");
@@ -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<Map<String, Object>>
} 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);
}
// 非动态消息的需要查询为我推荐
@@ -13,6 +13,8 @@ public interface SearchCenterService {
List<Map<String, Object>> searchSarConditionBykey(SeniorSearchInfoEO searchInfoEO) throws Exception;
List<Map<String, Object>> searchSarConditionBykeyTitle(SeniorSearchInfoEO searchInfoEO) throws Exception;
/**
* 查询结果集searchResponse装换成List形式
* @param searchResponse 需要转换的数据
@@ -203,6 +203,115 @@ public class SearchCenterServiceImpl implements SearchCenterService {
return result;
}
@Override
public List<Map<String, Object>> searchSarConditionBykeyTitle(SeniorSearchInfoEO searchInfoEO) throws Exception {
//判断是否高级查询 isHight = truesearchInfoEO.getIsHigh()为空)时,证明不是高级查询
boolean isHight = StringUtils.isBlank(searchInfoEO.getIsHigh());
List<Map<String, Object>> 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<Map<String, Object>> 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";
@@ -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<str.length();i++){
//如果是大写
if(!(str.substring(i, i+1).equals(str.substring(i, i+1).toLowerCase()))){
real += str.substring(i, i+1).toLowerCase();
}else{
real += str.substring(i, i+1);
}
}
return real;
}
}