diff --git a/src/main/java/com/gxwebsoft/ai/service/impl/AiCloudFileServiceImpl.java b/src/main/java/com/gxwebsoft/ai/service/impl/AiCloudFileServiceImpl.java index ded695f..c38d5a3 100644 --- a/src/main/java/com/gxwebsoft/ai/service/impl/AiCloudFileServiceImpl.java +++ b/src/main/java/com/gxwebsoft/ai/service/impl/AiCloudFileServiceImpl.java @@ -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 filesIds) throws Exception { + RetrieveRequest retrieveRequest = new RetrieveRequest(); + retrieveRequest.setIndexId(indexId); + retrieveRequest.setQuery(query); + retrieveRequest.setDenseSimilarityTopK(100); + retrieveRequest.setSparseSimilarityTopK(100); + retrieveRequest.setEnableReranking(false);//开启耗费巨量token + List> searchFilters = new ArrayList<>(); + Map 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); + } + /** * 在阿里云百炼服务中创建知识库(初始化)。 * diff --git a/src/main/java/com/gxwebsoft/oa/controller/OaCompanyController.java b/src/main/java/com/gxwebsoft/oa/controller/OaCompanyController.java index 84d1dfd..9110cba 100644 --- a/src/main/java/com/gxwebsoft/oa/controller/OaCompanyController.java +++ b/src/main/java/com/gxwebsoft/oa/controller/OaCompanyController.java @@ -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("删除成功"); } diff --git a/src/main/java/com/gxwebsoft/oa/service/OaCompanyService.java b/src/main/java/com/gxwebsoft/oa/service/OaCompanyService.java index 5b0fa01..dd91ee7 100644 --- a/src/main/java/com/gxwebsoft/oa/service/OaCompanyService.java +++ b/src/main/java/com/gxwebsoft/oa/service/OaCompanyService.java @@ -46,4 +46,19 @@ public interface OaCompanyService extends IService { * @param userId 创建用户ID */ void initCompanyDocDirectories(OaCompany oaCompany, Integer userId); + + /** + * 清空企业目录 + * + * @param oaCompany 企业Id + */ + boolean removeCompanyDocDirectories(Integer companyId); + + /** + * 清空企业知识库 + * + * @param oaCompany 企业Id + */ + boolean removeCompanyKnowledgeBase(Integer companyId); + } diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/OaCompanyServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/OaCompanyServiceImpl.java index aa67eb5..f1b8937 100644 --- a/src/main/java/com/gxwebsoft/oa/service/impl/OaCompanyServiceImpl.java +++ b/src/main/java/com/gxwebsoft/oa/service/impl/OaCompanyServiceImpl.java @@ -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 docList = aiCloudDocService.list(new LambdaQueryWrapper().eq(AiCloudDoc::getCompanyId, companyId)); + List docIds = docList.stream().map(AiCloudDoc::getId).collect(Collectors.toList()); + //先删目阿里云录下所有文件 + List fileList = aiCloudFileService.list(new LambdaQueryWrapper().in(AiCloudFile::getDocId, docIds)); + List 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 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; + } } diff --git a/src/main/java/com/gxwebsoft/pwl/controller/PwlProjectController.java b/src/main/java/com/gxwebsoft/pwl/controller/PwlProjectController.java index c6cc47f..18c0fca 100644 --- a/src/main/java/com/gxwebsoft/pwl/controller/PwlProjectController.java +++ b/src/main/java/com/gxwebsoft/pwl/controller/PwlProjectController.java @@ -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();