package cn.superdesk.uniorder.service.invoice.customer.fundrestream;

import cn.superdesk.uniorder.common.rest.response.R;
import cn.superdesk.uniorder.dao.entity.base.UnifiedOrder;
import cn.superdesk.uniorder.dao.entity.invoice.customer.InvoiceApply;
import cn.superdesk.uniorder.dao.entity.invoice.customer.fundrestream.InvoiceBankStatement;
import cn.superdesk.uniorder.dao.entity.invoice.customer.fundrestream.InvoiceBankStatementOff;
import cn.superdesk.uniorder.dto.vo.unified.UnifiedInvBankOffVo;
import cn.superdesk.uniorder.service.base.BaseService;
import com.github.pagehelper.PageInfo;

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

public interface InvoiceBankStatementOffService extends BaseService<InvoiceBankStatementOff> {


	/****************************************** extends BaseService 部分 start ******************************************/

	int insertSelective(InvoiceBankStatementOff entity);

    int updateByPrimaryKeySelective(InvoiceBankStatementOff entity);

	@Deprecated
	void deleteObj(Long id);

	@Deprecated
	InvoiceBankStatementOff findById(Long id);

	@Deprecated
	PageInfo<InvoiceBankStatementOff> findByPaging(Map<String, Object> conditions, Integer pageNun, Integer pageSize);

	@Deprecated
	List<InvoiceBankStatementOff> findAll(Map<String, Object> queryMap);

	/****************************************** extends BaseService 部分   end ******************************************/


	void addInvoiceBankStatementOff(InvoiceBankStatementOff entity);

	void updateInvoiceBankStatementOff(InvoiceBankStatementOff entity);

	void deleteInvoiceBankStatementOff(Long id);

	InvoiceBankStatementOff findInvoiceBankStatementOffById(Long id);

	R<List<InvoiceBankStatementOff>> pageQuery(Map<String, Object> conditions, int pageNun, int pageSize);

	/****************************************** 原来就有 start ******************************************/

	InvoiceBankStatementOff addObjTran(InvoiceBankStatementOff unifiedInvBankOffEntity,
	                                   List<InvoiceBankStatement> invoiceBankEntityTodoList,
	                                   List<InvoiceApply> invoiceApplyEntityTodoList,
	                                   List<UnifiedOrder> unifiedOrderEntityTodoList
	);

	List<Long> getOrderIdsByInvoiceApplyId(Long id);

	R<List<UnifiedInvBankOffVo>> getInvoiceBankOffDataByPage(Map<String, Object> params, int pageNum, int pageSize);
}
