liusheng
2025-04-23 3000e6e57ee16b8a9c81f9ffb5d766ea10552171
smartor/src/main/java/com/smartor/service/impl/IvrLibaScriptAssortServiceImpl.java
@@ -13,7 +13,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;
/**
@@ -178,22 +181,29 @@
    @Override
    public List<IvrLibaScriptAssortVO> selectIvrLibaScriptAssortList(IvrLibaScriptAssort ivrLibaScriptAssort) {
        List<IvrLibaScriptAssort> ivrLibaScriptAssorts = ivrLibaScriptAssortMapper.selectIvrLibaScriptAssortList(ivrLibaScriptAssort);
        //将pid为空的,过滤掉
//        ivrLibaScriptAssorts = ivrLibaScriptAssorts.stream().filter(assort -> assort.getPid() == null).collect(Collectors.toList());
        List<IvrLibaScriptAssortVO> ivrLibaScriptAssortVOS = DtoConversionUtils.sourceToTarget(ivrLibaScriptAssorts, IvrLibaScriptAssortVO.class);
        //遍历查出来的数据,通过 id=pid 获取他们的子数据
        for (IvrLibaScriptAssortVO ivrLibaScriptAssortVO : ivrLibaScriptAssortVOS) {
//            if (ivrLibaScriptAssortVO.getPid() != null) {
//                continue;
//            }
            IvrLibaScriptAssort ivrLibaTargetAssort1 = new IvrLibaScriptAssort();
            ivrLibaTargetAssort1.setPid(ivrLibaScriptAssortVO.getId());
            List<IvrLibaScriptAssort> ivrLibaScriptAssorts1 = ivrLibaScriptAssortMapper.selectIvrLibaScriptAssortList(ivrLibaTargetAssort1);
            if (!Collections.isEmpty(ivrLibaScriptAssorts1)) {
                ivrLibaScriptAssortVO.setIvrLibaScriptAssortList(ivrLibaScriptAssorts1);
        List<IvrLibaScriptAssortVO> rootList = new ArrayList<>();
        Map<Long, IvrLibaScriptAssortVO> categoryMap = new HashMap<>();
        // 建立id->对象的映射
        for (IvrLibaScriptAssortVO category : ivrLibaScriptAssortVOS) {
            categoryMap.put(category.getId(), category);
        }
        for (IvrLibaScriptAssortVO category : ivrLibaScriptAssortVOS) {
            if (category.getPid() == null || category.getPid() == -1) {
                // 顶层节点
                rootList.add(category);
            } else {
                // 找到父节点,并添加到其子节点列表
                IvrLibaScriptAssortVO parent = categoryMap.get(category.getPid());
                if (parent != null) {
                    IvrLibaScriptAssort sc = DtoConversionUtils.sourceToTarget(category, IvrLibaScriptAssort.class);
                    parent.getIvrLibaScriptAssortList().add(sc);
                }
            }
        }
        return ivrLibaScriptAssortVOS;
        return rootList;
    }
}