From f136c0de8e6789115fab9a9fc6a3630c44e8e7cb Mon Sep 17 00:00:00 2001 From: gulongcheng <474084054@qq.com> Date: Fri, 6 Feb 2026 09:43:46 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E5=85=AC=E5=B7=AE=E5=88=86=E6=9E=90?= =?UTF-8?q?=E5=BA=93=E4=B9=9F=E9=9C=80=E8=A6=81=E8=B5=B0=E5=AE=A1=E6=89=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sdm/common/entity/enums/DirTypeEnum.java | 42 +++++++++++++++++++ .../impl/MinioFileIDataFileServiceImpl.java | 31 +++++++------- 2 files changed, 57 insertions(+), 16 deletions(-) diff --git a/common/src/main/java/com/sdm/common/entity/enums/DirTypeEnum.java b/common/src/main/java/com/sdm/common/entity/enums/DirTypeEnum.java index ec453551..677a7c03 100644 --- a/common/src/main/java/com/sdm/common/entity/enums/DirTypeEnum.java +++ b/common/src/main/java/com/sdm/common/entity/enums/DirTypeEnum.java @@ -107,4 +107,46 @@ public enum DirTypeEnum { public static final List getInitSpmdDir() { return INIT_SPMD_DIR; } + + /** + * 需要走审批流程的目录类型列表 + * 目前包括:知识库、公差分析库 + */ + private static final List APPROVAL_REQUIRED_DIRS = List.of( + DirTypeEnum.KNOWLEDGE_BASE_DIR, + DirTypeEnum.TOLERANCE_ANALYSIS_DIR + ); + + /** + * 获取需要走审批流程的目录类型列表 + * @return 需要审批的目录类型列表 + */ + public static List getApprovalRequiredDirs() { + return APPROVAL_REQUIRED_DIRS; + } + + /** + * 判断指定目录类型是否需要走审批流程 + * @param dirType 目录类型值 + * @return true-需要审批,false-不需要审批 + */ + public static boolean isApprovalRequired(Integer dirType) { + if (dirType == null) { + return false; + } + return APPROVAL_REQUIRED_DIRS.stream() + .anyMatch(dir -> dir.getValue() == dirType); + } + + /** + * 判断指定目录类型枚举是否需要走审批流程 + * @param dirTypeEnum 目录类型枚举 + * @return true-需要审批,false-不需要审批 + */ + public static boolean isApprovalRequired(DirTypeEnum dirTypeEnum) { + if (dirTypeEnum == null) { + return false; + } + return APPROVAL_REQUIRED_DIRS.contains(dirTypeEnum); + } } diff --git a/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java b/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java index 92686327..6d72cfe9 100644 --- a/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java +++ b/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java @@ -548,9 +548,9 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { .eq(FileMetadataInfo::getParentId, rootDirId) .exists(); - // 3. 知识库且非空目录:走审批流程,审批通过后由 DeleteApproveStrategy 移入回收站 - boolean isKnowledgeDir = Objects.equals(DirTypeEnum.KNOWLEDGE_BASE_DIR.getValue(), dirType); - if (isKnowledgeDir && hasChildren) { + // 3. 需要审批的目录类型且非空:走审批流程,审批通过后由 DeleteApproveStrategy 移入回收站 + boolean requiresApproval = DirTypeEnum.isApprovalRequired(dirType); + if (requiresApproval && hasChildren) { Set allFileIds = new HashSet<>(); Set allDirIds = new HashSet<>(); collectRecursiveIds(rootDirId, allFileIds, allDirIds); @@ -705,8 +705,8 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { .eq(FileMetadataInfo::getDataType, DataTypeEnum.DIRECTORY.getValue()) .one(); - // 知识库文件:走审批流程,审批通过后由 DeleteApproveStrategy 移入回收站 - if (dirMetadataInfo != null && Objects.equals(DirTypeEnum.KNOWLEDGE_BASE_DIR.getValue(), dirMetadataInfo.getDirType())) { + // 需要审批的目录类型下的文件:走审批流程,审批通过后由 DeleteApproveStrategy 移入回收站 + if (dirMetadataInfo != null && DirTypeEnum.isApprovalRequired(dirMetadataInfo.getDirType())) { return launchKnowledgeBaseDeletionApproval( List.of(deleteFileMetadataInfo), Set.of(delFileId), @@ -787,8 +787,8 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { queryBigFileReq.setFileSuffix(queryBigFileReq.getFileSuffix().toLowerCase()); } - if (Objects.equals(DirTypeEnum.KNOWLEDGE_BASE_DIR.getValue(), dirType)) { - // 知识库文件:排除新增在审批的文件 + if (DirTypeEnum.isApprovalRequired(dirType)) { + // 需要审批的目录类型:排除新增在审批的文件 queryBigFileReq.setApproveTypeList(fileDatdList); } @@ -1881,7 +1881,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { fileInfo.setTemplateId(req.getTemplateId()); fileInfo.setTemplateName(req.getTemplateName()); - boolean isknowledge = Objects.equals(DirTypeEnum.KNOWLEDGE_BASE_DIR.getValue(), dirMetadataInfo.getDirType()); + boolean isknowledge = DirTypeEnum.isApprovalRequired(dirMetadataInfo.getDirType()); if (isknowledge) { fileInfo.setApprovalStatus(ApprovalFileDataStatusEnum.PENDING.getKey()); fileInfo.setApproveType(ApproveFileDataTypeEnum.UPLOAD_REVIEWING.getCode()); @@ -2185,7 +2185,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { } private void triggerKnowledgeApproveIfNeeded(UploadFilesReq req, FileMetadataInfo fileInfo, FileMetadataInfo dirMetadataInfo) { - if (!Objects.equals(DirTypeEnum.KNOWLEDGE_BASE_DIR.getValue(), dirMetadataInfo.getDirType())) { + if (!DirTypeEnum.isApprovalRequired(dirMetadataInfo.getDirType())) { return; } FileApproveRequestBuilder uploadFileApproveRequestBuilder = FileApproveRequestBuilder.builder() @@ -2343,8 +2343,8 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { Long versionNo = fileMetadataInfo.getVersionNo(); // 修改待审批的元数据主键id if (ObjectUtils.isEmpty(req.getFile())) { - // 知识库,增加审批的逻辑,先将原始数据改成待审核状态 - if(dirMetadataInfo!=null&&Objects.equals(DirTypeEnum.KNOWLEDGE_BASE_DIR.getValue(), dirMetadataInfo.getDirType())){ + // 需要审批的目录类型,增加审批的逻辑,先将原始数据改成待审核状态 + if(dirMetadataInfo!=null && DirTypeEnum.isApprovalRequired(dirMetadataInfo.getDirType())){ FileMetadataInfo tempFileMetadataInfo = new FileMetadataInfo(); BeanUtils.copyProperties(fileMetadataInfo, tempFileMetadataInfo); // 不需要上传minio新文件,只更新文件元数据 @@ -2530,9 +2530,9 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { // 创建默认权限记录 createFilePermission(newFileInfo.getId()); - // 知识库创建审批流 - boolean isKnowledge = dirMetadataInfo != null && Objects.equals(DirTypeEnum.KNOWLEDGE_BASE_DIR.getValue(), dirMetadataInfo.getDirType()); - // 知识库修改 + // 需要审批的目录类型创建审批流 + boolean isKnowledge = dirMetadataInfo != null && DirTypeEnum.isApprovalRequired(dirMetadataInfo.getDirType()); + // 需要审批的目录类型修改 if(isKnowledge){ // 新增的一条暂时不展示 newFileInfo.setIsLatest(false); @@ -3362,8 +3362,7 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { .eq(FileMetadataInfo::getId, parentId) .eq(FileMetadataInfo::getDataType, DataTypeEnum.DIRECTORY.getValue()) .one(); - boolean isKnowledge = dirMetadataInfo != null && - Objects.equals(DirTypeEnum.KNOWLEDGE_BASE_DIR.getValue(), dirMetadataInfo.getDirType()); + boolean isKnowledge = dirMetadataInfo != null && DirTypeEnum.isApprovalRequired(dirMetadataInfo.getDirType()); if (isKnowledge) { // 构建审批内容