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.Bill;
import org.springframework.web.multipart.MultipartFile;

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

/**
 * <p>
 * 缴费项表 服务类
 * </p>
 *
 * @author weiximei
 * @since 2019-02-13
 */
public interface IBillService extends IService<Bill> {

    /**
     * 修改 缴费项的 收费项名称,缴费项说明,截止时间
     *
     * @param parameter
     * @param userElement
     * @return
     */
    ResponseBean updateBillNameAndBillExplainAndEndDate(TaUser userElement, String parameter);

    /**
     * 根据ID查询 缴费项
     * @param id
     * @return
     */
    ResponseBean getByBillId(Integer id);
	
	/**
	 * 获取收费项列表
	 * @param bill
	 * @param pageNum
	 * @param pageSize
	 * @return
	 */
	ResponseBean getBillList(Bill bill, Integer pageNum, Integer pageSize);

	/**
	 * 上传excel, 解析, 但不入库
	 * @param file
	 * @return
	 */
    ResponseBean getExcelData(MultipartFile file, TaUser userElement);

	/**
	 * 上传excel, 解析 入库
	 * @param billId
	 * @param file
	 * @param billExplain
	 * @param billName
	 * @param endDate
	 * @param billStatus
	 * @return
	 */
	ResponseBean getExcelData(Integer billId, MultipartFile file, String billExplain, String billName, Date endDate, String billStatus, TaUser userElement);

	/**
	 * 修改 缴费项状态
	 * @param billStatus
	 * @param id
	 * @return
	 */
	ResponseBean updateBillStatus(TaUser userElement, Integer billStatus, Integer id);

	/**
	 * 批量删除 缴费项
	 * @param userElement
	 * @param ids id 集合
	 * @return
	 */
    ResponseBean deleteBillBeach(TaUser userElement, List<Integer> ids);

	/**
	 * 下载 excel 模板
	 * @param userElement
	 * @return
	 */
	ResponseBean downloadExcel(TaUser userElement);

	/**
	 * 根据payType分页获取缴费或未缴费的数据
	 *
	 * @param personId
	 * @param payType
	 * @param pageNum
	 * @param pageSize
	 * @return
	 */
	Map<String, Object> getBillsList(String personId, Integer payType, Integer pageNum, Integer pageSize);

	/**
	 * 获取账单的详细信息
	 * @param billInvoiceId
	 * @return
	 */
	Map<String, Object> getBillInvoiceDetail(Integer orgId,Integer billInvoiceId);

	/**
	 * 获取缴费历史
	 * @param userElement
	 * @return
	 */
	ResponseBean payHistory(TaUser userElement);

	/**
	 * 订单详情
	 * @param orderNumber
	 * @return
	 */
	ResponseBean getOrderInfo(String orderNumber);
}
