Commit 3a461a67 authored by alex yao's avatar alex yao

feat: 新增ai智能问数接口

parent 754c2b15
...@@ -66,4 +66,13 @@ public interface AiDialoguesService { ...@@ -66,4 +66,13 @@ public interface AiDialoguesService {
*/ */
List<DialoguesContextDto> getDialogueContext(String dialogueId); List<DialoguesContextDto> getDialogueContext(String dialogueId);
/**
* 问题联想
*
* @param question
* @return
*/
List<String> questionAssociation(String question);
} }
...@@ -6,6 +6,8 @@ import cn.com.poc.ai_dialogues.aggregate.AiDialoguesService; ...@@ -6,6 +6,8 @@ import cn.com.poc.ai_dialogues.aggregate.AiDialoguesService;
import cn.com.poc.ai_dialogues.constant.AiDialoguesTypeEnum; import cn.com.poc.ai_dialogues.constant.AiDialoguesTypeEnum;
import cn.com.poc.ai_dialogues.dto.AiDialoguesRecordDto; import cn.com.poc.ai_dialogues.dto.AiDialoguesRecordDto;
import cn.com.poc.ai_dialogues.entity.BizAiDialoguesEntity; import cn.com.poc.ai_dialogues.entity.BizAiDialoguesEntity;
import cn.com.poc.ai_dialogues.query.ProblemAssociationQueryItem;
import cn.com.poc.ai_dialogues.service.BizAiDialoguesProblemAssociationService;
import cn.com.poc.ai_dialogues.service.BizAiDialoguesService; import cn.com.poc.ai_dialogues.service.BizAiDialoguesService;
import cn.com.poc.common.constant.CommonConstant; import cn.com.poc.common.constant.CommonConstant;
import cn.com.poc.common.service.BizFileUploadRecordService; import cn.com.poc.common.service.BizFileUploadRecordService;
...@@ -19,6 +21,7 @@ import org.springframework.stereotype.Service; ...@@ -19,6 +21,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -42,6 +45,9 @@ public class AiDialoguesServiceImpl implements AiDialoguesService { ...@@ -42,6 +45,9 @@ public class AiDialoguesServiceImpl implements AiDialoguesService {
@Resource @Resource
private BizAgentApplicationDialoguesRecordService bizAgentApplicationDialoguesRecordService; private BizAgentApplicationDialoguesRecordService bizAgentApplicationDialoguesRecordService;
@Resource
private BizAiDialoguesProblemAssociationService bizAiDialoguesProblemAssociationService;
@Override @Override
public String create(AiDialoguesTypeEnum type, Long userId) throws Exception { public String create(AiDialoguesTypeEnum type, Long userId) throws Exception {
return bizAiDialoguesService.create(type.getType(), userId); return bizAiDialoguesService.create(type.getType(), userId);
...@@ -148,4 +154,18 @@ public class AiDialoguesServiceImpl implements AiDialoguesService { ...@@ -148,4 +154,18 @@ public class AiDialoguesServiceImpl implements AiDialoguesService {
} }
return null; return null;
} }
@Override
public List<String> questionAssociation(String question) {
if (StringUtils.isBlank(question)) {
logger.warn("question is blank");
return Collections.emptyList();
}
List<ProblemAssociationQueryItem> problemAssociationList = bizAiDialoguesProblemAssociationService.getProblemAssociationList(question);
if (CollectionUtils.isNotEmpty(problemAssociationList)) {
return problemAssociationList.stream().map(ProblemAssociationQueryItem::getQuestion).collect(Collectors.toList());
}
return Collections.emptyList();
}
} }
package cn.com.poc.ai_dialogues.convert;
import cn.com.poc.ai_dialogues.model.BizAiDialoguesProblemAssociationModel;
import cn.com.poc.ai_dialogues.entity.BizAiDialoguesProblemAssociationEntity;
import cn.com.poc.ai_dialogues.dto.BizAiDialoguesProblemAssociationDto;
public class BizAiDialoguesProblemAssociationConvert {
public static BizAiDialoguesProblemAssociationEntity modelToEntity(BizAiDialoguesProblemAssociationModel model){
BizAiDialoguesProblemAssociationEntity entity = new BizAiDialoguesProblemAssociationEntity();
entity.setId(model.getId());
entity.setQuestion(model.getQuestion());
return entity;
}
public static BizAiDialoguesProblemAssociationModel entityToModel(BizAiDialoguesProblemAssociationEntity entity){
BizAiDialoguesProblemAssociationModel model = new BizAiDialoguesProblemAssociationModel();
model.setId(entity.getId());
model.setQuestion(entity.getQuestion());
return model;
}
public static BizAiDialoguesProblemAssociationDto entityToDto(BizAiDialoguesProblemAssociationEntity entity){
BizAiDialoguesProblemAssociationDto dto = new BizAiDialoguesProblemAssociationDto();
dto.setId(entity.getId());
dto.setQuestion(entity.getQuestion());
return dto;
}
public static BizAiDialoguesProblemAssociationEntity dtoToEntity(BizAiDialoguesProblemAssociationDto dto){
BizAiDialoguesProblemAssociationEntity entity = new BizAiDialoguesProblemAssociationEntity();
entity.setId(dto.getId());
entity.setQuestion(dto.getQuestion());
return entity;
}
}
\ No newline at end of file
package cn.com.poc.ai_dialogues.dto;
public class BizAiDialoguesProblemAssociationDto {
private static final long serialVersionUID = 1L;
/** id
*
*/
private java.lang.Long id;
public java.lang.Long getId(){
return this.id;
}
public void setId(java.lang.Long id){
this.id = id;
}
/** question
*
*/
private java.lang.String question;
public java.lang.String getQuestion(){
return this.question;
}
public void setQuestion(java.lang.String question){
this.question = question;
}
}
\ No newline at end of file
package cn.com.poc.ai_dialogues.entity;
public class BizAiDialoguesProblemAssociationEntity {
private static final long serialVersionUID = 1L;
/** id
*
*/
private java.lang.Long id;
public java.lang.Long getId(){
return this.id;
}
public void setId(java.lang.Long id){
this.id = id;
}
/** question
*
*/
private java.lang.String question;
public java.lang.String getQuestion(){
return this.question;
}
public void setQuestion(java.lang.String question){
this.question = question;
}
}
\ No newline at end of file
package cn.com.poc.ai_dialogues.model;
import java.io.Serializable;
import cn.com.yict.framemax.data.model.BaseModelClass;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Id;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
/**
* Model class for biz_ai_dialogues_problem_association
* 问题联想
*/
@Entity
@Table(name = "biz_ai_dialogues_problem_association")
@DynamicInsert
@DynamicUpdate
public class BizAiDialoguesProblemAssociationModel extends BaseModelClass implements Serializable {
private static final long serialVersionUID = 1L;
/** id
*
*/
private java.lang.Long id;
@Column(name = "id",length = 19)
@Id @GeneratedValue(strategy = GenerationType.AUTO)
public java.lang.Long getId(){
return this.id;
}
public void setId(java.lang.Long id){
this.id = id;
super.addValidField("id");
}
/** question
*
*/
private java.lang.String question;
@Column(name = "question",length = 2147483647)
public java.lang.String getQuestion(){
return this.question;
}
public void setQuestion(java.lang.String question){
this.question = question;
super.addValidField("question");
}
}
\ No newline at end of file
SELECT id, question FROM biz_ai_dialogues_problem_association
where
1=1
<<question LIKE CONCAT('',:question,'%')>>
\ No newline at end of file
package cn.com.poc.ai_dialogues.query;
import java.io.Serializable;
/**
* Query Condition class for ProblemAssociationQuery
*/
public class ProblemAssociationQueryCondition implements Serializable{
private static final long serialVersionUID = 1L;
private java.lang.String question;
public java.lang.String getQuestion(){
return this.question;
}
public void setQuestion(java.lang.String question){
this.question = question;
}
}
\ No newline at end of file
package cn.com.poc.ai_dialogues.query;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import cn.com.yict.framemax.data.model.BaseItemClass;
/**
* Query Item class for ProblemAssociationQuery
*/
@Entity
public class ProblemAssociationQueryItem extends BaseItemClass implements Serializable{
private static final long serialVersionUID = 1L;
/** id
*id
*/
private java.lang.Long id;
@Column(name = "id")
public java.lang.Long getId(){
return this.id;
}
public void setId(java.lang.Long id){
this.id = id;
}
/** question
*question
*/
private java.lang.String question;
@Column(name = "question")
public java.lang.String getQuestion(){
return this.question;
}
public void setQuestion(java.lang.String question){
this.question = question;
}
}
\ No newline at end of file
package cn.com.poc.ai_dialogues.repository;
import cn.com.yict.framemax.data.repository.Repository;
import cn.com.poc.ai_dialogues.model.BizAiDialoguesProblemAssociationModel;
public interface BizAiDialoguesProblemAssociationRepository extends Repository<BizAiDialoguesProblemAssociationModel,java.lang.Long> {
}
\ No newline at end of file
...@@ -47,4 +47,11 @@ public interface AiDialoguesRest extends BaseRest { ...@@ -47,4 +47,11 @@ public interface AiDialoguesRest extends BaseRest {
* 获取对话上下文 * 获取对话上下文
*/ */
List<DialoguesContextDto> getDialogueContext(@RequestParam String dialogueId) throws Exception; List<DialoguesContextDto> getDialogueContext(@RequestParam String dialogueId) throws Exception;
/**
* 问题联想
*/
List<String> questionAssociation( @RequestParam String question);
} }
package cn.com.poc.ai_dialogues.rest;
import cn.com.yict.framemax.core.rest.BaseRest;
import cn.com.poc.ai_dialogues.dto.BizAiDialoguesProblemAssociationDto;
import cn.com.yict.framemax.data.model.PagingInfo;
import java.util.Collection;
import java.util.List;
import cn.com.yict.framemax.web.permission.Access;
import cn.com.yict.framemax.web.permission.Permission;
import org.springframework.web.bind.annotation.RequestBody;
public interface BizAiDialoguesProblemAssociationRest extends BaseRest {
BizAiDialoguesProblemAssociationDto getById(java.lang.Long id) throws Exception;
List<BizAiDialoguesProblemAssociationDto> getList(BizAiDialoguesProblemAssociationDto example,PagingInfo pagingInfo) throws Exception;
BizAiDialoguesProblemAssociationDto save(BizAiDialoguesProblemAssociationDto dto) throws Exception;
BizAiDialoguesProblemAssociationDto update(BizAiDialoguesProblemAssociationDto dto) throws Exception;
void deletedById(java.lang.Long id) throws Exception;
}
\ No newline at end of file
...@@ -15,6 +15,7 @@ import cn.hutool.core.util.ObjectUtil; ...@@ -15,6 +15,7 @@ import cn.hutool.core.util.ObjectUtil;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Collections;
import java.util.List; import java.util.List;
@Component @Component
...@@ -72,4 +73,9 @@ public class AiDialoguesRestImpl implements AiDialoguesRest { ...@@ -72,4 +73,9 @@ public class AiDialoguesRestImpl implements AiDialoguesRest {
Assert.notBlank(dialogueId); Assert.notBlank(dialogueId);
return aiDialoguesService.getDialogueContext(dialogueId); return aiDialoguesService.getDialogueContext(dialogueId);
} }
@Override
public List<String> questionAssociation(String question) {
return aiDialoguesService.questionAssociation(question);
}
} }
\ No newline at end of file
package cn.com.poc.ai_dialogues.rest.impl;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
import cn.com.poc.ai_dialogues.rest.BizAiDialoguesProblemAssociationRest;
import cn.com.poc.ai_dialogues.service.BizAiDialoguesProblemAssociationService;
import cn.com.poc.ai_dialogues.dto.BizAiDialoguesProblemAssociationDto;
import cn.com.poc.ai_dialogues.entity.BizAiDialoguesProblemAssociationEntity;
import cn.com.yict.framemax.data.model.PagingInfo;
import cn.com.poc.ai_dialogues.convert.BizAiDialoguesProblemAssociationConvert;
import java.util.stream.Collectors;
import org.springframework.util.Assert;
@Component
public class BizAiDialoguesProblemAssociationRestImpl implements BizAiDialoguesProblemAssociationRest {
@Resource
private BizAiDialoguesProblemAssociationService service;
public BizAiDialoguesProblemAssociationDto getById(java.lang.Long id) throws Exception{
Assert.notNull(id);
return BizAiDialoguesProblemAssociationConvert.entityToDto(service.get(id));
}
public List<BizAiDialoguesProblemAssociationDto> getList(BizAiDialoguesProblemAssociationDto dto,PagingInfo pagingInfo) throws Exception{
return service
.findByExample(BizAiDialoguesProblemAssociationConvert.dtoToEntity(dto),pagingInfo)
.stream()
.map(BizAiDialoguesProblemAssociationConvert::entityToDto)
.collect(Collectors.toList());
}
public BizAiDialoguesProblemAssociationDto save(BizAiDialoguesProblemAssociationDto dto) throws Exception{
Assert.notNull(dto);
BizAiDialoguesProblemAssociationEntity entity = BizAiDialoguesProblemAssociationConvert.dtoToEntity(dto);
return BizAiDialoguesProblemAssociationConvert.entityToDto(service.save(entity));
}
public BizAiDialoguesProblemAssociationDto update(BizAiDialoguesProblemAssociationDto dto) throws Exception{
Assert.notNull(dto);
BizAiDialoguesProblemAssociationEntity entity = BizAiDialoguesProblemAssociationConvert.dtoToEntity(dto);
return BizAiDialoguesProblemAssociationConvert.entityToDto(service.update(entity));
}
public void deletedById(java.lang.Long id) throws Exception{
Assert.notNull(id);
service.deletedById(id);
}
}
\ No newline at end of file
package cn.com.poc.ai_dialogues.service;
import cn.com.poc.ai_dialogues.query.ProblemAssociationQueryItem;
import cn.com.yict.framemax.core.service.BaseService;
import cn.com.poc.ai_dialogues.entity.BizAiDialoguesProblemAssociationEntity;
import cn.com.yict.framemax.data.model.PagingInfo;
import java.util.Collection;
import java.util.List;
public interface BizAiDialoguesProblemAssociationService extends BaseService {
BizAiDialoguesProblemAssociationEntity get(java.lang.Long id) throws Exception;
List<BizAiDialoguesProblemAssociationEntity> findByExample(BizAiDialoguesProblemAssociationEntity example, PagingInfo pagingInfo) throws Exception;
BizAiDialoguesProblemAssociationEntity save(BizAiDialoguesProblemAssociationEntity entity) throws Exception;
BizAiDialoguesProblemAssociationEntity update(BizAiDialoguesProblemAssociationEntity entity) throws Exception;
void deletedById(java.lang.Long id) throws Exception;
List<ProblemAssociationQueryItem> getProblemAssociationList(String question);
}
\ No newline at end of file
package cn.com.poc.ai_dialogues.service.impl;
import cn.com.poc.ai_dialogues.query.ProblemAssociationQueryCondition;
import cn.com.poc.ai_dialogues.query.ProblemAssociationQueryItem;
import cn.com.yict.framemax.core.service.impl.BaseServiceImpl;
import cn.com.poc.ai_dialogues.service.BizAiDialoguesProblemAssociationService;
import cn.com.poc.ai_dialogues.model.BizAiDialoguesProblemAssociationModel;
import cn.com.poc.ai_dialogues.entity.BizAiDialoguesProblemAssociationEntity;
import cn.com.poc.ai_dialogues.convert.BizAiDialoguesProblemAssociationConvert;
import cn.com.poc.ai_dialogues.repository.BizAiDialoguesProblemAssociationRepository;
import cn.com.yict.framemax.data.model.PagingInfo;
import org.springframework.stereotype.Service;
import org.apache.commons.collections4.CollectionUtils;
import java.util.ArrayList;
import java.util.stream.Collectors;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.util.Assert;
@Service
public class BizAiDialoguesProblemAssociationServiceImpl extends BaseServiceImpl
implements BizAiDialoguesProblemAssociationService {
@Resource
private BizAiDialoguesProblemAssociationRepository repository;
public BizAiDialoguesProblemAssociationEntity get(java.lang.Long id) throws Exception {
Assert.notNull(id);
BizAiDialoguesProblemAssociationModel model = this.repository.get(id);
if (model == null) {
return null;
}
return BizAiDialoguesProblemAssociationConvert.modelToEntity(model);
}
public List<BizAiDialoguesProblemAssociationEntity> findByExample(BizAiDialoguesProblemAssociationEntity example, PagingInfo pagingInfo) throws Exception {
List<BizAiDialoguesProblemAssociationEntity> result = new ArrayList<BizAiDialoguesProblemAssociationEntity>();
BizAiDialoguesProblemAssociationModel model = new BizAiDialoguesProblemAssociationModel();
if (example != null) {
model = BizAiDialoguesProblemAssociationConvert.entityToModel(example);
}
List<BizAiDialoguesProblemAssociationModel> models = this.repository.findByExample(model, pagingInfo);
if (CollectionUtils.isNotEmpty(models)) {
result = models.stream().map(BizAiDialoguesProblemAssociationConvert::modelToEntity).collect(Collectors.toList());
}
return result;
}
public BizAiDialoguesProblemAssociationEntity save(BizAiDialoguesProblemAssociationEntity entity) throws Exception {
Assert.notNull(entity);
entity.setId(null);
BizAiDialoguesProblemAssociationModel model = BizAiDialoguesProblemAssociationConvert.entityToModel(entity);
BizAiDialoguesProblemAssociationModel saveModel = this.repository.save(model);
return BizAiDialoguesProblemAssociationConvert.modelToEntity(saveModel);
}
public BizAiDialoguesProblemAssociationEntity update(BizAiDialoguesProblemAssociationEntity entity) throws Exception {
Assert.notNull(entity);
Assert.notNull(entity.getId(), "update pk can not be null");
BizAiDialoguesProblemAssociationModel model = this.repository.get(entity.getId());
if (entity.getQuestion() != null) {
model.setQuestion(entity.getQuestion());
}
BizAiDialoguesProblemAssociationModel saveModel = this.repository.save(model);
return BizAiDialoguesProblemAssociationConvert.modelToEntity(saveModel);
}
public void deletedById(java.lang.Long id) throws Exception {
Assert.notNull(id);
BizAiDialoguesProblemAssociationModel model = this.repository.get(id);
if (model != null) {
}
}
@Override
public List<ProblemAssociationQueryItem> getProblemAssociationList(String question) {
ProblemAssociationQueryCondition condition = new ProblemAssociationQueryCondition();
condition.setQuestion(question);
return this.sqlDao.query(condition, ProblemAssociationQueryItem.class);
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment