fix:87339

This commit is contained in:
梁琦涛
2024-07-24 17:42:16 +08:00
parent 94861216dc
commit 46b5a459f8
@@ -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;