package com.gunshi.project.hsz.service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gunshi.project.hsz.mapper.SysDictBMapper; import com.gunshi.project.hsz.model.SysDictB; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 描述: 系统字典表 * author: xusan * date: 2024-07-08 17:30:38 */ @Service @Slf4j @Transactional(rollbackFor = Exception.class) public class SysDictBService extends ServiceImpl { public List tree() { List list = list(); if (CollectionUtils.isEmpty(list)){ return list; } Map> listMap = list.stream().collect(Collectors.groupingBy(SysDictB::getPid)); list.forEach(o -> o.setChildren(listMap.get(o.getId()))); List parentList = list.stream().filter(o -> 0L == o.getPid()).collect(Collectors.toList()); return sorted(parentList); } private List sorted( List tree) { List sorteds = null; if (CollectionUtils.isNotEmpty(tree)){ sorteds = tree.stream().sorted(Comparator.comparing(SysDictB::getSortOn) ).collect(Collectors.toList()); sorteds.forEach(o->{ o.setChildren(sorted(o.getChildren())); }); } return sorteds; } public List listByCd(String dictCd) { return this.baseMapper.listByCd(dictCd); } }