package com.ruoyi.equipmentenergyconsumption.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.basic.dto.ProductTreeDto; import com.ruoyi.basic.pojo.Product; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.equipmentenergyconsumption.dto.ElectricityConsumptionAreaTreeDto; import com.ruoyi.equipmentenergyconsumption.mapper.ElectricityConsumptionAreaMapper; import com.ruoyi.equipmentenergyconsumption.pojo.ElectricityConsumptionArea; import com.ruoyi.equipmentenergyconsumption.service.ElectricityConsumptionAreaService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; @Service @Slf4j public class ElectricityConsumptionAreaServiceImpl extends ServiceImpl implements ElectricityConsumptionAreaService { @Autowired private ElectricityConsumptionAreaMapper electricityConsumptionAreaMapper; @Override public IPage listPage(Page page, ElectricityConsumptionArea electricityConsumptionArea) { return electricityConsumptionAreaMapper.listPage(page,electricityConsumptionArea); } //左侧树结构 @Override public List selectElectricityConsumptionAreaList() { // 查询根节点(parentId 为 null) LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.isNull(ElectricityConsumptionArea::getFuId); // 查询根节点列表 List rootProducts = electricityConsumptionAreaMapper.selectList(queryWrapper); // 转换为树节点并递归构建子树 List tree = new ArrayList<>(); for (ElectricityConsumptionArea electricityConsumptionArea : rootProducts) { ElectricityConsumptionAreaTreeDto node = convertToTreeDto(electricityConsumptionArea); node.setChildren(buildChildrenNodes(electricityConsumptionArea.getId())); tree.add(node); } return tree; } // 将 Product 转换为 ProductTreeDto private ElectricityConsumptionAreaTreeDto convertToTreeDto(ElectricityConsumptionArea electricityConsumptionArea) { ElectricityConsumptionAreaTreeDto dto = new ElectricityConsumptionAreaTreeDto(); BeanUtils.copyProperties(electricityConsumptionArea, dto); dto.setLabel(electricityConsumptionArea.getAreaName()); // 设置 label 为产品名称 dto.setChildren(new ArrayList<>()); return dto; } // 递归构建子节点 private List buildChildrenNodes(Long parentId) { // 查询当前父节点的子节点 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(ElectricityConsumptionArea::getFuId, parentId); List childProducts = electricityConsumptionAreaMapper.selectList(queryWrapper); // 转换子节点并递归构建它们的子树 List children = new ArrayList<>(); for (ElectricityConsumptionArea child : childProducts) { ElectricityConsumptionAreaTreeDto childNode = convertToTreeDto(child); childNode.setChildren(buildChildrenNodes(child.getId())); children.add(childNode); } return children; } }