package com.zc.business.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.AjaxResult;
import com.zc.business.domain.DcDevice;
import com.zc.business.domain.DcStakeMark;

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

/**
 * 设备Service接口
 *
 * @author zhaoxianglong
 */
public interface IDcDeviceService extends IService<DcDevice> {

    /**
     * 添加设备信息
     *
     * @param dcDevice 设备信息
     * @return 操作结果
     */
    boolean addDevice(DcDevice dcDevice);

    /**
     * 修改设备信息
     *
     * @param dcDevice 设备信息
     * @return 操作结果
     */
    boolean editDevice(DcDevice dcDevice);

    /**
     * 删除设备
     *
     * @param ids 设备ID
     * @return 操作结果
     */
    boolean removeDevice(List<String> ids);

    /**
     * 获取设备列表
     *
     * @param dcDevice 参数
     * @return 结果
     */
    List<DcDevice> pageDevice(DcDevice dcDevice);

    /**
     * 获取设备列表
     *
     * @param dcDevice 参数
     * @return 结果
     */
    List<DcDevice> listDevice(DcDevice dcDevice);

    /**
     * 批量修改设备
     *
     * @param listDevice 参数
     * @return 结果
     */
    boolean batchUpdate(List<DcDevice> listDevice);


    /**
     * 根据id查询设备信息
     *
     * @param id 设备ID
     * @return 设备信息
     */
    DcDevice getDevice(String id);

    /**
     * 根据网段查询设备
     * @param networkSegment
     * @return
     */
    List<DcDevice> getDeviceByNetworkSegment(String networkSegment);

    /**
     * 根据网段分组查询分组设备
     * @return
     */
    Map<String,List<DcDevice>> getGroupingDeviceByNetworkSegment();

    DcStakeMark exampleQueryTheAssociatedPileNumber(DcDevice dcDevice);

    Long statisticalAnomalyDevice();

    List<DcDevice> devicePileNumberQueryDevice(Map<String,Object> parameter);

    List<DcDevice> numberOfDevicesByType(DcDevice dcDevice);

    List<DcDevice> numberOfDevicesByType();

    List<DcDevice> selectNearCamPile(String direction,String startMileage,String endMileage);

    /**
     * 查询上游10公里内的情报板
     */
    AjaxResult selectNearBoard(String stakeMark, String direction);
}