标题检索变更

This commit is contained in:
梁琦涛
2023-12-04 15:20:06 +08:00
parent a51c1c534b
commit 792f9d12d2
3 changed files with 83 additions and 32 deletions
@@ -64,5 +64,5 @@ public class LawsHomeNormalSearchHistory implements Serializable {
/**删除状态(0-正常,1-删除)*/ /**删除状态(0-正常,1-删除)*/
@ApiModelProperty(value = "删除状态(0-正常,1-删除)") @ApiModelProperty(value = "删除状态(0-正常,1-删除)")
@TableLogic @TableLogic
private String delFlag; private Integer delFlag;
} }
@@ -4,22 +4,45 @@
<select id="getPage" resultType="com.jero.modules.laws.home.vo.LawsHomeNormalSearchVO"> <select id="getPage" resultType="com.jero.modules.laws.home.vo.LawsHomeNormalSearchVO">
select * from ( select * from (
select id,'1' as resource_type,standard_number,standard_name,create_time, select id,'1' as resource_type,CONCAT_WS(' ',standard_number,standard_name) AS standard_name,create_time,
case when standard_class = 'GB' then 2 case when standard_class = 'GB' then 1
when standard_class = 'GB/T' then 1 end as standard_type, when standard_class = 'GB/T' then 2
standard_class,dynamic_type,applicable_vehicle,standard_property,standard_state,'' as standard_code,'' as grade_classification when standard_class = 'JT' then 3
when standard_class = 'QC/T' then 4
when standard_class = 'HJ' then 5
else 8
end as standard_type_order,
case when standard_state = 5 then 2
when standard_state = 6 then 1
when standard_state = 7 then 3
else ''
end as standard_state_order,
standard_state
standard_class,dynamic_type,applicable_vehicle,standard_property,standard_state,'' as standard_code,'' as grade_classification,
implementation_date
from laws_domestic_standard where del_flag = 0 from laws_domestic_standard where del_flag = 0
union all union all
select id,'2' as resource_type,standard_number,standard_name,create_time,0 as standard_type, select id,'2' as resource_type,CONCAT_WS(' ',standard_number,standard_name) AS standard_name,create_time,7 as standard_type_order,
standard_class,'',applicable_vehicle,'',standard_state,'','' case when standard_state = 5 then 2
when standard_state = 6 then 1
when standard_state = 7 then 3
else ''
end as standard_state_order,
standard_class,'',applicable_vehicle,'',standard_state,'','',implementation_date
from laws_overseas_standard where del_flag = 0 from laws_overseas_standard where del_flag = 0
union all union all
select id,'3' as resource_type,standard_number,standard_name,create_time,0 as standard_type, select id,'3' as resource_type,CONCAT_WS(' ',standard_number,standard_name) AS standard_name,create_time,6 as standard_type_order,
'','','','',standard_state,standard_code,grade_classification case when standard_state = 5 then 2
when standard_state = 6 then 1
when standard_state = 7 then 3
else ''
end as standard_state_order,
'','','','',standard_state,standard_code,grade_classification,implementation_date
from laws_enterprise_standard where del_flag = 0 from laws_enterprise_standard where del_flag = 0
union all union all
select id,'4' as resource_type,'' as standard_number,dynamic_heading as standard_name,create_time,0 as standard_type, select id,'4' as resource_type,dynamic_heading as standard_name,create_time,9 as standard_type_order,
'','','','','','','' '' AS standard_state_order,
'','','','','','','',''
from laws_news_feed where del_flag = 0 from laws_news_feed where del_flag = 0
) as all_data ) as all_data
<where> <where>
@@ -53,8 +53,11 @@ import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ReflectionUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.lang.reflect.Field;
import java.time.LocalDate;
import java.util.*; import java.util.*;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ForkJoinPool; import java.util.concurrent.ForkJoinPool;
@@ -135,8 +138,7 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
@NotNull @NotNull
private QueryWrapper<LawsHomeNormalSearchDTO> getQueryWrapperNormal(LawsHomeNormalSearchDTO lawsHomeNormalSearchDTO) { private QueryWrapper<LawsHomeNormalSearchDTO> getQueryWrapperNormal(LawsHomeNormalSearchDTO lawsHomeNormalSearchDTO) {
QueryWrapper<LawsHomeNormalSearchDTO> queryWrapper = new QueryWrapper<>(); QueryWrapper<LawsHomeNormalSearchDTO> queryWrapper = new QueryWrapper<>();
queryWrapper.and(p -> p.gt("instr(standard_number,'" + lawsHomeNormalSearchDTO.getSearchContent() + "')", 0).or() queryWrapper.gt("instr(standard_name,'" + lawsHomeNormalSearchDTO.getSearchContent() + "')", 0);
.gt("instr(standard_name,'" + lawsHomeNormalSearchDTO.getSearchContent() + "')", 0));
queryWrapper.eq(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getResourceType()),RESOURCE_TYPE,lawsHomeNormalSearchDTO.getResourceType()); queryWrapper.eq(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getResourceType()),RESOURCE_TYPE,lawsHomeNormalSearchDTO.getResourceType());
String str = "',','))"; String str = "',','))";
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardClass()),"instr(concat(',',standard_class,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardClass() + str,0); queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardClass()),"instr(concat(',',standard_class,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardClass() + str,0);
@@ -146,11 +148,11 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardState()),"instr(concat(',',standard_state,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardState() + 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); queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardCode()),"instr(concat(',',standard_code,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardCode() + str,0);
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getGradeClassification()),"instr(concat(',',grade_classification,','),concat(',','" + lawsHomeNormalSearchDTO.getGradeClassification() + str,0); queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getGradeClassification()),"instr(concat(',',grade_classification,','),concat(',','" + lawsHomeNormalSearchDTO.getGradeClassification() + str,0);
queryWrapper.orderByAsc(RESOURCE_TYPE); queryWrapper.orderByAsc("length(REPLACE(standard_name,'" + lawsHomeNormalSearchDTO.getSearchContent() + "',''))/length(standard_name)");
queryWrapper.orderByDesc(STANDARD_TYPE); queryWrapper.orderByAsc("standard_type_order");
queryWrapper.orderByAsc("standard_state_order");
queryWrapper.orderByDesc("implementation_date");
queryWrapper.orderByDesc(CREATE_TIME); queryWrapper.orderByDesc(CREATE_TIME);
queryWrapper.orderByAsc("CHAR_LENGTH(standard_number)");
queryWrapper.orderByAsc("CHAR_LENGTH(standard_name)");
return queryWrapper; return queryWrapper;
} }
@@ -242,11 +244,11 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
Optional<LawsEnterpriseStandard> op = listLawsEnterpriseStandard.stream().filter(o-> Objects.equals(o.getId(),p.getId())).findFirst(); Optional<LawsEnterpriseStandard> op = listLawsEnterpriseStandard.stream().filter(o-> Objects.equals(o.getId(),p.getId())).findFirst();
if(op.isPresent()){ if(op.isPresent()){
LawsEnterpriseStandard obj = op.get(); LawsEnterpriseStandard obj = op.get();
p.setTitle(obj.getStandardNumber().replace(searchContent,searchContentSpan) + " " + obj.getStandardName().replace(searchContent,searchContentSpan)); p.setTitle((obj.getStandardNumber() + " " + obj.getStandardName()).replace(searchContent,searchContentSpan));
p.setReleaseDate(obj.getReleaseDate()); p.setReleaseDate(obj.getReleaseDate());
// 生成正文 // 生成正文
JSONObject json = JSON.parseObject(JSON.toJSONStringWithDateFormat(obj,yyyyMMdd)); JSONObject json = JSON.parseObject(JSON.toJSONStringWithDateFormat(obj,yyyyMMdd));
addContent(listSysDict,p, json, LawsHomeSearchCommon.LAWS_ENTERPRISE_STANDARD_TABLE_NAME,listLawsTag); addContent(listSysDict,p,json, obj, LawsHomeSearchCommon.LAWS_ENTERPRISE_STANDARD_TABLE_NAME,listLawsTag);
} }
} }
} }
@@ -256,11 +258,11 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
Optional<LawsOverseasStandard> op = listLawsOverseasStandard.stream().filter(o-> Objects.equals(o.getId(),p.getId())).findFirst(); Optional<LawsOverseasStandard> op = listLawsOverseasStandard.stream().filter(o-> Objects.equals(o.getId(),p.getId())).findFirst();
if(op.isPresent()){ if(op.isPresent()){
LawsOverseasStandard obj = op.get(); LawsOverseasStandard obj = op.get();
p.setTitle(obj.getStandardNumber().replace(searchContent,searchContentSpan) + " " + obj.getStandardName().replace(searchContent,searchContentSpan)); p.setTitle((obj.getStandardNumber() + " " + obj.getStandardName()).replace(searchContent,searchContentSpan));
p.setReleaseDate(obj.getReleaseDate()); p.setReleaseDate(obj.getReleaseDate());
// 生成正文 // 生成正文
JSONObject json = JSON.parseObject(JSON.toJSONStringWithDateFormat(obj,yyyyMMdd)); JSONObject json = JSON.parseObject(JSON.toJSONStringWithDateFormat(obj,yyyyMMdd));
addContent(listSysDict,p, json, LawsHomeSearchCommon.LAWS_OVERSEAS_STANDARD_TABLE_NAME,listLawsTag); addContent(listSysDict,p, json,obj, LawsHomeSearchCommon.LAWS_OVERSEAS_STANDARD_TABLE_NAME,listLawsTag);
} }
} }
} }
@@ -270,11 +272,11 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
Optional<LawsDomesticStandard> op = listLawsDomesticStandard.stream().filter(o-> Objects.equals(o.getId(),p.getId())).findFirst(); Optional<LawsDomesticStandard> op = listLawsDomesticStandard.stream().filter(o-> Objects.equals(o.getId(),p.getId())).findFirst();
if(op.isPresent()){ if(op.isPresent()){
LawsDomesticStandard obj = op.get(); LawsDomesticStandard obj = op.get();
p.setTitle(obj.getStandardNumber().replace(searchContent,searchContentSpan) + " " + obj.getStandardName().replace(searchContent,searchContentSpan)); p.setTitle((obj.getStandardNumber() + " " + obj.getStandardName()).replace(searchContent,searchContentSpan));
p.setReleaseDate(obj.getReleaseDate()); p.setReleaseDate(obj.getReleaseDate());
// 生成正文 // 生成正文
JSONObject json = JSON.parseObject(JSON.toJSONStringWithDateFormat(obj,yyyyMMdd)); JSONObject json = JSON.parseObject(JSON.toJSONStringWithDateFormat(obj,yyyyMMdd));
addContent(listSysDict,p, json, LawsHomeSearchCommon.LAWS_DOMESTIC_STANDARD_TABLE_NAME,listLawsTag); addContent(listSysDict,p, json,obj, LawsHomeSearchCommon.LAWS_DOMESTIC_STANDARD_TABLE_NAME,listLawsTag);
} }
} }
} }
@@ -311,7 +313,7 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
return listLawsDomesticStandard; return listLawsDomesticStandard;
} }
private void addContent(List<SysDictItemCore> listSysDict,LawsHomeNormalSearchVO p, JSONObject json,String tableName, List<LawsTag> listLawsTagAll) { private void addContent(List<SysDictItemCore> listSysDict,LawsHomeNormalSearchVO p, JSONObject json,Object object,String tableName, List<LawsTag> listLawsTagAll) {
if (CollectionUtils.isEmpty(listLawsTagAll)) { if (CollectionUtils.isEmpty(listLawsTagAll)) {
return; return;
} }
@@ -325,26 +327,53 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
String code = lawsTag.getDictField(); String code = lawsTag.getDictField();
String text = lawsTag.getDictText(); String text = lawsTag.getDictText();
String table = lawsTag.getDictTable(); String table = lawsTag.getDictTable();
String fileName = lawsTag.getDbFieldName(); String type = lawsTag.getDbType();
String fileTxt = lawsTag.getDbFieldTxt(); String fieldName = lawsTag.getDbFieldName();
if (StringUtils.isBlank(fileName) || StringUtils.isBlank(fileTxt)) { String fieldTxt = lawsTag.getDbFieldTxt();
if (StringUtils.isBlank(fieldName) || StringUtils.isBlank(fieldTxt)) {
continue; continue;
} }
fileName = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, fileName); fieldName = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, fieldName);
String key = Objects.isNull(json.get(fileName)) ? "" : String.valueOf(json.get(fileName)); String key = Objects.isNull(json.get(fieldName)) ? "" : String.valueOf(json.get(fieldName));
String textValue = ""; String textValue = "";
// 需要翻译
if (!StringUtils.isBlank(code) && !StringUtils.isBlank(key)) { if (!StringUtils.isBlank(code) && !StringUtils.isBlank(key)) {
textValue = translateDictValue(listSysDict,code, text, table, key); textValue = translateDictValue(listSysDict,code, text, table, key);
}else{
// 不需要翻译,直接取值
textValue = getString(object, type, fieldName, textValue);
} }
if (StringUtils.isBlank(textValue)) { if (StringUtils.isBlank(textValue)) {
textValue = "--"; textValue = "--";
} }
str.append(fileTxt).append(":").append(textValue).append(" "); str.append(fieldTxt).append(":").append(textValue).append(" ");
} }
p.setContent(str.toString()); p.setContent(str.toString());
} }
private String getString(Object object, String type, String fieldName, String textValue) {
for (Field field : oConvertUtils.getAllFields(object)) {
if(Objects.equals(field.getName(),fieldName)){
try {
ReflectionUtils.makeAccessible(field);
Object obj = ReflectionUtils.getField(field,object);
if(Objects.isNull(obj)){
continue;
}
if(Objects.equals(type,"Date")){
textValue = LocalDate.parse(String.valueOf(obj)).toString();
}else{
textValue = String.valueOf(obj);
}
} catch (Exception e){
log.error("异常", e);
}
}
}
return textValue;
}
/** /**
* 翻译字典文本 * 翻译字典文本
* @param code 编码 * @param code 编码
@@ -394,8 +423,7 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
public LawsHomeNormalSearchStatisticsVO getNormalSearchTitleCount(LawsHomeNormalSearchDTO lawsHomeNormalSearchDTO) { public LawsHomeNormalSearchStatisticsVO getNormalSearchTitleCount(LawsHomeNormalSearchDTO lawsHomeNormalSearchDTO) {
String searchContent = checkSearchContent(lawsHomeNormalSearchDTO); String searchContent = checkSearchContent(lawsHomeNormalSearchDTO);
QueryWrapper<LawsHomeNormalSearchDTO> queryWrapper = new QueryWrapper<>(); QueryWrapper<LawsHomeNormalSearchDTO> queryWrapper = new QueryWrapper<>();
queryWrapper.and(p -> p.gt("instr(standard_number,'" + searchContent + "')", 0).or() queryWrapper.gt("instr(concat_ws(' ',standard_number,standard_name),'" + searchContent + "')", 0);
.gt("instr(standard_name,'" + searchContent + "')", 0));
queryWrapper.eq("del_flag",0); queryWrapper.eq("del_flag",0);
String str = "',','))"; String str = "',','))";
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardClass()),"instr(concat(',',standard_class,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardClass() + str,0); queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardClass()),"instr(concat(',',standard_class,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardClass() + str,0);