From d4f88fad4fbaf3a2f299738dc7f57eee76b6249e Mon Sep 17 00:00:00 2001 From: xueqingkun Date: Wed, 3 Apr 2024 11:36:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BC=9A=E8=AF=9D=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SessionParamController.java | 34 +++++++++++ .../supervision/dto/robot/SuspectInfo.java | 4 +- .../service/IrSessionParamService.java | 4 ++ .../impl/IrSessionParamServiceImpl.java | 53 ++++++++++++++++ .../service/impl/IrSessionServiceImpl.java | 9 +-- .../service/impl/RobotTalkServiceImpl.java | 5 +- .../vo/session/SessionParamReqVO.java | 60 +++++++++++++++++++ 7 files changed, 161 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/supervision/controller/SessionParamController.java create mode 100644 src/main/java/com/supervision/vo/session/SessionParamReqVO.java diff --git a/src/main/java/com/supervision/controller/SessionParamController.java b/src/main/java/com/supervision/controller/SessionParamController.java new file mode 100644 index 0000000..d052ca0 --- /dev/null +++ b/src/main/java/com/supervision/controller/SessionParamController.java @@ -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); + } + + +} diff --git a/src/main/java/com/supervision/dto/robot/SuspectInfo.java b/src/main/java/com/supervision/dto/robot/SuspectInfo.java index 0c9d585..30df6dd 100644 --- a/src/main/java/com/supervision/dto/robot/SuspectInfo.java +++ b/src/main/java/com/supervision/dto/robot/SuspectInfo.java @@ -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); } } diff --git a/src/main/java/com/supervision/service/IrSessionParamService.java b/src/main/java/com/supervision/service/IrSessionParamService.java index 50b9384..21ef4aa 100644 --- a/src/main/java/com/supervision/service/IrSessionParamService.java +++ b/src/main/java/com/supervision/service/IrSessionParamService.java @@ -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 { + boolean saveSessionParam(SessionParamReqVO sessionParamReqVO1); + + SessionParamReqVO findSessionParam(String sessionId); } diff --git a/src/main/java/com/supervision/service/impl/IrSessionParamServiceImpl.java b/src/main/java/com/supervision/service/impl/IrSessionParamServiceImpl.java index 0633cc2..706d57c 100644 --- a/src/main/java/com/supervision/service/impl/IrSessionParamServiceImpl.java +++ b/src/main/java/com/supervision/service/impl/IrSessionParamServiceImpl.java @@ -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 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 sessionParamMap = super.lambdaQuery().eq(IrSessionParam::getSessionId,sessionId).list() + .stream().collect(Collectors.toMap(IrSessionParam::getParamName, i -> i)); + + // 组装数据 + List 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 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()); + } } diff --git a/src/main/java/com/supervision/service/impl/IrSessionServiceImpl.java b/src/main/java/com/supervision/service/impl/IrSessionServiceImpl.java index b6297b0..9638d9d 100644 --- a/src/main/java/com/supervision/service/impl/IrSessionServiceImpl.java +++ b/src/main/java/com/supervision/service/impl/IrSessionServiceImpl.java @@ -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 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 diff --git a/src/main/java/com/supervision/service/impl/RobotTalkServiceImpl.java b/src/main/java/com/supervision/service/impl/RobotTalkServiceImpl.java index 603d6c3..770a1bf 100644 --- a/src/main/java/com/supervision/service/impl/RobotTalkServiceImpl.java +++ b/src/main/java/com/supervision/service/impl/RobotTalkServiceImpl.java @@ -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) { diff --git a/src/main/java/com/supervision/vo/session/SessionParamReqVO.java b/src/main/java/com/supervision/vo/session/SessionParamReqVO.java new file mode 100644 index 0000000..7ecde24 --- /dev/null +++ b/src/main/java/com/supervision/vo/session/SessionParamReqVO.java @@ -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 toIrSessionParamList(){ + + List 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"; + } + +}