package com.yfd.platform.modules.basedata.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yfd.platform.modules.basedata.domain.Substation;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * <p>
 * 变电站 服务类
 * </p>
 *
 *
 * @since 2023-03-28
 */
public interface ISubstationService extends IService<Substation> {

    /**********************************
     * 用途说明: 获取变电站区域间隔导航树
     * 参数说明
     * 返回值说明: java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     ***********************************/
    List<Map<String, Object>> getSubstationTree(String stationId);

    /**********************************
     * 用途说明: 获取变电站树
     * 参数说明
     * 返回值说明: java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     ***********************************/
    List<Map<String, Object>> getSubstationBayTree(String name, Set<String> orgCodeByUser);

    /***********************************
     * 用途说明：上传图片
     * 参数说明
     * image        图片
     * 返回值说明:   是否上传成功
     ***********************************/
    String uploadIcon(MultipartFile image);

    /**********************************
     * 用途说明: 删除图片
     * 参数说明 id id
     * 参数说明 filename 图片名称
     * 返回值说明: boolean
     ***********************************/
    boolean deleteImage(String id, String filename);

    /**********************************
     * 用途说明: 删除变电站
     * 参数说明 stationId
     * 返回值说明: boolean
     ***********************************/
    boolean deleteSubstation(String stationId);

    /**********************************
     * 用途说明: 删除区域
     * 参数说明 stationId
     * 返回值说明: boolean
     ***********************************/
    boolean deleteSubstationArea(String areaId);

    /**********************************
     * 用途说明: 删除间隔
     * 参数说明 stationId
     * 返回值说明: boolean
     ***********************************/
    boolean deleteSubstationBay(String bayId);

    /**********************************
     * 用途说明: 修改变电站状态
     * 参数说明 stationId
     * 返回值说明: boolean
     ***********************************/
    boolean setSubstationStatus(String stationId, String dataStatus);

    /**********************************
     * 用途说明: 修改区域状态
     * 参数说明 stationId
     * 返回值说明: boolean
     ***********************************/
    boolean setSubstationAreaStatus(String areaId, String dataStatus);

    /**********************************
     * 用途说明: 修改间隔状态
     * 参数说明 stationId
     * 返回值说明: boolean
     ***********************************/
    boolean setSubstationBayStatus(String bayId, String dataStatus);

    /**********************************
     * 用途说明: 导入文件
     * 参数说明 file
     * 返回值说明: java.lang.String
     ***********************************/
    String uploadExcel(MultipartFile file, String type) throws Exception;

    /**********************************
     * 用途说明: 取消修改
     * 参数说明 id images
     * 返回值说明: java.lang.String
     ***********************************/
    boolean cancelImage(String id, String images);

    /**********************************
     * 用途说明: 获取变电站区域导航树
     * 参数说明
     * 返回值说明: java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     ***********************************/
    List<Map<String, Object>> getSubstationAreaTree(String stationId);

    /**********************************
     * 用途说明: 获取区域下所有间隔
     * 参数说明
     * 返回值说明: java.util.List<java.util.Map<java.lang.String,java.lang.Object>>
     ***********************************/
    List<Map<String, Object>> getSubstationBayByArea(String stationCode, String areaId, String bayName);

    /**********************************
    * 用途说明: 修改变电站
    * 参数说明 substation
    * 返回值说明: boolean
    ***********************************/
    boolean updateSubstation(Substation substation);


    /**********************************
     * 用途说明: 查询变电站状态
     * 参数说明 stationcode 变电站编号,
     * online:1=在线，0-离线
     * 返回值说明: boolean
     ***********************************/
    int getStationOnline(String stationcode);

}
