From 840752485bc786c10c46c5823d1dba30200a11c9 Mon Sep 17 00:00:00 2001 From: chenxudong Date: Mon, 13 Jan 2025 10:25:22 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=91=E7=8E=B0=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/serviceimpl/CommonService.java | 31 +++++++++++++++++++ .../serviceimpl/EdFileInfoServiceImpl.java | 21 ++++++++++--- 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/CommonService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/CommonService.java index 13caa97..b5d792d 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/CommonService.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/CommonService.java @@ -361,4 +361,35 @@ public class CommonService { String prjId = paths.get(0); return edFileInfoMapper.selectById(prjId).getFileName(); } + + public Set selectPrjLeafs() { + List prjInfo = queryAllPrjInfo(true, null); + Set res = new HashSet<>(); + prjInfo.forEach(e -> { + ProjectVO projectVO = JSONUtil.toList(e, ProjectVO.class).get(0); + Set leafIds = getLeafNodes(projectVO).stream().map(ProjectVO::getId).collect(Collectors.toSet()); + res.addAll(leafIds); + }); + return res; + } + + private static List getLeafNodes(ProjectVO root) { + List leafNodes = new ArrayList<>(); + if (root == null) { + return leafNodes; + } + findLeafNodes(root, leafNodes); + return leafNodes; + } + + private static void findLeafNodes(ProjectVO node, List leafNodes) { + if (node.getChildren().isEmpty()) { + leafNodes.add(node); + } else { + for (ProjectVO child : node.getChildren()) { + findLeafNodes(child, leafNodes); + } + } + } + } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java index 5ba3486..cb2f17d 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java @@ -931,15 +931,26 @@ public class EdFileInfoServiceImpl extends ServiceImpl uploadRecord(int pageNum, int pageSize) { - List prjIds = permissionService.getAccessibleTree(); //TODO 从权限处获取该用户有哪些工程的权限,这里先写静态,方便调试 + List accessibleIds = permissionService.getAccessibleTree(); + Set allLeafIds = commonService.selectPrjLeafs(); + List list = new ArrayList<>(); + for (String leafId : allLeafIds) { + if (accessibleIds.contains(leafId)) { + list.add(leafId); + } + } + if (CollUtil.isEmpty(list)) { + return ElectromagneticResultUtil.success(new UploadRecordVO(0, new ArrayList<>())); + } LambdaQueryWrapper lambdaQuery = Wrappers.lambdaQuery(EdFileInfo.class) .select(EdFileInfo::getId, EdFileInfo::getFileName, EdFileInfo::getSaveStatus, EdFileInfo::getCreatedTime, EdFileInfo::getFileType) .eq(EdFileInfo::getDataType, EleDataTypeEnum.FILE.code) .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code); - for (int i = 0; i < prjIds.size(); i++) { - String prjId = prjIds.get(i); - lambdaQuery.or(qr -> qr.likeRight(EdFileInfo::getFilePath, prjId + MYSQL_FILE_PATH_SPLIT)); - } + lambdaQuery.or(qr -> { + for (String id : list) { + qr.likeRight(EdFileInfo::getFileCode, id); + } + }); Page edFileInfoPage = this.baseMapper.selectPage(new Page<>(pageNum, pageSize), lambdaQuery); long total = edFileInfoPage.getTotal(); List uploadRecordDTOS = BeanUtil.copyToList(edFileInfoPage.getRecords(), UploadRecordDTO.class);