package com.tofly.gpsboot.service.es;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tofly.es.GpsUpload;
import com.tofly.es.dto.EsQueryDto;
import com.tofly.es.dto.GpsSectionSearchDto;
import com.tofly.es.dto.UserGpsSearchDto;

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

/**
 * gps信息处理服务
 * @author BZ-DJJ
 */
public interface IGpsUploadService  {

    /**
     * 新增Gps信息
     * @param gpsUpload
     * @return
     */
    Boolean saveGpsInfo(GpsUpload gpsUpload);

    /**
     * 批量新增Gps信息
     * @param gpsUploadList
     * @return
     */
    Boolean saveBatchGpsInfo(List<GpsUpload> gpsUploadList);

    /**
     * 更新Gps信息
     * @param gpsUpload
     * @return
     */
    Boolean updateGpsInfo(GpsUpload gpsUpload);

    /**
     * 根据ID获取GPS信息
     * @param id
     * @return
     */
    GpsUpload getByIdGpsInfo(String id);

    /**
     * 通过id删除GPS信息
     * @param id
     * @return
     */
    Boolean removeByIdGpsInfo(String id);

    /**
     * 获取Gps分页信息
     * @param page
     * @param dto
     * @return
     */
    Page<List<GpsUpload>> getPageGpsInfo(Page page, EsQueryDto dto);

    /**
     * 获取index所有GPS分页信息
     * @param page
     * @param dto
     * @return
     */
    Page<List<GpsUpload>> getAllPage(Page page, EsQueryDto dto);

    /**
     * 获取index所有GPS信息 非分页
     * @param dto
     * @return
     */
    List<GpsUpload> getAll(EsQueryDto dto);

    /**
     * 获取所有GPS分段信息
     * @param dto
     * @return
     */
    List<String> getSectionGps(EsQueryDto dto);

    /**
     * 获取巡检人员分段轨迹
     * @param page
     * @param dto
     * @return
     */
    Page<GpsUpload> getUserSectionGps(Page page, UserGpsSearchDto dto);

    /**
     * 获取巡检人员分段
     * @param dto
     * @return
     */
    List<Map<String,Object>> getUserSection(GpsSectionSearchDto dto);

    /**
     * 根据时间范围获取当前用户最新信息列表
     * @param users
     * @return
     */
    List<GpsUpload> getNowUserInfoList(String users, Date startTime,Date endTime);
}
