package com.jojubanking.boot.module.system.service.usecount;

import java.util.*;
import javax.validation.*;
import com.jojubanking.boot.module.system.controller.admin.usecount.vo.*;
import com.jojubanking.boot.module.system.dal.dataobject.usecount.UseCountDO;
import com.jojubanking.boot.framework.common.pojo.PageResult;
import com.jojubanking.boot.module.system.dal.dataobject.usecount.UseCountToDO;
import com.jojubanking.boot.module.system.dal.dataobject.usecount.UseCountToDateDO;

/**
 * 统计 Service 接口
 *
 * @author admin
 */
public interface UseCountService {

    /**
     * 创建统计
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Integer createUseCount(@Valid UseCountCreateReqVO createReqVO);

    /**
     * 更新统计
     *
     * @param updateReqVO 更新信息
     */
    void updateUseCount(@Valid UseCountUpdateReqVO updateReqVO);

    /**
     * 删除统计
     *
     * @param id 编号
     */
    void deleteUseCount(Integer id);

    /**
     * 获得统计
     *
     * @param id 编号
     * @return 统计
     */
    UseCountDO getUseCount(Integer id);

    /**
     * 获得统计列表
     *
     * @param ids 编号
     * @return 统计列表
     */
    List<UseCountDO> getUseCountList(Collection<Integer> ids);
    List<UseCountToDO> getUseCountTo();
    List<UseCountToDO> getUseCountTo1();
    List<UseCountToDO> getUseCountTo2();
    List<UseCountToDO> getUseCountTo3();
    List<UseCountToDO> getUseCountTo4();
    List<UseCountToDO> getUseCountTo5();
    List<UseCountToDO> getUseCountTo6();
    List<UseCountToDO> getUseCountToSection(Date startDate, Date endDate);

    List<UseCountToDateDO> getUseCountToDate();

    /**
     * 获得统计分页
     *
     * @param pageReqVO 分页查询
     * @return 统计分页
     */
    PageResult<UseCountDO> getUseCountPage(UseCountPageReqVO pageReqVO);

    /**
     * 获得统计列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 统计列表
     */
    List<UseCountDO> getUseCountList(UseCountExportReqVO exportReqVO);

}
