From 929413d7f8c5719ef9f3f56dda234fa248914f81 Mon Sep 17 00:00:00 2001 From: wangzhijiang <12345678> Date: Thu, 18 Aug 2022 22:16:54 +0800 Subject: [PATCH] =?UTF-8?q?=E9=97=AE=E9=A2=98=E7=9F=A5=E8=AF=86=E5=BA=93-?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E3=80=81=E4=BF=AE=E6=94=B9=E3=80=81=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=90=8C=E6=AD=A5=E6=95=B0=E6=8D=AE=E5=88=B0es?= =?UTF-8?q?=E4=B8=AD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/document/enums/SearchEnum.java | 5 +- .../ProblemKnowledgeBaseEOServiceImpl.java | 219 ++++++++++++++++++ 2 files changed, 223 insertions(+), 1 deletion(-) diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/enums/SearchEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/enums/SearchEnum.java index b9f2359e4..40e1d088a 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/enums/SearchEnum.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/enums/SearchEnum.java @@ -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; diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/ProblemKnowledgeBaseEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/ProblemKnowledgeBaseEOServiceImpl.java index b8c54e9e8..1df1a001d 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/ProblemKnowledgeBaseEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/ProblemKnowledgeBaseEOServiceImpl.java @@ -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> mapListTempCn = new ArrayList<>(); + List> 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 stringMapCn = new HashMap<>(); + this.problemKnowledgeBaseEOConvertMapByCut(problemKnowledgeBaseEO,CutEnum.EN.getValue(),stringMapCn); + + Map 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 stringMapCnBase = new HashMap<>(); + this.problemKnowledgeBaseEOConvertMapByCut(problemKnowledgeBaseEO,CutEnum.EN.getValue(),stringMapCnBase); + Map 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 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 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