优化企业删除、项目创建功能

This commit is contained in:
2026-01-20 16:35:43 +08:00
parent ae1e150d1c
commit d04305c325
6 changed files with 110 additions and 2 deletions

View File

@@ -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

View File

@@ -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);
}
/** /**
* 在阿里云百炼服务中创建知识库(初始化)。 * 在阿里云百炼服务中创建知识库(初始化)。
* *

View File

@@ -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("删除成功");
} }

View File

@@ -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);
} }

View File

@@ -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实现
@@ -34,6 +43,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;
}
} }

View File

@@ -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();