Bladeren bron

修改

1、将服务进行拆分。
undefined
10710 1 jaar geleden
bovenliggende
commit
bda6207e96
2 gewijzigde bestanden met toevoegingen van 121 en 43 verwijderingen
  1. +6
    -0
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/IDmIntentService.java
  2. +115
    -43
      xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/DmIntentServiceImpl.java

+ 6
- 0
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/IDmIntentService.java Bestand weergeven

@@ -7,5 +7,11 @@ import com.xueyi.nlt.nlt.domain.dto.DmIntentDto;
import com.xueyi.nlt.nlt.domain.query.DmIntentQuery;

public interface IDmIntentService extends IBaseService<DmIntentQuery, DmIntentDto> {
DmIntentResponse regularAnswer(DmIntentVo intent);

DmIntentResponse knowledgeAnswer(DmIntentVo intent);

DmIntentResponse conversation(DmIntentVo intent);

DmIntentResponse sessionHandle(DmIntentVo intent);
}

+ 115
- 43
xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/service/impl/DmIntentServiceImpl.java Bestand weergeven

@@ -7,8 +7,10 @@ import com.xueyi.common.core.constant.basic.SecurityConstants;
import com.xueyi.common.core.constant.digitalman.MessageConstants;
import com.xueyi.common.core.constant.digitalman.SkillConstants;
import com.xueyi.common.core.utils.core.IdUtil;
import com.xueyi.common.core.web.result.AjaxResult;
import com.xueyi.common.core.web.result.R;
import com.xueyi.common.web.entity.service.impl.BaseServiceImpl;
import com.xueyi.nlt.api.nlt.domain.vo.CoversationSessionVo;
import com.xueyi.nlt.api.nlt.domain.vo.DmIntentVo;
import com.xueyi.nlt.api.nlt.domain.vo.KnowledgeVo;
import com.xueyi.nlt.api.nlt.domain.vo.response.DmIntentResponse;
@@ -82,6 +84,30 @@ public class DmIntentServiceImpl extends BaseServiceImpl<DmIntentQuery, DmIntent

@Override
public DmIntentResponse conversation(DmIntentVo intent) {
DmIntentResponse response = sessionHandle(intent);
//已有session的处理
if(response != null && StringUtils.isNotEmpty(response.getSkillCode())){
return response;
}

response = regularAnswer(intent);
if (response != null && (StringUtils.isNotEmpty(response.getSkillCode()) || StringUtils.isNotEmpty(response.getMsg()))) {
return response;
}
else{
response = knowledgeAnswer(intent);
}

if(StringUtils.isEmpty(response.getSkillCode()) && intent.getMode().equals(MessageConstants.MODE_FREE_CHAT)) {
JSONObject joResult = freeChatTemplate.handle(intent.getDevId(),intent.getContent());
response.setH5(joResult);
}

return response;
}

@Override
public DmIntentResponse regularAnswer(DmIntentVo intent) {
MarkRecordVo recordVo = new MarkRecordVo();
recordVo.setDevId(intent.getDevId());
recordVo.setId(IdUtil.getSnowflakeNextId());
@@ -90,9 +116,9 @@ public class DmIntentServiceImpl extends BaseServiceImpl<DmIntentQuery, DmIntent
recordVo.setHit(1);

R<DmManDeviceDto> manDeviceDtoR = manDeviceService.manDeviceInfoInner(intent.getDevId());
String enterpriseId = manDeviceDtoR.getData().getTId().toString();
Long enterpriseId = manDeviceDtoR.getData().getTId();
String enterpriseName = "";
R<SysEnterpriseDto> enterpriseDtoR = remoteEnterpriseService.getInfo(Long.valueOf(enterpriseId));
R<SysEnterpriseDto> enterpriseDtoR = remoteEnterpriseService.getInfo(enterpriseId);
Source source = SourceUtil.getSourceCache(enterpriseDtoR.getData().getStrategyId());
if (enterpriseDtoR.isOk()) {
enterpriseName = enterpriseDtoR.getData().getName();
@@ -104,7 +130,7 @@ public class DmIntentServiceImpl extends BaseServiceImpl<DmIntentQuery, DmIntent
sendToDashboard(intent, enterpriseName);

// 判断是否有权限
R<List<DmSkillDto>> skilllistInner = remoteskillService.skilllistInner(intent.getDevId(),"1",Long.parseLong(enterpriseId), source.getMaster(), SecurityConstants.INNER);
R<List<DmSkillDto>> skilllistInner = remoteskillService.skilllistInner(intent.getDevId(),"1",enterpriseId, source.getMaster(), SecurityConstants.INNER);
if(skilllistInner.isOk()){
List<DmSkillDto> skilllist=skilllistInner.getData();
for (DmSkillDto dmSkillDto : skilllist) {
@@ -122,21 +148,20 @@ public class DmIntentServiceImpl extends BaseServiceImpl<DmIntentQuery, DmIntent
switch (response.getSkillCode()) {
case "1":
// 做会议室处理
response.setH5(meetingOrderTemplate.handle(intent.getDevId(), intent.getContent(), Long.valueOf(enterpriseId)));
response.setH5(meetingOrderTemplate.handle(intent.getDevId(), intent.getContent(), enterpriseId));
break;
case "33":
// 做快递预约处理
response.setH5(deliveryOrderTemplate.handle(intent.getDevId(), intent.getContent(), Long.valueOf(enterpriseId)));
response.setH5(deliveryOrderTemplate.handle(intent.getDevId(), intent.getContent(), enterpriseId));
break;
case "34":
// 做查询航班信息处理
response.setH5(flightMessageTemplate.handle(intent.getDevId(), intent.getContent(), Long.valueOf(enterpriseId)));
response.setH5(flightMessageTemplate.handle(intent.getDevId(), intent.getContent(), enterpriseId));
break;
default:
break;
}
}
else if(response != null && StringUtils.isNotEmpty(response.getMsg())){
}else if(response != null && StringUtils.isNotEmpty(response.getMsg())){
// 记录log
recordVo.setType(2);
List answers = new ArrayList();
@@ -144,46 +169,93 @@ public class DmIntentServiceImpl extends BaseServiceImpl<DmIntentQuery, DmIntent
recordVo.setAnswers(answers);
return response;
}
else{
// 调用知识库问答
response.setSkillCode("30");
DmKnowledgeResponse qaAjax = null;
KnowledgeVo knowledgeVo = new KnowledgeVo();
knowledgeVo.setManCode(manDeviceDtoR.getData().getManCode());
knowledgeVo.setTenantId(manDeviceDtoR.getData().getTId());
knowledgeVo.setQuestion(intent.getContent());
R<DmKnowledgeResponse> dmKnowledgeResponseR = remoteQAService.query(knowledgeVo);
if (dmKnowledgeResponseR!= null && dmKnowledgeResponseR.getData() != null) {
qaAjax = dmKnowledgeResponseR.getData();
}
return response;
}
@Override
public DmIntentResponse knowledgeAnswer(DmIntentVo intent){
MarkRecordVo recordVo = new MarkRecordVo();
recordVo.setDevId(intent.getDevId());
recordVo.setId(IdUtil.getSnowflakeNextId());
recordVo.setCreateTime(LocalDateTime.now());
recordVo.setQuestion(intent.getContent());
recordVo.setHit(1);

String content = "";
if (qaAjax != null) {
log.info("知识库问答返回结果:{}",qaAjax.toString());
if (qaAjax.getTarget() == 1) {
content = qaAjax.getResult().get(0).getKnowledgeLib();
pushIntoDashboardRedis(enterpriseName,content,"knowledge");
response.setH5(JSONObject.from(qaAjax));
// 记录log
recordVo.setType(2);
List answers = new ArrayList();
answers.add(response.getMsg());
recordVo.setAnswers(answers); // 航班查询
return response;
}
else {
// 知识库没有答案,返回空
response.clear();
response.setMsg("");
}
}
R<DmManDeviceDto> manDeviceDtoR = manDeviceService.manDeviceInfoInner(intent.getDevId());
Long enterpriseId = manDeviceDtoR.getData().getTId();
String enterpriseName = "";
R<SysEnterpriseDto> enterpriseDtoR = remoteEnterpriseService.getInfo(Long.valueOf(enterpriseId));
Source source = SourceUtil.getSourceCache(enterpriseDtoR.getData().getStrategyId());
if (enterpriseDtoR.isOk()) {
enterpriseName = enterpriseDtoR.getData().getName();
}

if(StringUtils.isEmpty(response.getSkillCode()) && intent.getMode().equals(MessageConstants.MODE_FREE_CHAT)) {
JSONObject joResult = freeChatTemplate.handle(intent.getDevId(),intent.getContent());
response.setH5(joResult);
// 调用知识库问答
DmIntentResponse response = new DmIntentResponse();
response.setSkillCode("30");
DmKnowledgeResponse qaAjax = null;
KnowledgeVo knowledgeVo = new KnowledgeVo();
knowledgeVo.setManCode(manDeviceDtoR.getData().getManCode());
knowledgeVo.setTenantId(manDeviceDtoR.getData().getTId());
knowledgeVo.setQuestion(intent.getContent());
R<DmKnowledgeResponse> dmKnowledgeResponseR = remoteQAService.query(knowledgeVo);
if (dmKnowledgeResponseR!= null && dmKnowledgeResponseR.getData() != null) {
qaAjax = dmKnowledgeResponseR.getData();
}

String content = "";
if (qaAjax != null) {
log.info("知识库问答返回结果:{}",qaAjax.toString());
if (qaAjax.getTarget() == 1) {
content = qaAjax.getResult().get(0).getKnowledgeLib();
pushIntoDashboardRedis(enterpriseName,content,"knowledge");
response.setH5(JSONObject.from(qaAjax));
// 记录log
recordVo.setType(2);
List answers = new ArrayList();
answers.add(response.getMsg());
recordVo.setAnswers(answers); // 航班查询
return response;
}
else {
// 知识库没有答案,返回空
response.clear();
response.setMsg("");
}
}
return response;
}

@Override
public DmIntentResponse sessionHandle(DmIntentVo intent) {
R<DmManDeviceDto> manDeviceDtoR = manDeviceService.manDeviceInfoInner(intent.getDevId());
Long enterpriseId = manDeviceDtoR.getData().getTId();

DmIntentResponse response = new DmIntentResponse();
// 判断会议室缓存
// 获取设备号对应缓存
//之前已有session信息
CoversationSessionVo sessionObject = (CoversationSessionVo) redisTemplate2.opsForValue().get("group:device" + ":" + intent.getDevId() + ":" +"session"); //category
if (sessionObject != null) {
switch (sessionObject.getCategory()) {
case "meeting":
response.setMsg("");
response.setSkillCode("1");
response.setH5(meetingOrderTemplate.handle(intent.getDevId(),intent.getContent(), enterpriseId));
response.setAction("Meeting");
break;
case "delivery":
response.setMsg("");
response.setSkillCode("33");
response.setH5(deliveryOrderTemplate.handle(intent.getDevId(),intent.getContent(), enterpriseId));
break;
case "flight":
response.setMsg("");
response.setSkillCode("34");
response.setH5(flightMessageTemplate.handle(intent.getDevId(),intent.getContent(), enterpriseId));
break;

}
}
return response;
}



Laden…
Annuleren
Opslaan