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

import cn.superdesk.uniorder.common.rest.response.R;
import cn.superdesk.uniorder.common.security.dto.LoginSysUser;
import cn.superdesk.uniorder.dao.entity.invoice.customer.invoiced.InvoiceInvoiced;
import cn.superdesk.uniorder.dto.param.invoice.customer.invoiced.InvoiceInvoicedQueryCriteria;
import cn.superdesk.uniorder.dto.param.invoice.excel.*;
import cn.superdesk.uniorder.dto.vo.invoice.customer.invoiced.InvoiceInvoicedExcelExportVo;
import cn.superdesk.uniorder.dto.vo.invoice.customer.invoiced.InvoiceInvoicedHeadSum;
import cn.superdesk.uniorder.service.base.BaseService;
import com.github.pagehelper.PageInfo;

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


/**
 * @Description:
 * @Author: linjinyu
 * @Email linjinyu@avic-s.com
 * @CreateDate: 2021-03-16 17:29:47
 * @UpdateUser: linjinyu
 * @UpdateDate: 2021-03-16 17:29:47
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
public interface InvoiceInvoicedService extends BaseService<InvoiceInvoiced> {


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

	int insertSelective(InvoiceInvoiced entity);

    int updateByPrimaryKeySelective(InvoiceInvoiced entity);

	@Deprecated
	void deleteObj(Long id);

	@Deprecated
	InvoiceInvoiced findById(Long id);

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

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

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


	void addInvoiceInvoiced(InvoiceInvoiced entity);

	void updateInvoiceInvoiced(InvoiceInvoiced entity);

	void updateInvoiceInvoicedByPrimaryKeySelective(InvoiceInvoiced entity);

//	void saveOrUpdateInvoiceInvoiced(InvoiceInvoicedParam param);



	void deleteInvoiceInvoiced(Long id);

	InvoiceInvoiced findInvoiceInvoicedById(Long id);

	InvoiceInvoiced findInvoiceInvoicedByInvoiceNumber(String invoiceNumber);

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

	R<List<InvoiceInvoicedExcelExportVo>> pageQueryByCriteria(InvoiceInvoicedQueryCriteria criteria);

	List<InvoiceInvoicedExcelExportVo> queryByCriteria(InvoiceInvoicedQueryCriteria criteria);

	R<InvoiceInvoicedHeadSum> headSumInvoiceInvoiceds(InvoiceInvoicedQueryCriteria criteria);



	/****************************************** excel import start ******************************************/

	void saveOrUpdate4ThirdPartTaxationSzhtxxE6ExcelRowByInvoiceNumber(TaxationSzhtxxE6ExcelRow excelRow, LoginSysUser loginSysUser);

	void saveOrUpdate4ThirdPartTaxationSzhtxxE6ExcelRowListByInvoiceNumber(List<TaxationSzhtxxE6ExcelRow> excelRowList, LoginSysUser loginSysUser);


	void saveOrUpdate4ThirdPartTaxationYqzs17WinV30ExcelRowByInvoiceNumber(TaxationYqzs17WinV30ExcelRow excelRow, LoginSysUser loginSysUser);

	void saveOrUpdate4ThirdPartTaxationYqzs17WinV30ExcelRowListByInvoiceNumber(List<TaxationYqzs17WinV30ExcelRow> excelRowList, LoginSysUser loginSysUser);


	void saveOrUpdate4SuperdeskFinanceArtificial001ExcelRowByInvoiceNumber(SuperdeskFinanceArtificial001ExcelRow excelRow, LoginSysUser loginSysUser);

	void saveOrUpdate4SuperdeskFinanceArtificial001ExcelRowListByInvoiceNumber(List<SuperdeskFinanceArtificial001ExcelRow> excelRowList, LoginSysUser loginSysUser);



	void saveOrUpdate4InvoiceInvoicedHistoryExcelRowByInvoiceNumber(InvoiceInvoicedHistoryExcelRow excelRow, LoginSysUser loginSysUser);

	void saveOrUpdate4InvoiceInvoicedHistoryExcelRowListByInvoiceNumber(List<InvoiceInvoicedHistoryExcelRow> excelRowList, LoginSysUser loginSysUser);

	void saveOrUpdate4InvoiceInvoicedNormalExcelRowByInvoiceNumber(InvoiceInvoicedNormalExcelRow excelRow, LoginSysUser loginSysUser);

	void saveOrUpdate4InvoiceInvoicedNormalExcelRowListByInvoiceNumber(List<InvoiceInvoicedNormalExcelRow> excelRowList, LoginSysUser loginSysUser);


}
