@@ -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 ( " p rocessMessageByMQ message: {}" , message ) ;
LocalDateTime currTime = LocalDateTime . now ( ) ;
MqFormData oldItem = JSONObject . parseObject ( message , MqFormData . class ) ;
log . info ( " p rocessMessageByMQ 真假战败数据已获取 {} " , 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 ( " communityP rocessMessageByMQ message: {}" , message ) ;
CommunityTargetDTO communityTargetDTO = JSON . parseObject ( message , CommunityTargetDTO . class ) ;
if ( communityTargetDTO = = null ) {
log . error ( " communityP rocessMessageByMQ 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 ( ) ) ;