difyresult处理
This commit is contained in:
@@ -6,6 +6,6 @@ import com.volvo.ai.analytic.center.entity.AiAnalysisRequestLogs;
|
||||
public interface AiAnalysisRequestLogsService extends IService<AiAnalysisRequestLogs> {
|
||||
|
||||
boolean saveAiAnalysisRequestLogs(AiAnalysisRequestLogs aiAnalysisRequestLogs);
|
||||
|
||||
AiAnalysisRequestLogs queryByAiAnalysisRequestId(String aiAnalysisRequestId);
|
||||
AiAnalysisRequestLogs queryAiAnalysisRequestLogsByBusinessReponse(String sourceId);
|
||||
}
|
||||
|
||||
@@ -32,6 +32,13 @@ public class AiAnalysisRequestLogsServiceImpl extends ServiceImpl<AiAnalysisRequ
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public AiAnalysisRequestLogs queryByAiAnalysisRequestId(String aiAnalysisRequestId) {
|
||||
LambdaQueryWrapper<AiAnalysisRequestLogs> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(AiAnalysisRequestLogs::getAiAnalysisRequestId, aiAnalysisRequestId);
|
||||
return aiAnalysisRequestLogsMapper.selectOne(queryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AiAnalysisRequestLogs queryAiAnalysisRequestLogsByBusinessReponse(String sourceId) {
|
||||
return aiAnalysisRequestLogsMapper.queryAiAnalysisRequestLogsByBusinessReponse(sourceId);
|
||||
|
||||
@@ -1,22 +1,105 @@
|
||||
package com.volvo.ai.analytic.center.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.volvo.ai.analytic.center.dto.corpus.AicorpusTelephoneDTO;
|
||||
import com.volvo.ai.analytic.center.dto.corpus.CorpusReportDTO;
|
||||
import com.volvo.ai.analytic.center.entity.AiAnalysisErrors;
|
||||
import com.volvo.ai.analytic.center.entity.AiAnalysisRequestLogs;
|
||||
import com.volvo.ai.analytic.center.enums.BusinessTypeEnum;
|
||||
import com.volvo.ai.analytic.center.enums.CategoryEnum;
|
||||
import com.volvo.ai.analytic.center.mapper.TmTelephoneCorpusMapper;
|
||||
import com.volvo.ai.analytic.center.service.AiAnalysisRequestLogsService;
|
||||
import com.volvo.ai.analytic.center.service.AiDifyResultService;
|
||||
import com.volvo.ai.analytic.center.utils.FlowResultSplitUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.ZonedDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class AiDifyResultServiceImpl implements AiDifyResultService {
|
||||
|
||||
@Autowired
|
||||
private AiAnalysisRequestLogsService aiAnalysisRequestLogsService;
|
||||
|
||||
@Autowired
|
||||
private TmTelephoneCorpusMapper tmTelephoneCorpusMapper;
|
||||
|
||||
@Override
|
||||
public boolean updateAiDifyResult(String message) {
|
||||
JSONObject messageJson = JSONObject.parseObject(message);
|
||||
String aiAnalysisRequestId = messageJson.getString("aiAnalysisRequestId");
|
||||
|
||||
String difyResponse = messageJson.getString("difyResponse");
|
||||
AiAnalysisRequestLogs oldAiAnalysisRequestLogs = aiAnalysisRequestLogsService.queryByAiAnalysisRequestId(aiAnalysisRequestId);
|
||||
|
||||
if (null == oldAiAnalysisRequestLogs) {
|
||||
log.info("根据aiAnalysisRequestId查询的log为空");
|
||||
return false;
|
||||
}
|
||||
Map<String, String> ltoMap = null;
|
||||
// 特殊处理
|
||||
List<String> analysisRequestTypeList = Arrays.asList(BusinessTypeEnum.SMART_ASSISTANT.getCode(), BusinessTypeEnum.SMART_ASSISTANT_QIWEI.getCode());
|
||||
if(analysisRequestTypeList.contains(oldAiAnalysisRequestLogs.getAiAnalysisRequestType())){
|
||||
// 结果特殊封装
|
||||
if(oldAiAnalysisRequestLogs.getAiAnalysisRequestType().equals(BusinessTypeEnum.SMART_ASSISTANT.getCode())){
|
||||
ltoMap = sendDccCorpus(oldAiAnalysisRequestLogs,difyResponse);
|
||||
}
|
||||
|
||||
if(oldAiAnalysisRequestLogs.getAiAnalysisRequestType().equals(BusinessTypeEnum.SMART_ASSISTANT_QIWEI.getCode())){
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
AiAnalysisRequestLogs aiAnalysisRequestLogs = new AiAnalysisRequestLogs();
|
||||
aiAnalysisRequestLogs.setAiAnalysisRequestId(messageJson.getString("aiAnalysisRequestId"));
|
||||
aiAnalysisRequestLogs.setDifyResponse(messageJson.getString("difyResponse"));
|
||||
aiAnalysisRequestLogs.setAiAnalysisRequestId(aiAnalysisRequestId);
|
||||
aiAnalysisRequestLogs.setDifyResponse(difyResponse);
|
||||
aiAnalysisRequestLogs.setBusinessResponse(JSONObject.toJSONString(ltoMap));
|
||||
aiAnalysisRequestLogsService.saveAiAnalysisRequestLogs(aiAnalysisRequestLogs);
|
||||
|
||||
// aiAnalysisRequestLogsService.saveAiAnalysisRequestLogs(AiAnalysisRequestLogs.builder().aiAnalysisRequestId(aiAnalysisRequestId).businessResponse(JSONObject.toJSONString(ltoMap)).build());
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
Map<String, String> sendDccCorpus(AiAnalysisRequestLogs oldAiAnalysisRequestLogs,String difyResponse ){
|
||||
CorpusReportDTO corpusReportDTO = JSONObject.parseObject(oldAiAnalysisRequestLogs.getBusinessRequest(), CorpusReportDTO.class);
|
||||
String text = JSONObject.parseObject(difyResponse).getJSONObject("outputs").getString("text");
|
||||
String resultStrOne = FlowResultSplitUtil.flowOutputTextSplit(text, "任务1", "任务2");
|
||||
String resultStrTwo =FlowResultSplitUtil.flowOutputTextSplit(text, "任务2", null);
|
||||
if (StringUtils.isBlank(resultStrOne) || StringUtils.isBlank(resultStrTwo)){
|
||||
log.info("电话语料解析为空,text:{}", text);
|
||||
return null;
|
||||
}
|
||||
List<AicorpusTelephoneDTO> dccDtoList = tmTelephoneCorpusMapper.queryTelephoneCorpusBySourceIds( Arrays.asList(corpusReportDTO.getRecordId()));
|
||||
if(CollectionUtils.isNotEmpty(dccDtoList)){
|
||||
AicorpusTelephoneDTO dccDto = dccDtoList.get(0);
|
||||
JSONObject jsonObject = JSONObject.parseObject( dccDto.getDisplay());
|
||||
ZonedDateTime zonedDateTime = ZonedDateTime.parse(jsonObject.getString("start_time"));
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||
String formattedDateStartTime = zonedDateTime.format(formatter);
|
||||
Map<String, String> ltoMap = new HashMap();
|
||||
ltoMap.put("analysisRecordId", oldAiAnalysisRequestLogs.getAiAnalysisRequestId());
|
||||
ltoMap.put("analysisScene", "2");
|
||||
ltoMap.put("recordId", corpusReportDTO.getRecordId());
|
||||
ltoMap.put("communicateDate", formattedDateStartTime);
|
||||
ltoMap.put("analysisResult", resultStrOne);
|
||||
ltoMap.put("analysisDetail", resultStrTwo);
|
||||
// 发送MQ
|
||||
|
||||
log.info("send mq {}",ltoMap);
|
||||
return ltoMap;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user