package com.lutao.cloud.oil.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lutao.cloud.common.core.util.MessageInfo;
import com.lutao.cloud.oil.pojo.param.HighRiskCountParam;
import com.lutao.cloud.oil.pojo.param.PersonCertificateParam;
import com.lutao.cloud.oil.pojo.param.PersonGoSeaParam;
import com.lutao.cloud.oil.pojo.param.RecentPeopleLineChartParam;
import com.lutao.cloud.oil.pojo.vo.*;

import java.util.List;

/**
 * ibusiness人员动态服务
 * 人员动态service
 *
 * @author yx
 * @date 2023/07/25
 */
public interface IBusinessPersonnelDynamicsService {

    /**
     * 出海作业人员动态情况
     *
     * @param personGoSeaParam 参数
     * @return {@link MessageInfo}<{@link PersonGoSeaWorkStatusVO}>
     */
    MessageInfo<PersonGoSeaWorkStatusVO> queryPersonGoSeaWorkStatus(PersonGoSeaParam personGoSeaParam);

    /**
     * 查询证书到期警告
     *
     * @param personGoSeaParam 参数
     * @return {@link MessageInfo}<{@link CertificateExpireWarningVO}>
     */
    MessageInfo<CertificateExpireWarningVO> queryCertificateExpireWarning(PersonCertificateParam personCertificateParam);


    /**
     * 查询人去海详细信息页面
     * 出海人员详细信息
     *
     * @param page             页面
     * @param personGoSeaParam 人去海参数
     * @return {@link MessageInfo}<{@link IPage}<{@link PersonGoSeaDetailInformationVO}>>
     */
    MessageInfo<IPage<PersonGoSeaDetailInformationVO>> queryPersonGoSeaDetailInformationPage(Page page, PersonGoSeaParam personGoSeaParam);

    /**
     * 五小证下钻列表
     *
     * @param page page
     * @param param param
     * @return {@link MessageInfo}<{@link IPage}<{@link PersonCertificateVO}>>
     */
    MessageInfo<IPage<PersonCertificateVO>> queryCertificateExpireWarningPage(Page page, PersonCertificateParam param);

    /**
     * 查询今日人员平台信息页面
     *
     * @param page             第页
     * @param personGoSeaParam param
     * @return {@link MessageInfo}<{@link IPage}<{@link PersonTodayPlatformInformationVO}>>
     */
    MessageInfo<IPage<PersonTodayPlatformInformationVO>> queryPersonTodayPlatformInformationPage(Page page, PersonGoSeaParam personGoSeaParam);

    /**
     * 在平台人数排名列表
     *
     * @param page             第页
     * @param personGoSeaParam param
     * @return {@link MessageInfo}<{@link IPage}<{@link PersonPlatformRankVO}>>
     */
    MessageInfo<IPage<PersonPlatformRankVO>> queryPersonPlatformRankPage(Page page, PersonGoSeaParam personGoSeaParam);

    /**
     * 查询最近人员折线图
     *
     * @param param param
     * @return {@link MessageInfo}<{@link List}<{@link RecentPeopleLineChartVO}>>
     */
    MessageInfo<List<RecentPeopleLineChartVO>> queryRecentPeopleLineChart(RecentPeopleLineChartParam param);


}
