Merge remote-tracking branch 'origin/dev_third_stage' into dev_third_stage

This commit is contained in:
zyx.net
2022-08-19 10:04:37 +08:00
6 changed files with 226 additions and 20 deletions
@@ -1440,6 +1440,7 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl<ParamsCollec
sysAnnouncement.setSendStatus("0");
sysAnnouncement.setSendTime(new Date());
sysAnnouncement.setMsgCategory(MessageTypeEnum.HOMO_TASK.getValue());//消息类型
sysAnnouncement.setInitiator(currentUser.getUsername()); // 发起人
sysAnnouncement.setMsgType(CommonConstant.MSG_TYPE_UESR);//指定用户
sysAnnouncement.setTitile(msgTitle);
sysAnnouncement.setMsgContent(content);
@@ -1567,6 +1568,7 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl<ParamsCollec
sysAnnouncement.setSendStatus("0");
sysAnnouncement.setSendTime(new Date());
sysAnnouncement.setMsgCategory(MessageTypeEnum.HOMO_TASK.getValue());//消息类型
sysAnnouncement.setInitiator(currentUser.getUsername()); // 发起人
sysAnnouncement.setMsgType(CommonConstant.MSG_TYPE_UESR);//指定用户
sysAnnouncement.setTitile(msgTitle);
sysAnnouncement.setMsgContent(content);
@@ -1700,6 +1702,7 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl<ParamsCollec
sysAnnouncement.setSendStatus("0");
sysAnnouncement.setSendTime(new Date());
sysAnnouncement.setMsgCategory(MessageTypeEnum.HOMO_TASK.getValue());//消息类型
sysAnnouncement.setInitiator(currentUser.getUsername()); // 发起人
sysAnnouncement.setMsgType(CommonConstant.MSG_TYPE_UESR);//指定用户
sysAnnouncement.setTitile(msgTitle);
sysAnnouncement.setMsgContent(content);
@@ -77,7 +77,7 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
//如果该条问题知识库的展示权限为私密,则创建权限表数据
if(StringUtils.equals(problemKnowledgeBaseEO.getShowPermissions(), ShowPermissionsEnum.PRIVACY.getValue())){
batchInsertProblemKnowledgeBaseUserEO(problemKnowledgeBaseEO);
this.batchInsertProblemKnowledgeBaseUserEO(problemKnowledgeBaseEO);
}else {
//如果展示权限是公开,则把该数据插入到搜索中心中。
this.addOrUpdateElasticsearch(problemKnowledgeBaseEO);
@@ -117,10 +117,13 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
this.putMap(problemKnowledgeBaseId,sbEn.toString(),CutEnum.EN.getValue(),stringMapEnBase,null,"Problem knowledge base");
mapListTempCn.add(stringMapCn);
mapListTempEn.add(stringMapEn);
stringMapCnBase.put("id",problemKnowledgeBaseId + "base");
mapListTempCn.add(stringMapCnBase);
mapListTempEn.add(stringMapEn);
mapListTempEn.add(stringMapCnBase);
stringMapEnBase.put("id",problemKnowledgeBaseId + "base");
mapListTempEn.add(stringMapEnBase);
JSONObject jsonObjectCn = JSON.parseObject(JSON.toJSONString(stringMapCn));
JSONObject jsonObjectEn = JSON.parseObject(JSON.toJSONString(stringMapEn));
@@ -152,6 +155,10 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
this.jeroElasticsearchTemplate.delete(SearchEnum.FULL_TEXT_SEARCH_CN.getValue(), SearchEnum.FULL_TEXT_SEARCH_CN.getValue(), problemKnowledgeBaseId);
this.jeroElasticsearchTemplate.delete(SearchEnum.FULL_TEXT_SEARCH_EN.getValue(), SearchEnum.FULL_TEXT_SEARCH_EN.getValue(), problemKnowledgeBaseId);
//根据id删除全部索引中数据
this.jeroElasticsearchTemplate.delete(SearchEnum.FULL_TEXT_SEARCH_CN.getValue(), SearchEnum.FULL_TEXT_SEARCH_CN.getValue(), problemKnowledgeBaseId + "base");
this.jeroElasticsearchTemplate.delete(SearchEnum.FULL_TEXT_SEARCH_EN.getValue(), SearchEnum.FULL_TEXT_SEARCH_EN.getValue(), problemKnowledgeBaseId + "base");
//根据id删除问题知识库索引中数据
this.jeroElasticsearchTemplate.delete(SearchEnum.TYPE_PROBLEM_KNOWLEDGE_BASE_CN.getValue(), SearchEnum.TYPE_PROBLEM_KNOWLEDGE_BASE_CN.getValue(), problemKnowledgeBaseId);
this.jeroElasticsearchTemplate.delete(SearchEnum.TYPE_PROBLEM_KNOWLEDGE_BASE_EN.getValue(), SearchEnum.TYPE_PROBLEM_KNOWLEDGE_BASE_EN.getValue(), problemKnowledgeBaseId);
@@ -298,7 +305,7 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
//如果该条问题知识库的展示权限为私密,则创建权限表数据
if(StringUtils.equals(problemKnowledgeBaseEO.getShowPermissions(), ShowPermissionsEnum.PRIVACY.getValue())){
batchInsertProblemKnowledgeBaseUserEO(problemKnowledgeBaseEO);
this.batchInsertProblemKnowledgeBaseUserEO(problemKnowledgeBaseEO);
this.deleteElasticsearchData(problemKnowledgeBaseEO.getId());
}else {
this.addOrUpdateElasticsearch(problemKnowledgeBaseEO);
@@ -104,4 +104,12 @@ public class DocumentSearchController {
iDocumentSearchService.deleteAll();
return Result.OK();
}
@ApiOperation(value="列表查询问题知识库", notes="列表查询问题知识库")
@PostMapping(value = "/getProblemKnowledgeBasePage")
//@RequiresPermissions("document:search")
public Result<?> getProblemKnowledgeBasePage(@RequestBody Map<String,Object> map) {
IPage infoList = iDocumentSearchService.getProblemKnowledgeBasePage(map);
return Result.OK(infoList);
}
}
@@ -1073,6 +1073,208 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
}
@Override
public IPage getProblemKnowledgeBasePage(Map<String, Object> map) {
boolean flagTemp = true;
String cut = (String) map.get("cut");
if(StringUtils.equals(cut,CutEnum.CN.getValue())){
flagTemp = jeroElasticsearchTemplate.indexExists(SearchEnum.TYPE_PROBLEM_KNOWLEDGE_BASE_CN.getValue());
}else if(StringUtils.equals(cut,CutEnum.EN.getValue())){
flagTemp = jeroElasticsearchTemplate.indexExists(SearchEnum.TYPE_PROBLEM_KNOWLEDGE_BASE_EN.getValue());
}
if (!flagTemp) {
return new Page(Integer.parseInt(map.get("pageNo").toString()), Integer.parseInt(map.get("pageSize").toString()));
}
JSONArray queryJsonMustNot = new JSONArray();
String selectValue = (String) map.get("selectValue");
String selectValueTwo = (String) map.get("selectValueTwo");
//1. 需要查询的字段
List<String> fieldList = new ArrayList<>();
fieldList.add("title");//权重5
fieldList.add("file_text");//权重4
fieldList.add("content");//权重3
fieldList.add("file_name"); //权重2
fieldList.add("module_type");
fieldList.add("id");
fieldList.add("flag");
JSONArray queryMapJson = new JSONArray();
JSONArray queryMapJsonTwo = new JSONArray();
JSONArray queryMapJsonThree = new JSONArray();
JSONArray queryMapJsonAll = new JSONArray();
Map<String,Object> mapHighlight = new HashMap<>();
Map<String,Object> mapHighlight1 = new HashMap<>();
//封装首次的条件
if (StringUtils.isNotBlank(selectValue)) {
for (String field : fieldList) {
Map<String, Object> map2 = new HashMap<>();
Map<String, Object> map3 = new HashMap<>();
Map<String, Object> map4 = new HashMap<>();
if("title".equals(field)){
map3.put("boost",1);
}else if("file_text".equals(field)){
map3.put("boost",0.01);
}else if("content".equals(field)){
map3.put("boost",0.01);
}else if("file_name".equals(field)){
map3.put("boost",1);
}
map3.put("query",selectValue);
map2.put(field, map3);
map4.put("match",map2);
queryMapJson.add(map4);
//高亮
if(!"flag".equals(field)){
highlight(mapHighlight, field);
}
}
mapHighlight1.put("fields",mapHighlight);
}
if(CollectionUtils.isNotEmpty(queryMapJson)){
JSONObject jsonObject = jeroElasticsearchTemplate.buildBoolQuery(null, null, queryMapJson);
queryMapJsonAll.add(jsonObject);
}
//封装二次的条件
if (StringUtils.isNotBlank(selectValueTwo)) {
for (String field : fieldList) {
Map<String, Object> queryMap = new HashMap<>();
Map<String, Object> map2 = new HashMap<>();
Map<String, Object> map3 = new HashMap<>();
if("title".equals(field)){
map3.put("boost",1);
}else if("file_text".equals(field)){
map3.put("boost",0.01);
}else if("content".equals(field)){
map3.put("boost",0.01);
}else if("file_name".equals(field)){
map3.put("boost",1);
}
//特殊处理编号字段
map3.put("query",selectValueTwo);
// map3.put("minimum_should_match",2);
map2.put(field, map3);
queryMap.put("match", map2);
queryMapJsonTwo.add(queryMap);
//高亮
if(!"flag".equals(field)){
highlight(mapHighlight, field);
}
}
mapHighlight1.put("fields",mapHighlight);
}
if(CollectionUtils.isNotEmpty(queryMapJsonTwo)){
JSONObject jsonObjectTwo = jeroElasticsearchTemplate.buildBoolQuery(null, null, queryMapJsonTwo);
queryMapJsonAll.add(jsonObjectTwo);
}
//ids进行三次封装
String ids = (String) map.get("ids");
if (StringUtils.isNotBlank(ids)) {
for (String s : ids.split(",")) {
Map<String, Object> queryMap = new HashMap<>();
Map<String, Object> queryMapTemp = new HashMap<>();
queryMapTemp.put("id", s);
queryMap.put("match_phrase", queryMapTemp);
queryMapJsonThree.add(queryMap);
}
}
if(CollectionUtils.isNotEmpty(queryMapJsonThree)){
JSONObject jsonObjectThree = jeroElasticsearchTemplate.buildBoolQuery(null, null, queryMapJsonThree);
queryMapJsonAll.add(jsonObjectThree);
}
JSONObject sort = new JSONObject();
Map<String,Object> createTime = new HashMap<>();
Map<String,Object> createTime1 = new HashMap<>();
createTime.put("order","desc");
createTime1.put("createTime",createTime);
sort.putAll(createTime1);
Integer pageNo = Integer.parseInt(map.get("pageNo").toString());
Integer pageSize = Integer.parseInt(map.get("pageSize").toString());
IPage page = this.getProblemKnowledgeBasePage(selectValue, selectValueTwo, queryMapJsonAll, mapHighlight1,null,
pageNo, pageSize, null,(String) map.get("cut"),sort,queryJsonMustNot);
return page;
}
@NotNull
private IPage getProblemKnowledgeBasePage(String selectValue, String selectValueTwo, JSONArray queryMapJson,Map<String,Object> highlightMap,
JSONArray should, Integer pageNo, Integer pageSize, String paragraphFlag,
String cut,JSONObject querySort,JSONArray queryMustNot) {
JSONObject jsonObject = new JSONObject();
//基础添加封装
if ("paragraphFlag".equals(paragraphFlag)) {
jsonObject = jeroElasticsearchTemplate.buildBoolQuery(queryMapJson, queryMustNot, null);
} else {
jsonObject = jeroElasticsearchTemplate.buildBoolQuery(queryMapJson, queryMustNot, null);
}
JSONArray jsonArraySort = new JSONArray();
jsonArraySort.add(querySort);
//1. 条件,分页
JSONObject queryObject = jeroElasticsearchTemplate.buildQuery(null,
jsonObject,
highlightMap,
jsonArraySort,
pageNo-1,
pageSize);
//2. 数据查询
JSONObject search = new JSONObject();
if(CutEnum.CN.getValue().equals(cut)){
search = jeroElasticsearchTemplate.search(SearchEnum.TYPE_PROBLEM_KNOWLEDGE_BASE_CN.getValue(),
SearchEnum.TYPE_PROBLEM_KNOWLEDGE_BASE_CN.getValue(),
queryObject);
}else{
search = jeroElasticsearchTemplate.search(SearchEnum.TYPE_PROBLEM_KNOWLEDGE_BASE_EN.getValue(),
SearchEnum.TYPE_PROBLEM_KNOWLEDGE_BASE_EN.getValue(),
queryObject);
}
List<Map<String, Object>> list = (List<Map<String, Object>>) (((Map) search.get("hits")).get("hits"));
List<Map<String, Object>> mapList = new ArrayList<>();
for (Map<String, Object> map : list) {
Map<String, Object> mapSource = (Map<String, Object>) map.get("_source");
Map<String, Object> mapHighlight = (Map<String, Object>) map.get("highlight");
if(ObjectUtils.isNotEmpty(mapHighlight)){
for (Map.Entry<String, Object> entry : mapHighlight.entrySet()) {
String key = entry.getKey();
List<String> value = (List<String>) entry.getValue();
String fieldConyent= "";
for (String s : value) {
fieldConyent += s;
}
mapSource.put(key,fieldConyent);
}
//如果这一条数据中有高亮字段值,但是file_text中没有高亮值, 则赋控制,否则列表中会展示所有的文件内容, 赋空后,则展示基础数据
String fileText = (String) mapSource.get("file_text");
if(StringUtils.isNotBlank(fileText) && !fileText.contains("<text class='highlight-class'>")){
mapSource.put("file_text","");
}
}
mapList.add(mapSource);
}
//处理分页
IPage page = new Page(pageNo, pageSize);
if (StringUtils.isNotBlank(selectValueTwo)) {
//二次搜索的结果
page.setTotal(Long.parseLong(String.valueOf(((Map) search.get("hits")).get("total"))));
page.setRecords(mapList);
} else {
//首次搜索的结果
page.setTotal(Long.parseLong(String.valueOf(((Map) search.get("hits")).get("total"))));
page.setRecords(mapList);
}
return page;
}
}
@@ -27,4 +27,5 @@ public interface IDocumentSearchService {
void deleteAll();
IPage getProblemKnowledgeBasePage(Map<String, Object> map);
}
@@ -112,13 +112,11 @@
name: 'problemKnowledgeBase',
data() {
return {
searchOption: [],
queryParam: {},
visible: false,
db_field_name: '',
url: {
queryCondition: 'search/document/queryCondition',
getParagraphInfoList: 'search/document/getParagraphInfoList'//段落
getParagraphInfoList: '/search/document/getProblemKnowledgeBasePage'
},
selectedRowKeys: [],
checkboxText: [],
@@ -194,19 +192,6 @@
this.pageSize = pageSize
this.getParagraphInfoList(1)
},
getCondition() {
let query = {
flag: 1,
searchFlag: 0
}
getAction(this.url.queryCondition, query).then((res) => {
if (res.success) {
this.searchOption = res.result
} else {
this.searchOption = []
}
})
},
searchReset() {
this.pageNo = 1
this.queryParamOne = {}