一般检索修改

This commit is contained in:
梁琦涛
2023-11-16 16:02:42 +08:00
parent 5b2c420beb
commit d2674d9399
5 changed files with 282 additions and 22 deletions
@@ -10,6 +10,8 @@ import com.jero.modules.laws.home.entity.LawsHomeNormalSearchHistory;
import com.jero.modules.laws.home.vo.LawsHomeNormalSearchVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author lqt
* @version 1.0
@@ -27,4 +29,13 @@ public interface LawsHomeSearchMapper extends BaseMapper<LawsHomeNormalSearchHis
*/
IPage<LawsHomeNormalSearchVO> getPage(Page<LawsHomeNormalSearchVO> page,@Param(Constants.WRAPPER) QueryWrapper<LawsHomeNormalSearchDTO> queryWrapper);
/**
* 首页-一般检索(标题)查询
* @author LQT
* @date 2023/11/16 15:21
* @param queryWrapper
* @return java.util.List<com.jero.modules.laws.home.vo.LawsHomeNormalSearchVO>
*/
List<LawsHomeNormalSearchVO> getPage(@Param(Constants.WRAPPER) QueryWrapper<LawsHomeNormalSearchDTO> queryWrapper);
}
@@ -6,14 +6,21 @@
select * from (
select id,'1' as resource_type,standard_number,standard_name,
case when standard_class = 'GB' then 2
when standard_class = 'GB/T' then 1 end as standard_type
from laws_domestic_standard where del_flag = 0
when standard_class = 'GB/T' then 1 end as standard_type,
standard_class,dynamic_type,applicable_vehicle,standard_property,standard_state,'' as standard_code,'' as grade_classification
from laws_domestic_standard where del_flag = 0
union all
select id,'2' as resource_type,standard_number,standard_name,0 as standard_type from laws_overseas_standard where del_flag = 0
select id,'2' as resource_type,standard_number,standard_name,0 as standard_type,
standard_class,'',applicable_vehicle,'',standard_state,'',''
from laws_overseas_standard where del_flag = 0
union all
select id,'3' as resource_type,standard_number,standard_name,0 as standard_type from laws_enterprise_standard where del_flag = 0
select id,'3' as resource_type,standard_number,standard_name,0 as standard_type,
'','','','',standard_state,standard_code,grade_classification
from laws_enterprise_standard where del_flag = 0
union all
select id,'4' as resource_type,'' as standard_number,dynamic_heading as standard_name,0 as standard_type from laws_news_feed where del_flag = 0
select id,'4' as resource_type,'' as standard_number,dynamic_heading as standard_name,0 as standard_type,
'','','','','','',''
from laws_news_feed where del_flag = 0
) as all_data
<where>
${ew.sqlSegment}
@@ -1,10 +1,12 @@
package com.jero.modules.laws.home.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.vo.DictModel;
import com.jero.common.system.vo.LoginUser;
import com.jero.modules.laws.home.common.LawsHomeSearchCommon;
import com.jero.modules.laws.home.dto.LawsHomeNormalSearchDTO;
@@ -12,6 +14,7 @@ import com.jero.modules.laws.home.entity.LawsHomeNormalSearchHistory;
import com.jero.modules.laws.home.mapper.LawsHomeSearchMapper;
import com.jero.modules.laws.home.service.ILawsHomeNormalSearchHistoryService;
import com.jero.modules.laws.home.service.ILawsHomeSearchService;
import com.jero.modules.laws.home.vo.LawsHomeNormalSearchStatisticsObjVO;
import com.jero.modules.laws.home.vo.LawsHomeNormalSearchStatisticsVO;
import com.jero.modules.laws.home.vo.LawsHomeNormalSearchVO;
import com.jero.modules.laws.standard.entity.LawsDomesticStandard;
@@ -79,7 +82,7 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
lawsHomeNormalSearchHistory.setSearchContent(searchContent);
lawsHomeNormalSearchHistoryService.save(lawsHomeNormalSearchHistory);
QueryWrapper<LawsHomeNormalSearchDTO> queryWrapper = getQueryWrapperNormal(searchContent);
QueryWrapper<LawsHomeNormalSearchDTO> queryWrapper = getQueryWrapperNormal(lawsHomeNormalSearchDTO);
Page<LawsHomeNormalSearchVO> page = new Page<>(pageNo, pageSize);
IPage<LawsHomeNormalSearchVO> pageList = lawsHomeSearchMapper.getPage(page,queryWrapper);
addContent(searchContent, pageList);
@@ -87,10 +90,18 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
}
@NotNull
private QueryWrapper<LawsHomeNormalSearchDTO> getQueryWrapperNormal(String searchContent) {
private QueryWrapper<LawsHomeNormalSearchDTO> getQueryWrapperNormal(LawsHomeNormalSearchDTO lawsHomeNormalSearchDTO) {
QueryWrapper<LawsHomeNormalSearchDTO> queryWrapper = new QueryWrapper<>();
queryWrapper.and(p -> p.gt("instr(standard_number,'" + searchContent + "')", 0).or()
.gt("instr(standard_name,'" + searchContent + "')", 0));
queryWrapper.and(p -> p.gt("instr(standard_number,'" + lawsHomeNormalSearchDTO.getSearchContent() + "')", 0).or()
.gt("instr(standard_name,'" + lawsHomeNormalSearchDTO.getSearchContent() + "')", 0));
queryWrapper.eq(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getResourceType()),"resource_type",lawsHomeNormalSearchDTO.getResourceType());
queryWrapper.eq(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardClass()),"standard_class",lawsHomeNormalSearchDTO.getStandardClass());
queryWrapper.eq(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getDynamicType()),"dynamic_type",lawsHomeNormalSearchDTO.getDynamicType());
queryWrapper.eq(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getApplicableVehicle()),"applicable_vehicle",lawsHomeNormalSearchDTO.getApplicableVehicle());
queryWrapper.eq(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardProperty()),"standard_property",lawsHomeNormalSearchDTO.getStandardProperty());
queryWrapper.eq(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardState()),"standard_state",lawsHomeNormalSearchDTO.getStandardState());
queryWrapper.eq(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardCode()),"standard_code",lawsHomeNormalSearchDTO.getStandardCode());
queryWrapper.eq(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getGradeClassification()),"grade_classification",lawsHomeNormalSearchDTO.getGradeClassification());
queryWrapper.orderByAsc("resource_type");
queryWrapper.orderByDesc("standard_type");
queryWrapper.orderByAsc("CHAR_LENGTH(standard_number)");
@@ -292,17 +303,207 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
if(StringUtils.isBlank(searchContent)){
throw new JeroBootException("请输入检索内容");
}
QueryWrapper<LawsHomeNormalSearchDTO> queryWrapper = getQueryWrapperNormal(lawsHomeNormalSearchDTO);
List<LawsHomeNormalSearchVO> list = lawsHomeSearchMapper.getPage(queryWrapper);
LawsHomeNormalSearchStatisticsVO obj = new LawsHomeNormalSearchStatisticsVO();
switch (lawsHomeNormalSearchDTO.getResourceType()){
case LawsHomeSearchCommon.LAWS_DOMESTIC_STANDARD:
count1(list,obj);
break;
case LawsHomeSearchCommon.LAWS_OVERSEAS_STANDARD:
count2(list,obj);
break;
case LawsHomeSearchCommon.LAWS_ENTERPRISE_STANDARD:
count3(list,obj);
break;
default:break;
}
return obj;
}
QueryWrapper<LawsHomeNormalSearchDTO> queryWrapper = getQueryWrapperNormal(searchContent);
private void count3(List<LawsHomeNormalSearchVO> list,LawsHomeNormalSearchStatisticsVO obj) {
List<LawsHomeNormalSearchStatisticsObjVO> listDict = new ArrayList<>();
// 企业标准代号
List<DictModel> listStandardCode = sysBaseAPI.getDictItems("enterprise_standard_code");
for (DictModel dict : listStandardCode) {
LawsHomeNormalSearchStatisticsObjVO objVO = new LawsHomeNormalSearchStatisticsObjVO();
objVO.setItemText(dict.getText());
objVO.setItemValue(dict.getValue());
if(CollectionUtils.isEmpty(list)){
objVO.setStatisticsCount("0");
}else{
long l = list.stream().filter(o->Arrays.asList(o.getStandardCode().split(",")).contains(dict.getValue())).count();
objVO.setStatisticsCount(String.valueOf(l));
}
listDict.add(objVO);
}
obj.setStandardClass(listDict);
listDict = new ArrayList<>();
// 标准状态
List<DictModel> listEnterpriseStandardState = sysBaseAPI.getDictItems("enterprise_standard_state");
for (DictModel dict : listEnterpriseStandardState) {
LawsHomeNormalSearchStatisticsObjVO objVO = new LawsHomeNormalSearchStatisticsObjVO();
objVO.setItemText(dict.getText());
objVO.setItemValue(dict.getValue());
if(CollectionUtils.isEmpty(list)){
objVO.setStatisticsCount("0");
}else{
long l = list.stream().filter(o->Arrays.asList(o.getEnterpriseStandardState().split(",")).contains(dict.getValue())).count();
objVO.setStatisticsCount(String.valueOf(l));
}
listDict.add(objVO);
}
obj.setStandardClass(listDict);
listDict = new ArrayList<>();
// 标准等级分类
List<DictModel> listGradeClassification = sysBaseAPI.getDictItems("standard_grade_classify");
for (DictModel dict : listGradeClassification) {
LawsHomeNormalSearchStatisticsObjVO objVO = new LawsHomeNormalSearchStatisticsObjVO();
objVO.setItemText(dict.getText());
objVO.setItemValue(dict.getValue());
if(CollectionUtils.isEmpty(list)){
objVO.setStatisticsCount("0");
}else{
long l = list.stream().filter(o->Arrays.asList(o.getGradeClassification().split(",")).contains(dict.getValue())).count();
objVO.setStatisticsCount(String.valueOf(l));
}
listDict.add(objVO);
}
obj.setStandardClass(listDict);
}
private void count2(List<LawsHomeNormalSearchVO> list,LawsHomeNormalSearchStatisticsVO obj) {
List<LawsHomeNormalSearchStatisticsObjVO> listDict = new ArrayList<>();
// 标准类别
List<DictModel> listStandardClass = sysBaseAPI.getDictItems("standard_type_overseas");
for (DictModel dict : listStandardClass) {
LawsHomeNormalSearchStatisticsObjVO objVO = new LawsHomeNormalSearchStatisticsObjVO();
objVO.setItemText(dict.getText());
objVO.setItemValue(dict.getValue());
if(CollectionUtils.isEmpty(list)){
objVO.setStatisticsCount("0");
}else{
long l = list.stream().filter(o->Arrays.asList(o.getStandardClass().split(",")).contains(dict.getValue())).count();
objVO.setStatisticsCount(String.valueOf(l));
}
listDict.add(objVO);
}
obj.setStandardClass(listDict);
listDict = new ArrayList<>();
// 适用车辆类型
List<DictModel> listApplicableVehicle = sysBaseAPI.getDictItems("APPLICATIONS_OVERSEAS");
for (DictModel dict : listApplicableVehicle) {
LawsHomeNormalSearchStatisticsObjVO objVO = new LawsHomeNormalSearchStatisticsObjVO();
objVO.setItemText(dict.getText());
objVO.setItemValue(dict.getValue());
if(CollectionUtils.isEmpty(list)){
objVO.setStatisticsCount("0");
}else{
long l = list.stream().filter(o->Arrays.asList(o.getApplicableVehicle().split(",")).contains(dict.getValue())).count();
objVO.setStatisticsCount(String.valueOf(l));
}
listDict.add(objVO);
}
obj.setStandardClass(listDict);
listDict = new ArrayList<>();
// 状态
List<DictModel> listStandardState = sysBaseAPI.getDictItems("standard_state");
for (DictModel dict : listStandardState) {
LawsHomeNormalSearchStatisticsObjVO objVO = new LawsHomeNormalSearchStatisticsObjVO();
objVO.setItemText(dict.getText());
objVO.setItemValue(dict.getValue());
if(CollectionUtils.isEmpty(list)){
objVO.setStatisticsCount("0");
}else{
long l = list.stream().filter(o->Arrays.asList(o.getStandardState().split(",")).contains(dict.getValue())).count();
objVO.setStatisticsCount(String.valueOf(l));
}
listDict.add(objVO);
}
obj.setStandardClass(listDict);
}
// LawsHomeNormalSearchStatisticsVO lawsHomeNormalSearchStatisticsVO = new LawsHomeNormalSearchStatisticsVO();
//
// LawsHomeNormalSearchData lawsHomeNormalSearchDataObj = getOne(queryWrapper,false);
// if(!Objects.isNull(lawsHomeNormalSearchDataObj)){
//
// }
return null;
private void count1(List<LawsHomeNormalSearchVO> list,LawsHomeNormalSearchStatisticsVO obj) {
List<LawsHomeNormalSearchStatisticsObjVO> listDict = new ArrayList<>();
// 标准类别
List<DictModel> listStandardClass = sysBaseAPI.getDictItems("standard_type");
for (DictModel dict : listStandardClass) {
LawsHomeNormalSearchStatisticsObjVO objVO = new LawsHomeNormalSearchStatisticsObjVO();
objVO.setItemText(dict.getText());
objVO.setItemValue(dict.getValue());
if(CollectionUtils.isEmpty(list)){
objVO.setStatisticsCount("0");
}else{
long l = list.stream().filter(o->Arrays.asList(o.getStandardClass().split(",")).contains(dict.getValue())).count();
objVO.setStatisticsCount(String.valueOf(l));
}
listDict.add(objVO);
}
obj.setStandardClass(listDict);
listDict = new ArrayList<>();
// 动力类型
List<DictModel> listDynamicType = sysBaseAPI.getDictItems("POWER_TYPE_DOMESTIC");
for (DictModel dict : listDynamicType) {
LawsHomeNormalSearchStatisticsObjVO objVO = new LawsHomeNormalSearchStatisticsObjVO();
objVO.setItemText(dict.getText());
objVO.setItemValue(dict.getValue());
if(CollectionUtils.isEmpty(list)){
objVO.setStatisticsCount("0");
}else{
long l = list.stream().filter(o->Arrays.asList(o.getDynamicType().split(",")).contains(dict.getValue())).count();
objVO.setStatisticsCount(String.valueOf(l));
}
listDict.add(objVO);
}
obj.setDynamicType(listDict);
listDict = new ArrayList<>();
// 适用车辆类型
List<DictModel> listApplicableVehicle = sysBaseAPI.getDictItems("APPLICATIONS_DOMESTIC");
for (DictModel dict : listApplicableVehicle) {
LawsHomeNormalSearchStatisticsObjVO objVO = new LawsHomeNormalSearchStatisticsObjVO();
objVO.setItemText(dict.getText());
objVO.setItemValue(dict.getValue());
if(CollectionUtils.isEmpty(list)){
objVO.setStatisticsCount("0");
}else{
long l = list.stream().filter(o->Arrays.asList(o.getApplicableVehicle().split(",")).contains(dict.getValue())).count();
objVO.setStatisticsCount(String.valueOf(l));
}
listDict.add(objVO);
}
obj.setApplicableVehicle(listDict);
listDict = new ArrayList<>();
// 标准类型
List<DictModel> listStandardProperty = sysBaseAPI.getDictItems("standard_property");
for (DictModel dict : listStandardProperty) {
LawsHomeNormalSearchStatisticsObjVO objVO = new LawsHomeNormalSearchStatisticsObjVO();
objVO.setItemText(dict.getText());
objVO.setItemValue(dict.getValue());
if(CollectionUtils.isEmpty(list)){
objVO.setStatisticsCount("0");
}else{
long l = list.stream().filter(o->Arrays.asList(o.getStandardProperty().split(",")).contains(dict.getValue())).count();
objVO.setStatisticsCount(String.valueOf(l));
}
listDict.add(objVO);
}
obj.setStandardProperty(listDict);
listDict = new ArrayList<>();
// 状态
List<DictModel> listStandardState = sysBaseAPI.getDictItems("standard_state");
for (DictModel dict : listStandardState) {
LawsHomeNormalSearchStatisticsObjVO objVO = new LawsHomeNormalSearchStatisticsObjVO();
objVO.setItemText(dict.getText());
objVO.setItemValue(dict.getValue());
if(CollectionUtils.isEmpty(list)){
objVO.setStatisticsCount("0");
}else{
long l = list.stream().filter(o->Arrays.asList(o.getStandardState().split(",")).contains(dict.getValue())).count();
objVO.setStatisticsCount(String.valueOf(l));
}
listDict.add(objVO);
}
obj.setStandardState(listDict);
}
@Override
@@ -18,17 +18,17 @@ public class LawsHomeNormalSearchStatisticsVO implements Serializable {
* 标准类别 (数据字典 海外标准法规:standard_type_overseas 国内标准法规:standard_type (全部传空)
*/
@ApiModelProperty(value = "标准类别 (数据字典 海外标准法规:standard_type_overseas 国内标准法规:standard_type (全部传空)")
private List<LawsHomeNormalSearchStatisticsObjVO> standardType;
private List<LawsHomeNormalSearchStatisticsObjVO> standardClass;
/**
* 动力类型 (数据字典 海外标准法规:POWER_TYPE_DOMESTIC_OVERSEAS 国内标准法规:POWER_TYPE_DOMESTIC (全部传空)
*/
@ApiModelProperty(value = "动力类型 (数据字典 海外标准法规:POWER_TYPE_DOMESTIC_OVERSEAS 国内标准法规:POWER_TYPE_DOMESTIC (全部传空)")
private List<LawsHomeNormalSearchStatisticsObjVO> powerTypeDomestic;
private List<LawsHomeNormalSearchStatisticsObjVO> dynamicType;
/**
* 适用车辆类型 (数据字典 海外标准法规:APPLICATIONS_OVERSEAS 国内标准法规:APPLICATIONS_DOMESTIC (全部传空)
*/
@ApiModelProperty(value = "适用车辆类型 (数据字典 海外标准法规:APPLICATIONS_OVERSEAS 国内标准法规:APPLICATIONS_DOMESTIC (全部传空)")
private List<LawsHomeNormalSearchStatisticsObjVO> applications;
private List<LawsHomeNormalSearchStatisticsObjVO> applicableVehicle;
/**
* 标准类型 (只有国内标准法规 数据字典 standard_property (全部传空)
*/
@@ -43,7 +43,7 @@ public class LawsHomeNormalSearchStatisticsVO implements Serializable {
* 企业标准代号 (只有企业标准 数据字典 enterprise_standard_code (全部传空)
*/
@ApiModelProperty(value = "企业标准代号 (只有企业标准 数据字典 enterprise_standard_code (全部传空)")
private List<LawsHomeNormalSearchStatisticsObjVO> enterpriseStandardCode;
private List<LawsHomeNormalSearchStatisticsObjVO> standardCode;
/**
* 标准状态 (只有企业标准 数据字典 enterprise_standard_state (全部传空)
*/
@@ -53,5 +53,5 @@ public class LawsHomeNormalSearchStatisticsVO implements Serializable {
* 标准等级分类 (只有企业标准 数据字典 standard_grade_classify (全部传空)
*/
@ApiModelProperty(value = "标准等级分类 (只有企业标准 数据字典 standard_grade_classify (全部传空)")
private List<LawsHomeNormalSearchStatisticsObjVO> standardGradeClassify;
private List<LawsHomeNormalSearchStatisticsObjVO> gradeClassification;
}
@@ -42,4 +42,45 @@ public class LawsHomeNormalSearchVO implements Serializable {
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date releaseDate;
/**
* 标准类别 (数据字典 海外标准法规:standard_type_overseas 国内标准法规:standard_type (全部传空)
*/
@ApiModelProperty(value = "标准类别 (数据字典 海外标准法规:standard_type_overseas 国内标准法规:standard_type (全部传空)")
private String standardClass;
/**
* 动力类型 (数据字典 海外标准法规:POWER_TYPE_DOMESTIC_OVERSEAS 国内标准法规:POWER_TYPE_DOMESTIC (全部传空)
*/
@ApiModelProperty(value = "动力类型 (数据字典 海外标准法规:POWER_TYPE_DOMESTIC_OVERSEAS 国内标准法规:POWER_TYPE_DOMESTIC (全部传空)")
private String dynamicType;
/**
* 适用车辆类型 (数据字典 海外标准法规:APPLICATIONS_OVERSEAS 国内标准法规:APPLICATIONS_DOMESTIC (全部传空)
*/
@ApiModelProperty(value = "适用车辆类型 (数据字典 海外标准法规:APPLICATIONS_OVERSEAS 国内标准法规:APPLICATIONS_DOMESTIC (全部传空)")
private String applicableVehicle;
/**
* 标准类型 (只有国内标准法规 数据字典 standard_property (全部传空)
*/
@ApiModelProperty(value = "标准类型 (只有国内标准法规 数据字典 standard_property (全部传空)")
private String standardProperty;
/**
* 状态 (国内标准法规/海外标准法规 数据字典 standard_state (全部传空)
*/
@ApiModelProperty(value = "状态 (国内标准法规/海外标准法规 数据字典 standard_state (全部传空)")
private String standardState;
/**
* 企业标准代号 (只有企业标准 数据字典 enterprise_standard_code (全部传空)
*/
@ApiModelProperty(value = "企业标准代号 (只有企业标准 数据字典 enterprise_standard_code (全部传空)")
private String standardCode;
/**
* 标准状态 (只有企业标准 数据字典 enterprise_standard_state (全部传空)
*/
@ApiModelProperty(value = "标准状态 (只有企业标准 数据字典 enterprise_standard_state (全部传空)")
private String enterpriseStandardState;
/**
* 标准等级分类 (只有企业标准 数据字典 standard_grade_classify (全部传空)
*/
@ApiModelProperty(value = "标准等级分类 (只有企业标准 数据字典 standard_grade_classify (全部传空)")
private String gradeClassification;
}