package com.ruoyi.excel.wecom.service;

import com.ruoyi.excel.wecom.domain.CustomerStatisticsData;
import com.ruoyi.excel.wecom.vo.CustomerStatisticsDataVO;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 客户统计数据Service接口
 */
public interface ICustomerStatisticsDataService {

    /**
     * 查询客户统计数据列表
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param indicatorName 指标名称
     * @return 客户统计数据列表
     */
    List<CustomerStatisticsData> selectCustomerStatisticsDataList(String corpId,Date startDate, Date endDate, String indicatorName);

    /**
     * 查询客户统计数据VO列表(用于导出)
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param indicatorName 指标名称
     * @return 客户统计数据VO列表
     */
    List<CustomerStatisticsDataVO> selectCustomerStatisticsDataVOList(String corpId,Date startDate, Date endDate, String indicatorName);

    /**
     * 根据ID查询客户统计数据
     * @param id 主键ID
     * @return 客户统计数据
     */
    CustomerStatisticsData selectCustomerStatisticsDataById(Long id);

    /**
     * 新增客户统计数据
     * @param customerStatisticsData 客户统计数据
     * @return 结果
     */
    int insertCustomerStatisticsData(CustomerStatisticsData customerStatisticsData);

    /**
     * 修改客户统计数据
     * @param customerStatisticsData 客户统计数据
     * @return 结果
     */
    int updateCustomerStatisticsData(CustomerStatisticsData customerStatisticsData);

    /**
     * 批量删除客户统计数据
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    int deleteCustomerStatisticsDataByIds(Long[] ids);

    int updateCost(String corpId,Date curDate, BigDecimal totalCost, String type,String titleAttr);

    List<CustomerStatisticsDataVO> selectByWeekAggregation(String corpId, Integer year, Integer week, String indicatorName);

    List<CustomerStatisticsDataVO> selectByMonthAggregation(String corpId, String yearMonth, String indicatorName);

    List<CustomerStatisticsDataVO> selectAllAggregation(String corpId, String indicatorName);
}
