舆情自动化

This commit is contained in:
lxu75
2025-03-05 14:52:36 +08:00
parent af6b222f23
commit 33368a39dc
5 changed files with 137 additions and 84 deletions

View File

@@ -0,0 +1,32 @@
package com.volvo.ai.analytic.center.dto.req;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class CommunityTargetDTO {
/**
* 社区目标id
*/
@NotBlank(message = "社区目标id不能为空")
private String targetId;
/**
* 社区目标内容
*/
@NotBlank(message = "社区目标内容不能为空")
private String targetContent;
/**
* 社区目标类型
*/
@NotBlank(message = "社区目标类型不能为空")
private String targetType;
/**
* 社区请求id
*/
private String communityRequestId;
}

View File

@@ -2,11 +2,13 @@ package com.volvo.ai.analytic.center.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.volvo.common.core.base.BaseEntity;
import lombok.Builder;
import lombok.Data;
import java.time.LocalDateTime;
@Data
@Builder
@TableName("tt_ai_analysis_errors")
public class AiAnalysisErrors extends BaseEntity {

View File

@@ -2,11 +2,13 @@ package com.volvo.ai.analytic.center.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.volvo.common.core.base.BaseEntity;
import lombok.Builder;
import lombok.Data;
@Data
@TableName("tt_ai_analysis_request_logs")
@Builder
public class AiAnalysisRequestLogs extends BaseEntity {
@TableId(value = "id", type = IdType.AUTO)

View File

@@ -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());

View File

@@ -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 {
/**