提交 32282b3a 作者: chenshiqiang

add column

上级 f3739005
......@@ -3,10 +3,12 @@ package com.zzsn.knowbase.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zzsn.knowbase.entity.KbKnowledgeProject;
import com.zzsn.knowbase.entity.KnowFile;
import com.zzsn.knowbase.entity.Knowledge;
import com.zzsn.knowbase.service.IKnowledgeService;
import com.zzsn.knowbase.service.ILocalFileService;
import com.zzsn.knowbase.service.KbKnowledgeProjectService;
import com.zzsn.knowbase.util.DocUtil;
import com.zzsn.knowbase.util.HttpUtil;
import com.zzsn.knowbase.vo.IntelligentQaParam;
......@@ -25,9 +27,7 @@ import org.springframework.web.util.WebUtils;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
......@@ -48,6 +48,8 @@ public class KnowledgeController {
@Autowired
private ILocalFileService localFileService;
@Autowired
private KbKnowledgeProjectService knowledgeProjectService;
/**
* 分页列表查询
......@@ -153,7 +155,7 @@ public class KnowledgeController {
public Result<?> intelligentQa(IntelligentQaParam intelligentQaParam) throws IOException {
JSONObject params = new JSONObject();
params.put("question", intelligentQaParam.getQuestion());
params.put("knowledge_base_id", Arrays.asList(intelligentQaParam.getKnowledgeProjectIds().split(",")));
params.put("kbKnowledgeIds", intelligentQaParam.getKbKnowledgeIds().split(","));
String result = HttpUtil.doPost(intelligentQaUrl, params, 120000);
if (!result.isEmpty()) {
JSONObject jsonObject = JSON.parseObject(result);
......
......@@ -99,6 +99,10 @@ public class Knowledge implements Serializable {
*/
private String knowledgeProjectId;
/**
* 知识库id
*/
private String kbKnowledgeId;
/**
* 类型
*/
private String typeId;
......
......@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.zzsn.knowbase.entity.KbKnowledgeProject;
import com.zzsn.knowbase.vo.Result;
import java.util.List;
/**
* <p>
* 服务类
......@@ -28,4 +30,11 @@ public interface KbKnowledgeProjectService extends IService<KbKnowledgeProject>
Result<?> del(String id);
Result<?> lists(String sign, String projectId, String category);
/**
* 通过id获取子节点列表
* @param id id
* @return
*/
List<KbKnowledgeProject> getTreeListBy(String id);
}
......@@ -3,6 +3,7 @@ package com.zzsn.knowbase.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zzsn.knowbase.entity.KbKnowledgeProject;
......@@ -19,7 +20,7 @@ import java.util.List;
/**
* <p>
* 服务实现类
* 服务实现类
* </p>
*
* @author obcy
......@@ -31,11 +32,11 @@ public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjec
@Override
@Transactional
public Result<?> add(KbKnowledgeProject knowledgeProject) {
if (StringUtils.isBlank(knowledgeProject.getPid())){
if (StringUtils.isBlank(knowledgeProject.getPid())) {
knowledgeProject.setPid(KbKnowledgeProjectService.ROOT_PID_VALUE);
}else {
} else {
KbKnowledgeProject parent = super.getById(knowledgeProject.getPid());
if(parent!=null && !KbKnowledgeProjectService.HASCHILD.equals(parent.getHasChild())){
if (parent != null && !KbKnowledgeProjectService.HASCHILD.equals(parent.getHasChild())) {
parent.setHasChild(KbKnowledgeProjectService.HASCHILD);
super.updateById(parent);
}
......@@ -46,11 +47,11 @@ public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjec
knowledgeProject.setFullPath("0");
knowledgeProject.setCreateTime(new Date());
super.save(knowledgeProject);
if (KbKnowledgeProjectService.ROOT_PID_VALUE.equals(knowledgeProject.getPid())){
if (KbKnowledgeProjectService.ROOT_PID_VALUE.equals(knowledgeProject.getPid())) {
knowledgeProject.setFullPath(knowledgeProject.getId().toString());
}else {
} else {
KbKnowledgeProject parent = super.getById(knowledgeProject.getPid());
knowledgeProject.setFullPath(parent.getFullPath() +","+ knowledgeProject.getId());
knowledgeProject.setFullPath(parent.getFullPath() + "," + knowledgeProject.getId());
}
super.updateById(knowledgeProject);
return Result.OK();
......@@ -60,47 +61,47 @@ public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjec
@Transactional
public Result<?> edit(KbKnowledgeProject knowledgeProject) {
KbKnowledgeProject byId = super.getById(knowledgeProject.getId());
if (ObjectUtils.isEmpty(byId)){
if (ObjectUtils.isEmpty(byId)) {
return Result.error("未找到对应的知识库");
}
String oldPid = byId.getPid();
String newPid = knowledgeProject.getPid();
if(!oldPid.equals(newPid)) {
if (!oldPid.equals(newPid)) {
/**处理之前父节点的hasChild字段*/
updateOldParentNode(oldPid);
if(StringUtils.isBlank(newPid) || KbKnowledgeProjectService.ROOT_PID_VALUE.equals(newPid)){
if (StringUtils.isBlank(newPid) || KbKnowledgeProjectService.ROOT_PID_VALUE.equals(newPid)) {
knowledgeProject.setPid(KbKnowledgeProjectService.ROOT_PID_VALUE);
newPid = knowledgeProject.getPid();
}
/**处理新的父节点的hasChild字段*/
if(!KbKnowledgeProjectService.ROOT_PID_VALUE.equals(knowledgeProject.getPid())) {
super.update(Wrappers.<KbKnowledgeProject>lambdaUpdate().set(KbKnowledgeProject::getHasChild,KbKnowledgeProjectService.HASCHILD).eq(KbKnowledgeProject::getId,newPid));
if (!KbKnowledgeProjectService.ROOT_PID_VALUE.equals(knowledgeProject.getPid())) {
super.update(Wrappers.<KbKnowledgeProject>lambdaUpdate().set(KbKnowledgeProject::getHasChild, KbKnowledgeProjectService.HASCHILD).eq(KbKnowledgeProject::getId, newPid));
}
knowledgeProject.setUpdateTime(new Date());
super.updateById(knowledgeProject);
/**处理本节点的所有子节点的绝对路径*/
List<KbKnowledgeProject> list = super.list(Wrappers.<KbKnowledgeProject>lambdaQuery().like(KbKnowledgeProject::getFullPath,knowledgeProject.getId()));
if (CollectionUtil.isNotEmpty(list)){
List<KbKnowledgeProject> list = super.list(Wrappers.<KbKnowledgeProject>lambdaQuery().like(KbKnowledgeProject::getFullPath, knowledgeProject.getId()));
if (CollectionUtil.isNotEmpty(list)) {
String finalNewPid = newPid;
if (!KbKnowledgeProjectService.ROOT_PID_VALUE.equals(finalNewPid)) {
/**非根节点 移动到其他非根节点*/
if (!KbKnowledgeProjectService.ROOT_PID_VALUE.equals(oldPid)) {
list.forEach(e->{
list.forEach(e -> {
e.setFullPath(e.getFullPath().replace(oldPid, finalNewPid));
});
}else {
} else {
/**根节点 移动到其他非根节点*/
list.forEach(e->{
e.setFullPath(finalNewPid+","+e.getFullPath());
list.forEach(e -> {
e.setFullPath(finalNewPid + "," + e.getFullPath());
});
}
}else {
} else {
/**移动到根节点*/
list.forEach(e->{
e.setFullPath(e.getFullPath().replace(oldPid+",", ""));
list.forEach(e -> {
e.setFullPath(e.getFullPath().replace(oldPid + ",", ""));
});
}
}
......@@ -113,8 +114,8 @@ public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjec
@Override
public Result<?> del(String id) {
KbKnowledgeProject byId = super.getById(id);
super.remove(Wrappers.<KbKnowledgeProject>lambdaQuery().like(KbKnowledgeProject::getFullPath,id));
if (StringUtils.isNotBlank(byId.getPid())&&!KbKnowledgeProjectService.ROOT_PID_VALUE.equals(byId.getPid())){
super.remove(Wrappers.<KbKnowledgeProject>lambdaQuery().like(KbKnowledgeProject::getFullPath, id));
if (StringUtils.isNotBlank(byId.getPid()) && !KbKnowledgeProjectService.ROOT_PID_VALUE.equals(byId.getPid())) {
updateOldParentNode(byId.getPid());
}
return Result.OK();
......@@ -122,28 +123,36 @@ public class KbKnowledgeProjectServiceImpl extends ServiceImpl<KbKnowledgeProjec
@Override
public Result<?> lists(String sign, String projectId, String category) {
List<KbKnowledgeProject> kbKnowledgeProjects ;
if ("1".equals(sign)&&StringUtils.isBlank(projectId)){
List<KbKnowledgeProject> kbKnowledgeProjects;
if ("1".equals(sign) && StringUtils.isBlank(projectId)) {
kbKnowledgeProjects = super.list(Wrappers.<KbKnowledgeProject>lambdaQuery()
.eq(KbKnowledgeProject::getPid, KbKnowledgeProjectService.ROOT_PID_VALUE)
.eq(StrUtil.isNotBlank(category),KbKnowledgeProject::getCategory,category));
}else {
.eq(StrUtil.isNotBlank(category), KbKnowledgeProject::getCategory, category));
} else {
kbKnowledgeProjects = super.list(Wrappers.<KbKnowledgeProject>lambdaQuery()
.eq(KbKnowledgeProject::getPid,projectId)
.eq(StrUtil.isNotBlank(category),KbKnowledgeProject::getCategory,category));
.eq(KbKnowledgeProject::getPid, projectId)
.eq(StrUtil.isNotBlank(category), KbKnowledgeProject::getCategory, category));
}
return Result.OK(kbKnowledgeProjects);
}
@Override
public List<KbKnowledgeProject> getTreeListBy(String id) {
return baseMapper.selectList(new LambdaQueryWrapper<KbKnowledgeProject>()
.like(KbKnowledgeProject::getFullPath, id)
);
}
/**
* 根据所传pid查询旧的父级节点的子节点并修改相应状态值
*
* @param pid
*/
private void updateOldParentNode(String pid) {
if(!KbKnowledgeProjectService.ROOT_PID_VALUE.equals(pid)) {
Integer count = baseMapper.selectCount(Wrappers.<KbKnowledgeProject>lambdaQuery().eq(KbKnowledgeProject::getPid,pid));
if(count==null || count<=1) {
super.update(Wrappers.<KbKnowledgeProject>lambdaUpdate().set(KbKnowledgeProject::getHasChild,KbKnowledgeProjectService.NOCHILD).eq(KbKnowledgeProject::getId,pid));
if (!KbKnowledgeProjectService.ROOT_PID_VALUE.equals(pid)) {
Integer count = baseMapper.selectCount(Wrappers.<KbKnowledgeProject>lambdaQuery().eq(KbKnowledgeProject::getPid, pid));
if (count == null || count <= 1) {
super.update(Wrappers.<KbKnowledgeProject>lambdaUpdate().set(KbKnowledgeProject::getHasChild, KbKnowledgeProjectService.NOCHILD).eq(KbKnowledgeProject::getId, pid));
}
}
}
......
......@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zzsn.knowbase.constant.Constants;
import com.zzsn.knowbase.entity.Content;
import com.zzsn.knowbase.entity.KbKnowledgeProject;
import com.zzsn.knowbase.entity.KnowFile;
import com.zzsn.knowbase.entity.Knowledge;
import com.zzsn.knowbase.enums.KnowTypeEnum;
......@@ -15,6 +16,7 @@ import com.zzsn.knowbase.kafka.message.KnowledgeMessage;
import com.zzsn.knowbase.kafka.producer.ProduceInfo;
import com.zzsn.knowbase.service.IKnowledgeService;
import com.zzsn.knowbase.service.ILocalFileService;
import com.zzsn.knowbase.service.KbKnowledgeProjectService;
import com.zzsn.knowbase.util.*;
import com.zzsn.knowbase.vo.KnowledgeParam;
import com.zzsn.knowbase.vo.KnowledgeVO;
......@@ -62,6 +64,8 @@ class KnowledgeServiceImpl implements IKnowledgeService {
@Autowired
private CodeGenerateUtil codeGenerateUtil;
@Autowired
private KbKnowledgeProjectService knowledgeProjectService;
@Autowired
private ProduceInfo produceInfo;
@Value("${python.searchUrl:}")
private String searchUrl;
......@@ -162,8 +166,11 @@ class KnowledgeServiceImpl implements IKnowledgeService {
@Override
public IPage<KnowledgeVO> queryPageList(KnowledgeParam knowledgeParam, Integer pageNo, Integer pageSize, String column, String order) {
List<KbKnowledgeProject> treeList = knowledgeProjectService.getTreeListBy(knowledgeParam.getKnowledgeProjectId());
if(treeList.isEmpty()){
return null;
}
List<Long> catList = treeList.stream().map(KbKnowledgeProject::getId).collect(Collectors.toList());
SearchRequest searchRequest = new SearchRequest(Constants.ES_DATA_FOR_KNOWLEDGE);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
//设置分页参数
......@@ -254,9 +261,11 @@ class KnowledgeServiceImpl implements IKnowledgeService {
if (StringUtils.isNotEmpty(knowledgeParam.getId())) {
boolQuery.must(QueryBuilders.termQuery("id", knowledgeParam.getId()));
}
if (!catList.isEmpty()) {
boolQuery.must(QueryBuilders.termsQuery("knowledgeProjectId", catList));
}
if (null != knowledgeParam.getVerifyStatus()) {
boolQuery.must(QueryBuilders.termQuery("verifyStatus", knowledgeParam.getVerifyStatus()));
}
//时间过滤筛选
......@@ -295,10 +304,14 @@ class KnowledgeServiceImpl implements IKnowledgeService {
@Override
public IPage<KnowledgeVO> listFromPython(KnowledgeParam knowledgeParam, Integer pageNo, Integer pageSize, String column, String order) {
Object data = redisUtil.get(genKey(knowledgeParam));
Object data = redisUtil.get(genKey(knowledgeParam));
// if (org.springframework.util.StringUtils.isEmpty(data)) {
if (true) {
List<KbKnowledgeProject> treeList = knowledgeProjectService.getTreeListBy(knowledgeParam.getKnowledgeProjectId());
if(treeList.isEmpty()){
return null;
}
StringBuilder typeNames = new StringBuilder();
if(null != knowledgeParam.getTypeIds()){
for (String type : knowledgeParam.getTypeIds().split(",")) {
......@@ -314,7 +327,7 @@ class KnowledgeServiceImpl implements IKnowledgeService {
params.put("verifierName", knowledgeParam.getVerifierName());
params.put("verifyStatus", knowledgeParam.getVerifyStatus());
params.put("verifyStartTime", knowledgeParam.getVerifyStartTime());
params.put("knowledge_base_id", knowledgeParam.getKnowledgeProjectId());
params.put("knowledge_base_id", treeList);
params.put("verifyEndTime", knowledgeParam.getVerifyEndTime());
params.put("score_threshold", 600);//score
params.put("vector_search_top_k", 100);//number
......
......@@ -14,9 +14,6 @@ public class IntelligentQaParam {
* 问题
*/
private String question;
/**
* 知识库ids
*/
private String knowledgeProjectIds;
private String kbKnowledgeIds;
}
......@@ -77,5 +77,6 @@ public class KnowledgeParam {
* 审核结束时间
*/
private String verifyEndTime;
private String kbKnowledgeId;
}
......@@ -26,6 +26,7 @@ public class KnowledgeVO {
private String verifyTime;
private String publishDate;
private String createTime;
private String kbKnowledgeId;
private String type;
private String verifierName;
private Integer score;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论