优化企业删除、项目创建功能
This commit is contained in:
@@ -10,6 +10,7 @@ import com.gxwebsoft.common.system.controller.FileController;
|
|||||||
import com.gxwebsoft.common.system.entity.FileRecord;
|
import com.gxwebsoft.common.system.entity.FileRecord;
|
||||||
import com.gxwebsoft.common.system.entity.User;
|
import com.gxwebsoft.common.system.entity.User;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.scheduling.annotation.Async;
|
import org.springframework.scheduling.annotation.Async;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@@ -53,6 +54,7 @@ public class AiCloudFileServiceImpl extends ServiceImpl<AiCloudFileMapper, AiClo
|
|||||||
private AiCloudDocService aiCloudDocService;
|
private AiCloudDocService aiCloudDocService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
|
@Lazy
|
||||||
private OaCompanyService oaCompanyService;
|
private OaCompanyService oaCompanyService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
package com.gxwebsoft.ai.util;
|
package com.gxwebsoft.ai.util;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.aliyun.bailian20231229.models.CreateIndexResponse;
|
import com.aliyun.bailian20231229.models.CreateIndexResponse;
|
||||||
import com.aliyun.bailian20231229.models.DeleteFileResponse;
|
import com.aliyun.bailian20231229.models.DeleteFileResponse;
|
||||||
import com.aliyun.bailian20231229.models.DeleteIndexDocumentResponse;
|
import com.aliyun.bailian20231229.models.DeleteIndexDocumentResponse;
|
||||||
@@ -41,6 +43,22 @@ public class KnowledgeBaseUtil {
|
|||||||
return client.retrieveWithOptions(workspaceId, retrieveRequest, null, runtime);
|
return client.retrieveWithOptions(workspaceId, retrieveRequest, null, runtime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static RetrieveResponse retrieveIndex(com.aliyun.bailian20231229.Client client, String workspaceId, String indexId, String query, List<String> filesIds) throws Exception {
|
||||||
|
RetrieveRequest retrieveRequest = new RetrieveRequest();
|
||||||
|
retrieveRequest.setIndexId(indexId);
|
||||||
|
retrieveRequest.setQuery(query);
|
||||||
|
retrieveRequest.setDenseSimilarityTopK(100);
|
||||||
|
retrieveRequest.setSparseSimilarityTopK(100);
|
||||||
|
retrieveRequest.setEnableReranking(false);//开启耗费巨量token
|
||||||
|
List<Map<String, String>> searchFilters = new ArrayList<>();
|
||||||
|
Map<String, String> searchFiltersTags = new HashMap<>();
|
||||||
|
searchFiltersTags.put("tags", JSON.toJSONString(filesIds));
|
||||||
|
searchFilters.add(searchFiltersTags);
|
||||||
|
retrieveRequest.setSearchFilters(searchFilters);
|
||||||
|
RuntimeOptions runtime = new RuntimeOptions();
|
||||||
|
return client.retrieveWithOptions(workspaceId, retrieveRequest, null, runtime);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 在阿里云百炼服务中创建知识库(初始化)。
|
* 在阿里云百炼服务中创建知识库(初始化)。
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -112,6 +112,10 @@ public class OaCompanyController extends BaseController {
|
|||||||
@Operation(summary = "删除企业信息")
|
@Operation(summary = "删除企业信息")
|
||||||
@DeleteMapping("/{id}")
|
@DeleteMapping("/{id}")
|
||||||
public ApiResult<?> remove(@PathVariable("id") Integer id) {
|
public ApiResult<?> remove(@PathVariable("id") Integer id) {
|
||||||
|
//删云目录
|
||||||
|
oaCompanyService.removeCompanyDocDirectories(id);
|
||||||
|
//删云知识库
|
||||||
|
oaCompanyService.removeCompanyKnowledgeBase(id);
|
||||||
if (oaCompanyService.removeById(id)) {
|
if (oaCompanyService.removeById(id)) {
|
||||||
return success("删除成功");
|
return success("删除成功");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,4 +46,19 @@ public interface OaCompanyService extends IService<OaCompany> {
|
|||||||
* @param userId 创建用户ID
|
* @param userId 创建用户ID
|
||||||
*/
|
*/
|
||||||
void initCompanyDocDirectories(OaCompany oaCompany, Integer userId);
|
void initCompanyDocDirectories(OaCompany oaCompany, Integer userId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 清空企业目录
|
||||||
|
*
|
||||||
|
* @param oaCompany 企业Id
|
||||||
|
*/
|
||||||
|
boolean removeCompanyDocDirectories(Integer companyId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 清空企业知识库
|
||||||
|
*
|
||||||
|
* @param oaCompany 企业Id
|
||||||
|
*/
|
||||||
|
boolean removeCompanyKnowledgeBase(Integer companyId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,24 @@
|
|||||||
package com.gxwebsoft.oa.service.impl;
|
package com.gxwebsoft.oa.service.impl;
|
||||||
|
|
||||||
import com.aliyun.bailian20231229.Client;
|
import com.aliyun.bailian20231229.Client;
|
||||||
|
import com.aliyun.bailian20231229.models.DeleteCategoryResponseBody;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.gxwebsoft.oa.mapper.OaCompanyMapper;
|
import com.gxwebsoft.oa.mapper.OaCompanyMapper;
|
||||||
import com.gxwebsoft.oa.service.OaCompanyService;
|
import com.gxwebsoft.oa.service.OaCompanyService;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
|
||||||
import com.gxwebsoft.oa.entity.OaCompany;
|
import com.gxwebsoft.oa.entity.OaCompany;
|
||||||
import com.gxwebsoft.oa.param.OaCompanyParam;
|
import com.gxwebsoft.oa.param.OaCompanyParam;
|
||||||
import com.gxwebsoft.ai.config.KnowledgeBaseConfig;
|
import com.gxwebsoft.ai.config.KnowledgeBaseConfig;
|
||||||
import com.gxwebsoft.ai.entity.AiCloudDoc;
|
import com.gxwebsoft.ai.entity.AiCloudDoc;
|
||||||
|
import com.gxwebsoft.ai.entity.AiCloudFile;
|
||||||
import com.gxwebsoft.ai.factory.KnowledgeBaseClientFactory;
|
import com.gxwebsoft.ai.factory.KnowledgeBaseClientFactory;
|
||||||
import com.gxwebsoft.ai.service.AiCloudDocService;
|
import com.gxwebsoft.ai.service.AiCloudDocService;
|
||||||
|
import com.gxwebsoft.ai.service.AiCloudFileService;
|
||||||
import com.gxwebsoft.ai.util.AiCloudDataCenterUtil;
|
import com.gxwebsoft.ai.util.AiCloudDataCenterUtil;
|
||||||
|
import com.gxwebsoft.ai.util.AiCloudKnowledgeBaseUtil;
|
||||||
import com.gxwebsoft.common.core.web.PageParam;
|
import com.gxwebsoft.common.core.web.PageParam;
|
||||||
import com.gxwebsoft.common.core.web.PageResult;
|
import com.gxwebsoft.common.core.web.PageResult;
|
||||||
|
|
||||||
@@ -21,6 +29,7 @@ import java.time.LocalDateTime;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 企业信息Service实现
|
* 企业信息Service实现
|
||||||
@@ -33,6 +42,9 @@ public class OaCompanyServiceImpl extends ServiceImpl<OaCompanyMapper, OaCompany
|
|||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private AiCloudDocService aiCloudDocService;
|
private AiCloudDocService aiCloudDocService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private AiCloudFileService aiCloudFileService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private KnowledgeBaseConfig config;
|
private KnowledgeBaseConfig config;
|
||||||
@@ -123,4 +135,58 @@ public class OaCompanyServiceImpl extends ServiceImpl<OaCompanyMapper, OaCompany
|
|||||||
// 批量保存子目录
|
// 批量保存子目录
|
||||||
aiCloudDocService.saveBatch(directories);
|
aiCloudDocService.saveBatch(directories);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean removeCompanyDocDirectories(Integer companyId) {
|
||||||
|
boolean ret = true;
|
||||||
|
String workspaceId = config.getWorkspaceId();
|
||||||
|
if(companyId==null) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
//目录
|
||||||
|
List<AiCloudDoc> docList = aiCloudDocService.list(new LambdaQueryWrapper<AiCloudDoc>().eq(AiCloudDoc::getCompanyId, companyId));
|
||||||
|
List<Integer> docIds = docList.stream().map(AiCloudDoc::getId).collect(Collectors.toList());
|
||||||
|
//先删目阿里云录下所有文件
|
||||||
|
List<AiCloudFile> fileList = aiCloudFileService.list(new LambdaQueryWrapper<AiCloudFile>().in(AiCloudFile::getDocId, docIds));
|
||||||
|
List<Integer> fileIds = fileList.stream().map(AiCloudFile::getId).collect(Collectors.toList());
|
||||||
|
for(AiCloudFile file : fileList) {
|
||||||
|
try {
|
||||||
|
Client client = clientFactory.createClient();
|
||||||
|
AiCloudDataCenterUtil.deleteFile(client, workspaceId, file.getFileId());
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//再删阿里云目录
|
||||||
|
List<String> categoryIds = docList.stream().map(AiCloudDoc::getCategoryId).filter(StrUtil::isNotBlank).distinct().collect(Collectors.toList());
|
||||||
|
for(String categoryId : categoryIds) {
|
||||||
|
try {
|
||||||
|
Client client = clientFactory.createClient();
|
||||||
|
ret = AiCloudDataCenterUtil.deleteCategory(client, workspaceId, categoryId).getBody().getSuccess();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
aiCloudDocService.removeByIds(docIds);
|
||||||
|
aiCloudFileService.removeByIds(fileIds);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean removeCompanyKnowledgeBase(Integer companyId) {
|
||||||
|
boolean ret = true;
|
||||||
|
String workspaceId = config.getWorkspaceId();
|
||||||
|
if(companyId==null) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
//删阿里云知识库
|
||||||
|
OaCompany oaCompany = baseMapper.selectById(companyId);
|
||||||
|
try {
|
||||||
|
Client client = clientFactory.createClient();
|
||||||
|
ret = AiCloudKnowledgeBaseUtil.deleteIndex(client, workspaceId, oaCompany.getKbId()).getBody().getSuccess();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package com.gxwebsoft.pwl.controller;
|
|||||||
import cn.afterturn.easypoi.excel.ExcelImportUtil;
|
import cn.afterturn.easypoi.excel.ExcelImportUtil;
|
||||||
import cn.afterturn.easypoi.excel.entity.ImportParams;
|
import cn.afterturn.easypoi.excel.entity.ImportParams;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import cn.hutool.core.util.RandomUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
@@ -135,7 +136,8 @@ public class PwlProjectController extends BaseController {
|
|||||||
//asLibCode = as00000000001
|
//asLibCode = as00000000001
|
||||||
String asLibCode = "as" + StrUtil.padPre(pwlProject.getId().toString(), 11, '0');
|
String asLibCode = "as" + StrUtil.padPre(pwlProject.getId().toString(), 11, '0');
|
||||||
// String asLibCode = "as"+pwlProject.getCode();
|
// String asLibCode = "as"+pwlProject.getCode();
|
||||||
String analysisKbId = knowledgeBaseService.createKnowledgeBase(asLibName, asLibCode);
|
// String analysisKbId = knowledgeBaseService.createKnowledgeBase(asLibName, asLibCode);
|
||||||
|
String analysisKbId = RandomUtil.randomString(10);
|
||||||
pwlProject.setAnalysisLibrary(analysisKbId);
|
pwlProject.setAnalysisLibrary(analysisKbId);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@@ -152,7 +154,8 @@ public class PwlProjectController extends BaseController {
|
|||||||
//pjLibCode = pj00000000001
|
//pjLibCode = pj00000000001
|
||||||
String pjLibCode = "pj" + StrUtil.padPre(pwlProject.getId().toString(), 11, '0');
|
String pjLibCode = "pj" + StrUtil.padPre(pwlProject.getId().toString(), 11, '0');
|
||||||
// String pjLibCode = "pj"+pwlProject.getCode();
|
// String pjLibCode = "pj"+pwlProject.getCode();
|
||||||
String projectKbId = knowledgeBaseService.createKnowledgeBase(pjLibName, pjLibCode);
|
// String projectKbId = knowledgeBaseService.createKnowledgeBase(pjLibName, pjLibCode);
|
||||||
|
String projectKbId = RandomUtil.randomString(10);
|
||||||
pwlProject.setProjectLibrary(projectKbId);
|
pwlProject.setProjectLibrary(projectKbId);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
|||||||
Reference in New Issue
Block a user