package com.zcxk.service;

import com.zcxk.dto.*;
import com.zcxk.entity.MonthRevenueEntity;
import com.zcxk.entity.MonthSellwaterEntity;

import java.util.List;

/**
 * @author yjy
 * @description
 * @data 2021-2-24
 */
public interface RevenueService {

    /**
     * 查询本月售水信息
     * @param companyOrgId 公司id
     * @return
     */
    List<MonthSellwaterDto> selectMonthSell(Integer companyOrgId);

    /**
     * 查询近6个月总售水量
     * @param companyOrgId 公司id
     * @return
     */
    List<MonthSellwaterDto> selectMonthSellTotal(Integer companyOrgId);

    /**
     * 查询月营收情况
     * @param companyOrgId 公司id
     * @param months 几个月
     * @return
     */
    List<MonthRevenueDto> selectMonthRevenue(Integer companyOrgId,Integer months);

    /**
     * 查询本月各分公司的营收情况
     * @return
     */
    List<MonthRevenueDto> selectCompanyRevenue();

    /**
     * 查询App总览售水数据
     * @param companyOrgId 公司id
     * @param months 几个月
     * @return
     */
    List<MonthRevenueDto> selectOverviewRevenue(Integer companyOrgId,Integer months);

    /**
     * 查询App总览售水环比
     * @param companyOrgId 公司id
     * @param startDate 开始时间
     * @param endDate 结束时间
     * @return
     */
    List<MonthRevenueDto> selectRevenueByDate(Integer companyOrgId, String startDate, String endDate);

    /**
     * 查询是否当月有营收数据
     * @param tenantId 租户id
     * @return
     */
    Integer isExistThisMonthRevenue(String tenantId);

    /**
     * 插入营收数据
　　　* @param monthRevenueEntity 营收数据
     * @return
     */
    Integer insert(MonthRevenueEntity monthRevenueEntity);
    /**
     * 修改营收数据
     * @param monthRevenueEntity 营收数据
     * @return
     */
    Integer update(MonthRevenueEntity monthRevenueEntity);
    /**
     * 查询该租户一级公司id
     * @param tenantId 租户id
     * @return
     */
    Integer selectCompanyIdByTenant(String tenantId);
    /**
     * 同步水表数量
     * @return
     */
    void syncMeterCount();

    /**
     * 插入售水数据
     * @param monthSellwaterEntity 售水信息
     * @return
     */
    Integer insertSellWater(MonthSellwaterEntity monthSellwaterEntity);
    /**
     * 修改售水数据
     * @param monthSellwaterEntity 售水信息
     * @return
     */
    Integer updateSellWater(MonthSellwaterEntity monthSellwaterEntity);

    /**
     * 修改营业数据
     * @param monthRevenueEntity 营业信息
     * @return
     */
    Integer updateRevenue(MonthRevenueEntity monthRevenueEntity);

    /**
     * 查询月营收情况
     * @param monthRevenueDto 营业信息查询条件
     * @return
     */
    List<MonthRevenueDto> selectList(MonthRevenueDto monthRevenueDto);

    /**
     * 查询某月是否有营收数据
     * @param companyOrgId 机构id
     * @param collectDateString 时间
　　　* @param id 主键
     * @return
     */
    Integer isExistMonthRevenue(Integer companyOrgId,String collectDateString,Integer id);
}
