package com.njcn.device.pms.mapper.majornetwork;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.common.pojo.dto.SimpleDTO;
import com.njcn.common.pojo.param.StatisticsBizBaseParam;
import com.njcn.device.biz.pojo.dto.LineDTO;
import com.njcn.device.pms.pojo.dto.PmsMonitorBaseDTO;
import com.njcn.device.pms.pojo.dto.PmsMonitorInfoDTO;
import com.njcn.device.pms.pojo.dto.PwPmsMonitorDTO;
import com.njcn.device.pms.pojo.param.*;
import com.njcn.device.pms.pojo.po.Monitor;
import com.njcn.device.pms.pojo.vo.MonitorVO;
import org.apache.ibatis.annotations.Param;

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

/**
 * <p>
 * Mapper 接口
 * </p>
 *
 * @author hongawen
 * @since 2022-10-14
 */
public interface MonitorMapper extends BaseMapper<Monitor> {

    /***
     * 根据组织ID以及其查询条件筛选出台账信息
     * @author hongawen
     * @date 2022/10/17 13:32
     * @param orgIdList 部门索引
     * @param pmsDeviceInfoParam 查询条件
     * @return List<Monitor>
     */
    List<PmsMonitorBaseDTO> getMonitorByCondition(@Param("orgIdList") List<String> orgIdList,
                                                  @Param("pmsDeviceInfoParam") PmsDeviceInfoParam pmsDeviceInfoParam);


    /***
     * 根据组织ID以及其查询条件筛选出变电站信息
     * @author hongawen
     * @date 11/1/2022 11:09 AM
     * @param orgIdList 部门索引
     * @param pmsDeviceInfoParam 查询条件
     * @return List<SimpleDTO>
     */
    List<SimpleDTO> getPmsPowerrInfoWithInOrg(@Param("orgIdList") List<String> orgIdList,
                                              @Param("pmsDeviceInfoParam") PmsDeviceInfoParam pmsDeviceInfoParam);

    /**
     * 获取指定的监测点信息
     *
     * @param pmsMonitorInfoParam 获取监测点详情数据入参
     * @return 指定的监测点信息
     */
    List<PmsMonitorInfoDTO> getMonitorInfo(@Param("pmsMonitorInfoParam") PmsMonitorInfoParam pmsMonitorInfoParam);


    /***
     * 主网监测点和终端信息（波形查看专用）
     * @author wr
     * @date 2023-03-23 10:21
     * @param id
     * @return MonitorVO
     */
    MonitorVO getMonitorTerminal(@Param("id")String id);


    /***
     * 配网监测点和终端信息（波形查看专用）
     * @author wr
     * @date 2023-03-23 10:21
     * @param id
     * @return MonitorVO
     */
    MonitorVO getPwMonitorTerminal(@Param("id")String id);


    /**
     * @Description: 根据监测点id获取监测点信息
     * @param id
     * @return: com.njcn.device.biz.pojo.dto.LineDTO
     * @Author: wr
     * @Date: 2023/9/22 10:20
     */
    LineDTO  selectLineDetail(@Param("id")String id);

    /**
     * @Description: 根据监测点id批量获取监测点信息
     */
    List<LineDTO> selectLineDetailBatch(@Param("ids")List<String> ids);

   /**
    * @Description:
    * @param param
    * @return: java.util.List<com.njcn.device.pms.pojo.po.Monitor>
    * @Author: wr
    * @Date: 2023/10/13 11:23
    */
    List<Monitor> selectMonitorList(@Param("param") StatisticsBizBaseParam param);


    Map<String, String> getCustomDetailByLineId(@Param("lineId")String lineId);

    List<Monitor> selectMonitorAndNewEnergy(@Param("orgIds")List<String> orgIds,
                                    @Param("objIds")List<String> objIds);


    /**
     * 分页获取用户对象
     */
    Page<Monitor> getAllObjUser(@Param("page") Page<Monitor> page, @Param("baseParam")TerminalQueryParam baseParam);

    List<Monitor> getAllObjUser(@Param("baseParam")TerminalQueryParam baseParam);

}
