fix:87339
This commit is contained in:
+34
-2
@@ -218,14 +218,24 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
||||
@NotNull
|
||||
private QueryWrapper<LawsHomeNormalSearchDTO> getQueryWrapperNormal(LawsHomeNormalSearchDTO lawsHomeNormalSearchDTO) {
|
||||
String[] searchContent = lawsHomeNormalSearchDTO.getSearchContent().split(BLANK_SPACE);
|
||||
searchContent = Arrays.stream(searchContent).distinct().toArray(String[]::new);
|
||||
StringBuilder regexp = new StringBuilder();
|
||||
StringBuilder select = new StringBuilder();
|
||||
select.append("( ");
|
||||
for (int i = 0; i < searchContent.length; i++) {
|
||||
regexp.append(searchContent[i]);
|
||||
StringBuilder ss = new StringBuilder();
|
||||
if(isNumericAndAlphabetic(searchContent[i])){
|
||||
// 英文 数字
|
||||
replaceLength(searchContent, i, ss, " ");
|
||||
}else{
|
||||
// 中文
|
||||
replaceLength(searchContent, i, ss, " ");
|
||||
ss.append(" ");
|
||||
}
|
||||
String str = ss.toString();
|
||||
select.append(" LENGTH(standard_name) - LENGTH(REPLACE(standard_name, '").append(searchContent[i])
|
||||
.append("',").append(" '").append(searchContent[i].length() > 1 ?
|
||||
searchContent[i].substring(0, searchContent[i].length() - 1) : "").append("')) ");
|
||||
.append("',").append(" '").append(str).append("')) ");
|
||||
if(i != searchContent.length - 1){
|
||||
regexp.append("|");
|
||||
select.append("+");
|
||||
@@ -260,6 +270,28 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
private void replaceLength(String[] searchContent, int i, StringBuilder ss, String s2) {
|
||||
String str = searchContent[i].length() > 1 ?
|
||||
searchContent[i].substring(0, searchContent[i].length() - 1) : "";
|
||||
if (!StringUtils.isEmpty(str)) {
|
||||
int arr = str.length();
|
||||
for (int i1 = 0; i1 < arr; i1++) {
|
||||
ss.append(s2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断字符串是否全部由数字和英文字符组成
|
||||
* @param str 输入的字符串
|
||||
* @return 如果字符串只包含数字和英文字符,则返回true,否则返回false
|
||||
*/
|
||||
public static boolean isNumericAndAlphabetic(String str) {
|
||||
// 正则表达式,匹配数字和英文字母
|
||||
String pattern = "^[A-Za-z0-9]+$";
|
||||
return str.matches(pattern);
|
||||
}
|
||||
|
||||
private void addContent(String searchContent, IPage<LawsHomeNormalSearchVO> pageList) {
|
||||
if(CollectionUtils.isEmpty(pageList.getRecords())) {
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user