73 lines
2.1 KiB
Plaintext
73 lines
2.1 KiB
Plaintext
package com.cmeim.basic.service;
|
|
|
|
import com.cmeim.basic.enums.EnableEnum;
|
|
import com.cmeim.basic.po.BaPhenomenon;
|
|
import com.cmeim.basic.repository.BaPhenomenonRepository;
|
|
import com.cmeim.basic.vo.PhenomenonVo;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.data.domain.Example;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.Optional;
|
|
|
|
/**
|
|
* 作者:李俊辉
|
|
* date: 2021/9/10
|
|
*/
|
|
@Service
|
|
public class PhenomenonService {
|
|
@Autowired
|
|
BaPhenomenonRepository baPhenomenonRepository;
|
|
|
|
public PhenomenonVo getPhenomenonTree(){
|
|
|
|
BaPhenomenon treeNode = new BaPhenomenon();
|
|
|
|
treeNode.setPhenomenonEnabled(EnableEnum.ACTIVATION.getCode());
|
|
|
|
Example<BaPhenomenon> example = Example.of(treeNode);
|
|
List<BaPhenomenon> list = baPhenomenonRepository.findAll(example);
|
|
List<PhenomenonVo> voList = new ArrayList<>();
|
|
for (BaPhenomenon org:list){
|
|
PhenomenonVo vo = new PhenomenonVo();
|
|
vo.setValue(org.getId());
|
|
vo.setTitle(org.getPhenomenonText());
|
|
vo.setCode(org.getPhenomenonCode());
|
|
vo.setType(org.getDictType());
|
|
vo.setParentCode(org.getParentCode());
|
|
|
|
voList.add(vo);
|
|
}
|
|
setTreeStructure(voList);
|
|
|
|
PhenomenonVo ret = null;
|
|
|
|
Optional<PhenomenonVo> optional = voList.stream().
|
|
filter(n-> StringUtils.isBlank(n.getParentCode())).
|
|
findFirst();
|
|
if (optional.isPresent()) ret = optional.get();
|
|
|
|
return ret;
|
|
}
|
|
|
|
public void setTreeStructure(List<PhenomenonVo> nodeList){
|
|
|
|
for (PhenomenonVo node: nodeList){
|
|
setChildrenList(node, nodeList);
|
|
}
|
|
|
|
}
|
|
|
|
private void setChildrenList(PhenomenonVo vo, List<PhenomenonVo> nodeList){
|
|
for(PhenomenonVo node: nodeList){
|
|
if(vo!=node&&vo.getCode().equals(node.getParentCode())){
|
|
vo.getChildren().add(node);
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|