From 88c0238889decb96db8af73236af120b5a3ff0b8 Mon Sep 17 00:00:00 2001 From: guoxin <371864209@qq.com> Date: Thu, 28 Sep 2023 15:36:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=BB=BC=E5=90=88=E6=B5=8F?= =?UTF-8?q?=E8=A7=88=E6=95=B0=E6=8D=AE=E8=B5=84=E6=BA=90=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6=E5=8C=85=E5=90=AB=E7=BD=AE=E6=A0=87=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E5=90=8E=E6=95=B0=E6=8D=AE=E5=BA=93=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=85=A2=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/MetadataSearchService.java | 70 ++++++++----------- .../src/main/resources/application-dev.yml | 2 +- .../mapper/DirectoryResourceMapper.java | 45 ++++++++++++ 3 files changed, 76 insertions(+), 41 deletions(-) diff --git a/shandan-browser/src/main/java/com/keyware/shandan/browser/service/MetadataSearchService.java b/shandan-browser/src/main/java/com/keyware/shandan/browser/service/MetadataSearchService.java index 01a7f2b..885c764 100644 --- a/shandan-browser/src/main/java/com/keyware/shandan/browser/service/MetadataSearchService.java +++ b/shandan-browser/src/main/java/com/keyware/shandan/browser/service/MetadataSearchService.java @@ -4,11 +4,11 @@ import cn.hutool.core.util.ReflectUtil; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.keyware.shandan.bianmu.entity.DataLabelsVo; import com.keyware.shandan.bianmu.entity.DirectoryResource; import com.keyware.shandan.bianmu.entity.DirectoryVo; -import com.keyware.shandan.bianmu.enums.DirectoryType; -import com.keyware.shandan.bianmu.enums.ReviewStatus; import com.keyware.shandan.bianmu.mapper.DirectoryResourceMapper; +import com.keyware.shandan.bianmu.service.DataLabelsService; import com.keyware.shandan.bianmu.service.DirectoryService; import com.keyware.shandan.browser.entity.PageVo; import com.keyware.shandan.browser.entity.SearchConditionVo; @@ -20,6 +20,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.Assert; import java.lang.reflect.Field; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -36,26 +37,40 @@ public class MetadataSearchService { @Autowired private DirectoryResourceMapper directoryResourceMapper; + @Autowired + private DataLabelsService labelsService; + public PageVo searchByCondition(String directoryId, SearchConditionVo condition) { - QueryWrapper queryWrapper = buildQueryWrapper(directoryId, condition); - return PageVo.pageConvert(directoryResourceMapper.selectPage(new Page<>(condition.getPage(), condition.getSize()), queryWrapper)); + DirectoryVo parent = directoryService.getById(directoryId); + Assert.notNull(parent, "资源目录未找到"); + QueryWrapper queryWrapper = buildQueryWrapper(parent, condition); + List labels = new ArrayList<>(); + condition.getConditions().stream().filter(item -> "markTag".equals(item.getFieldName())).findFirst().ifPresent(item -> { + String tagIds = item.getFieldValue(); + labels.addAll(labelsService.listByIds(Arrays.asList(tagIds.split(",")))); + }); + labels.forEach(label -> label.setIdPath(label.getIdPath() + label.getId() + "/")); + Page page = directoryResourceMapper.customSelectPage(new Page<>(condition.getPage(), condition.getSize()), parent.getDirectoryPath() + "/", labels, queryWrapper); + return PageVo.pageConvert(page); } public List searchAllListByCondition(String directoryId, SearchConditionVo condition) { - QueryWrapper queryWrapper = buildQueryWrapper(directoryId, condition); - return directoryResourceMapper.selectList(queryWrapper); + DirectoryVo parent = directoryService.getById(directoryId); + Assert.notNull(parent, "资源目录未找到"); + QueryWrapper queryWrapper = buildQueryWrapper(parent, condition); + List labels = new ArrayList<>(); + condition.getConditions().stream().filter(item -> "markTag".equals(item.getFieldName())).findFirst().ifPresent(item -> { + String tagIds = item.getFieldValue(); + labels.addAll(labelsService.listByIds(Arrays.asList(tagIds.split(",")))); + }); + labels.forEach(label -> label.setIdPath(label.getIdPath() + label.getId() + "/")); + return directoryResourceMapper.customSelectList(parent.getDirectoryPath() + "/", labels, queryWrapper); } - public QueryWrapper buildQueryWrapper(String directoryId, SearchConditionVo condition) { + public QueryWrapper buildQueryWrapper(DirectoryVo dir, SearchConditionVo condition) { QueryWrapper queryWrapper = new QueryWrapper<>(); - DirectoryVo dir = directoryService.getById(directoryId); - Assert.notNull(dir, "资源目录未找到"); - - // 查找当前目录下审核通过的下级目录 - List parentIds = StreamUtil.as(getAllDirChildren(dir)).map(DirectoryVo::getId).toList(); - queryWrapper.in("PARENT_ID", parentIds); - queryWrapper.and(condition.getConditions().size() > 0, wrapper -> { + queryWrapper.and(!condition.getConditions().isEmpty(), wrapper -> { StreamUtil.as(condition.getConditions()).forEach(item -> { switch (item.getFieldName()) { case "inputDate": @@ -84,23 +99,12 @@ public class MetadataSearchService { wrapper.and(StringUtils.hasText(value.trim()), qw -> { if ("eq".equals(item.getLogicJudgement())) { qw.eq("RESOURCE_NAME", value.trim())/*.or().eq("RESOURCE_COMMENT", value.trim())*/; - }else{ + } else { qw.like("RESOURCE_NAME", value.trim())/*.or().like("RESOURCE_COMMENT", value.trim())*/; } }); } } - break; - case "markTag": - String tagIds = item.getFieldValue(); - List ids = Arrays.asList(tagIds.split(",")); - if (!ids.isEmpty()) { - StringBuilder existsSql = new StringBuilder("select 1 from (select ENTITY_ID, WM_CONCAT(LABEL_ID) LABEL_IDS from B_DATA_LABEL_ENTITY DLN where DLN.ENTITY_ID = V_DIRECTORY_RESOURCE.ID group by ENTITY_ID) tmp1"); - List andSqlList = ids.stream().map(id -> "tmp1.LABEL_IDS like '%" + id + "%'").collect(Collectors.toList()); - existsSql.append(" where ").append(String.join(" and ", andSqlList)); - wrapper.exists(existsSql.toString()); - } - break; default: } @@ -121,18 +125,4 @@ public class MetadataSearchService { } return queryWrapper; } - - /** - * 获取指定目录下 所有审核通过的下级目录集合 - * - * @param parent 上级目录 - * @return 目录集合 - */ - private List getAllDirChildren(DirectoryVo parent) { - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.likeRight("DIRECTORY_PATH", parent.getDirectoryPath()) - .in("DIRECTORY_TYPE", DirectoryType.DIRECTORY, DirectoryType.LINK_DIR) - .in("REVIEW_STATUS", ReviewStatus.PASS, ReviewStatus.SUBMITTED); - return directoryService.list(wrapper); - } } diff --git a/shandan-control/src/main/resources/application-dev.yml b/shandan-control/src/main/resources/application-dev.yml index e8ef48f..1ef106a 100644 --- a/shandan-control/src/main/resources/application-dev.yml +++ b/shandan-control/src/main/resources/application-dev.yml @@ -47,4 +47,4 @@ project: logging: level: - com.keyware: info + com.keyware: debug diff --git a/shandan-system/src/main/java/com/keyware/shandan/bianmu/mapper/DirectoryResourceMapper.java b/shandan-system/src/main/java/com/keyware/shandan/bianmu/mapper/DirectoryResourceMapper.java index cafa5ce..accc20f 100644 --- a/shandan-system/src/main/java/com/keyware/shandan/bianmu/mapper/DirectoryResourceMapper.java +++ b/shandan-system/src/main/java/com/keyware/shandan/bianmu/mapper/DirectoryResourceMapper.java @@ -1,9 +1,54 @@ package com.keyware.shandan.bianmu.mapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.keyware.shandan.bianmu.entity.DataLabelsVo; import com.keyware.shandan.bianmu.entity.DirectoryResource; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.ResultType; +import org.apache.ibatis.annotations.Select; + +import java.util.List; @Mapper public interface DirectoryResourceMapper extends BaseMapper { + + @Select("") + @ResultType(DirectoryResource.class) + List customSelectList(@Param("dirPath") String dirPath, @Param("labels") List labels, @Param(Constants.WRAPPER) QueryWrapper queryWrapper); + + @Select("") + @ResultType(DirectoryResource.class) + Page customSelectPage(Page page, @Param("dirPath") String dirPath, @Param("labels") List labels, @Param(Constants.WRAPPER) QueryWrapper queryWrapper); }