|
@@ -1,5 +1,7 @@
|
|
|
package com.jeeplus.modules.knowledgeSharing.service;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import com.google.gson.Gson;
|
|
|
import com.jeeplus.common.persistence.Page;
|
|
|
import com.jeeplus.modules.knowledgeSharing.dify.DifyApiClient;
|
|
@@ -15,76 +17,28 @@ import java.util.List;
|
|
|
|
|
|
/**
|
|
|
* 知识分享Service
|
|
|
+ *
|
|
|
* @author 徐滕
|
|
|
* @create 2022-4-11 9:17
|
|
|
*/
|
|
|
@Service
|
|
|
@Transactional(readOnly = true)
|
|
|
-public class KnowledgeBaseService {
|
|
|
-
|
|
|
- public Page<KnowledgeBase> findKnowledgePage(Page<KnowledgeBase> page,KnowledgeBase knowledgeBase) throws Exception {
|
|
|
- JSONObject jsonObject = DifyApiClient.selectKnowledgeBaseList(page,knowledgeBase);
|
|
|
+public class KnowledgeBaseService {
|
|
|
|
|
|
+ public Page<KnowledgeBase> findKnowledgePage(Page<KnowledgeBase> page, KnowledgeBase knowledgeBase) throws Exception {
|
|
|
+ int pageNo = page.getPageNo();
|
|
|
+ int pageSize = page.getPageSize();
|
|
|
+ JSONObject jsonObject = DifyApiClient.selectKnowledgeBaseList(pageNo, pageSize, knowledgeBase);
|
|
|
JSONArray data = jsonObject.getJSONArray("data");
|
|
|
-
|
|
|
- //格式转换
|
|
|
- List<KnowledgeBase> knowledgeBaseList = new ArrayList<>();
|
|
|
- for (int i = 0; i < data.length(); i++) {
|
|
|
- JSONObject item = data.getJSONObject(i);
|
|
|
- KnowledgeBase temp = new KnowledgeBase();
|
|
|
- temp.setId(item.getString("id"));
|
|
|
- temp.setDocumentCount(item.getInt("document_count"));
|
|
|
- temp.setIndexingTechnique(item.getString("indexing_technique"));
|
|
|
-
|
|
|
- JSONObject retrievalModelDict = item.getJSONObject("retrieval_model_dict");
|
|
|
- Gson gson = new Gson();
|
|
|
- RetrievalModelDict retrievalModel = gson.fromJson(retrievalModelDict.toString(), RetrievalModelDict.class);
|
|
|
- temp.setRetrievalModelDict(retrievalModel);
|
|
|
-
|
|
|
- JSONObject externalRetrievalModel = item.getJSONObject("external_retrieval_model");
|
|
|
- ExternalRetrievalModel externalRetrieval = gson.fromJson(externalRetrievalModel.toString(), ExternalRetrievalModel.class);
|
|
|
- temp.setExternalRetrievalModel(externalRetrieval);
|
|
|
-
|
|
|
- temp.setEmbeddingModel(item.getString("embedding_model"));
|
|
|
- temp.setDocForm(item.getString("doc_form"));
|
|
|
- temp.setDescription(item.getString("description"));
|
|
|
-
|
|
|
-
|
|
|
- long createdAt = item.getLong("created_at");
|
|
|
- Date createdAtDate = new Date(createdAt * 1000); // 转换为Date对象
|
|
|
- temp.setCreatedAt(createdAtDate); // 设置
|
|
|
-
|
|
|
- temp.setPermission(item.getString("permission"));
|
|
|
- temp.setDataSourceType(item.getString("data_source_type"));
|
|
|
- temp.setCreatedBy(item.getString("created_by"));
|
|
|
-
|
|
|
- JSONArray tags = item.getJSONArray("tags");
|
|
|
- List<String> tagsList = new ArrayList<>();
|
|
|
- for (int j = 0; j < tags.length(); j++) {
|
|
|
- tagsList.add(tags.getString(i));
|
|
|
+ List<KnowledgeBase> knowledgeBaseList = JSON.parseArray(data.toString(), KnowledgeBase.class);
|
|
|
+ for (KnowledgeBase doc : knowledgeBaseList) {
|
|
|
+ if (doc.getCreatedAt() != null) {
|
|
|
+ doc.setCreatedAt(new Date(doc.getCreatedAt().getTime() * 1000));
|
|
|
+ }
|
|
|
+ if (doc.getUpdatedAt() != null) {
|
|
|
+ doc.setUpdatedAt(new Date(doc.getUpdatedAt().getTime() * 1000));
|
|
|
}
|
|
|
- temp.setTags(tagsList);
|
|
|
-
|
|
|
- temp.setEmbeddingModelProvider(item.getString("embedding_model_provider"));
|
|
|
- temp.setWordCount(item.getInt("word_count"));
|
|
|
-
|
|
|
- long updatedAt = item.getLong("updated_at");
|
|
|
- Date updateAtDate = new Date(updatedAt * 1000); // 转换为Date对象
|
|
|
- temp.setUpdatedAt(updateAtDate); // 设置
|
|
|
-
|
|
|
- temp.setProvider(item.getString("provider"));
|
|
|
- temp.setName(item.getString("name"));
|
|
|
-
|
|
|
- temp.setUpdatedBy(item.getString("updated_by"));
|
|
|
-
|
|
|
- JSONObject externalKnowledgeInfo = item.getJSONObject("external_knowledge_info");
|
|
|
- ExternalKnowledgeInfo externalKnowledge = gson.fromJson(externalKnowledgeInfo.toString(), ExternalKnowledgeInfo.class);
|
|
|
- temp.setExternalKnowledgeInfo(externalKnowledge);
|
|
|
- temp.setEmbeddingAvailable(item.getBoolean("embedding_available"));
|
|
|
- temp.setAppCount(item.getInt("app_count"));
|
|
|
- knowledgeBaseList.add(temp);
|
|
|
}
|
|
|
-
|
|
|
//总数
|
|
|
int total = jsonObject.getInt("total");
|
|
|
page.setCount(total);
|
|
@@ -97,26 +51,20 @@ public class KnowledgeBaseService {
|
|
|
|
|
|
/**
|
|
|
* 获取知识库详情数据
|
|
|
+ *
|
|
|
* @param knowledgeBaseDoc
|
|
|
*/
|
|
|
- public Page<KnowledgeBaseDoc> findKnowledgeBaseById(Page<KnowledgeBaseDoc> page,KnowledgeBaseDoc knowledgeBaseDoc) throws Exception {
|
|
|
+ public Page<KnowledgeBaseDoc> findKnowledgeBaseById(Page<KnowledgeBaseDoc> page, KnowledgeBaseDoc knowledgeBaseDoc) throws Exception {
|
|
|
int pageSize = page.getPageSize();
|
|
|
int pageNo = page.getPageNo();
|
|
|
- JSONObject knowledgeBaseDocList = DifyApiClient.findKnowledgeBaseById(pageNo,pageSize,knowledgeBaseDoc.getParentId(),knowledgeBaseDoc.getName());
|
|
|
- System.out.println(knowledgeBaseDocList);
|
|
|
- List<KnowledgeBaseDoc> knowledgeBaseDocArrayList = new ArrayList<>();
|
|
|
-
|
|
|
+ JSONObject knowledgeBaseDocList = DifyApiClient.findKnowledgeBaseById(pageNo, pageSize, knowledgeBaseDoc.getParentId(), knowledgeBaseDoc.getName());
|
|
|
JSONArray data = knowledgeBaseDocList.getJSONArray("data");
|
|
|
- for (int i = 0; i < data.length(); i++) {
|
|
|
- JSONObject item = data.getJSONObject(i);
|
|
|
- KnowledgeBaseDoc knowledgeBaseDoc1 = new KnowledgeBaseDoc();
|
|
|
- knowledgeBaseDoc1.setName(item.getString("name"));
|
|
|
- knowledgeBaseDoc1.setWordCount(item.getInt("word_count"));
|
|
|
- long createAt = item.getLong("created_at");
|
|
|
- Date date = new Date(createAt* 1000);
|
|
|
+ List<KnowledgeBaseDoc> knowledgeBaseDocArrayList = JSON.parseArray(data.toString(), KnowledgeBaseDoc.class);
|
|
|
+ for (KnowledgeBaseDoc doc : knowledgeBaseDocArrayList) {
|
|
|
+ if (doc.getCreatedAt() != null) {
|
|
|
+ doc.setCreatedAt(new Date(doc.getCreatedAt().getTime() * 1000));
|
|
|
+ }
|
|
|
|
|
|
- knowledgeBaseDoc1.setCreatedAt(date );
|
|
|
- knowledgeBaseDocArrayList.add(knowledgeBaseDoc1);
|
|
|
}
|
|
|
//总数
|
|
|
int total = knowledgeBaseDocList.getInt("total");
|
|
@@ -127,4 +75,32 @@ public class KnowledgeBaseService {
|
|
|
return page;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取文档分段内容
|
|
|
+ *
|
|
|
+ * @param knowledgeBaseDoc
|
|
|
+ */
|
|
|
+ public List<KnowledgeBaseDocContent> findDocContent(KnowledgeBaseDoc knowledgeBaseDoc) throws Exception {
|
|
|
+ JSONObject knowledgeBaseDocList = DifyApiClient.findDocContent(knowledgeBaseDoc.getParentId(), knowledgeBaseDoc.getId());
|
|
|
+ JSONArray data = knowledgeBaseDocList.getJSONArray("data");
|
|
|
+ String jsonString = data.toString();
|
|
|
+ List<KnowledgeBaseDocContent> knowledgeBaseDocContentList = JSON.parseArray(jsonString, KnowledgeBaseDocContent.class);
|
|
|
+ for (KnowledgeBaseDocContent doc : knowledgeBaseDocContentList) {
|
|
|
+ if (doc.getCreatedAt() != null) {
|
|
|
+ doc.setCreatedAt(new Date(doc.getCreatedAt().getTime() * 1000));
|
|
|
+ }
|
|
|
+ if (doc.getUpdatedAt() != null) {
|
|
|
+ doc.setUpdatedAt(new Date(doc.getUpdatedAt().getTime() * 1000));
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return knowledgeBaseDocContentList;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static String markdownToHtmlSimple(String markdown) {
|
|
|
+ // 转换图片语法  => <img src="url" alt="alt" />
|
|
|
+ return markdown.replaceAll("!\\[(.*?)\\]\\((.*?)\\)", "<img src=\"$2\" alt=\"$1\" style=\"max-width: 100%;\"/>");
|
|
|
+ }
|
|
|
+
|
|
|
}
|