|
@@ -5,12 +5,16 @@ import cn.cslg.pas.common.model.vo.PathStructureNameVO;
|
|
|
import cn.cslg.pas.common.model.vo.StructurePictureVO;
|
|
|
import cn.cslg.pas.common.model.vo.StructureVO;
|
|
|
import cn.cslg.pas.common.utils.FileUtils;
|
|
|
+import cn.cslg.pas.domain.Project;
|
|
|
import cn.cslg.pas.domain.Structure;
|
|
|
import cn.cslg.pas.domain.asso.AssoStructurePicture;
|
|
|
import cn.cslg.pas.exception.XiaoShiException;
|
|
|
import cn.cslg.pas.mapper.AssoStructurePictureMapper;
|
|
|
+import cn.cslg.pas.mapper.ProjectMapper;
|
|
|
import cn.cslg.pas.mapper.StructureMapper;
|
|
|
import cn.cslg.pas.service.IStructureService;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
@@ -18,7 +22,9 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.Arrays;
|
|
|
import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 架构的Service层接口实现类
|
|
@@ -29,7 +35,7 @@ import java.util.List;
|
|
|
@RequiredArgsConstructor
|
|
|
@Slf4j
|
|
|
@Service
|
|
|
-public class StructureServiceImpl implements IStructureService {
|
|
|
+public class StructureServiceImpl extends ServiceImpl<StructureMapper, Structure> implements IStructureService {
|
|
|
private final StructureMapper structureMapper;
|
|
|
private final AssoStructurePictureMapper assoStructurePictureMapper;
|
|
|
private final FileUtils fileUtils;
|
|
@@ -253,13 +259,31 @@ public class StructureServiceImpl implements IStructureService {
|
|
|
@Override
|
|
|
public StructureVO query(StructureQueryPageDTO structureQueryPageDTO) {
|
|
|
log.info("开始处理【查询架构树】的业务,参数为:{}", structureQueryPageDTO);
|
|
|
-
|
|
|
- //从DTO中取出产品id、架构id、架构名称
|
|
|
+ StructureVO structureVO = new StructureVO();
|
|
|
+ //从DTO中取出产品id、架构id
|
|
|
Integer productId = structureQueryPageDTO.getProductId();
|
|
|
Integer structureId = structureQueryPageDTO.getStructureId();
|
|
|
+ LambdaQueryWrapper<Structure> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.like(Structure::getStructureName, structureQueryPageDTO.getStructureName());
|
|
|
+ List<Structure> structures = this.list(wrapper);
|
|
|
+ List<Integer> ids = structures.stream().map(Structure::getId).collect(Collectors.toList());
|
|
|
+ List<String> paths = structures.stream().map(Structure::getPath).collect(Collectors.toList());
|
|
|
+ paths.forEach(
|
|
|
+ item -> {
|
|
|
+ String[] pathStrs = item.split(",");
|
|
|
+ List<String> pathStr = new ArrayList<>(Arrays.asList(pathStrs));
|
|
|
+ pathStr.forEach(
|
|
|
+ tem -> {
|
|
|
+ Integer paId = Integer.parseInt(tem);
|
|
|
+ if (!ids.contains(paId)) {
|
|
|
+ ids.add(paId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+ );
|
|
|
|
|
|
- StructureVO structureVO = new StructureVO();
|
|
|
- diGui(structureVO, structureId, productId);
|
|
|
+ diGui(structureVO, structureId, productId, ids);
|
|
|
return structureVO;
|
|
|
}
|
|
|
|
|
@@ -304,18 +328,16 @@ public class StructureServiceImpl implements IStructureService {
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
|
|
|
//递归组装架构树集合
|
|
|
- private void diGui(StructureVO structureVO, Integer structureId, Integer productId) {
|
|
|
- List<StructureVO> structureVOs = structureMapper.selectByParentIdAndProductId(structureId, productId);
|
|
|
+ private void diGui(StructureVO structureVO, Integer structureId, Integer productId, List<Integer> ids) {
|
|
|
+ List<StructureVO> structureVOs = structureMapper.selectByParentIdAndProductId(structureId, productId, ids);
|
|
|
if (structureVOs != null) {
|
|
|
structureVO.setChildren(structureVOs);
|
|
|
for (StructureVO n : structureVOs) {
|
|
|
structureId = n.getId();
|
|
|
- diGui(n, structureId, productId);
|
|
|
+ diGui(n, structureId, productId, ids);
|
|
|
}
|
|
|
}
|
|
|
}
|