diff --git a/laws-modules/src/main/java/com/jero/modules/laws/home/mapper/xml/LawsHomeSearchMapper.xml b/laws-modules/src/main/java/com/jero/modules/laws/home/mapper/xml/LawsHomeSearchMapper.xml index 21acae08..21ad4dfc 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/home/mapper/xml/LawsHomeSearchMapper.xml +++ b/laws-modules/src/main/java/com/jero/modules/laws/home/mapper/xml/LawsHomeSearchMapper.xml @@ -66,17 +66,17 @@ ${ew.sqlSegment} group by standard_class union all select 'dynamic_type' as field_name,dynamic_type,count(*) from - (SELECT SUBSTRING_INDEX( SUBSTRING_INDEX( T1.dynamic_type, ',', T2.help_topic_id + 1 ), ',', - 1 ) AS dynamic_type ,standard_number,standard_name + (SELECT SUBSTRING_INDEX( SUBSTRING_INDEX( IF(T1.dynamic_type is null,'',T1.dynamic_type), ',', T2.help_topic_id + 1 ), ',', - 1 ) AS dynamic_type ,standard_number,standard_name FROM laws_domestic_standard T1 - JOIN mysql.help_topic T2 ON T2.help_topic_id < ( LENGTH( T1.dynamic_type ) - LENGTH( REPLACE ( T1.dynamic_type, ',', '' )) + 1) + JOIN mysql.help_topic T2 ON T2.help_topic_id < ( LENGTH( IF(T1.dynamic_type is null,'',T1.dynamic_type) ) - LENGTH( REPLACE ( IF(T1.dynamic_type is null,'',T1.dynamic_type), ',', '' )) + 1) ${ew.sqlSegment} ) a group by dynamic_type union all select 'applicable_vehicle' as field_name,applicable_vehicle,count(*) from - (SELECT SUBSTRING_INDEX( SUBSTRING_INDEX( T1.applicable_vehicle, ',', T2.help_topic_id + 1 ), ',', - 1 ) AS applicable_vehicle ,standard_number,standard_name + (SELECT SUBSTRING_INDEX( SUBSTRING_INDEX( IF(T1.applicable_vehicle is null,'',T1.applicable_vehicle), ',', T2.help_topic_id + 1 ), ',', - 1 ) AS applicable_vehicle ,standard_number,standard_name FROM laws_domestic_standard T1 - JOIN mysql.help_topic T2 ON T2.help_topic_id < ( LENGTH( T1.applicable_vehicle ) - LENGTH( REPLACE ( T1.applicable_vehicle, ',', '' )) + 1) + JOIN mysql.help_topic T2 ON T2.help_topic_id < ( LENGTH( IF(T1.applicable_vehicle is null,'',T1.applicable_vehicle) ) - LENGTH( REPLACE ( IF(T1.applicable_vehicle is null,'',T1.applicable_vehicle), ',', '' )) + 1) ${ew.sqlSegment} ) a group by applicable_vehicle @@ -92,9 +92,9 @@ ${ew.sqlSegment} group by standard_class union all select 'applicable_vehicle' as field_name,applicable_vehicle,count(*) from - (SELECT SUBSTRING_INDEX( SUBSTRING_INDEX( T1.applicable_vehicle, ',', T2.help_topic_id + 1 ), ',', - 1 ) AS applicable_vehicle ,standard_number,standard_name + (SELECT SUBSTRING_INDEX( SUBSTRING_INDEX( IF(T1.applicable_vehicle is null,'',T1.applicable_vehicle), ',', T2.help_topic_id + 1 ), ',', - 1 ) AS applicable_vehicle ,standard_number,standard_name FROM laws_overseas_standard T1 - JOIN mysql.help_topic T2 ON T2.help_topic_id < ( LENGTH( T1.applicable_vehicle ) - LENGTH( REPLACE ( T1.applicable_vehicle, ',', '' )) + 1) + JOIN mysql.help_topic T2 ON T2.help_topic_id < ( LENGTH( IF(T1.applicable_vehicle is null,'',T1.applicable_vehicle) ) - LENGTH( REPLACE ( IF(T1.applicable_vehicle is null,'',T1.applicable_vehicle), ',', '' )) + 1) ${ew.sqlSegment} ) a group by applicable_vehicle 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 e1944a0f..e61404fe 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 @@ -197,8 +197,16 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { 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); + if(Objects.equals("暂未分类",lawsHomeNormalSearchDTO.getDynamicType())){ + queryWrapper.and(o->o.isNull("dynamic_type").or().eq("dynamic_type","")); + }else{ + queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getDynamicType()),"instr(concat(',',dynamic_type,','),concat(',','" + lawsHomeNormalSearchDTO.getDynamicType() + str,0); + } + if(Objects.equals("暂未分类",lawsHomeNormalSearchDTO.getApplicableVehicle())){ + queryWrapper.and(o->o.isNull("applicable_vehicle").or().eq("applicable_vehicle","")); + }else{ + queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getApplicableVehicle()),"instr(concat(',',applicable_vehicle,','),concat(',','" + lawsHomeNormalSearchDTO.getApplicableVehicle() + str,0); + } queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardProperty()),"instr(concat(',',standard_property,','),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.getStandardCode()),"instr(concat(',',standard_code,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardCode() + str,0); @@ -517,8 +525,16 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { 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); + if(Objects.equals("暂未分类",lawsHomeNormalSearchDTO.getDynamicType())){ + queryWrapper.and(o->o.isNull("dynamic_type").or().eq("dynamic_type","")); + }else{ + queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getDynamicType()),"instr(concat(',',dynamic_type,','),concat(',','" + lawsHomeNormalSearchDTO.getDynamicType() + str,0); + } + if(Objects.equals("暂未分类",lawsHomeNormalSearchDTO.getApplicableVehicle())){ + queryWrapper.and(o->o.isNull("applicable_vehicle").or().eq("applicable_vehicle","")); + }else{ + queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getApplicableVehicle()),"instr(concat(',',applicable_vehicle,','),concat(',','" + lawsHomeNormalSearchDTO.getApplicableVehicle() + str,0); + } queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardProperty()),"instr(concat(',',standard_property,','),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.getStandardCode()),"instr(concat(',',standard_code,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardCode() + str,0); @@ -581,6 +597,8 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { } // 适用车辆类型 List list2 = addLawsHomeNormalSearchStatistics(list, "APPLICATIONS_OVERSEAS", APPLICABLE_VEHICLE); + // 添加暂未分类 + list2 = addOther(list, list2, APPLICABLE_VEHICLE); if(!CollectionUtils.isEmpty(list2)){ obj.setApplicableVehicle(list2); } @@ -591,6 +609,28 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { } } + private List addOther(List list, List list2, String applicableVehicle) { + if (CollectionUtils.isEmpty(list2)) { + list2 = new ArrayList<>(); + } + LawsHomeNormalSearchStatisticsObjVO objOther = new LawsHomeNormalSearchStatisticsObjVO(); + List opList = list.stream().filter(o -> Objects.equals(o.getDict(), ",,") + && Objects.equals(o.getFieldName(), applicableVehicle)).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(opList)) { + Optional str = opList.stream().map(o -> Integer.parseInt(StringUtils.isBlank(o.getCount()) ? "0" + : o.getCount())).reduce(Integer::sum); + str.ifPresent(integer -> objOther.setStatisticsCount(String.valueOf(integer))); + } else { + objOther.setStatisticsCount("0"); + } + objOther.setItemText("暂未分类"); + objOther.setItemValue("暂未分类"); + if (!Objects.equals(objOther.getStatisticsCount(), "0")) { + list2.add(0, objOther); + } + return list2; + } + private void count1(List list, LawsHomeNormalSearchStatisticsVO obj) { // 标准类别 List list1 = addLawsHomeNormalSearchStatistics(list,STANDARD_TYPE, STANDARD_CLASS); @@ -599,11 +639,14 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { } // 动力类型 List list2 = addLawsHomeNormalSearchStatistics(list, "POWER_TYPE_DOMESTIC", DYNAMIC_TYPE); + // 添加暂未分类 + list2 = addOther(list, list2, DYNAMIC_TYPE); if(!CollectionUtils.isEmpty(list2)){ obj.setDynamicType(list2); } // 适用车辆类型 List list3 = addLawsHomeNormalSearchStatistics(list,"APPLICATIONS_DOMESTIC", APPLICABLE_VEHICLE); + list3 = addOther(list, list3, APPLICABLE_VEHICLE); if(!CollectionUtils.isEmpty(list3)){ obj.setApplicableVehicle(list3); } @@ -631,7 +674,6 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { if(!CollectionUtils.isEmpty(opList)){ Optional str = opList.stream().map(o->Integer.parseInt(StringUtils.isBlank(o.getCount()) ? "0" : o.getCount())).reduce((x,y) ->x+y); str.ifPresent(integer -> objVO.setStatisticsCount(String.valueOf(integer))); - }else{ objVO.setStatisticsCount("0"); } @@ -674,11 +716,19 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { if(!StringUtils.isBlank(homeNormalSearchDTO.getStandardClass())){ mapDict.put(STANDARD_CLASS,homeNormalSearchDTO.getStandardClass()); } - if(!StringUtils.isBlank(homeNormalSearchDTO.getDynamicType())){ - mapDict.put(DYNAMIC_TYPE,homeNormalSearchDTO.getDynamicType()); + if(Objects.equals("暂未分类",homeNormalSearchDTO.getDynamicType())){ + mapDict.put(DYNAMIC_TYPE,"暂未分类"); + }else{ + if(!StringUtils.isBlank(homeNormalSearchDTO.getDynamicType())){ + mapDict.put(DYNAMIC_TYPE,homeNormalSearchDTO.getDynamicType()); + } } - if(!StringUtils.isBlank(homeNormalSearchDTO.getApplicableVehicle())){ - mapDict.put(APPLICABLE_VEHICLE,homeNormalSearchDTO.getApplicableVehicle()); + if(Objects.equals("暂未分类",homeNormalSearchDTO.getApplicableVehicle())){ + mapDict.put(APPLICABLE_VEHICLE,"暂未分类"); + }else{ + if(!StringUtils.isBlank(homeNormalSearchDTO.getApplicableVehicle())){ + mapDict.put(APPLICABLE_VEHICLE,homeNormalSearchDTO.getApplicableVehicle()); + } } if(!StringUtils.isBlank(homeNormalSearchDTO.getStandardProperty())){ mapDict.put(STANDARD_PROPERTY,homeNormalSearchDTO.getStandardProperty()); @@ -706,11 +756,20 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { queryMapJsonDict.add(map1); } mapDict.forEach((k,v)->{ - Map map1 = new HashMap<>(); - Map map2 = new HashMap<>(); - map2.put(k ,"," + v + ","); - map1.put("match_phrase",map2); - queryMapJsonDict.add(map1); + if((Objects.equals(k,"dynamic_type") && Objects.equals(v,"暂未分类")) || + (Objects.equals(k,"applicable_vehicle") && Objects.equals(v,"暂未分类"))){ + Map map1 = new HashMap<>(); + Map map2 = new HashMap<>(); + map2.put(k + KEYWORD,",,"); + map1.put("term",map2); + queryMapJsonDict.add(map1); + }else{ + Map map1 = new HashMap<>(); + Map map2 = new HashMap<>(); + map2.put(k ,"," + v + ","); + map1.put("match_phrase",map2); + queryMapJsonDict.add(map1); + } }); JSONArray queryMapJson = new JSONArray();