package com.fuyuanshen.equipment.service;

import com.fuyuanshen.common.mybatis.core.page.PageQuery;
import com.fuyuanshen.common.mybatis.core.page.TableDataInfo;
import com.fuyuanshen.equipment.domain.bo.TerminalDelBo;
import com.fuyuanshen.equipment.domain.bo.TerminalDeviceBo;
import com.fuyuanshen.equipment.domain.bo.TerminalQueryBo;
import com.fuyuanshen.equipment.domain.bo.TrackServiceBo;
import com.fuyuanshen.equipment.domain.dto.TerminalDeviceDto;
import com.fuyuanshen.equipment.domain.vo.TrackServiceVo;

import java.util.Collection;
import java.util.List;

/**
 * 轨迹服务Service接口
 *
 * @author Lion Li
 * @date 2025-11-24
 */
public interface ITrackServiceService {

    /**
     * 查询轨迹服务
     *
     * @param id 主键
     * @return 轨迹服务
     */
    TrackServiceVo queryById(Long id);

    /**
     * 分页查询轨迹服务列表
     *
     * @param bo        查询条件
     * @param pageQuery 分页参数
     * @return 轨迹服务分页列表
     */
    TableDataInfo<TrackServiceVo> queryPageList(TrackServiceBo bo, PageQuery pageQuery);

    /**
     * 查询符合条件的轨迹服务列表
     *
     * @param bo 查询条件
     * @return 轨迹服务列表
     */
    List<TrackServiceVo> queryList(TrackServiceBo bo);

    /**
     * 新增轨迹服务
     *
     * @param bo 轨迹服务
     * @return 是否新增成功
     */
    Boolean insertByBo(TrackServiceBo bo);

    /**
     * 修改轨迹服务
     *
     * @param bo 轨迹服务
     * @return 是否修改成功
     */
    Boolean updateByBo(TrackServiceBo bo);

    /**
     * 校验并批量删除轨迹服务信息
     *
     * @param ids     待删除的主键集合
     * @param isValid 是否进行有效性校验
     * @return 是否删除成功
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    /**
     * 高德添加终端设备
     *
     * @param terminalDeviceBo     添加集合
     */
    void terminal(TerminalDeviceBo terminalDeviceBo);
    /**
     * 高德移除终端设备
     *
     * @param ids     待删除的主键集合
     * @param isValid 是否进行有效性校验
     * @return 是否删除成功
     */
    Boolean delTerminalDevice(Collection<Long> ids, Boolean isValid);

    Boolean delTerminalDevice(TerminalDelBo bo, Boolean isValid);
    /**
     * 查询设备列表
     *
     * @param bo     查询条件
     * @return 设备列表
     */
    TableDataInfo<TerminalDeviceDto> listTerminal(TerminalQueryBo bo);
    /**
     * 关键字查询设备
     *
     * @param bo     查询条件
     * @return 设备列表
     */
    TableDataInfo<TerminalDeviceDto> searchTerminal(TerminalQueryBo bo);
}
