项目库添加版本搜索
This commit is contained in:
+1
@@ -17,6 +17,7 @@ import java.util.Map;
|
||||
public interface ProjectLibraryBaseMapper extends BaseMapper<ProjectLibraryBase> {
|
||||
/**分页列表*/
|
||||
List<ProjectLibraryBase> queryPageList(@Param("params") Map<String, Object> params);
|
||||
List<ProjectLibraryBase> queryMaimList();
|
||||
// IPage<ProjectLibraryBase> queryPageList(IPage page, Map<String, Object> params);
|
||||
|
||||
List<ProjectLibraryBase> getList(@Param("projectLibraryBase") ProjectLibraryBase projectLibraryBase);
|
||||
|
||||
+9
@@ -119,6 +119,15 @@
|
||||
</where>
|
||||
order by plb.sort desc, plb.create_time desc
|
||||
</select>
|
||||
<select id="queryMaimList" resultType="com.jero.modules.project.entity.ProjectLibraryBase">
|
||||
|
||||
<include refid="select_item"/>
|
||||
|
||||
<where>
|
||||
parent_id = '' or parent_id is null
|
||||
</where>
|
||||
order by plb.sort desc, plb.create_time desc
|
||||
</select>
|
||||
<!-- <select id="queryPageList" resultType="com.jero.modules.project.entity.ProjectLibraryBase">-->
|
||||
|
||||
<!-- <include refid="select_item"/>-->
|
||||
|
||||
+162
-9
@@ -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<ProjectLibraryBas
|
||||
+ "-" + projectVersion);
|
||||
}
|
||||
}
|
||||
//所有主项目
|
||||
List<ProjectLibraryBase> 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<ProjectLibraryBase> resultTemp = new LinkedList<>();
|
||||
for (ProjectLibraryBase projectLibraryBase : result) {
|
||||
if(StringUtils.isBlank(projectLibraryBase.getParentId())){
|
||||
resultTemp.add(projectLibraryBase);
|
||||
}
|
||||
}
|
||||
|
||||
for (ProjectLibraryBase projectLibraryBase : resultTemp) {
|
||||
//处理搜索版本号,(因为列表展示数据是以主项目为主并绑定子项目, 所以搜索的时候只有子项目这种情况需要特殊处理)
|
||||
List<ProjectLibraryBase> resultNew = getProjectLibraryBases(result, projectLibraryBaseListParent);
|
||||
|
||||
|
||||
//数据组装
|
||||
// List<ProjectLibraryBase> resultTemp = new LinkedList<>();
|
||||
// for (ProjectLibraryBase projectLibraryBase : result) {
|
||||
// if(StringUtils.isBlank(projectLibraryBase.getParentId())){
|
||||
// resultTemp.add(projectLibraryBase);
|
||||
// }
|
||||
// }
|
||||
|
||||
for (ProjectLibraryBase projectLibraryBase : resultNew) {
|
||||
//子项目
|
||||
List<ProjectLibraryBase> 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<ProjectLibraryBas
|
||||
}
|
||||
}
|
||||
}
|
||||
return resultTemp;
|
||||
return resultNew;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private List<ProjectLibraryBase> getProjectLibraryBases(List<ProjectLibraryBase> result, List<ProjectLibraryBase> projectLibraryBaseListParent) {
|
||||
//result中的主项目以及子项目对应的主项目
|
||||
List<ProjectLibraryBase> resultParent = new LinkedList<>();
|
||||
for (ProjectLibraryBase projectLibraryBase : result) {
|
||||
if(StringUtils.isBlank(projectLibraryBase.getParentId())){
|
||||
resultParent.add(projectLibraryBase);
|
||||
}else{
|
||||
//子项目
|
||||
List<ProjectLibraryBase> collect = result.stream()
|
||||
.filter(e -> projectLibraryBase.getId().equals(e.getParentId()))
|
||||
.collect(Collectors.toList());
|
||||
if(ObjectUtils.isNotEmpty(collect)){
|
||||
resultParent.addAll(collect);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//搜索结果中子项目的子项目
|
||||
List<ProjectLibraryBase> resultChild = new ArrayList<>();
|
||||
//所有子项目
|
||||
List<ProjectLibraryBase> childrenListTemp = result.stream().filter(e -> StringUtils.isNotBlank(e.getParentId())).collect(Collectors.toList());
|
||||
List<String> childrenIdListTemp = childrenListTemp.stream().map(ProjectLibraryBase::getId).collect(Collectors.toList());
|
||||
|
||||
//子项目的子项目
|
||||
List<ProjectLibraryBase> collect3 = result.stream().filter(e -> StringUtils.isNotBlank(e.getParentId()) && childrenIdListTemp.contains(e.getParentId())).collect(Collectors.toList());
|
||||
|
||||
if(ObjectUtils.isNotEmpty(collect3)){
|
||||
//子项目的子项目的父id
|
||||
List<String> childList = collect3.stream().map(ProjectLibraryBase::getParentId).collect(Collectors.toList());
|
||||
//子项目
|
||||
resultChild = childrenListTemp.stream().filter(e -> childList.contains(e.getId())).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
|
||||
//所有的主项目与通过筛选条件查询来的主项目进行过滤
|
||||
List<ProjectLibraryBase> resultNew = new LinkedList<>();
|
||||
//主项目
|
||||
List<ProjectLibraryBase> collect1 = result.stream().filter(e -> StringUtils.isBlank(e.getParentId())).collect(Collectors.toList());
|
||||
resultNew.addAll(collect1);
|
||||
for (ProjectLibraryBase projectLibraryBase : projectLibraryBaseListParent) {
|
||||
//子项目
|
||||
List<ProjectLibraryBase> 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<ProjectLibraryBase> 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<ProjectLibraryBase> queryPageList(Map<String,Object> params) {
|
||||
// List<ProjectLibraryBase> result = projectLibraryBaseMapper.queryPageList(params);
|
||||
// disposeData(result,"",false);
|
||||
// //目标市场
|
||||
// List<DictModel> 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<ProjectLibraryBase> resultTemp = new LinkedList<>();
|
||||
// for (ProjectLibraryBase projectLibraryBase : result) {
|
||||
// if(StringUtils.isBlank(projectLibraryBase.getParentId())){
|
||||
// resultTemp.add(projectLibraryBase);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// for (ProjectLibraryBase projectLibraryBase : resultTemp) {
|
||||
// //子项目
|
||||
// List<ProjectLibraryBase> children = result.stream()
|
||||
// .filter(e -> StringUtils.isNotBlank(e.getParentId()) && projectLibraryBase.getId().equals(e.getParentId())).collect(Collectors.toList());
|
||||
// if(children.size() != 0){
|
||||
// //子项目的基础上添加的子项目
|
||||
// List<String> childrenIdList = children.stream().map(ProjectLibraryBase::getId).distinct().collect(Collectors.toList());
|
||||
// List<ProjectLibraryBase> 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<String, Object> params, List<DictModel> targetMarketList, ProjectLibraryBase projectLibraryBase) {
|
||||
List<DictModel> dictModelList = new ArrayList<>();
|
||||
for (String s : projectLibraryBase.getTargetMarket().split(",")) {
|
||||
|
||||
Reference in New Issue
Block a user