优化企业删除、项目创建功能
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.User;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
@@ -53,6 +54,7 @@ public class AiCloudFileServiceImpl extends ServiceImpl<AiCloudFileMapper, AiClo
|
||||
private AiCloudDocService aiCloudDocService;
|
||||
|
||||
@Resource
|
||||
@Lazy
|
||||
private OaCompanyService oaCompanyService;
|
||||
|
||||
@Resource
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
package com.gxwebsoft.ai.util;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.aliyun.bailian20231229.models.CreateIndexResponse;
|
||||
import com.aliyun.bailian20231229.models.DeleteFileResponse;
|
||||
import com.aliyun.bailian20231229.models.DeleteIndexDocumentResponse;
|
||||
@@ -41,6 +43,22 @@ public class KnowledgeBaseUtil {
|
||||
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 = "删除企业信息")
|
||||
@DeleteMapping("/{id}")
|
||||
public ApiResult<?> remove(@PathVariable("id") Integer id) {
|
||||
//删云目录
|
||||
oaCompanyService.removeCompanyDocDirectories(id);
|
||||
//删云知识库
|
||||
oaCompanyService.removeCompanyKnowledgeBase(id);
|
||||
if (oaCompanyService.removeById(id)) {
|
||||
return success("删除成功");
|
||||
}
|
||||
|
||||
@@ -46,4 +46,19 @@ public interface OaCompanyService extends IService<OaCompany> {
|
||||
* @param userId 创建用户ID
|
||||
*/
|
||||
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;
|
||||
|
||||
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.gxwebsoft.oa.mapper.OaCompanyMapper;
|
||||
import com.gxwebsoft.oa.service.OaCompanyService;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
|
||||
import com.gxwebsoft.oa.entity.OaCompany;
|
||||
import com.gxwebsoft.oa.param.OaCompanyParam;
|
||||
import com.gxwebsoft.ai.config.KnowledgeBaseConfig;
|
||||
import com.gxwebsoft.ai.entity.AiCloudDoc;
|
||||
import com.gxwebsoft.ai.entity.AiCloudFile;
|
||||
import com.gxwebsoft.ai.factory.KnowledgeBaseClientFactory;
|
||||
import com.gxwebsoft.ai.service.AiCloudDocService;
|
||||
import com.gxwebsoft.ai.service.AiCloudFileService;
|
||||
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.PageResult;
|
||||
|
||||
@@ -21,6 +29,7 @@ import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 企业信息Service实现
|
||||
@@ -33,6 +42,9 @@ public class OaCompanyServiceImpl extends ServiceImpl<OaCompanyMapper, OaCompany
|
||||
|
||||
@Autowired
|
||||
private AiCloudDocService aiCloudDocService;
|
||||
|
||||
@Autowired
|
||||
private AiCloudFileService aiCloudFileService;
|
||||
|
||||
@Autowired
|
||||
private KnowledgeBaseConfig config;
|
||||
@@ -123,4 +135,58 @@ public class OaCompanyServiceImpl extends ServiceImpl<OaCompanyMapper, OaCompany
|
||||
// 批量保存子目录
|
||||
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.entity.ImportParams;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
@@ -135,7 +136,8 @@ public class PwlProjectController extends BaseController {
|
||||
//asLibCode = as00000000001
|
||||
String asLibCode = "as" + StrUtil.padPre(pwlProject.getId().toString(), 11, '0');
|
||||
// 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);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
@@ -152,7 +154,8 @@ public class PwlProjectController extends BaseController {
|
||||
//pjLibCode = pj00000000001
|
||||
String pjLibCode = "pj" + StrUtil.padPre(pwlProject.getId().toString(), 11, '0');
|
||||
// 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);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
|
||||
Reference in New Issue
Block a user