添加会话参数管理功能

main
xueqingkun 11 months ago
parent 393ba5a4d0
commit d4f88fad4f

@ -0,0 +1,34 @@
package com.supervision.controller;
import com.supervision.service.IrSessionParamService;
import com.supervision.vo.session.SessionParamReqVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
@Slf4j
@Api(tags = "会话参数管理")
@RestController
@RequestMapping("/sessionParam")
@RequiredArgsConstructor
public class SessionParamController {
private final IrSessionParamService sessionParamService;
@ApiOperation("保存会话参数")
@PostMapping("/save")
public boolean saveSessionParam(@RequestBody SessionParamReqVO sessionParamReqVO1) {
return sessionParamService.saveSessionParam(sessionParamReqVO1);
}
@ApiOperation("查询会话参数")
@GetMapping("/findSessionParam")
public SessionParamReqVO findSessionParam(@RequestParam("sessionId") String sessionId) {
return sessionParamService.findSessionParam(sessionId);
}
}

@ -1,5 +1,7 @@
package com.supervision.dto.robot;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import lombok.Data;
import java.util.List;
@ -24,6 +26,6 @@ public class SuspectInfo {
public boolean isEmpty() {
return name == null && cardNumber == null && idNumber == null;
return StrUtil.isAllEmpty(name, idNumber) && CollUtil.isEmpty(cardNumber);
}
}

@ -2,6 +2,7 @@ package com.supervision.service;
import com.supervision.domain.IrSessionParam;
import com.baomidou.mybatisplus.extension.service.IService;
import com.supervision.vo.session.SessionParamReqVO;
/**
* @author flevance
@ -10,4 +11,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface IrSessionParamService extends IService<IrSessionParam> {
boolean saveSessionParam(SessionParamReqVO sessionParamReqVO1);
SessionParamReqVO findSessionParam(String sessionId);
}

@ -1,20 +1,73 @@
package com.supervision.service.impl;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.supervision.domain.IrSession;
import com.supervision.domain.IrSessionParam;
import com.supervision.service.IrSessionParamService;
import com.supervision.mapper.IrSessionParamMapper;
import com.supervision.service.IrSessionService;
import com.supervision.vo.session.SessionParamReqVO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @author flevance
* @description ir_session_param()Service
* @createDate 2024-03-21 13:14:43
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class IrSessionParamServiceImpl extends ServiceImpl<IrSessionParamMapper, IrSessionParam>
implements IrSessionParamService{
@Autowired
private IrSessionService irSessionService;
@Override
@Transactional(rollbackFor = Exception.class)
public boolean saveSessionParam(SessionParamReqVO sessionParamReqVO1) {
String sessionId = sessionParamReqVO1.getSessionId();
Assert.notEmpty(sessionId, "会话ID不能为空");
Integer count = irSessionService.lambdaQuery().eq(IrSession::getId, sessionId).count();
Assert.isTrue(count > 0, "会话不存在");
Map<String, IrSessionParam> sessionParamMap = super.lambdaQuery().eq(IrSessionParam::getSessionId,sessionId).list()
.stream().collect(Collectors.toMap(IrSessionParam::getParamName, i -> i));
// 组装数据
List<IrSessionParam> irSessionParamList = sessionParamReqVO1.toIrSessionParamList().stream().filter(i -> StrUtil.isNotEmpty(i.getParamName())).map(i -> {
IrSessionParam irSessionParam = sessionParamMap.get(i.getParamName());
if (Objects.nonNull(irSessionParam)) {
irSessionParam.setParamValue(i.getParamValue());
return irSessionParam;
}
return i;
}).collect(Collectors.toList());
return super.saveOrUpdateBatch(irSessionParamList);
}
@Override
public SessionParamReqVO findSessionParam(String sessionId) {
Assert.notEmpty(sessionId, "会话ID不能为空");
Map<String, String> paramMap = super.lambdaQuery().eq(IrSessionParam::getSessionId, sessionId).list()
.stream().collect(Collectors.toMap(IrSessionParam::getParamName, i -> null == i.getParamValue() ? "" : i.getParamValue()));
return new SessionParamReqVO(sessionId, paramMap.get(SessionParamReqVO.name2Alias()),
paramMap.get(SessionParamReqVO.cardNumber2Alias()), SessionParamReqVO.idNumber2Alias());
}
}

@ -4,33 +4,28 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.supervision.config.domain.UserInfo;
import com.supervision.domain.IrSession;
import com.supervision.domain.IrSessionParam;
import com.supervision.domain.IrSqlParam;
import com.supervision.exception.BusinessException;
import com.supervision.mapper.RobotDataMapper;
import com.supervision.service.IrSessionHistoryService;
import com.supervision.service.IrSessionParamService;
import com.supervision.service.IrSessionService;
import com.supervision.mapper.IrSessionMapper;
import com.supervision.service.IrSqlParamService;
import com.supervision.util.UserUtil;
import com.supervision.vo.session.CreateAjResVO;
import com.supervision.vo.session.FinishSessionVO;
import com.supervision.vo.session.NewSessionReqVO;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.supervision.domain.IrSessionHistory;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
@ -87,7 +82,9 @@ public class IrSessionServiceImpl extends ServiceImpl<IrSessionMapper, IrSession
@Override
public IPage<IrSession> querySessionPage(String sessionName, Integer pageSize, Integer pageNum) {
UserInfo user = UserUtil.getUser();
return this.lambdaQuery().like(StrUtil.isNotBlank(sessionName), IrSession::getSessionName, sessionName).eq(IrSession::getUserId, user.getId()).page(new Page<>(pageNum, pageSize));
return this.lambdaQuery().like(StrUtil.isNotBlank(sessionName), IrSession::getSessionName, sessionName).eq(IrSession::getUserId, user.getId())
.orderBy(true, false,IrSession::getCreateTime)
.page(new Page<>(pageNum, pageSize));
}
@Override

@ -151,7 +151,6 @@ public class RobotTalkServiceImpl implements RobotTalkService {
log.info("问题:{},未匹配到意图且confirmFlag标识不为true,抽取问题中的关键属性", robotTalkReq.getMessage());
// 未匹配到意图,且不是关键信息确认操作则提取信息中的关键信息
extractInformation(sessionId, robotTalkReq.getMessage(), robotTalkDTO);
robotTalkDTO.getAnswerInfo().setContentType(6);
}else {
// 未匹配到意图,是关键信息确认操作,不做问题响应,只做默认回答
log.info("问题:{},未匹配到意图且confirmFlag标识为true,设置默认回答:{}", robotTalkReq.getMessage(), config.getUnrecognizedTwo());
@ -159,6 +158,10 @@ public class RobotTalkServiceImpl implements RobotTalkService {
robotTalkDTO.setDoNext(false);
}
}
SuspectInfo suspectInfo = robotTalkDTO.getAnswerInfo().getSuspectInfo();
if (Objects.isNull(suspectInfo) || suspectInfo.isEmpty()){
robotTalkDTO.getAnswerInfo().setSuspectInfo(robotTalkReq.getTitleContent());
}
}
private void logSessionInfo(RobotTalkDTO robotTalkDTO, MatchQuestionAnswerDTO matchQuestionAnswerDTO) {

@ -0,0 +1,60 @@
package com.supervision.vo.session;
import com.supervision.domain.IrSessionParam;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
public class SessionParamReqVO {
private String sessionId;
/**
*
*/
private String name;
/**
*
*/
private String cardNumber;
/**
*
*/
private String idNumber;
public SessionParamReqVO() {
}
public SessionParamReqVO(String sessionId, String name, String cardNumber, String idNumber) {
this.sessionId = sessionId;
this.name = name;
this.cardNumber = cardNumber;
this.idNumber = idNumber;
}
public List<IrSessionParam> toIrSessionParamList(){
List<IrSessionParam> paramList = new ArrayList<>();
paramList.add(new IrSessionParam(sessionId,name2Alias(),name));
paramList.add(new IrSessionParam(sessionId,cardNumber2Alias(),cardNumber));
paramList.add(new IrSessionParam(sessionId,idNumber2Alias(),idNumber));
return paramList;
}
public static String name2Alias(){
return "name";
}
public static String cardNumber2Alias(){
return "jykh";
}
public static String idNumber2Alias(){
return "khrzjhm";
}
}
Loading…
Cancel
Save