package com.njcn.device.line.mapper;


import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.device.biz.pojo.dto.LineDevGetDTO;
import com.njcn.device.pq.pojo.po.LineDetail;
import com.njcn.device.pq.pojo.vo.LineDetailDataVO;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author cdf
 * @since 2022-01-04
 */
public interface LineDetailMapper extends BaseMapper<LineDetail> {

    /**
     * 查询装置下监测点号号是否已被占用
     * @param devIndex 装置索引
     * @param num 线路号
     * @return 监测点信息
     */
    List<LineDetail> getLineDetail(@Param("devIndex") String devIndex, @Param("num") List<Integer> num);

    /**
     * 实际设备下的监测点&&稳态系统和两个系统的监测点&&投运终端下的监测点
     * 获取指定条件的监测点信息
     * @param list 监测点集合
     * @return 结果
     */
    List<LineDetail> getSpecifyLineDetail(@Param("list") List<String> list);


    /**
     * 获取指定的监测点信息以及电压等级(需要其他字段可在基础上扩充)
     * @param lineIds 监测点集合
     * @return 结果
     */
    List<LineDetailDataVO> getLineDetailInfo(@Param("lineIds") List<String> lineIds);


    @Select ("select count(1) from pq_line a where a.Level=4 and SUBSTRING_INDEX(SUBSTRING_INDEX(a.Pids, ',', 4),',',-1)=#{subIndex}")
    Integer getDeviceCountBySubstation(@Param("subIndex")String subIndex);

    @Select ("select count(1) from pq_line a where a.Level=6 and SUBSTRING_INDEX(SUBSTRING_INDEX(a.Pids, ',', 4),',',-1)=#{subIndex}")
    Integer getLineCountBySubstation(@Param("subIndex")String subIndex);


    LineDevGetDTO getMonitorDetail(@Param("monitorId")String monitorId);

    void updateLineRunFlag(@Param("id")String lineId, @Param("runFlag")Integer status);

    void updateLineRunFlagBatch(@Param("lineIds") List<String> lineIds, @Param("runFlag") Integer status);

    /**
     * 根据监测点信息获取监测点详情（关联终端和母线）
     * 获取指定条件的监测点信息
     * @param Ids 监测点集合
     * @return 结果
     */
    List<LineDetail> getLineDetailByIds(@Param("ids") List<String> Ids);

    /**
     * 判断该新能源场站信息是否绑定了测点ID
     */
    Integer checkExistsLineByNewStationId(@Param("newStationId") String newStationId);


}
