package com.ylcm.sys.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ylcm.sys.domain.AdTheatre;
import com.ylcm.sys.domain.AdTheatreTv;
import com.ylcm.sys.domain.AdTheatreTvStat;
import com.ylcm.sys.form.AdTheatreAnalysisDetailQueryForm;
import com.ylcm.sys.form.AdTheatreAnalysisQueryForm;
import com.ylcm.sys.vo.*;

import java.util.List;

/**
 * <p>
 * 关联电视剧数据 服务类
 * </p>
 *
 * @author admin
 * @since 2020-07-01
 */
public interface AdTheatreTvStatService extends IService<AdTheatreTvStat> {

	IPage<AdTheatreAnalysisVO> getPage(AdTheatreAnalysisQueryForm queryForm);
	
	IPage<AdTheatreAnalysisDetailVO> getDetailPage(AdTheatreAnalysisDetailQueryForm queryForm);

	/**
	 * 统计频道这个季度的时间
	 * @param mediaName
	 * @param theatreTime
	 * @param startDate
	 * @param endDate
	 * @return
	 */
	AdTheatreTvStat statByMedia(String mediaName, Integer theatreTime, String startDate, String endDate);

	/**
	 * 剧场电视剧收视排名
	 * @param startDate
	 * @param endDate
	 * @return
	 */
	List<AdTheatreTopVO> getTvTop(Integer theatreTime, String startDate, String endDate);

	/**
	 * 剧场电视剧收视排名
	 * @param name 剧名
	 * @param theatreTime 剧场：0日间 1黄金2午夜3凌晨
	 * @param startDate 播放时间
	 * @param endDate 播放时间
	 */
	List<AdTheatreTopVO> getMediaTop(String name, Integer theatreTime, String startDate, String endDate, Integer limitSize);

	/**
	 * 电视剧收视分析
	 * @param queryForm
	 * @return
	 */
	AdTvRatioVO getTvRatioVO(AdTheatreAnalysisDetailQueryForm queryForm);

	/**
	 * 收视区域分布
	 * @param queryForm
	 * @return
	 */
	AdTvZoneVO getTvZoneVO(AdTheatreAnalysisDetailQueryForm queryForm);

	/**
	 * 电视剧产品投放分析
	 * @param queryForm
	 * @return
	 */
	List<AdTheatreProductDistVO> getProductVO(AdTheatreAnalysisDetailQueryForm queryForm);

	/**
	 * 电视剧体裁结构分析
	 * @param queryForm
	 * @return
	 */
	List<AdThemeDistVO> getThemeDistVO(AdTheatreAnalysisDetailQueryForm queryForm);

	/**
	 * 同步统计数据
	 * @param adTheatre
	 * @param
	 */
	void saveStatByTheatreTv(AdTheatre adTheatre);

	/**
	 * 剧名等基本信息修改
	 * @param newName
	 * @param oldName
	 * @param firstTheme
	 * @param oldFirstTheme
	 */
	void batchUpdateByName(String newName, String oldName, String firstTheme, String oldFirstTheme, String secondTheme);
}
