diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ProjectLibraryBaseMapper.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ProjectLibraryBaseMapper.java index 7710ab8fc..164a6fb5a 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ProjectLibraryBaseMapper.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/ProjectLibraryBaseMapper.java @@ -17,6 +17,7 @@ import java.util.Map; public interface ProjectLibraryBaseMapper extends BaseMapper { /**分页列表*/ List queryPageList(@Param("params") Map params); + List queryMaimList(); // IPage queryPageList(IPage page, Map params); List getList(@Param("projectLibraryBase") ProjectLibraryBase projectLibraryBase); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectLibraryBaseMapper.xml b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectLibraryBaseMapper.xml index 954daa5bf..f438c3f24 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectLibraryBaseMapper.xml +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/mapper/xml/ProjectLibraryBaseMapper.xml @@ -119,6 +119,15 @@ order by plb.sort desc, plb.create_time desc + diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryBaseServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryBaseServiceImpl.java index 9d42fd017..19caa49cd 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryBaseServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectLibraryBaseServiceImpl.java @@ -50,6 +50,7 @@ import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.shiro.SecurityUtils; +import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; @@ -491,19 +492,45 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl projectLibraryBaseListParent = projectLibraryBaseMapper.queryMaimList(); + disposeData(projectLibraryBaseListParent,"",false); + for(ProjectLibraryBase projectLibraryBase: projectLibraryBaseListParent){ + //目标市场 + String targetMarket = getMarket(params, targetMarketList, projectLibraryBase); + //主项目的版本号 + String projectVersion = ""; + if(StringUtils.isBlank(projectLibraryBase.getParentId())){ + projectVersion = "00"; + }else{ + projectVersion = projectLibraryBase.getProjectVersion(); + } + if(StringUtils.isNotBlank(projectLibraryBase.getYearName())){ + projectLibraryBase.setProjectName(projectLibraryBase.getProjectName() + + "-" + projectLibraryBase.getYearName() + + "-" + targetMarket + + "-" + projectVersion); + } + } + //项目名称模糊查询特殊处理(因为项目名称是多字段拼接的) if(ObjectUtils.isNotEmpty(params.get("projectName"))){ result = result.stream().filter(e->e.getProjectName().toLowerCase().contains(String.valueOf(params.get("projectName")).toLowerCase())).collect(Collectors.toList()); } - //数据组装 - List resultTemp = new LinkedList<>(); - for (ProjectLibraryBase projectLibraryBase : result) { - if(StringUtils.isBlank(projectLibraryBase.getParentId())){ - resultTemp.add(projectLibraryBase); - } - } - for (ProjectLibraryBase projectLibraryBase : resultTemp) { + //处理搜索版本号,(因为列表展示数据是以主项目为主并绑定子项目, 所以搜索的时候只有子项目这种情况需要特殊处理) + List resultNew = getProjectLibraryBases(result, projectLibraryBaseListParent); + + + //数据组装 +// List resultTemp = new LinkedList<>(); +// for (ProjectLibraryBase projectLibraryBase : result) { +// if(StringUtils.isBlank(projectLibraryBase.getParentId())){ +// resultTemp.add(projectLibraryBase); +// } +// } + + for (ProjectLibraryBase projectLibraryBase : resultNew) { //子项目 List children = result.stream() .filter(e -> StringUtils.isNotBlank(e.getParentId()) && projectLibraryBase.getId().equals(e.getParentId())).collect(Collectors.toList()); @@ -527,9 +554,135 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl getProjectLibraryBases(List result, List projectLibraryBaseListParent) { + //result中的主项目以及子项目对应的主项目 + List resultParent = new LinkedList<>(); + for (ProjectLibraryBase projectLibraryBase : result) { + if(StringUtils.isBlank(projectLibraryBase.getParentId())){ + resultParent.add(projectLibraryBase); + }else{ + //子项目 + List collect = result.stream() + .filter(e -> projectLibraryBase.getId().equals(e.getParentId())) + .collect(Collectors.toList()); + if(ObjectUtils.isNotEmpty(collect)){ + resultParent.addAll(collect); + } + + } + } + + //搜索结果中子项目的子项目 + List resultChild = new ArrayList<>(); + //所有子项目 + List childrenListTemp = result.stream().filter(e -> StringUtils.isNotBlank(e.getParentId())).collect(Collectors.toList()); + List childrenIdListTemp = childrenListTemp.stream().map(ProjectLibraryBase::getId).collect(Collectors.toList()); + + //子项目的子项目 + List collect3 = result.stream().filter(e -> StringUtils.isNotBlank(e.getParentId()) && childrenIdListTemp.contains(e.getParentId())).collect(Collectors.toList()); + + if(ObjectUtils.isNotEmpty(collect3)){ + //子项目的子项目的父id + List childList = collect3.stream().map(ProjectLibraryBase::getParentId).collect(Collectors.toList()); + //子项目 + resultChild = childrenListTemp.stream().filter(e -> childList.contains(e.getId())).collect(Collectors.toList()); + } + + + //所有的主项目与通过筛选条件查询来的主项目进行过滤 + List resultNew = new LinkedList<>(); + //主项目 + List collect1 = result.stream().filter(e -> StringUtils.isBlank(e.getParentId())).collect(Collectors.toList()); + resultNew.addAll(collect1); + for (ProjectLibraryBase projectLibraryBase : projectLibraryBaseListParent) { + //子项目 + List collect = result.stream().filter(e -> projectLibraryBase.getId().equals(e.getParentId())).collect(Collectors.toList()); + if(ObjectUtils.isNotEmpty(collect)){ + resultNew.add(projectLibraryBase); + } + //子项目的子项目 + if(ObjectUtils.isNotEmpty(resultChild)){ + List collect2 = resultChild.stream().filter(e -> e.getParentId().equals(projectLibraryBase.getId())).collect(Collectors.toList()); + if(ObjectUtils.isNotEmpty(collect2)){ + resultNew.add(projectLibraryBase); + } + } + } + resultNew = resultNew.stream().distinct().collect(Collectors.toList()); + return resultNew; + } +// /** +// * 分页列表查询 +// * +// * @return +// */ +// @Override +// public List queryPageList(Map params) { +// List result = projectLibraryBaseMapper.queryPageList(params); +// disposeData(result,"",false); +// //目标市场 +// List targetMarketList = sysDictService.queryDictItemsByCode(DicCodeEnum.REGION.getCode()); +// +// for(ProjectLibraryBase projectLibraryBase: result){ +// //目标市场 +// String targetMarket = getMarket(params, targetMarketList, projectLibraryBase); +// //主项目的版本号 +// String projectVersion = ""; +// if(StringUtils.isBlank(projectLibraryBase.getParentId())){ +// projectVersion = "00"; +// }else{ +// projectVersion = projectLibraryBase.getProjectVersion(); +// } +// if(StringUtils.isNotBlank(projectLibraryBase.getYearName())){ +// projectLibraryBase.setProjectName(projectLibraryBase.getProjectName() +// + "-" + projectLibraryBase.getYearName() +// + "-" + targetMarket +// + "-" + projectVersion); +// } +// } +// //项目名称模糊查询特殊处理(因为项目名称是多字段拼接的) +// if(ObjectUtils.isNotEmpty(params.get("projectName"))){ +// result = result.stream().filter(e->e.getProjectName().toLowerCase().contains(String.valueOf(params.get("projectName")).toLowerCase())).collect(Collectors.toList()); +// } +// //数据组装 +// List resultTemp = new LinkedList<>(); +// for (ProjectLibraryBase projectLibraryBase : result) { +// if(StringUtils.isBlank(projectLibraryBase.getParentId())){ +// resultTemp.add(projectLibraryBase); +// } +// } +// +// for (ProjectLibraryBase projectLibraryBase : resultTemp) { +// //子项目 +// List children = result.stream() +// .filter(e -> StringUtils.isNotBlank(e.getParentId()) && projectLibraryBase.getId().equals(e.getParentId())).collect(Collectors.toList()); +// if(children.size() != 0){ +// //子项目的基础上添加的子项目 +// List childrenIdList = children.stream().map(ProjectLibraryBase::getId).distinct().collect(Collectors.toList()); +// List childrenList = result.stream() +// .filter(e -> StringUtils.isNotBlank(e.getParentId()) && childrenIdList.contains(e.getParentId())).collect(Collectors.toList()); +// children.addAll(childrenList); +// +// //按版本排序 +// Collections.sort(children); +// projectLibraryBase.setChildren(children); +// //最后一个版本号(主项目和主项目都需要设置) +// String versionLast = children.get(children.size() - 1).getProjectVersion(); +// //主版本设置最后一个版本号(用于项目扩展中的版本号) +// projectLibraryBase.setVersionLast(versionLast); +// for (ProjectLibraryBase child : children) { +// //每个子版本版本设置最后一个版本号(用于项目扩展中的版本号) +// child.setVersionLast(versionLast); +// } +// } +// } +// return resultTemp; +// } + private String getMarket(Map params, List targetMarketList, ProjectLibraryBase projectLibraryBase) { List dictModelList = new ArrayList<>(); for (String s : projectLibraryBase.getTargetMarket().split(",")) {