package com.kxs.product.biz.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.kxs.common.core.util.R;
import com.kxs.product.api.dto.kxsapp.gd.GdDqReportDTO;
import com.kxs.product.api.dto.kxsapp.gd.GdReportDTO;
import com.kxs.product.api.dto.kxsapp.gd.GdReportPutDTO;
import com.kxs.product.api.model.KxsGdReport;
import com.kxs.product.api.vo.kxsapp.gd.GdDotNumVO;
import com.kxs.product.api.vo.kxsapp.gd.GdDqDotNumVO;
import com.kxs.product.api.vo.kxsapp.gd.GdReportListVO;
import com.kxs.product.api.vo.kxsapp.machine.MachineUnBindListVO;

import java.util.Map;

/**
 * 广电报备入网表(KxsGdReport)表服务接口
 *
 * @author 系统
 * @since 2024-04-23 10:44:23
 */
public interface KxsGdReportService extends IService<KxsGdReport> {

    /**
     * 入网报备信息增加
     *
     * @param param 参数
     */
    Boolean addReport(GdReportPutDTO param);

    /**
     * app分页
     *
     * @param page    页
     * @param putType
     * @param keyword 关键词
     * @return {@link IPage}<{@link GdReportListVO}>
     */
    IPage<GdReportListVO> getByPage(Page<GdReportListVO> page, Integer status, Integer putType, String keyword);

    /**
     * 电渠分页
     *
     * @param page    页
     * @param keyword 关键词
     * @return {@link IPage}<{@link GdReportListVO}>
     */
    IPage<GdReportListVO> getDqByPage(Page<GdReportListVO> page, Integer status, String keyword);


    /**
     * 数量接口
     *
     * @return {@link GdDotNumVO}
     */
    GdDotNumVO dotNum(Integer putType);

    /**
     * 广电报备-作废
     *
     * @param param 参数
     * @return {@link Object}
     */
    Boolean cancelReport(KxsGdReport param);

    /**
     * 报备
     *
     * @param param 参数
     * @return {@link Boolean}
     */
    Boolean report(GdReportDTO param);

    /**
     * sys更新数据
     *
     * @param param 参数
     * @return {@link Boolean}
     */
    Boolean updateData(KxsGdReport param);

    /**
     * 匹配 GD 数据
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return {@link R}
     */
    R checkGdData(String startTime, String endTime);

    /**
     * 未绑定未报备广电sn列表
     *
     * @param page  页
     * @param posSn POS SN
     * @return {@link IPage}<{@link MachineUnBindListVO}>
     */
    IPage<MachineUnBindListVO> getByUnBindPage(Page<MachineUnBindListVO> page, String posSn);

    /**
     * 电渠报备
     *
     * @param param 参数
     * @return {@link R}
     */
    Boolean dqReport(GdDqReportDTO param);

    /**
     * 电渠数量接口
     *
     * @return {@link GdDqDotNumVO}
     */
    GdDqDotNumVO dqDotNum();

    /**
     * 接受广电 激活 数据
     *
     * @param param 参数
     */
    void acceptActData(Map<String, Object> param);
}

