|
@@ -2,42 +2,28 @@ package com.fs.company.service.impl;
|
|
|
|
|
|
|
|
import cn.hutool.json.JSONObject;
|
|
import cn.hutool.json.JSONObject;
|
|
|
import cn.hutool.json.JSONUtil;
|
|
import cn.hutool.json.JSONUtil;
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
+import com.fasterxml.jackson.databind.JsonNode;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import com.fs.common.core.domain.AjaxResult;
|
|
import com.fs.common.core.domain.AjaxResult;
|
|
|
import com.fs.common.core.domain.R;
|
|
import com.fs.common.core.domain.R;
|
|
|
import com.fs.common.utils.DateUtils;
|
|
import com.fs.common.utils.DateUtils;
|
|
|
import com.fs.common.utils.spring.SpringUtils;
|
|
import com.fs.common.utils.spring.SpringUtils;
|
|
|
-import com.fs.company.domain.CompanyWorkflowLobster;
|
|
|
|
|
-import com.fs.company.domain.CompanyTagTemplateBinding;
|
|
|
|
|
-import com.fs.company.domain.CompanyWorkflowLobsterEdge;
|
|
|
|
|
-import com.fs.company.domain.CompanyWorkflowLobsterNode;
|
|
|
|
|
-import com.fs.company.domain.CompanyWorkflowLobsterRecord;
|
|
|
|
|
-import com.fs.company.domain.CompanyWorkflowLobsterVariable;
|
|
|
|
|
-import com.fs.company.mapper.CompanyWorkflowLobsterEdgeMapper;
|
|
|
|
|
-import com.fs.company.mapper.CompanyWorkflowLobsterMapper;
|
|
|
|
|
-import com.fs.company.mapper.CompanyWorkflowLobsterNodeMapper;
|
|
|
|
|
-import com.fs.company.mapper.CompanyWorkflowLobsterRecordMapper;
|
|
|
|
|
-import com.fs.company.mapper.CompanyWorkflowLobsterVariableMapper;
|
|
|
|
|
-import com.fs.company.mapper.CompanyTagTemplateBindingMapper;
|
|
|
|
|
-import com.fs.company.param.CompanyWorkflowLobsterCanvasParam;
|
|
|
|
|
-import com.fs.company.param.CompanyWorkflowLobsterConfirmParam;
|
|
|
|
|
-import com.fs.company.param.CompanyWorkflowLobsterEdgeParam;
|
|
|
|
|
-import com.fs.company.param.CompanyWorkflowLobsterGenerateParam;
|
|
|
|
|
-import com.fs.company.param.CompanyWorkflowLobsterNodeParam;
|
|
|
|
|
-import com.fs.company.param.CompanyWorkflowLobsterVariableParam;
|
|
|
|
|
|
|
+import com.fs.company.domain.*;
|
|
|
|
|
+import com.fs.company.mapper.*;
|
|
|
|
|
+import com.fs.company.param.*;
|
|
|
import com.fs.company.service.ICompanyWorkflowLobsterService;
|
|
import com.fs.company.service.ICompanyWorkflowLobsterService;
|
|
|
|
|
+import com.fs.company.utils.JsonUtils;
|
|
|
import com.fs.fastgptApi.param.ChatParam;
|
|
import com.fs.fastgptApi.param.ChatParam;
|
|
|
import com.fs.fastgptApi.service.ChatService;
|
|
import com.fs.fastgptApi.service.ChatService;
|
|
|
-import com.fs.wxwork.dto.WxWorkSendTextMsgDTO;
|
|
|
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
|
|
|
|
|
-import java.sql.Time;
|
|
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
@@ -70,7 +56,10 @@ public class CompanyWorkflowLobsterServiceImpl implements ICompanyWorkflowLobste
|
|
|
return all.subList(start, end);
|
|
return all.subList(start, end);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private static final String LOBSTER_KEY = "fastgpt-lDP6kVelHf2p8j80vfz2Kl7g9PjacwJoTmCplEBGWBaGMCRtv7SueW5mZ4iXe";
|
|
|
|
|
|
|
+ @Value("${company.lobsterKey:fastgpt-lDP6kVelHf2p8j80vfz2Kl7g9PjacwJoTmCplEBGWBaGMCRtv7SueW5mZ4iXe}")
|
|
|
|
|
+ private String LOBSTER_KEY;
|
|
|
|
|
+ @Value("${company.lobsterShowKey:fastgpt-hgf4m8QRTAm2pv3SievqRLPHKSJHeX3t8tc4Li15eq0lkNQXXxSDXLKf}")
|
|
|
|
|
+ private String LOBSTER_SHOW_KEY;
|
|
|
private static final ObjectMapper mapper = new ObjectMapper();
|
|
private static final ObjectMapper mapper = new ObjectMapper();
|
|
|
private static final String AI_API = "http://129.28.170.206:3000/api";
|
|
private static final String AI_API = "http://129.28.170.206:3000/api";
|
|
|
|
|
|
|
@@ -707,4 +696,41 @@ public class CompanyWorkflowLobsterServiceImpl implements ICompanyWorkflowLobste
|
|
|
return all;
|
|
return all;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public String simulate(Long companyId, Long templateId, String content, String simulateDate) {
|
|
|
|
|
+ JSONObject requestJson = new JSONObject();
|
|
|
|
|
+ requestJson.set("userContent", content);
|
|
|
|
|
+ requestJson.set("createTime", simulateDate);
|
|
|
|
|
+ List<String> callWords = nodeMapper.selectCallWordsByTemplateId(templateId);
|
|
|
|
|
+ requestJson.set("callWord", callWords);
|
|
|
|
|
+ String requestStr = requestJson.toString();
|
|
|
|
|
+ try {
|
|
|
|
|
+ R r = callAiService(requestStr, templateId, LOBSTER_SHOW_KEY);
|
|
|
|
|
+
|
|
|
|
|
+ if (r.get("data") != null) {
|
|
|
|
|
+ Object data = r.get("data");
|
|
|
|
|
+ String jsonStr = JSONUtil.toJsonStr(data);
|
|
|
|
|
+ ObjectMapper mapper = new ObjectMapper();
|
|
|
|
|
+ JsonNode root = mapper.readTree(jsonStr);
|
|
|
|
|
+
|
|
|
|
|
+ // 提取 choices[0].message.content
|
|
|
|
|
+ String choiceContent = root.path("choices")
|
|
|
|
|
+ .path(0)
|
|
|
|
|
+ .path("message")
|
|
|
|
|
+ .path("content")
|
|
|
|
|
+ .asText();
|
|
|
|
|
+
|
|
|
|
|
+ // 解析 content 中的 JSON 字符串,提取 aiContent
|
|
|
|
|
+ JsonNode contentJson = mapper.readTree(choiceContent);
|
|
|
|
|
+ String aiContent = contentJson.path("aiContent").asText();
|
|
|
|
|
+
|
|
|
|
|
+ return aiContent;
|
|
|
|
|
+ }
|
|
|
|
|
+ return r.toString();
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.error("模拟对话失败: {}", e.getMessage(), e);
|
|
|
|
|
+ throw new RuntimeException("模拟对话失败: " + e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
}
|
|
}
|