Merge remote-tracking branch 'origin/dev_third_stage' into dev_third_stage
This commit is contained in:
+3
@@ -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);
|
||||
|
||||
+11
-4
@@ -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);
|
||||
|
||||
+8
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
+202
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
+1
@@ -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 = {}
|
||||
|
||||
Reference in New Issue
Block a user