package com.huiju.estateagents.property.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.huiju.estateagents.base.ResponseBean;
import com.huiju.estateagents.center.taUser.entity.TaUser;
import com.huiju.estateagents.property.common.UserElement;
import com.huiju.estateagents.property.model.BillInvoice;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 缴费单 服务类
 * </p>
 *
 * @author weiximei
 * @since 2019-02-13
 */
public interface IBillInvoiceService extends IService<BillInvoice> {


    /**
     * 根据条件查询 缴费项目
     * @param parameter
     * @return
     */
    ResponseBean getBillList(String parameter, TaUser userElement);

    /**
     * 批量删除 缴费单
     * @param ids
     * @param userElement
     * @return
     */
    ResponseBean deleteBillInvoice(List<Integer> ids, TaUser userElement);

    /**
     * 设置线下缴费
     * @param ids
     * @param userElement
     * @return
     */
    ResponseBean offlinePayment(List<Integer> ids, TaUser userElement);

    /**
     * 由前台批量添加收费单, 默认定为 作废
     * @param parameter
     * @param userElement
     * @return
     */
    ResponseBean addTempBillInvoice(String parameter, TaUser userElement);

    /**
     * 由前台批量添加收费单, 进行统一的提交, 修改为有效
     * @param ids
     * @param userElement
     * @return
     */
    ResponseBean updateBillInvoiceStatus(List<Integer> ids, TaUser userElement);

    /**
     * 查询由前台批量添加的收费单
     * @param billId
     * @param userElement
     * @return
     */
    ResponseBean getTempBillInvoice(Integer billId, TaUser userElement);

    /**
     * 根据id删除收费单, 只能删除作废的
     * @param billId
     * @param userElement
     * @return
     */
    ResponseBean deleteTempBillInvoice(Integer billId, TaUser userElement);

    /**
     * 根据缴费单id, 修改金额
     * @param billId
     * @param payPrice
     * @param userElement
     * @return
     */
    ResponseBean updateBillInvoiceIdPayPrice(Integer billId, Integer payPrice, TaUser userElement);

    /**
     * 导出Excel 表格
     *
     * @param userElement
     * @param billId
     * @return
     */
    ResponseBean exportExcel(TaUser userElement, Integer billId);

    /**
     * 根据 缴费项id 出现作废的数据
     * @param userElement
     * @param parameter
     * @return
     */
    ResponseBean getInvoiceInvalid(TaUser userElement, String parameter);
    
    /**
     * 按小区统计所有的金额
     * @return
     */
	List<Map<String, Object>> getPriceCount();
}
