package cn.superdesk.uniorder.service.organisation;

import cn.superdesk.uniorder.common.rest.response.R;
import cn.superdesk.uniorder.common.security.dto.LoginSysUser;
import cn.superdesk.uniorder.dao.entity.organisation.SysEnterpriseExtInvoice;
import cn.superdesk.uniorder.dto.param.organisation.SysCliqueXInvoiceCriteria;
import cn.superdesk.uniorder.dto.param.organisation.SysEnterpriseExtInvoiceQueryCriteria;
import cn.superdesk.uniorder.dto.param.organisation.SysEnterpriseExtInvoiceXCliqueParam;
import cn.superdesk.uniorder.dto.vo.organisation.SysEnterpriseExtInvoiceExtPathVo;
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: 2020-08-20 17:51:19
 * @UpdateUser: linjinyu
 * @UpdateDate: 2020-08-20 17:51:19
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
public interface SysEnterpriseExtInvoiceService extends BaseService<SysEnterpriseExtInvoice> {


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

    int insertSelective(SysEnterpriseExtInvoice entity);

    int updateByPrimaryKeySelective(SysEnterpriseExtInvoice entity);

    @Deprecated
    void deleteObj(Long id);


    SysEnterpriseExtInvoice findById(Long id);

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

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

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


    void addSysEnterpriseExtInvoiceXCliqueParam(SysEnterpriseExtInvoiceXCliqueParam param, LoginSysUser loginSysUser);

    void updateSysEnterpriseExtInvoiceXCliqueParam(SysEnterpriseExtInvoiceXCliqueParam param, LoginSysUser loginSysUser);

    int addSysEnterpriseExtInvoice(SysEnterpriseExtInvoice entity, LoginSysUser loginSysUser);

    int updateSysEnterpriseExtInvoice(SysEnterpriseExtInvoice entity, LoginSysUser loginSysUser);

    int updateSysEnterpriseExtInvoiceByTaxpayersIDCode(SysEnterpriseExtInvoice entity);


    int opSetDefault(SysEnterpriseExtInvoice entity, LoginSysUser loginSysUser);

    int opSetNormal(SysEnterpriseExtInvoice entity, LoginSysUser loginSysUser);

    void deleteSysEnterpriseExtInvoice(Long id, LoginSysUser loginSysUser);

    SysEnterpriseExtInvoice findBySysVirtId(Long id);

    SysEnterpriseExtInvoice getByCompanyName(String companyName);

    SysEnterpriseExtInvoice getByTaxpayersIDCode(String taxpayersIDCode);

    List<SysEnterpriseExtInvoice> findByOutVirtIds(List<Long> outVirtIds);

    Map<Long, SysEnterpriseExtInvoice> findByOutVirtIdsConvertKV(List<Long> outVirtIds);

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

    R<List<SysEnterpriseExtInvoiceExtPathVo>> pageQuery(SysEnterpriseExtInvoiceQueryCriteria queryCriteria, LoginSysUser loginSysUser);

    List<SysEnterpriseExtInvoiceExtPathVo> query(SysEnterpriseExtInvoiceQueryCriteria queryCriteria, LoginSysUser loginSysUser);

    R<List<SysEnterpriseExtInvoiceExtPathVo>> pageQuerySysCliqueXInvoice(SysCliqueXInvoiceCriteria conditions, int pageNun, int pageSize);

    /******************************************  start ******************************************/

//	void saveOrUpdate4TaxationAisinoTxtRowParamListByPurchaserTaxpayersIDCode(TaxationAisinoTxtRowParam taxationAisinoTxtRowParamList, LoginSysUser loginSysUser);
//
//	void saveOrUpdate4TaxationAisinoTxtRowParamListByPurchaserTaxpayersIDCode(List<TaxationAisinoTxtRowParam> taxationAisinoTxtRowParamList, LoginSysUser loginSysUser);

    /****************************************** 缓存 start ******************************************/
    void cacheInit();

    void cacheRefresh();

    void cacheRemove();

    String cacheGet(String hashTable, String keyField);

}
