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

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yfd.platform.modules.basedata.domain.SubstationDevice;
import com.yfd.platform.modules.basedata.domain.TreeNode;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 变电站_巡视点位 服务类
 * </p>
 *
 *
 * @since 2023-03-28
 */
public interface ISubstationDeviceService extends IService<SubstationDevice> {

    /**********************************
     * 用途说明: 删除巡视点位
     * 参数说明 deviceId 巡视点位id
     * 返回值说明: boolean
     ***********************************/
    boolean deleteSubstationDeviceById(String deviceId);

    /**********************************
     * 用途说明: 设置巡视点位状态是否启用
     * 参数说明 deviceId 巡视点位id
     * 参数说明 dataStatus 巡视点位状态
     * 返回值说明: boolean
     ***********************************/
    boolean setSubstationDeviceStatus(String deviceId, String dataStatus);

    /**********************************
    * 用途说明: 获取类型
    * 参数说明
    * 返回值说明: java.util.List<java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.Object>>>
    ***********************************/
    Map<String, List<Map<String, Object>>> getDeviceType();

    /***********************************
     * 用途说明：保存图片模板
     * 参数说明
     * deviceId  点位ID
     * multipartFile   文件对象
     * 返回值说明: 文件名
     ************************************/
    String saveImgTemplate(HttpServletResponse response, String deviceId, String devicecode, String channelcode) throws Exception;

    List<String> getDeviceByCode(String patrolDeviceCode);

    String uploadExcel(MultipartFile file) throws Exception;

    /**********************************
     * 用途说明: 导出点位
     * 参数说明 ids 点位id
     * 返回值说明: void
     ***********************************/
    void deviceDownloadFile(Page<Map<String, Object>> page, String bayId,
                            String componentId, String mainDeviceId, String deviceName, HttpServletResponse response) throws IOException;

    List<TreeNode> getComponentTree(String bayId,String deviceName);

    TreeNode getBayTree(String stationCode, String deviceName);

    List<Map<String,Object>> getDeviceByJson(String internationalId);

    String selectNextUavDeviceCode();

    List<Map<String, Object>> getRobotCodeByDeviceId(List<String> deviceIds);
}
