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<ElectricityConsumptionAreaMapper, ElectricityConsumptionArea> implements ElectricityConsumptionAreaService {
|
|
@Autowired
|
private ElectricityConsumptionAreaMapper electricityConsumptionAreaMapper;
|
|
@Override
|
public IPage<ElectricityConsumptionArea> listPage(Page page, ElectricityConsumptionArea electricityConsumptionArea) {
|
return electricityConsumptionAreaMapper.listPage(page,electricityConsumptionArea);
|
}
|
|
|
//左侧树结构
|
@Override
|
public List<ElectricityConsumptionAreaTreeDto> selectElectricityConsumptionAreaList() {
|
// 查询根节点(parentId 为 null)
|
LambdaQueryWrapper<ElectricityConsumptionArea> queryWrapper = new LambdaQueryWrapper<>();
|
queryWrapper.isNull(ElectricityConsumptionArea::getFuId);
|
// 查询根节点列表
|
List<ElectricityConsumptionArea> rootProducts = electricityConsumptionAreaMapper.selectList(queryWrapper);
|
|
// 转换为树节点并递归构建子树
|
List<ElectricityConsumptionAreaTreeDto> 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<ElectricityConsumptionAreaTreeDto> buildChildrenNodes(Long parentId) {
|
// 查询当前父节点的子节点
|
LambdaQueryWrapper<ElectricityConsumptionArea> queryWrapper = new LambdaQueryWrapper<>();
|
queryWrapper.eq(ElectricityConsumptionArea::getFuId, parentId);
|
List<ElectricityConsumptionArea> childProducts = electricityConsumptionAreaMapper.selectList(queryWrapper);
|
|
// 转换子节点并递归构建它们的子树
|
List<ElectricityConsumptionAreaTreeDto> children = new ArrayList<>();
|
for (ElectricityConsumptionArea child : childProducts) {
|
ElectricityConsumptionAreaTreeDto childNode = convertToTreeDto(child);
|
childNode.setChildren(buildChildrenNodes(child.getId()));
|
children.add(childNode);
|
}
|
return children;
|
}
|
}
|