diff --git a/laws-modules/src/main/java/com/jero/modules/laws/home/service/impl/LawsHomeSearchServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/home/service/impl/LawsHomeSearchServiceImpl.java index e4aeb135..12706d00 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/home/service/impl/LawsHomeSearchServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/home/service/impl/LawsHomeSearchServiceImpl.java @@ -222,46 +222,49 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { private QueryWrapper getQueryWrapperNormal(LawsHomeNormalSearchDTO lawsHomeNormalSearchDTO) { String[] searchContent = lawsHomeNormalSearchDTO.getSearchContent().split(BLANK_SPACE); searchContent = Arrays.stream(searchContent).distinct().toArray(String[]::new); - StringBuilder regexp = new StringBuilder(); + StringBuilder re = 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(" ABS(LENGTH(standard_name) - LENGTH(REPLACE(standard_name, '").append(searchContent[i]) - .append("',").append(" '").append(str).append("'))) "); - if(i != searchContent.length - 1){ - regexp.append("|"); - select.append("+"); - } - } - select.append(") as sort_index"); QueryWrapper queryWrapper = new QueryWrapper<>(); + select.append("( "); + String[] finalSearchContent = searchContent; + queryWrapper.and(o->{ + for (int i = 0; i < finalSearchContent.length; i++) { + o.like("standard_name",finalSearchContent[i]); + re.append(finalSearchContent[i]); + StringBuilder ss = new StringBuilder(); + if(isNumericAndAlphabetic(finalSearchContent[i])){ + // 英文 数字 + replaceLength(finalSearchContent, i, ss, " "); + }else{ + // 中文 + replaceLength(finalSearchContent, i, ss, " "); + ss.append(" "); + } + String str = ss.toString(); + select.append(" ABS(LENGTH(standard_name) - LENGTH(REPLACE(standard_name, '").append(finalSearchContent[i]) + .append("',").append(" '").append(str).append("'))) "); + if(i != finalSearchContent.length - 1){ + o.or(); + select.append("+"); + } + } + }); + select.append(") as sort_index"); + queryWrapper.select("id,standard_name,resource_type," + "create_time,standard_type_order,standard_state_order,standard_class," + "dynamic_type,applicable_vehicle," + "standard_state,standard_code,grade_classification,implementation_date, " + select); - queryWrapper.and(s->s.apply("standard_name REGEXP '" + regexp.toString() + "'")); queryWrapper.eq(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getResourceType()),RESOURCE_TYPE,lawsHomeNormalSearchDTO.getResourceType()); - String str = "',','))"; - queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardClass()),"instr(concat(',',standard_class,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardClass() + str,0); - queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getDynamicType()),"instr(concat(',',dynamic_type,','),concat(',','" + lawsHomeNormalSearchDTO.getDynamicType() + str,0); - queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getApplicableVehicle()),"instr(concat(',',applicable_vehicle,','),concat(',','" + lawsHomeNormalSearchDTO.getApplicableVehicle() + str,0); - queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardProperty()),"instr(concat(',',type,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardProperty() + str,0); - queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardState()),"instr(concat(',',standard_state,','), concat(',','" + lawsHomeNormalSearchDTO.getStandardState() + str,0); - queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getCategoryCode()),"instr(concat(',',category_code,','),concat(',','" + lawsHomeNormalSearchDTO.getCategoryCode() + str,0); - queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getEnterpriseStandardState()),"instr(concat(',',standard_state,','), concat(',','" + lawsHomeNormalSearchDTO.getEnterpriseStandardState() + str,0); - queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getApplicableMarket()),"instr(concat(',',applicable_market,','),concat(',','" + lawsHomeNormalSearchDTO.getApplicableMarket() + str,0); + queryWrapper.like(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardClass()),"concat(',',standard_class,',')","," + lawsHomeNormalSearchDTO.getStandardClass() + ","); + queryWrapper.like(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getDynamicType()),"concat(',',dynamic_type,',')","," + lawsHomeNormalSearchDTO.getDynamicType() + ","); + queryWrapper.like(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getApplicableVehicle()),"concat(',',applicable_vehicle,',')","," + lawsHomeNormalSearchDTO.getApplicableVehicle() + ","); + queryWrapper.like(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardProperty()),"concat(',',type,',')","," + lawsHomeNormalSearchDTO.getStandardProperty() + ","); + queryWrapper.like(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardState()),"concat(',',standard_state,',')", "," + lawsHomeNormalSearchDTO.getStandardState() + ","); + queryWrapper.like(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getCategoryCode()),"concat(',',category_code,',')","," + lawsHomeNormalSearchDTO.getCategoryCode() + ","); + queryWrapper.like(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getEnterpriseStandardState()),"concat(',',standard_state,',')","," + lawsHomeNormalSearchDTO.getEnterpriseStandardState() + ","); + queryWrapper.like(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getApplicableMarket()),"concat(',',applicable_market,',')","," + lawsHomeNormalSearchDTO.getApplicableMarket() + ","); return queryWrapper; } @@ -501,25 +504,25 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { QueryWrapper queryWrapper = new QueryWrapper<>(); String[] text = searchContent.split(BLANK_SPACE); - StringBuilder regexp = new StringBuilder(); - for (int i = 0; i < text.length; i++) { - regexp.append(text[i]); - if(i != text.length - 1){ - regexp.append("|"); + queryWrapper.and(o->{ + for (int i = 0; i < text.length; i++) { + o.like("CONCAT_WS(' ',standard_number,standard_name)",text[i]); + if(i != text.length - 1){ + o.or(); + } } - } + }); - queryWrapper.and(s->s.apply("CONCAT_WS(' ',standard_number,standard_name) REGEXP '" + regexp + "'")); queryWrapper.eq("del_flag",0); - String str = "',','))"; - queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardClass()),"instr(concat(',',standard_class,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardClass() + str,0); - queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getDynamicType()),"instr(concat(',',dynamic_type,','),concat(',','" + lawsHomeNormalSearchDTO.getDynamicType() + str,0); - queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getApplicableVehicle()),"instr(concat(',',applicable_vehicle,','),concat(',','" + lawsHomeNormalSearchDTO.getApplicableVehicle() + str,0); - queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardProperty()),"instr(concat(',',type,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardProperty() + str,0); - queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardState()),"instr(concat(',',standard_state,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardState() + str,0); - queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getCategoryCode()),"instr(concat(',',category_code,','),concat(',','" + lawsHomeNormalSearchDTO.getCategoryCode() + str,0); - queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getEnterpriseStandardState()),"instr(concat(',',standard_state,','),concat(',','" + lawsHomeNormalSearchDTO.getEnterpriseStandardState() + str,0); - queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getApplicableMarket()),"instr(concat(',',applicable_market,','),concat(',','" + lawsHomeNormalSearchDTO.getApplicableMarket() + str,0); + + queryWrapper.like(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardClass()),"concat(',',standard_class,',')","," + lawsHomeNormalSearchDTO.getStandardClass() + ","); + queryWrapper.like(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getDynamicType()),"concat(',',dynamic_type,',')","," + lawsHomeNormalSearchDTO.getDynamicType() + ","); + queryWrapper.like(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getApplicableVehicle()),"concat(',',applicable_vehicle,',')","," + lawsHomeNormalSearchDTO.getApplicableVehicle() + ","); + queryWrapper.like(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardProperty()),"concat(',',type,',')","," + lawsHomeNormalSearchDTO.getStandardProperty() + ","); + queryWrapper.like(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardState()),"concat(',',standard_state,',')","," + lawsHomeNormalSearchDTO.getStandardState() + ","); + queryWrapper.like(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getCategoryCode()),"concat(',',category_code,',')","," + lawsHomeNormalSearchDTO.getCategoryCode() + ","); + queryWrapper.like(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getEnterpriseStandardState()),"concat(',',standard_state,',')","," + lawsHomeNormalSearchDTO.getEnterpriseStandardState() + ","); + queryWrapper.like(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getApplicableMarket()),"concat(',',applicable_market,',')","," + lawsHomeNormalSearchDTO.getApplicableMarket() + ","); // queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getGradeClassification()),"instr(concat(',',grade_classification,','),concat(',','" + lawsHomeNormalSearchDTO.getGradeClassification() + str,0); switch (lawsHomeNormalSearchDTO.getResourceType()){