package com.njcn.device.pq.service;

import com.njcn.device.biz.pojo.dto.*;
import com.njcn.device.biz.pojo.param.DeptGetLineParam;
import com.njcn.device.biz.pojo.param.SubstationParam;
import com.njcn.device.biz.pojo.dto.MonitorCommLedgerInfoDTO;
import com.njcn.device.pq.pojo.param.dataClean.MonitorBaseParam;

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

/**
 * pqs
 *
 * @author cdf
 * @date 2023/5/10
 */

public interface CommTerminalService {


    /**
     *通过部门获取所有子集部门所拥有的监测点
     * @author cdf
     * @date 2023/5/10
     */
    List<DeptGetChildrenDTO> deptGetLineList(DeptGetLineParam deptGetLineParam);

    /**
     * 根据单位获取所有子单位信息
     * @author cdf
     * @date 2023/5/10
     */
    List<DeptGetBase> getDeptChildrenByParent(DeptGetLineParam deptGetLineParam);

    /**
     * 根据单位获取单位监测点
     * @author cdf
     * @date 2023/5/10
     */
    List<DeptGetChildrenMoreDTO> deptGetLine(DeptGetLineParam deptGetLineParam);


    List<MonitorCommLedgerInfoDTO> deptGetLineInfo(DeptGetLineParam deptGetLineParam);

    List<DeptGetChildrenMoreDTO> deptGetAllLine(DeptGetLineParam deptGetLineParam);

    List<LineDevGetDTO> deptGetLineByIdList(List<String> monitorIds);

    /**
     * 根据单位获取所有变电站
     * @author cdf
     * @date 2023/5/10
     */
    List<DeptGetSubStationDTO> deptSubStation(DeptGetLineParam deptGetLineParam);


    /**
     * 根据单位获取所有变电站
     * @author cdf
     * @date 2023/5/10
     */
    List<DeptGetBusBarDTO> deptBusBar(DeptGetLineParam deptGetLineParam);


    /**
     * 根据单位获取所有装置
     * @author cdf
     * @date 2023/5/10
     */
    List<DeptGetDeviceDTO> deptGetDevice(DeptGetLineParam deptGetLineParam,Integer type);

    /**
     * 根据电站和母线id获取监测点信息
     * @author cdf
     * @date 2023/5/10
     */
    LineDevGetBandDTO substationGetLine(String substationId);


    /**
     * 获取监测点的台账详细信息
     * @author cdf
     * @date 2023/10/23
     */
    Map<String,String> getCustomDetailByLineId(String id);


    List<DeptGetSubStationDTO.Info> deptSubStationInfo(DeptGetLineParam deptGetLineParam);

    List<SubGetBase> tagOrIdGetSub(SubstationParam substationParam);

    /**
     * 通过部门id,对象类型，返回在运，实际装置，双系统测点
     */
    List<String> getRunMonitorByDept(MonitorBaseParam monitorBaseParam);
}
