liusheng
2025-04-11 c6461ee45e27ad7f6f1a89d5aab103fbab6e79d3
smartor/src/main/java/com/smartor/service/impl/IvrLibaTemplateAssortServiceImpl.java
@@ -14,7 +14,10 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
@@ -49,23 +52,30 @@
    @Override
    public List<IvrLibaTemplateAssortVO> selectIvrLibaTemplateAssortList(IvrLibaTemplateAssort ivrLibaScriptAssort) {
        List<IvrLibaTemplateAssort> ivrLibaTemplateAssorts = ivrLibaTemplateAssortMapper.selectIvrLibaTemplateAssortList(ivrLibaScriptAssort);
        //将pid为空的,过滤掉
//        ivrLibaTemplateAssorts = ivrLibaTemplateAssorts.stream().filter(assort -> assort.getPid() == null).collect(Collectors.toList());
        List<IvrLibaTemplateAssortVO> ivrLibaTemplateAssortVOS = DtoConversionUtils.sourceToTarget(ivrLibaTemplateAssorts, IvrLibaTemplateAssortVO.class);
        //遍历查出来的数据,通过 id=pid 获取他们的子数据
        for (IvrLibaTemplateAssortVO ivrLibaTemplateAssortVO : ivrLibaTemplateAssortVOS) {
//            if (ivrLibaTemplateAssortVO.getPid() != null) {
//                continue;
//            }
            IvrLibaTemplateAssort ivrLibaTemplateAssort = new IvrLibaTemplateAssort();
            ivrLibaTemplateAssort.setPid(ivrLibaTemplateAssortVO.getId());
            List<IvrLibaTemplateAssort> ivrLibaTemplateAssorts1 = ivrLibaTemplateAssortMapper.selectIvrLibaTemplateAssortList(ivrLibaTemplateAssort);
            if (!Collections.isEmpty(ivrLibaTemplateAssorts1)) {
                ivrLibaTemplateAssortVO.setIvrLibaTemplateAssortList(ivrLibaTemplateAssorts1);
        List<IvrLibaTemplateAssortVO> rootList = new ArrayList<>();
        Map<Long, IvrLibaTemplateAssortVO> categoryMap = new HashMap<>();
        // 建立id->对象的映射
        for (IvrLibaTemplateAssortVO category : ivrLibaTemplateAssortVOS) {
            categoryMap.put(category.getId(), category);
        }
        for (IvrLibaTemplateAssortVO category : ivrLibaTemplateAssortVOS) {
            if (category.getPid() == null || category.getPid() == -1) {
                // 顶层节点
                rootList.add(category);
            } else {
                // 找到父节点,并添加到其子节点列表
                IvrLibaTemplateAssortVO parent = categoryMap.get(category.getPid());
                if (parent != null) {
                    IvrLibaTemplateAssort sc = DtoConversionUtils.sourceToTarget(category, IvrLibaTemplateAssort.class);
                    parent.getIvrLibaTemplateAssortList().add(sc);
                }
            }
        }
        return ivrLibaTemplateAssortVOS;
        return rootList;
    }
    /**