问题知识库-新增、修改、删除同步数据到es中。
This commit is contained in:
+4
-1
@@ -12,7 +12,10 @@ public enum SearchEnum {
|
||||
TYPE_NAME_LAWS_MONTHLY_REPORT("法规月报类型名称","lawsMonthlyReport"),
|
||||
FULL_TEXT_SEARCH("全部中文","fulltextsearchcn"),
|
||||
FULL_TEXT_SEARCH_CN("全部中文","fulltextsearchcn"),
|
||||
FULL_TEXT_SEARCH_EN("全部英文","fulltextsearchen");
|
||||
FULL_TEXT_SEARCH_EN("全部英文","fulltextsearchen"),
|
||||
INDEX_PROBLEM_KNOWLEDGE_BASE("问题知识库索引名称","problemKnowledgeBase"),
|
||||
TYPE_PROBLEM_KNOWLEDGE_BASE_CN("问题知识库类型","problemKnowledgeBaseTypeCn"),
|
||||
TYPE_PROBLEM_KNOWLEDGE_BASE_EN("问题知识库类型","problemKnowledgeBaseTypeEn");
|
||||
|
||||
String name;
|
||||
String value;
|
||||
|
||||
+219
@@ -1,10 +1,15 @@
|
||||
package com.jero.modules.problemKnowledgeBase.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.jero.common.constant.enums.CutEnum;
|
||||
import com.jero.common.es.JeroElasticsearchTemplate;
|
||||
import com.jero.common.system.query.QueryGenerator;
|
||||
import com.jero.common.system.vo.DictModel;
|
||||
import com.jero.common.system.vo.LoginUser;
|
||||
import com.jero.modules.document.enums.SearchEnum;
|
||||
import com.jero.modules.problemKnowledgeBase.entity.*;
|
||||
import com.jero.modules.problemKnowledgeBase.enums.CollectStatusEnum;
|
||||
import com.jero.modules.problemKnowledgeBase.enums.PraiseStatusEnum;
|
||||
@@ -52,6 +57,10 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
|
||||
private ISysDictService sysDictService;
|
||||
@Autowired
|
||||
private IProblemKnowledgeBaseCommentEOService problemKnowledgeBaseCommentEOService;
|
||||
@Autowired
|
||||
private JeroElasticsearchTemplate jeroElasticsearchTemplate;
|
||||
|
||||
public static final String SEARCH_FLAG = "魑";
|
||||
|
||||
/**
|
||||
* 保存
|
||||
@@ -69,9 +78,212 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
|
||||
//如果该条问题知识库的展示权限为私密,则创建权限表数据
|
||||
if(StringUtils.equals(problemKnowledgeBaseEO.getShowPermissions(), ShowPermissionsEnum.PRIVACY.getValue())){
|
||||
batchInsertProblemKnowledgeBaseUserEO(problemKnowledgeBaseEO);
|
||||
}else {
|
||||
//如果展示权限是公开,则把该数据插入到搜索中心中。
|
||||
this.addOrUpdateElasticsearch(problemKnowledgeBaseEO);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 将问题知识库数据添加或修改到es中
|
||||
* @param problemKnowledgeBaseEO
|
||||
*/
|
||||
public void addOrUpdateElasticsearch(ProblemKnowledgeBaseEO problemKnowledgeBaseEO){
|
||||
String problemKnowledgeBaseId = problemKnowledgeBaseEO.getId();
|
||||
|
||||
List<Map<String, Object>> mapListTempCn = new ArrayList<>();
|
||||
List<Map<String, Object>> mapListTempEn = new ArrayList<>();
|
||||
|
||||
//sbCn sbEn 这两个字段作为es中英文切换
|
||||
StringBuilder sbCn = new StringBuilder();
|
||||
esFullText(problemKnowledgeBaseEO,sbCn,null,CutEnum.CN.getValue());
|
||||
StringBuilder sbEn = new StringBuilder();
|
||||
esFullText(problemKnowledgeBaseEO,null,sbEn,CutEnum.EN.getValue());
|
||||
|
||||
Map<String, Object> stringMapCn = new HashMap<>();
|
||||
this.problemKnowledgeBaseEOConvertMapByCut(problemKnowledgeBaseEO,CutEnum.EN.getValue(),stringMapCn);
|
||||
|
||||
Map<String, Object> stringMapEn = new HashMap<>();
|
||||
this.problemKnowledgeBaseEOConvertMapByCut(problemKnowledgeBaseEO,CutEnum.EN.getValue(),stringMapEn);
|
||||
|
||||
this.putMap(problemKnowledgeBaseId,sbCn.toString(),CutEnum.CN.getValue(),stringMapCn,SEARCH_FLAG,"问题知识库");
|
||||
this.putMap(problemKnowledgeBaseId,sbEn.toString(),CutEnum.EN.getValue(),stringMapEn,SEARCH_FLAG,"Problem knowledge base");
|
||||
|
||||
Map<String, Object> stringMapCnBase = new HashMap<>();
|
||||
this.problemKnowledgeBaseEOConvertMapByCut(problemKnowledgeBaseEO,CutEnum.EN.getValue(),stringMapCnBase);
|
||||
Map<String, Object> stringMapEnBase = new HashMap<>();
|
||||
this.problemKnowledgeBaseEOConvertMapByCut(problemKnowledgeBaseEO,CutEnum.EN.getValue(),stringMapEnBase);
|
||||
this.putMap(problemKnowledgeBaseId,sbCn.toString(),CutEnum.CN.getValue(),stringMapCnBase,null,"问题知识库");
|
||||
this.putMap(problemKnowledgeBaseId,sbEn.toString(),CutEnum.EN.getValue(),stringMapEnBase,null,"Problem knowledge base");
|
||||
|
||||
mapListTempCn.add(stringMapCn);
|
||||
mapListTempCn.add(stringMapCnBase);
|
||||
|
||||
mapListTempEn.add(stringMapEn);
|
||||
mapListTempEn.add(stringMapCnBase);
|
||||
|
||||
JSONObject jsonObjectCn = JSON.parseObject(JSON.toJSONString(stringMapCn));
|
||||
JSONObject jsonObjectEn = JSON.parseObject(JSON.toJSONString(stringMapEn));
|
||||
JSONArray arrayCn = JSONArray.parseArray(JSON.toJSONString(mapListTempCn));
|
||||
JSONArray arrayEn = JSONArray.parseArray(JSON.toJSONString(mapListTempEn));
|
||||
|
||||
try {
|
||||
this.deleteElasticsearchData(problemKnowledgeBaseId);
|
||||
|
||||
//问题知识库索引添加数据
|
||||
this.jeroElasticsearchTemplate.saveOrUpdate(SearchEnum.TYPE_PROBLEM_KNOWLEDGE_BASE_EN.getValue(), SearchEnum.TYPE_PROBLEM_KNOWLEDGE_BASE_EN.getValue(), problemKnowledgeBaseId, jsonObjectEn);
|
||||
this.jeroElasticsearchTemplate.saveOrUpdate(SearchEnum.TYPE_PROBLEM_KNOWLEDGE_BASE_CN.getValue(), SearchEnum.TYPE_PROBLEM_KNOWLEDGE_BASE_CN.getValue(), problemKnowledgeBaseId, jsonObjectCn);
|
||||
//全部索引添加数据
|
||||
this.jeroElasticsearchTemplate.saveBatch(SearchEnum.FULL_TEXT_SEARCH_CN.getValue(), SearchEnum.FULL_TEXT_SEARCH_CN.getValue(), arrayCn);
|
||||
this.jeroElasticsearchTemplate.saveBatch(SearchEnum.FULL_TEXT_SEARCH_EN.getValue(), SearchEnum.FULL_TEXT_SEARCH_EN.getValue(), arrayEn);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
log.error("问题知识库添加es失败");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据问题知识库id删除es中数据
|
||||
* @param problemKnowledgeBaseId
|
||||
*/
|
||||
public void deleteElasticsearchData(String problemKnowledgeBaseId){
|
||||
try {
|
||||
//根据id删除全部索引中数据
|
||||
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.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);
|
||||
}catch (Exception ex){
|
||||
ex.printStackTrace();
|
||||
log.error("问题知识库根据id删除es数据失败,问题知识库id为:" + problemKnowledgeBaseId);
|
||||
}
|
||||
}
|
||||
|
||||
public void esFullText(ProblemKnowledgeBaseEO problemKnowledgeBaseEO,StringBuilder sbCn,StringBuilder sbEn,String cut){
|
||||
if(StringUtils.equals(cut,CutEnum.CN.getValue())){
|
||||
if(StringUtils.isNotEmpty(problemKnowledgeBaseEO.getShowPermissions_dicText())){
|
||||
sbCn.append("展示权限" + ":" + problemKnowledgeBaseEO.getShowPermissions_dicText() + " ");
|
||||
}else {
|
||||
sbCn.append("展示权限" + ":" + "-- ");
|
||||
}
|
||||
|
||||
if(StringUtils.isNotEmpty(problemKnowledgeBaseEO.getTitle())){
|
||||
sbCn.append("标题" + ":" + problemKnowledgeBaseEO.getTitle() + " ");
|
||||
}else {
|
||||
sbCn.append("标题" + ":" + "-- ");
|
||||
}
|
||||
|
||||
if(StringUtils.isNotEmpty(problemKnowledgeBaseEO.getProblemTypeName())){
|
||||
sbCn.append("问题分类" + ":" + problemKnowledgeBaseEO.getProblemTypeName() + " ");
|
||||
}else {
|
||||
sbCn.append("问题分类" + ":" + "-- ");
|
||||
}
|
||||
|
||||
if(StringUtils.isNotEmpty(problemKnowledgeBaseEO.getTargetMarket_dicText())){
|
||||
sbCn.append("市场" + ":" + problemKnowledgeBaseEO.getTargetMarket_dicText() + " ");
|
||||
}else {
|
||||
sbCn.append("市场" + ":" + "-- ");
|
||||
}
|
||||
|
||||
if(StringUtils.isNotEmpty(problemKnowledgeBaseEO.getStandNumber())){
|
||||
sbCn.append("标准编号" + ":" + problemKnowledgeBaseEO.getStandNumber() + " ");
|
||||
}else {
|
||||
sbCn.append("标准编号" + ":" + "-- ");
|
||||
}
|
||||
|
||||
/*if(StringUtils.isNotEmpty(problemKnowledgeBaseEO.getStandTitle())){
|
||||
sbCn.append("标准标题" + ":" + problemKnowledgeBaseEO.getStandTitle() + " ");
|
||||
}else {
|
||||
sbCn.append("标准标题" + ":" + "-- ");
|
||||
}*/
|
||||
|
||||
if(StringUtils.isNotEmpty(problemKnowledgeBaseEO.getContent())){
|
||||
sbCn.append("内容" + ":" + problemKnowledgeBaseEO.getContent() + " ");
|
||||
}else {
|
||||
sbCn.append("内容" + ":" + "-- ");
|
||||
}
|
||||
}else if(StringUtils.equals(cut,CutEnum.EN.getValue())){
|
||||
|
||||
if(StringUtils.isNotEmpty(problemKnowledgeBaseEO.getShowPermissions_dicText())){
|
||||
sbEn.append("Display permission" + ":" + problemKnowledgeBaseEO.getShowPermissions_dicText() + " ");
|
||||
}else {
|
||||
sbEn.append("Display permission" + ":" + "-- ");
|
||||
}
|
||||
|
||||
if(StringUtils.isNotEmpty(problemKnowledgeBaseEO.getTitle())){
|
||||
sbEn.append("Title" + ":" + problemKnowledgeBaseEO.getTitle() + " ");
|
||||
}else {
|
||||
sbEn.append("Title" + ":" + "-- ");
|
||||
}
|
||||
|
||||
if(StringUtils.isNotEmpty(problemKnowledgeBaseEO.getProblemTypeName())){
|
||||
sbEn.append("Problem classification" + ":" + problemKnowledgeBaseEO.getProblemTypeName() + " ");
|
||||
}else {
|
||||
sbEn.append("Problem classification" + ":" + "-- ");
|
||||
}
|
||||
|
||||
if(StringUtils.isNotEmpty(problemKnowledgeBaseEO.getTargetMarket_dicText())){
|
||||
sbEn.append("Market" + ":" + problemKnowledgeBaseEO.getTargetMarket_dicText() + " ");
|
||||
}else {
|
||||
sbEn.append("Market" + ":" + "-- ");
|
||||
}
|
||||
|
||||
if(StringUtils.isNotEmpty(problemKnowledgeBaseEO.getStandNumber())){
|
||||
sbEn.append("Standard No" + ":" + problemKnowledgeBaseEO.getStandNumber() + " ");
|
||||
}else {
|
||||
sbEn.append("Standard No" + ":" + "-- ");
|
||||
}
|
||||
|
||||
/*if(StringUtils.isNotEmpty(problemKnowledgeBaseEO.getStandTitle())){
|
||||
sbEn.append("Standard Title" + ":" + problemKnowledgeBaseEO.getStandTitle() + " ");
|
||||
}else {
|
||||
sbEn.append("Standard Title" + ":" + "-- ");
|
||||
}*/
|
||||
|
||||
if(StringUtils.isNotEmpty(problemKnowledgeBaseEO.getContent())){
|
||||
sbEn.append("Content" + ":" + problemKnowledgeBaseEO.getContent() + " ");
|
||||
}else {
|
||||
sbEn.append("Content" + ":" + "-- ");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void putMap(String id,String content,String cut,Map<String, Object> map,String flag,String moduleType){
|
||||
map.put("id",id);
|
||||
map.put("module_type", moduleType);
|
||||
map.put("content",content);
|
||||
map.put("flag",flag);
|
||||
}
|
||||
|
||||
/**
|
||||
* 问题知识库对象转Map,根据中英文切换字段转
|
||||
* @param problemKnowledgeBaseEO 问题知识库对象
|
||||
* @param cut 中英文切换标识 值对应CutEnum枚举类
|
||||
* @param convertAfterMap 转换后的Map
|
||||
*/
|
||||
public void problemKnowledgeBaseEOConvertMapByCut(ProblemKnowledgeBaseEO problemKnowledgeBaseEO,String cut,Map<String, Object> convertAfterMap){
|
||||
if(StringUtils.equals(cut,CutEnum.CN.getValue())){
|
||||
convertAfterMap.put("id",problemKnowledgeBaseEO.getId());
|
||||
convertAfterMap.put("标题",problemKnowledgeBaseEO.getTitle());
|
||||
convertAfterMap.put("问题分类",problemKnowledgeBaseEO.getProblemType());
|
||||
convertAfterMap.put("市场",problemKnowledgeBaseEO.getTargetMarket());
|
||||
convertAfterMap.put("标准编号",problemKnowledgeBaseEO.getStandNumber());
|
||||
//convertAfterMap.put("标准标题",problemKnowledgeBaseEO.getStandTitle());
|
||||
convertAfterMap.put("内容",problemKnowledgeBaseEO.getContent());
|
||||
}else if(StringUtils.equals(cut,CutEnum.EN.getValue())){
|
||||
convertAfterMap.put("id",problemKnowledgeBaseEO.getId());
|
||||
convertAfterMap.put("title",problemKnowledgeBaseEO.getTitle());
|
||||
convertAfterMap.put("Problem Classification",problemKnowledgeBaseEO.getProblemType());
|
||||
convertAfterMap.put("Market",problemKnowledgeBaseEO.getTargetMarket());
|
||||
convertAfterMap.put("Standard No",problemKnowledgeBaseEO.getStandNumber());
|
||||
//convertAfterMap.put("Standard Title",problemKnowledgeBaseEO.getStandTitle());
|
||||
convertAfterMap.put("Content",problemKnowledgeBaseEO.getContent());
|
||||
convertAfterMap.put("createTime",problemKnowledgeBaseEO.getCreateTime());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新
|
||||
*
|
||||
@@ -87,6 +299,9 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
|
||||
//如果该条问题知识库的展示权限为私密,则创建权限表数据
|
||||
if(StringUtils.equals(problemKnowledgeBaseEO.getShowPermissions(), ShowPermissionsEnum.PRIVACY.getValue())){
|
||||
batchInsertProblemKnowledgeBaseUserEO(problemKnowledgeBaseEO);
|
||||
this.deleteElasticsearchData(problemKnowledgeBaseEO.getId());
|
||||
}else {
|
||||
this.addOrUpdateElasticsearch(problemKnowledgeBaseEO);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -122,6 +337,10 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
|
||||
this.problemKnowledgeBaseBrowsingHistoryEOService.remove(deleteWrapper);
|
||||
|
||||
this.problemKnowledgeBaseCommentEOService.remove(deleteWrapper);
|
||||
|
||||
for (String problemKnowledgeBaseId : ids) {
|
||||
this.deleteElasticsearchData(problemKnowledgeBaseId);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user