舆情自动化
This commit is contained in:
@@ -8,15 +8,16 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.volvo.ai.analytic.center.constant.Constant;
|
||||
import com.volvo.ai.analytic.center.dto.req.*;
|
||||
import com.volvo.ai.analytic.center.dto.resp.*;
|
||||
import com.volvo.ai.analytic.center.entity.DataMaskingRule;
|
||||
import com.volvo.ai.analytic.center.entity.DiffdefeatApprove;
|
||||
import com.volvo.ai.analytic.center.entity.MqMessageRecord;
|
||||
import com.volvo.ai.analytic.center.entity.*;
|
||||
import com.volvo.ai.analytic.center.enums.*;
|
||||
import com.volvo.ai.analytic.center.mapper.AiAnalysisErrorsMapper;
|
||||
import com.volvo.ai.analytic.center.mapper.AiAnalysisRequestLogsMapper;
|
||||
import com.volvo.ai.analytic.center.mapper.MqMessageRecordMapper;
|
||||
import com.volvo.ai.analytic.center.service.DataMaskingRuleService;
|
||||
import com.volvo.ai.analytic.center.service.DiFyService;
|
||||
import com.volvo.ai.analytic.center.service.DiffdefeatApproveService;
|
||||
import com.volvo.ai.analytic.center.service.MqMessageRecordService;
|
||||
import com.volvo.ai.analytic.center.utils.AiAnalysisUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
//import org.springframework.amqp.core.AmqpTemplate;
|
||||
import org.apache.rocketmq.spring.core.RocketMQTemplate;
|
||||
@@ -37,9 +38,6 @@ import java.util.stream.Collectors;
|
||||
@Service
|
||||
public class MqMessageRecordServiceImpl extends ServiceImpl<MqMessageRecordMapper, MqMessageRecord> implements MqMessageRecordService {
|
||||
|
||||
// @Autowired
|
||||
// private AmqpTemplate rabbitTemplate;
|
||||
|
||||
@Autowired
|
||||
private DataMaskingRuleService dataMaskingRuleService;
|
||||
|
||||
@@ -55,6 +53,12 @@ public class MqMessageRecordServiceImpl extends ServiceImpl<MqMessageRecordMappe
|
||||
@Autowired
|
||||
private RocketMQTemplate rocketMQTemplate;
|
||||
|
||||
@Autowired
|
||||
private AiAnalysisRequestLogsMapper aiAnalysisRequestLogsMapper;
|
||||
|
||||
@Autowired
|
||||
private AiAnalysisErrorsMapper aiAnalysisErrorsMapper;
|
||||
|
||||
@Value("${service.dify.user}")
|
||||
private String user;
|
||||
|
||||
@@ -66,53 +70,63 @@ public class MqMessageRecordServiceImpl extends ServiceImpl<MqMessageRecordMappe
|
||||
|
||||
/**
|
||||
* 处理Mq消息
|
||||
*
|
||||
* @param message 消息具体内容
|
||||
* @return 返回处理情况
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public boolean processMessageByMQ(String message) {
|
||||
log.info("processMessageByMQ message: {}", message);
|
||||
LocalDateTime currTime = LocalDateTime.now();
|
||||
MqFormData oldItem = JSONObject.parseObject(message, MqFormData.class);
|
||||
log.info("processMessageByMQ 真假战败数据已获取 {}",oldItem.getFormId());
|
||||
MqMessageRecord curMQMessageRecord = new MqMessageRecord();
|
||||
try {
|
||||
curMQMessageRecord.setSinceType(oldItem.getSinceType());
|
||||
curMQMessageRecord.setSubSinceType(oldItem.getSubSinceType());
|
||||
curMQMessageRecord.setBizNo(oldItem.getFormId());
|
||||
curMQMessageRecord.setSubBizNo(oldItem.getFormId());
|
||||
curMQMessageRecord.setMessageContent(message);
|
||||
curMQMessageRecord.setRetryCount(0);
|
||||
curMQMessageRecord.setLastRetryTime(currTime);
|
||||
curMQMessageRecord.setTaskStatus(0);
|
||||
this.save(curMQMessageRecord);
|
||||
log.info("processMessageByMQ 数据入库成功");
|
||||
} catch (Exception ex) {
|
||||
log.error("processMessageByMQ 数据入库失败", ex);
|
||||
log.info("communityProcessMessageByMQ message: {}", message);
|
||||
CommunityTargetDTO communityTargetDTO = JSON.parseObject(message, CommunityTargetDTO.class);
|
||||
if (communityTargetDTO == null) {
|
||||
log.error("communityProcessMessageByMQ message is null");
|
||||
return false;
|
||||
}
|
||||
if (Objects.equals(SinceTypeEnum.SINCETYPE2.getCode(),oldItem.getSinceType()) && Objects.equals(SubSinceTypeEnum.SINCETYPE51.getCode(),oldItem.getSubSinceType())) {
|
||||
this.processMqSinceType51(oldItem, curMQMessageRecord);
|
||||
} else if (Objects.equals(SinceTypeEnum.SINCETYPE2.getCode(),oldItem.getSinceType()) && Objects.equals(SubSinceTypeEnum.SINCETYPE52.getCode(),oldItem.getSubSinceType())) {
|
||||
this.processMqSinceType52(oldItem, curMQMessageRecord);
|
||||
} else {
|
||||
log.info("processMessageByMQ 辨别数据为未知类型sinceType {},subSinceType {}", oldItem.getSinceType(), oldItem.getSubSinceType());
|
||||
// 生成ai分析请求id
|
||||
String aiAnalysisRequestId = AiAnalysisUtils.getAiAnalysisRequestId(BusinessTypeEnum.COMMUNITYTARGET.getCode());
|
||||
|
||||
// 保存请求日志
|
||||
aiAnalysisRequestLogsMapper.insert(AiAnalysisRequestLogs.builder()
|
||||
.aiAnalysisRequestId(aiAnalysisRequestId)
|
||||
.businessRequest(message)
|
||||
.difyAgentKey(flowId)
|
||||
.difyRequest(JSON.toJSONString(communityTargetDTO))
|
||||
.aiAnalysisRequestType(BusinessTypeEnum.COMMUNITYTARGET.getCode())
|
||||
.build());
|
||||
|
||||
//构建请求dify对象
|
||||
DiFyReq diFyReq = new DiFyReq();
|
||||
diFyReq.setUser(user);
|
||||
diFyReq.setFlowId(flowId);
|
||||
diFyReq.setInputs(communityTargetDTO);
|
||||
JSONObject difResult = new JSONObject();
|
||||
try {
|
||||
//调用dify服务
|
||||
difResult = (JSONObject) diFyService.getDiFyObject(diFyReq);
|
||||
} catch (Exception e) {
|
||||
log.error("请求DiFy异常:{}", e);
|
||||
//保存错误日志
|
||||
aiAnalysisErrorsMapper.insert(AiAnalysisErrors.builder()
|
||||
.aiAnalysisRequestId(aiAnalysisRequestId)
|
||||
.difyResponse(difResult.toJSONString())
|
||||
.aiAnalysisErrorMessage(e.getMessage())
|
||||
.build());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private void processMqSinceType51(MqFormData oldItem, MqMessageRecord curMQMessageRecord){
|
||||
log.info("processMqSinceType51 辨别数据为分析请求 {}" ,SubSinceTypeEnum.SINCETYPE51.getCode());
|
||||
private void processMqSinceType51(MqFormData oldItem, MqMessageRecord curMQMessageRecord) {
|
||||
log.info("processMqSinceType51 辨别数据为分析请求 {}", SubSinceTypeEnum.SINCETYPE51.getCode());
|
||||
DiffDefeatanAlysis diffDefeatanAlysis = JSON.parseObject(JSON.toJSONString(oldItem.getData()), DiffDefeatanAlysis.class);
|
||||
DiffDefeatAnalyseOutputResult response = this.processChatRecord(diffDefeatanAlysis);
|
||||
DiffDefeatAnalyseOutput output = response.getDiffDefeatAnalyseOutput();
|
||||
log.info("processMqSinceType51 数据分析完成,分析返回对象output数据为 {}", output);
|
||||
DiffDefeatResult diffDefeatResult;
|
||||
if(Objects.equals(HandleStatusEnum.ANALYSIS_NORMAL.getCode(),output.getHandleStatus())){
|
||||
if (Objects.equals(HandleStatusEnum.ANALYSIS_NORMAL.getCode(), output.getHandleStatus())) {
|
||||
diffDefeatResult = JSONObject.parseObject(output.getResultStr(), DiffDefeatResult.class);
|
||||
curMQMessageRecord.setTaskStatus(MqTaskStatusEnum.ANALYSIS_COMPLETION.getCode());
|
||||
} else if (Objects.equals(HandleStatusEnum.ANALYSIS_CONTENT_EMPTY.getCode(),output.getHandleStatus())) {
|
||||
} else if (Objects.equals(HandleStatusEnum.ANALYSIS_CONTENT_EMPTY.getCode(), output.getHandleStatus())) {
|
||||
diffDefeatResult = new DiffDefeatResult();
|
||||
diffDefeatResult.setUserStatus("无效通话");
|
||||
diffDefeatResult.setAppointmentResult("因为通话时间太短没有ASR转义文本,因此判断为无效通话");
|
||||
@@ -126,7 +140,7 @@ public class MqMessageRecordServiceImpl extends ServiceImpl<MqMessageRecordMappe
|
||||
this.updateById(curMQMessageRecord);
|
||||
log.info("processMqSinceType51 数据更改分析状态完成");
|
||||
|
||||
if (Objects.equals(MqTaskStatusEnum.ANALYSIS_COMPLETION.getCode(),curMQMessageRecord.getTaskStatus())){
|
||||
if (Objects.equals(MqTaskStatusEnum.ANALYSIS_COMPLETION.getCode(), curMQMessageRecord.getTaskStatus())) {
|
||||
log.info("processMqSinceType51 数据分析结果正常");
|
||||
DiffdefeatApprove diffdefeatApprove = new DiffdefeatApprove();
|
||||
String userStatus = getUserStatus(diffDefeatResult.getUserStatus());
|
||||
@@ -138,15 +152,15 @@ public class MqMessageRecordServiceImpl extends ServiceImpl<MqMessageRecordMappe
|
||||
diffdefeatApprove.setDefeatTime(diffDefeatanAlysis.getDefeatTime());
|
||||
diffdefeatApproveService.save(diffdefeatApprove);
|
||||
log.info("processMqSinceType51 插入数据记录完成,开始发送Mq消息");
|
||||
this.toMqSinceType53(diffDefeatanAlysis,diffDefeatResult,oldItem);
|
||||
this.toMqSinceType53(diffDefeatanAlysis, diffDefeatResult, oldItem);
|
||||
} else {
|
||||
log.info("processMqSinceType51 数据分析结果不正常,等待重试");
|
||||
}
|
||||
}
|
||||
|
||||
private void processMqSinceType52(MqFormData oldItem, MqMessageRecord curMQMessageRecord){
|
||||
log.info("processMqSinceType52 辨别数据为分析请求 {}" ,SubSinceTypeEnum.SINCETYPE52.getCode());
|
||||
com.volvo.ai.analytic.center.dto.req.DiffDefeatanApprove curDiffDefeatApprove = JSON.parseObject(JSON.toJSONString(oldItem.getData()), com.volvo.ai.analytic.center.dto.req.DiffDefeatanApprove.class);
|
||||
private void processMqSinceType52(MqFormData oldItem, MqMessageRecord curMQMessageRecord) {
|
||||
log.info("processMqSinceType52 辨别数据为分析请求 {}", SubSinceTypeEnum.SINCETYPE52.getCode());
|
||||
DiffDefeatanApprove curDiffDefeatApprove = JSON.parseObject(JSON.toJSONString(oldItem.getData()), DiffDefeatanApprove.class);
|
||||
DiffdefeatApprove approveEntity = diffdefeatApproveService.lambdaQuery().eq(DiffdefeatApprove::getFormId, oldItem.getFormId()).last("limit 1").one();
|
||||
if (approveEntity != null) {
|
||||
try {
|
||||
@@ -160,7 +174,7 @@ public class MqMessageRecordServiceImpl extends ServiceImpl<MqMessageRecordMappe
|
||||
this.updateById(curMQMessageRecord);
|
||||
log.info("processMqSinceType52 审批结果更新完成");
|
||||
} catch (Exception e) {
|
||||
log.error("processMqSinceType52 审批结果更新失败",e);
|
||||
log.error("processMqSinceType52 审批结果更新失败", e);
|
||||
curMQMessageRecord.setTaskStatus(MqTaskStatusEnum.ANALYSIS_FAILURE.getCode());
|
||||
curMQMessageRecord.setRespContent(e.getMessage());
|
||||
curMQMessageRecord.setRespCode(HandleStatusEnum.ANALYSIS_CALLING.getCode().toString());
|
||||
@@ -181,7 +195,7 @@ public class MqMessageRecordServiceImpl extends ServiceImpl<MqMessageRecordMappe
|
||||
List<String> sourceIds = Optional.ofNullable(input.getCallList()).map(list -> list.stream().map(CallItem::getSourceId).collect(Collectors.toList())).orElse(Collections.emptyList());
|
||||
if (!CollectionUtils.isEmpty(sourceIds)) {
|
||||
//查询未完成解析的通话信息
|
||||
String sourceId = sourceIds.stream().map(code -> "'"+code+"'").collect(Collectors.joining(","));
|
||||
String sourceId = sourceIds.stream().map(code -> "'" + code + "'").collect(Collectors.joining(","));
|
||||
// int asrCount = clickhouseJdbcTemplate.queryForObject("select count(1) from asr_speechdetail where source_id in ("+ sourceId+") and file_status='InProgress'",Integer.class);
|
||||
// if (asrCount > 0) {
|
||||
// log.info("存在未完成解析的通话信息");
|
||||
@@ -190,11 +204,11 @@ public class MqMessageRecordServiceImpl extends ServiceImpl<MqMessageRecordMappe
|
||||
// return new DiffDefeatAnalyseOutputResult(output, contentStr.toString());
|
||||
// }
|
||||
//查询到的通话数据
|
||||
String sql = "select display,sourceId from ods_asrdetail_d where sourceId in ("+ sourceId+") order by transcribeTime";
|
||||
log.info("processChatRecord 查询通话数据sql {}",sql);
|
||||
String sql = "select display,sourceId from ods_asrdetail_d where sourceId in (" + sourceId + ") order by transcribeTime";
|
||||
log.info("processChatRecord 查询通话数据sql {}", sql);
|
||||
List<Map<String, Object>> historyList = clickhouseJdbcTemplate.queryForList(sql);
|
||||
for (CallItem item : input.getCallList()) {
|
||||
Optional<String> result = CollectionUtils.isEmpty(historyList) ? Optional.empty():
|
||||
Optional<String> result = CollectionUtils.isEmpty(historyList) ? Optional.empty() :
|
||||
historyList.stream().filter(entity -> entity.get("sourceId").equals(item.getSourceId()))
|
||||
.findFirst().map(entity -> entity.get("display") == null ? "" : entity.get("display").toString());
|
||||
DiffDefeatCorpuItem curDiffDefeatCorpItem = new DiffDefeatCorpuItem();
|
||||
@@ -209,11 +223,11 @@ public class MqMessageRecordServiceImpl extends ServiceImpl<MqMessageRecordMappe
|
||||
// 查询企微的数据
|
||||
if (StringUtils.isBlank(input.getVdqwUserId()) || StringUtils.isBlank(input.getVdqwCustomerId())) {
|
||||
log.info("processChatRecord 企微用户信息为空,不附加企微数据");
|
||||
}else {
|
||||
} else {
|
||||
try {
|
||||
String userIdSql = "select distinct userid as userid from ods_workuserinfo_d where middleuserid =" + input.getVdqwUserId()
|
||||
+ " union ALL select externaluserid as userid from ods_externalcontact_d where unionid ='" + input.getVdqwCustomerId() + "'";
|
||||
log.info("processChatRecord 查询企微用户数据sql {}",userIdSql);
|
||||
log.info("processChatRecord 查询企微用户数据sql {}", userIdSql);
|
||||
List<Map<String, Object>> userList = clickhouseJdbcTemplate.queryForList(userIdSql);
|
||||
if (!CollectionUtils.isEmpty(userList) && userList.size() == 2) {
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
@@ -235,41 +249,41 @@ public class MqMessageRecordServiceImpl extends ServiceImpl<MqMessageRecordMappe
|
||||
"fromuserid ='" + user1 + "' and acceptuserid ='" + user2 + "') or (" +
|
||||
"fromuserid ='" + user2 + "' and acceptuserid ='" + user1 + "'))" +
|
||||
"order by seq;";
|
||||
log.info("processChatRecord 企微数据查询sql {}",sql);
|
||||
List<SessionItem> userInfoList = clickhouseJdbcTemplate.query(sql,new BeanPropertyRowMapper<>(SessionItem.class));
|
||||
log.info("processChatRecord 企微数据查询sql {}", sql);
|
||||
List<SessionItem> userInfoList = clickhouseJdbcTemplate.query(sql, new BeanPropertyRowMapper<>(SessionItem.class));
|
||||
|
||||
|
||||
for (int i=0;i<offsetDay;i++){
|
||||
for (int i = 0; i < offsetDay; i++) {
|
||||
Date sliceStartTime = sdf.parse(startTime);
|
||||
sliceStartTime = DateUtil.offsetDay(sliceStartTime,i);
|
||||
Date sliceStopTime = DateUtil.offsetDay(sliceStartTime,i+1);
|
||||
sliceStartTime = DateUtil.offsetDay(sliceStartTime, i);
|
||||
Date sliceStopTime = DateUtil.offsetDay(sliceStartTime, i + 1);
|
||||
this.addSliceData(curDiffDefeatCorpItems, sliceStartTime, sliceStopTime, userInfoList);
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("processChatRecord 企微数据处理异常",e);
|
||||
log.error("processChatRecord 企微数据处理异常", e);
|
||||
}
|
||||
}
|
||||
// 对集合进行排序
|
||||
curDiffDefeatCorpItems.sort(Comparator.comparing(DiffDefeatCorpuItem::getHappenTime));
|
||||
if (!CollectionUtils.isEmpty(curDiffDefeatCorpItems)){
|
||||
if (!CollectionUtils.isEmpty(curDiffDefeatCorpItems)) {
|
||||
for (DiffDefeatCorpuItem item : curDiffDefeatCorpItems) {
|
||||
if (Objects.equals(CategoryEnum.ENTERPRISE_WECHAT.getCode(),item.getCategory())) {
|
||||
if (Objects.equals(CategoryEnum.ENTERPRISE_WECHAT.getCode(), item.getCategory())) {
|
||||
contentStr.append(CategoryEnum.ENTERPRISE_WECHAT.getMessage()).append("\n");
|
||||
contentStr.append(item.getCorpuText());
|
||||
} else if (Objects.equals(CategoryEnum.PHONE_VOICE.getCode(),item.getCategory()) && StringUtils.isNotEmpty(item.getCorpuText())) {
|
||||
} else if (Objects.equals(CategoryEnum.PHONE_VOICE.getCode(), item.getCategory()) && StringUtils.isNotEmpty(item.getCorpuText())) {
|
||||
// 反序列化CorpuText为KafkaJson对象
|
||||
// KafkaJson oldItem = JSON.parseObject(item.getCorpuText(), KafkaJson.class);
|
||||
// 反序列化display为CollectTranscriberJobResponse对象
|
||||
CollectTranscriberJobResponse resp = JSON.parseObject(item.getCorpuText(), CollectTranscriberJobResponse.class);
|
||||
// CollectTranscriberJobResponse resp = JSON.parseObject(oldItem.getDisplay(), CollectTranscriberJobResponse.class);
|
||||
// 检查状态并处理Segments
|
||||
if (Objects.equals(Constant.DISPLAY_STATUS,resp.getStatus()) && !CollectionUtils.isEmpty(resp.getSegments())) {
|
||||
if (Objects.equals(Constant.DISPLAY_STATUS, resp.getStatus()) && !CollectionUtils.isEmpty(resp.getSegments())) {
|
||||
StringBuilder vocStr = new StringBuilder();
|
||||
for (Segment segment : resp.getSegments()) {
|
||||
if (Objects.equals(RoleEnum.AGENT.getCode(),segment.getResult().getAnalysisInfo().getRole())) {
|
||||
if (Objects.equals(RoleEnum.AGENT.getCode(), segment.getResult().getAnalysisInfo().getRole())) {
|
||||
vocStr.append(RoleEnum.AGENT.getMessage()).append(":").append(segment.getResult().getText()).append("\n");
|
||||
} else if (Objects.equals(RoleEnum.USER.getCode(),segment.getResult().getAnalysisInfo().getRole())) {
|
||||
} else if (Objects.equals(RoleEnum.USER.getCode(), segment.getResult().getAnalysisInfo().getRole())) {
|
||||
vocStr.append(RoleEnum.USER.getMessage()).append(":").append(segment.getResult().getText()).append("\n");
|
||||
} else {
|
||||
vocStr.append(RoleEnum.OTHER.getMessage()).append(":").append(segment.getResult().getText()).append("\n");
|
||||
@@ -299,7 +313,7 @@ public class MqMessageRecordServiceImpl extends ServiceImpl<MqMessageRecordMappe
|
||||
log.info("processChatRecord 结束脱敏结果为 {}", summaryText);
|
||||
|
||||
Map<String, Object> record = new HashMap<>();
|
||||
record.put("record",summaryText);
|
||||
record.put("record", summaryText);
|
||||
|
||||
DiFyReq diFyReq = new DiFyReq();
|
||||
diFyReq.setUser(user);
|
||||
@@ -310,7 +324,7 @@ public class MqMessageRecordServiceImpl extends ServiceImpl<MqMessageRecordMappe
|
||||
output.setResultStr(difResult.getString("result"));
|
||||
log.info("processChatRecord DiFy平台处理结果:{}", output.getResultStr());
|
||||
}
|
||||
return new DiffDefeatAnalyseOutputResult(output, JSON.parse("{\"Content\": \""+contentStr+"\"}").toString());
|
||||
return new DiffDefeatAnalyseOutputResult(output, JSON.parse("{\"Content\": \"" + contentStr + "\"}").toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -326,23 +340,23 @@ public class MqMessageRecordServiceImpl extends ServiceImpl<MqMessageRecordMappe
|
||||
.ge(MqMessageRecord::getCreateTime, startTime)
|
||||
.lt(MqMessageRecord::getLastRetryTime, stopTime)
|
||||
.list();
|
||||
if (CollectionUtils.isEmpty(mqMessageRecords)){
|
||||
return ;
|
||||
if (CollectionUtils.isEmpty(mqMessageRecords)) {
|
||||
return;
|
||||
}
|
||||
for (MqMessageRecord curMQMessageRecord : mqMessageRecords){
|
||||
for (MqMessageRecord curMQMessageRecord : mqMessageRecords) {
|
||||
log.info("processMessageByTask 辨别数据为分析请求");
|
||||
MqFormData oldItem = JSONObject.parseObject(curMQMessageRecord.getMessageContent(), MqFormData.class);
|
||||
try {
|
||||
if (Objects.equals(SinceTypeEnum.SINCETYPE2.getCode(),curMQMessageRecord.getSinceType()) && Objects.equals(SubSinceTypeEnum.SINCETYPE51.getCode(),curMQMessageRecord.getSubSinceType())) {
|
||||
if (Objects.equals(SinceTypeEnum.SINCETYPE2.getCode(), curMQMessageRecord.getSinceType()) && Objects.equals(SubSinceTypeEnum.SINCETYPE51.getCode(), curMQMessageRecord.getSubSinceType())) {
|
||||
DiffDefeatResult diffDefeatResult;
|
||||
DiffDefeatanAlysis diffDefeatanAlysis = JSON.parseObject(JSON.toJSONString(oldItem.getData()), DiffDefeatanAlysis.class);
|
||||
DiffDefeatAnalyseOutputResult response = this.processChatRecord(diffDefeatanAlysis);
|
||||
DiffDefeatAnalyseOutput output = response.getDiffDefeatAnalyseOutput();
|
||||
log.info("processMessageByTask 数据分析完成");
|
||||
if(Objects.equals(HandleStatusEnum.ANALYSIS_NORMAL.getCode(),output.getHandleStatus())){
|
||||
if (Objects.equals(HandleStatusEnum.ANALYSIS_NORMAL.getCode(), output.getHandleStatus())) {
|
||||
curMQMessageRecord.setTaskStatus(MqTaskStatusEnum.ANALYSIS_COMPLETION.getCode());
|
||||
diffDefeatResult = JSONObject.parseObject(output.getResultStr(), DiffDefeatResult.class);
|
||||
} else if (Objects.equals(HandleStatusEnum.ANALYSIS_CONTENT_EMPTY.getCode(),output.getHandleStatus())) {
|
||||
} else if (Objects.equals(HandleStatusEnum.ANALYSIS_CONTENT_EMPTY.getCode(), output.getHandleStatus())) {
|
||||
curMQMessageRecord.setTaskStatus(MqTaskStatusEnum.ANALYSIS_COMPLETION.getCode());
|
||||
diffDefeatResult = new DiffDefeatResult();
|
||||
diffDefeatResult.setUserStatus("无效通话");
|
||||
@@ -351,13 +365,13 @@ public class MqMessageRecordServiceImpl extends ServiceImpl<MqMessageRecordMappe
|
||||
diffDefeatResult = new DiffDefeatResult();
|
||||
curMQMessageRecord.setTaskStatus(MqTaskStatusEnum.ANALYSIS_FAILURE.getCode());
|
||||
}
|
||||
if (Objects.equals(MqTaskStatusEnum.ANALYSIS_COMPLETION.getCode(),curMQMessageRecord.getTaskStatus())){
|
||||
if (Objects.equals(MqTaskStatusEnum.ANALYSIS_COMPLETION.getCode(), curMQMessageRecord.getTaskStatus())) {
|
||||
DiffdefeatApprove approve = diffdefeatApproveService.lambdaQuery()
|
||||
.eq(DiffdefeatApprove::getFormId, oldItem.getFormId())
|
||||
.eq(DiffdefeatApprove::getBusinessId, curMQMessageRecord.getSubBizNo())
|
||||
.orderByDesc(DiffdefeatApprove::getId)
|
||||
.last("limit 1").one();
|
||||
if(approve!=null){
|
||||
if (approve != null) {
|
||||
approve.setAppointmentResult(diffDefeatResult.getAppointmentResult());
|
||||
approve.setUserStatus(getUserStatus(diffDefeatResult.getUserStatus()));
|
||||
approve.setInputStr(response.getContentStr());
|
||||
@@ -374,22 +388,22 @@ public class MqMessageRecordServiceImpl extends ServiceImpl<MqMessageRecordMappe
|
||||
diffdefeatApproveService.save(approve);
|
||||
log.info("processMessageByTask 插入数据记录完成");
|
||||
}
|
||||
this.toMqSinceType53(diffDefeatanAlysis,diffDefeatResult,oldItem);
|
||||
this.toMqSinceType53(diffDefeatanAlysis, diffDefeatResult, oldItem);
|
||||
}
|
||||
curMQMessageRecord.setRespCode(output.getHandleStatus()+"");
|
||||
curMQMessageRecord.setRespCode(output.getHandleStatus() + "");
|
||||
curMQMessageRecord.setRespContent(output.getResultStr());
|
||||
curMQMessageRecord.setLastRetryTime(currTime);
|
||||
curMQMessageRecord.setRetryCount(curMQMessageRecord.getRetryCount()+1);
|
||||
curMQMessageRecord.setRetryCount(curMQMessageRecord.getRetryCount() + 1);
|
||||
this.updateById(curMQMessageRecord);
|
||||
log.info("processMessageByTask 数据更改分析状态完成");
|
||||
} else if (Objects.equals(curMQMessageRecord.getSinceType(),SinceTypeEnum.SINCETYPE2.getCode()) && Objects.equals(curMQMessageRecord.getSubSinceType(), SubSinceTypeEnum.SINCETYPE52.getCode())) {
|
||||
} else if (Objects.equals(curMQMessageRecord.getSinceType(), SinceTypeEnum.SINCETYPE2.getCode()) && Objects.equals(curMQMessageRecord.getSubSinceType(), SubSinceTypeEnum.SINCETYPE52.getCode())) {
|
||||
DiffdefeatApprove approveEntity = diffdefeatApproveService.lambdaQuery()
|
||||
.eq(DiffdefeatApprove::getFormId, oldItem.getFormId())
|
||||
.eq(DiffdefeatApprove::getBusinessId, curMQMessageRecord.getSubBizNo())
|
||||
.orderByDesc(DiffdefeatApprove::getId)
|
||||
.last("limit 1").one();
|
||||
DiffDefeatanApprove curDiffDefeatanApprove = JSON.parseObject(JSON.toJSONString(oldItem.getData()), DiffDefeatanApprove.class);
|
||||
if (approveEntity != null){
|
||||
if (approveEntity != null) {
|
||||
approveEntity.setApproveCode(curDiffDefeatanApprove.getApproveCode());
|
||||
approveEntity.setApproveResult(curDiffDefeatanApprove.getApproveResult());
|
||||
approveEntity.setApproveOpinion(curDiffDefeatanApprove.getApproveOpinion());
|
||||
@@ -399,7 +413,7 @@ public class MqMessageRecordServiceImpl extends ServiceImpl<MqMessageRecordMappe
|
||||
curMQMessageRecord.setRespCode(HandleStatusEnum.ANALYSIS_NORMAL.getCode().toString());
|
||||
curMQMessageRecord.setRespContent("");
|
||||
curMQMessageRecord.setLastRetryTime(currTime);
|
||||
curMQMessageRecord.setRetryCount(curMQMessageRecord.getRetryCount()+1);
|
||||
curMQMessageRecord.setRetryCount(curMQMessageRecord.getRetryCount() + 1);
|
||||
this.updateById(curMQMessageRecord);
|
||||
}
|
||||
} else {
|
||||
@@ -411,35 +425,36 @@ public class MqMessageRecordServiceImpl extends ServiceImpl<MqMessageRecordMappe
|
||||
curMQMessageRecord.setRespCode(HandleStatusEnum.ANALYSIS_CALLING.getCode().toString());
|
||||
curMQMessageRecord.setRespContent(e.getMessage());
|
||||
curMQMessageRecord.setLastRetryTime(currTime);
|
||||
curMQMessageRecord.setRetryCount(curMQMessageRecord.getRetryCount()+1);
|
||||
curMQMessageRecord.setRetryCount(curMQMessageRecord.getRetryCount() + 1);
|
||||
this.updateById(curMQMessageRecord);
|
||||
}
|
||||
}
|
||||
}
|
||||
private String getUserStatus(String oldStr){
|
||||
if (Objects.equals(MessageConvertEnum.CONFIRMED.getCode(),oldStr)){
|
||||
|
||||
private String getUserStatus(String oldStr) {
|
||||
if (Objects.equals(MessageConvertEnum.CONFIRMED.getCode(), oldStr)) {
|
||||
return MessageConvertEnum.CONFIRMED.getMessage();
|
||||
}else if (Objects.equals(MessageConvertEnum.LOOK_ON.getCode(),oldStr)){
|
||||
} else if (Objects.equals(MessageConvertEnum.LOOK_ON.getCode(), oldStr)) {
|
||||
return MessageConvertEnum.LOOK_ON.getMessage();
|
||||
}else if (Objects.equals(MessageConvertEnum.GIVE_UP.getCode(),oldStr)){
|
||||
} else if (Objects.equals(MessageConvertEnum.GIVE_UP.getCode(), oldStr)) {
|
||||
return MessageConvertEnum.GIVE_UP.getMessage();
|
||||
}else if (Objects.equals(MessageConvertEnum.INVALID.getCode(),oldStr)){
|
||||
} else if (Objects.equals(MessageConvertEnum.INVALID.getCode(), oldStr)) {
|
||||
return MessageConvertEnum.INVALID.getMessage();
|
||||
}else {
|
||||
} else {
|
||||
return oldStr;
|
||||
}
|
||||
}
|
||||
|
||||
public void addSliceData(List<DiffDefeatCorpuItem> curDiffDefeatCorpuItems, Date sliceStartTime, Date sliceStopTime, List<SessionItem> sessionItems) {
|
||||
List<SessionItem> slices = sessionItems.stream()
|
||||
.filter(a -> !a.getMsgtime().before(sliceStartTime) && a.getMsgtime().before(sliceStopTime))
|
||||
.filter(a -> !a.getMsgtime().before(sliceStartTime) && a.getMsgtime().before(sliceStopTime))
|
||||
.collect(Collectors.toList());
|
||||
// 检查是否有任何匹配的slices
|
||||
if (!slices.isEmpty()) {
|
||||
StringBuilder str = new StringBuilder();
|
||||
// 遍历sessionItems,构建字符串
|
||||
for (SessionItem sessionItem : sessionItems) {
|
||||
if (Objects.equals("text",sessionItem.getMsgtype()) && Objects.equals("send",sessionItem.getActiontype())) {
|
||||
if (Objects.equals("text", sessionItem.getMsgtype()) && Objects.equals("send", sessionItem.getActiontype())) {
|
||||
try {
|
||||
// 反序列化content为ContentText对象
|
||||
ContentText contentText = JSON.parseObject(sessionItem.getContent(), ContentText.class);
|
||||
@@ -467,7 +482,7 @@ public class MqMessageRecordServiceImpl extends ServiceImpl<MqMessageRecordMappe
|
||||
}
|
||||
}
|
||||
|
||||
public void toMqSinceType53(DiffDefeatanAlysis diffDefeatanAlysis, DiffDefeatResult diffDefeatResult, MqFormData oldItem){
|
||||
public void toMqSinceType53(DiffDefeatanAlysis diffDefeatanAlysis, DiffDefeatResult diffDefeatResult, MqFormData oldItem) {
|
||||
String userStatus = getUserStatus(diffDefeatResult.getUserStatus());
|
||||
DiffDefeatanCallbak curDiffDefeatCallback = new DiffDefeatanCallbak();
|
||||
curDiffDefeatCallback.setBusinessId(diffDefeatanAlysis.getBusinessId());
|
||||
|
||||
@@ -2,8 +2,10 @@ package com.volvo.ai.analytic.center.utils;
|
||||
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
public class AiAnalysisUtils {
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user