package com.hdkj.lt.bf.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hdkj.lt.bf.entity.dto.CustomerAccountDTO;
import com.hdkj.lt.bf.entity.vo.*;
import com.hdkj.lt.core.bizms.modle.dto.SchemeQueryDTO;
import com.hdkj.lt.core.bizms.modle.dto.UserListQueryDTO;
import com.hdkj.lt.core.bizms.modle.vo.JoinecUserVO;
import com.hdkj.lt.core.bizms.modle.vo.SwitchListVO;
import com.hdkj.lt.core.bizms.modle.vo.UserListVO;

import java.util.List;

/**
 * 成图服务
 *
 * @author zhuzhe
 * @since 2025-05-13
 */
public interface FhzgGenerateGraphService{

    /**
     * 根据停电范围查询开关列表
     * @param dto
     * @return
     */
    List<BreakerAreaVO> getSwitchListByOutArea(SchemeQueryDTO dto);

    /**
     * 查询转供范围开关段
     * @param dto
     * @return
     */
    List<BreakerAreaVO> getSwitchListByTransferSection(SchemeQueryDTO dto);

    /**
     * 根据用户查询所属开关
     * @param dto
     * @return
     */
    SwitchByUserVO getSwitchByCustomer(CustomerAccountDTO dto);

    /**
     * 转供路径概述 查询开关段
     * @param dto
     * @return
     */
    List<BreakerAreaVO> getPathOverviewSwitch(SchemeQueryDTO dto);

    /**
     * 查询对侧线路联络开关
     * @param dto
     * @return
     */
    OppesiteConcatSwitchVO getOppesiteConcatSwitch(SchemeQueryDTO dto);

    /**
     * 根据配变查询开关
     * @param dto
     * @return
     */
    SwitchByUserVO getSwitchByDevice(CustomerAccountDTO dto);

    /**
     * 根据开关段查询开关范围
     * @param dto
     * @return
     */
    BreakerAreaVO getSwitchListBySwitchSection(SchemeQueryDTO dto);

    PlanConfirmStateVO getPlanConfirmState(SchemeQueryDTO dto);

    /**
     * 根据计划查询 分支开关 和 用户数量
     * @param dto
     * @return
     */
    List<LoadSwitchUserNumsVO> getLoadUserNums(SchemeQueryDTO dto);

    /**
     * 根据负荷段 查询 开关、用户数量
     * @param dto
     * @return
     */
    List<LoadSwitchUserNumsVO> getUserNumsByLoad(SchemeQueryDTO dto);

    List<LoadSwitchUserNumsVO> getUserNumsByLine(String feederId);

    List<LoadSwitchUserNumsVO> getAllUserNumsByLine(String feederId);


    Page<UserListVO> getUserListByLoadSwitchSegmentPage(UserListQueryDTO dto);

    Page<UserListVO> getUserListByLoadSwitchSegmentPageNew(UserListQueryDTO dto);

    //根据中压接入点查询专表列表
    List<JoinecUserVO> getJoinecUserListByPsrId(String joinEc);


    Page<SwitchListVO> getSwitchInfoByLoadSwitchSegmentPage(UserListQueryDTO dto);
}
