|
@@ -12,6 +12,7 @@ import com.takai.ai.utils.MinioUtil;
|
|
|
import com.takai.ai.utils.SnowflakeDigitGenerator;
|
|
import com.takai.ai.utils.SnowflakeDigitGenerator;
|
|
|
import com.takai.common.annotation.DataSource;
|
|
import com.takai.common.annotation.DataSource;
|
|
|
import com.takai.common.config.DeepseekConfig;
|
|
import com.takai.common.config.DeepseekConfig;
|
|
|
|
|
+import com.takai.common.core.redis.RedisCache;
|
|
|
import com.takai.common.enums.DataSourceType;
|
|
import com.takai.common.enums.DataSourceType;
|
|
|
import com.takai.ai.domain.dto.TakaiDialogReqDTO;
|
|
import com.takai.ai.domain.dto.TakaiDialogReqDTO;
|
|
|
import com.takai.ai.domain.dto.TakaiDialogRespDTO;
|
|
import com.takai.ai.domain.dto.TakaiDialogRespDTO;
|
|
@@ -86,6 +87,9 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private TakaiMediaReplacementMapper takaiMediaReplacementMapper;
|
|
private TakaiMediaReplacementMapper takaiMediaReplacementMapper;
|
|
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private RedisCache redisCache;
|
|
|
|
|
+
|
|
|
public static final String START_SIGN = "【";
|
|
public static final String START_SIGN = "【";
|
|
|
public static final String END_SIGN = "】";
|
|
public static final String END_SIGN = "】";
|
|
|
public static final String SYMBOL = "【示意图序号";
|
|
public static final String SYMBOL = "【示意图序号";
|
|
@@ -96,10 +100,37 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
|
|
|
|
|
public static final String BEFOR = "天前";
|
|
public static final String BEFOR = "天前";
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void initDeepseekInfo() {
|
|
|
|
|
+ //获取应用列表
|
|
|
|
|
+// List<TakaiApplication> appList = takaiApplicationMapper.selectApplicationList(null);
|
|
|
|
|
+ //获取知识库列表
|
|
|
|
|
+ List<TakaiKnowledge> knowledgeList = takaiKnowledgeMapper.selectKnowledgeList(null);
|
|
|
|
|
+ //获取知识列表
|
|
|
|
|
+ if(!knowledgeList.isEmpty()) {
|
|
|
|
|
+ for(TakaiKnowledge bmKnowledge : knowledgeList) {
|
|
|
|
|
+ TakaiDocument conditon = TakaiDocument.builder().knowledgeId(bmKnowledge.getKnowledgeId()).build();
|
|
|
|
|
+ List<TakaiDocument> documentList = takaiDocumentMapper.selectDocumentList(conditon);
|
|
|
|
|
+ if(!documentList.isEmpty()) {
|
|
|
|
|
+ for (TakaiDocument bmDocument : documentList) {
|
|
|
|
|
+ //获取知识图片列表
|
|
|
|
|
+ TakaiMediaReplacement conditonR = TakaiMediaReplacement.builder().documentId(bmDocument.getDocumentId()).build();
|
|
|
|
|
+ List<TakaiMediaReplacement> imageList = takaiMediaReplacementMapper.selectMediaList(conditonR);
|
|
|
|
|
+ if(!imageList.isEmpty()) {
|
|
|
|
|
+ for(TakaiMediaReplacement image : imageList) {
|
|
|
|
|
+ redisCache.setCacheObject(image.getOriginText(),image.getMediaUrl());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public SseEmitter sseInvoke(TakaiSseInfoParams sseParams) {
|
|
public SseEmitter sseInvoke(TakaiSseInfoParams sseParams) {
|
|
|
TakaiApplication appInfo = takaiApplicationMapper.selectTargetApplication(TakaiApplication.builder().appId(sseParams.getAppId()).build());
|
|
TakaiApplication appInfo = takaiApplicationMapper.selectTargetApplication(TakaiApplication.builder().appId(sseParams.getAppId()).build());
|
|
|
- if(appInfo != null) {
|
|
|
|
|
|
|
+ if (appInfo != null) {
|
|
|
TakaiKnowledge knowledge = takaiKnowledgeMapper.selectTargetKnowledge(TakaiKnowledge.builder().knowledgeId(appInfo.getKnowledgeIds()).build());
|
|
TakaiKnowledge knowledge = takaiKnowledgeMapper.selectTargetKnowledge(TakaiKnowledge.builder().knowledgeId(appInfo.getKnowledgeIds()).build());
|
|
|
if (knowledge != null) {
|
|
if (knowledge != null) {
|
|
|
SseEmitter sseEmitter = new SseEmitter(0L);
|
|
SseEmitter sseEmitter = new SseEmitter(0L);
|
|
@@ -131,41 +162,45 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public void onEvent(@NotNull EventSource eventSource, String id, String type, @NotNull String data) {
|
|
public void onEvent(@NotNull EventSource eventSource, String id, String type, @NotNull String data) {
|
|
|
- if (StringUtils.isEmpty(data)) {
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
- String newData = data.substring(preData.length());
|
|
|
|
|
- logger.info("deepseek聊天返回消息:" + data);
|
|
|
|
|
- preData = data;
|
|
|
|
|
- if (newData.indexOf(START_SIGN) > -1 || symbolData.length() > 0) {
|
|
|
|
|
- symbolData = symbolData + newData;
|
|
|
|
|
- //接收到了完整的图片标识
|
|
|
|
|
- if (newData.indexOf(END_SIGN) > -1) {
|
|
|
|
|
- //是图片
|
|
|
|
|
- if (symbolData.indexOf(SYMBOL) > -1) {
|
|
|
|
|
- String documentId = symbolData.substring(SYMBOL.length() + 1, symbolData.lastIndexOf("_"));
|
|
|
|
|
- TakaiMediaReplacement mrParams = TakaiMediaReplacement.builder()
|
|
|
|
|
- .documentId(documentId)
|
|
|
|
|
- .originText(symbolData)
|
|
|
|
|
- .mediaType("image").build();
|
|
|
|
|
- TakaiMediaReplacement mrVo = takaiMediaReplacementMapper.selectTargetMedia(mrParams);
|
|
|
|
|
- symbolData = mrVo.getMediaUrl();
|
|
|
|
|
|
|
+ if (!StringUtils.isEmpty(data)) {
|
|
|
|
|
+ String newData = data.substring(preData.length());
|
|
|
|
|
+ if (com.takai.common.utils.StringUtils.isNotEmpty(type) && "finish".equals(type)) {
|
|
|
|
|
+ logger.info("deepseek聊天结束", newData);
|
|
|
|
|
+ }
|
|
|
|
|
+ logger.info("deepseek聊天返回消息:" + data);
|
|
|
|
|
+ preData = data;
|
|
|
|
|
+ if (newData.indexOf(START_SIGN) > -1 || symbolData.length() > 0) {
|
|
|
|
|
+ symbolData = symbolData + newData;
|
|
|
|
|
+ //接收到了完整的图片标识
|
|
|
|
|
+ if (newData.indexOf(END_SIGN) > -1) {
|
|
|
|
|
+ //是图片
|
|
|
|
|
+ if (symbolData.indexOf(SYMBOL) > -1) {
|
|
|
|
|
+ //获取完整Key
|
|
|
|
|
+ int startPos = symbolData.indexOf(START_SIGN);
|
|
|
|
|
+ int endPos = symbolData.indexOf(END_SIGN) + 1;
|
|
|
|
|
+ String key = symbolData.substring(startPos,endPos);
|
|
|
|
|
+ String url = redisCache.getCacheObject(key);
|
|
|
|
|
+ if(org.springframework.util.StringUtils.hasText(url)) {
|
|
|
|
|
+ //匹配markdown图片格式
|
|
|
|
|
+ symbolData = symbolData.replace(key,"");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ JSONObject json = new JSONObject();
|
|
|
|
|
+ json.put("id", id);
|
|
|
|
|
+ json.put("event", "add");
|
|
|
|
|
+ json.put("data", symbolData);
|
|
|
|
|
+ log.info("deepseek返回信息:" + json);
|
|
|
|
|
+ symbolData = "";
|
|
|
|
|
+ send(sseEmitter, json);
|
|
|
}
|
|
}
|
|
|
|
|
+ } else {
|
|
|
JSONObject json = new JSONObject();
|
|
JSONObject json = new JSONObject();
|
|
|
json.put("id", id);
|
|
json.put("id", id);
|
|
|
- json.put("event", "add");
|
|
|
|
|
- json.put("data", symbolData);
|
|
|
|
|
|
|
+ json.put("event", type);
|
|
|
|
|
+ json.put("data", newData);
|
|
|
log.info("deepseek返回信息:" + json);
|
|
log.info("deepseek返回信息:" + json);
|
|
|
- symbolData = "";
|
|
|
|
|
send(sseEmitter, json);
|
|
send(sseEmitter, json);
|
|
|
}
|
|
}
|
|
|
- } else {
|
|
|
|
|
- JSONObject json = new JSONObject();
|
|
|
|
|
- json.put("id", id);
|
|
|
|
|
- json.put("event", type);
|
|
|
|
|
- json.put("data", newData);
|
|
|
|
|
- log.info("deepseek返回信息:" + json);
|
|
|
|
|
- send(sseEmitter, json);
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -201,7 +236,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
public List<String> asyncCompletions(TakaiCompletionsParams params) {
|
|
public List<String> asyncCompletions(TakaiCompletionsParams params) {
|
|
|
List<String> list = new ArrayList<>();
|
|
List<String> list = new ArrayList<>();
|
|
|
TakaiApplication vo = takaiApplicationMapper.selectTargetApplication(TakaiApplication.builder().appId(params.getAppId()).build());
|
|
TakaiApplication vo = takaiApplicationMapper.selectTargetApplication(TakaiApplication.builder().appId(params.getAppId()).build());
|
|
|
- if(vo != null){
|
|
|
|
|
|
|
+ if (vo != null) {
|
|
|
TakaiPromptInfo info = new TakaiPromptInfo();
|
|
TakaiPromptInfo info = new TakaiPromptInfo();
|
|
|
info.setContent(deepseekConfig.getPrompt());
|
|
info.setContent(deepseekConfig.getPrompt());
|
|
|
info.setRole("user");
|
|
info.setRole("user");
|
|
@@ -211,7 +246,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
jsonObject.put("model", vo.getModel());
|
|
jsonObject.put("model", vo.getModel());
|
|
|
jsonObject.put("messages", params.getMessages());
|
|
jsonObject.put("messages", params.getMessages());
|
|
|
JSONObject result = getasyncCompletions(jsonObject);
|
|
JSONObject result = getasyncCompletions(jsonObject);
|
|
|
- if(result != null && result.getInteger("code") == 200){
|
|
|
|
|
|
|
+ if (result != null && result.getInteger("code") == 200) {
|
|
|
JSONArray array = result.getJSONArray("data");
|
|
JSONArray array = result.getJSONArray("data");
|
|
|
list.addAll(array.toJavaList(String.class));
|
|
list.addAll(array.toJavaList(String.class));
|
|
|
}
|
|
}
|
|
@@ -219,7 +254,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
return list;
|
|
return list;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private JSONObject getasyncCompletions(JSONObject jsonObject){
|
|
|
|
|
|
|
+ private JSONObject getasyncCompletions(JSONObject jsonObject) {
|
|
|
String url = deepseekConfig.getBaseurl() + deepseekConfig.getAsyncCompletions();
|
|
String url = deepseekConfig.getBaseurl() + deepseekConfig.getAsyncCompletions();
|
|
|
RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), jsonObject.toJSONString());
|
|
RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), jsonObject.toJSONString());
|
|
|
Request request = buildPostRequest(url, requestBody);
|
|
Request request = buildPostRequest(url, requestBody);
|
|
@@ -228,11 +263,11 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
Response response = client.newCall(request).execute();
|
|
Response response = client.newCall(request).execute();
|
|
|
if (response.isSuccessful()) {
|
|
if (response.isSuccessful()) {
|
|
|
String body = response.body().string();
|
|
String body = response.body().string();
|
|
|
- if(isJsonObject(body)){
|
|
|
|
|
|
|
+ if (isJsonObject(body)) {
|
|
|
return JSON.parseObject(body);
|
|
return JSON.parseObject(body);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- }catch (IOException e) {
|
|
|
|
|
|
|
+ } catch (IOException e) {
|
|
|
log.info("deepseek Request URL: {}", e.getMessage());
|
|
log.info("deepseek Request URL: {}", e.getMessage());
|
|
|
}
|
|
}
|
|
|
return null;
|
|
return null;
|
|
@@ -247,22 +282,22 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
@Override
|
|
@Override
|
|
|
public void saveDialog(TakaiDialogReqDTO dialogReqDTO) {
|
|
public void saveDialog(TakaiDialogReqDTO dialogReqDTO) {
|
|
|
String dialogId = null;
|
|
String dialogId = null;
|
|
|
- String id = null;
|
|
|
|
|
- if(com.takai.common.utils.StringUtils.isNotEmpty(dialogReqDTO.getId())){
|
|
|
|
|
- id = takaiDialogMapper.selectDialogById(dialogReqDTO.getId());
|
|
|
|
|
|
|
+ TakaiDialogRespDTO dialogVo = null;
|
|
|
|
|
+ if (com.takai.common.utils.StringUtils.isNotEmpty(dialogReqDTO.getId())) {
|
|
|
|
|
+ dialogVo = takaiDialogMapper.selectDialogById(dialogReqDTO.getId());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if(id == null){
|
|
|
|
|
|
|
+ if (dialogVo == null) {
|
|
|
takaiDialogMapper.insertDialog(dialogReqDTO);
|
|
takaiDialogMapper.insertDialog(dialogReqDTO);
|
|
|
dialogId = dialogReqDTO.getId();
|
|
dialogId = dialogReqDTO.getId();
|
|
|
- }else{
|
|
|
|
|
|
|
+ } else {
|
|
|
dialogId = dialogReqDTO.getId();
|
|
dialogId = dialogReqDTO.getId();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- for(TakaiDialogDetailReqDTO dto : dialogReqDTO.getMessages()) {
|
|
|
|
|
|
|
+ for (TakaiDialogDetailReqDTO dto : dialogReqDTO.getMessages()) {
|
|
|
dto.setDialogId(dialogId);
|
|
dto.setDialogId(dialogId);
|
|
|
- String detailId = takaiDialogMapper.selectDialogDetailById(dto.getId());
|
|
|
|
|
- if(detailId == null) {
|
|
|
|
|
|
|
+ TakaiDialogRespDTO detail = takaiDialogMapper.selectDialogDetailById(dto.getId());
|
|
|
|
|
+ if (detail == null) {
|
|
|
takaiDialogMapper.insertDialogDetail(dto);
|
|
takaiDialogMapper.insertDialogDetail(dto);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -276,19 +311,19 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
//根据时间分组降序排序
|
|
//根据时间分组降序排序
|
|
|
NavigableMap<LocalDateTime, List<TakaiDialogRespDTO>> groupList = dialogRespDTOS.stream().collect(Collectors.groupingBy(TakaiDialogRespDTO::getCreate_time, TreeMap::new, Collectors.toList())).descendingMap();
|
|
NavigableMap<LocalDateTime, List<TakaiDialogRespDTO>> groupList = dialogRespDTOS.stream().collect(Collectors.groupingBy(TakaiDialogRespDTO::getCreate_time, TreeMap::new, Collectors.toList())).descendingMap();
|
|
|
List<Object> obj = new ArrayList();
|
|
List<Object> obj = new ArrayList();
|
|
|
- if(!groupList.isEmpty()){
|
|
|
|
|
- for(Map.Entry<LocalDateTime, List<TakaiDialogRespDTO>> entry: groupList.entrySet()){
|
|
|
|
|
|
|
+ if (!groupList.isEmpty()) {
|
|
|
|
|
+ for (Map.Entry<LocalDateTime, List<TakaiDialogRespDTO>> entry : groupList.entrySet()) {
|
|
|
// 对比两个时间相差多少天
|
|
// 对比两个时间相差多少天
|
|
|
long daysBetween = ChronoUnit.DAYS.between(today, entry.getKey());
|
|
long daysBetween = ChronoUnit.DAYS.between(today, entry.getKey());
|
|
|
Map<String, Object> m = new HashMap();
|
|
Map<String, Object> m = new HashMap();
|
|
|
m.put("key", System.nanoTime());
|
|
m.put("key", System.nanoTime());
|
|
|
m.put("type", "group");
|
|
m.put("type", "group");
|
|
|
- if(daysBetween == 0l){
|
|
|
|
|
|
|
+ if (daysBetween == 0l) {
|
|
|
m.put("label", TODAY);
|
|
m.put("label", TODAY);
|
|
|
m.put("children", setValue(entry.getValue()));
|
|
m.put("children", setValue(entry.getValue()));
|
|
|
obj.add(m);
|
|
obj.add(m);
|
|
|
- }else{
|
|
|
|
|
- m.put("label", -daysBetween+BEFOR);
|
|
|
|
|
|
|
+ } else {
|
|
|
|
|
+ m.put("label", -daysBetween + BEFOR);
|
|
|
m.put("children", setValue(entry.getValue()));
|
|
m.put("children", setValue(entry.getValue()));
|
|
|
obj.add(m);
|
|
obj.add(m);
|
|
|
}
|
|
}
|
|
@@ -300,7 +335,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
@Override
|
|
@Override
|
|
|
public void DelDialogDetail(String id) {
|
|
public void DelDialogDetail(String id) {
|
|
|
int result = takaiDialogMapper.delDialog(id);
|
|
int result = takaiDialogMapper.delDialog(id);
|
|
|
- if(result > 0){
|
|
|
|
|
|
|
+ if (result > 0) {
|
|
|
takaiDialogMapper.delDialogDetail(id);
|
|
takaiDialogMapper.delDialogDetail(id);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -383,7 +418,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
if (code == 200) {
|
|
if (code == 200) {
|
|
|
// TakaiKnowledge info = takaiKnowledgeMapper.selectTargetKnowledge(TakaiKnowledge.builder().knowledgeId(knowledgeId).build());
|
|
// TakaiKnowledge info = takaiKnowledgeMapper.selectTargetKnowledge(TakaiKnowledge.builder().knowledgeId(knowledgeId).build());
|
|
|
int knowledgeInt = takaiKnowledgeMapper.delKnowledge(knowledgeId);
|
|
int knowledgeInt = takaiKnowledgeMapper.delKnowledge(knowledgeId);
|
|
|
- if(knowledgeInt > 0){
|
|
|
|
|
|
|
+ if (knowledgeInt > 0) {
|
|
|
takaiDocumentMapper.delDocumentByKnowledgeId(knowledgeId);
|
|
takaiDocumentMapper.delDocumentByKnowledgeId(knowledgeId);
|
|
|
takaiDocumentSettingsMapper.deleteDocumentSettingsByKnowledgeId(knowledgeId);
|
|
takaiDocumentSettingsMapper.deleteDocumentSettingsByKnowledgeId(knowledgeId);
|
|
|
}
|
|
}
|
|
@@ -583,7 +618,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public List<TakaiQuestionDTO> selectQuestionByAppId(String appId) {
|
|
public List<TakaiQuestionDTO> selectQuestionByAppId(String appId) {
|
|
|
- List<TakaiQuestionDTO> List= takaiQuestionMapper.getQuestionList(appId);
|
|
|
|
|
|
|
+ List<TakaiQuestionDTO> List = takaiQuestionMapper.getQuestionList(appId);
|
|
|
return List;
|
|
return List;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -737,6 +772,16 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public TakaiMediaReplacement getTakaiMediaReplacement() {
|
|
|
|
|
+ TakaiMediaReplacement mrParams = TakaiMediaReplacement.builder()
|
|
|
|
|
+ .documentId("a2912832435041734656")
|
|
|
|
|
+ .originText("【示意图序号_a2912832435041734656_1】")
|
|
|
|
|
+ .mediaType("image").build();
|
|
|
|
|
+ TakaiMediaReplacement mrVo = takaiMediaReplacementMapper.selectTargetMedia(mrParams);
|
|
|
|
|
+ return mrVo;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private boolean analysisFile(TakaiSysOss result, TakaiDocumentSettings settings, String flag) {
|
|
private boolean analysisFile(TakaiSysOss result, TakaiDocumentSettings settings, String flag) {
|
|
|
TakaiKnowledge knowledge = takaiKnowledgeMapper.selectTargetKnowledge(TakaiKnowledge.builder().knowledgeId(settings.getKnowledgeId()).build());
|
|
TakaiKnowledge knowledge = takaiKnowledgeMapper.selectTargetKnowledge(TakaiKnowledge.builder().knowledgeId(settings.getKnowledgeId()).build());
|
|
|
String url = deepseekConfig.getBaseurl() + deepseekConfig.getUploadKnowledge();
|
|
String url = deepseekConfig.getBaseurl() + deepseekConfig.getUploadKnowledge();
|
|
@@ -787,8 +832,8 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
//根据时间分组降序排序
|
|
//根据时间分组降序排序
|
|
|
NavigableMap<LocalDateTime, List<TakaiDialogRespDTO>> groupList = list.stream().collect(Collectors.groupingBy(TakaiDialogRespDTO::getCreate_time, TreeMap::new, Collectors.toList())).descendingMap();
|
|
NavigableMap<LocalDateTime, List<TakaiDialogRespDTO>> groupList = list.stream().collect(Collectors.groupingBy(TakaiDialogRespDTO::getCreate_time, TreeMap::new, Collectors.toList())).descendingMap();
|
|
|
List<Object> obj = new ArrayList();
|
|
List<Object> obj = new ArrayList();
|
|
|
- if(!groupList.isEmpty()){
|
|
|
|
|
- for(Map.Entry<LocalDateTime, List<TakaiDialogRespDTO>> entry: groupList.entrySet()){
|
|
|
|
|
|
|
+ if (!groupList.isEmpty()) {
|
|
|
|
|
+ for (Map.Entry<LocalDateTime, List<TakaiDialogRespDTO>> entry : groupList.entrySet()) {
|
|
|
List<TakaiDialogRespDTO> aList = entry.getValue();
|
|
List<TakaiDialogRespDTO> aList = entry.getValue();
|
|
|
List<TakaiDialogRespDTO> detailList = takaiDialogMapper.selectDialogExport(aList.get(0).getId());
|
|
List<TakaiDialogRespDTO> detailList = takaiDialogMapper.selectDialogExport(aList.get(0).getId());
|
|
|
Map<String, Object> map = new HashMap();
|
|
Map<String, Object> map = new HashMap();
|
|
@@ -803,7 +848,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
return obj;
|
|
return obj;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private List<Map<String, Object>> setValue(List<TakaiDialogRespDTO> list){
|
|
|
|
|
|
|
+ private List<Map<String, Object>> setValue(List<TakaiDialogRespDTO> list) {
|
|
|
List<Map<String, Object>> l = new ArrayList();
|
|
List<Map<String, Object>> l = new ArrayList();
|
|
|
for (TakaiDialogRespDTO vo : list) {
|
|
for (TakaiDialogRespDTO vo : list) {
|
|
|
Map<String, Object> map = new HashMap();
|
|
Map<String, Object> map = new HashMap();
|
|
@@ -855,11 +900,11 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
.url(url).post(requestBody).build();
|
|
.url(url).post(requestBody).build();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private boolean isJsonObject(String data){
|
|
|
|
|
|
|
+ private boolean isJsonObject(String data) {
|
|
|
try {
|
|
try {
|
|
|
JSON.parseObject(data);
|
|
JSON.parseObject(data);
|
|
|
return true;
|
|
return true;
|
|
|
- }catch (Exception e){
|
|
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|