package cn.superdesk.uniorder.dubbo.facade.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.SysEnterpriseExtInvoiceParam;
import cn.superdesk.uniorder.dto.param.invoice.txt.TaxationAisinoTxtRow;
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 com.github.pagehelper.PageInfo;

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

/**
 * @Description: Java类作用描述
 * @Author: linjinyu
 * @CreateDate: 8/20/20 6:49 PM
 * @UpdateUser: linjinyu
 * @UpdateDate: 8/20/20 6:49 PM
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
public interface DubboSysEnterpriseExtInvoiceService {

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

    @Deprecated
    void addObj(SysEnterpriseExtInvoiceParam param);

    @Deprecated
    void updateObj(SysEnterpriseExtInvoiceParam param);

    @Deprecated
    void deleteObj(Long id);

    @Deprecated
    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(SysEnterpriseExtInvoiceParam param, LoginSysUser loginSysUser);

    int updateSysEnterpriseExtInvoice(SysEnterpriseExtInvoiceParam param, LoginSysUser loginSysUser);

    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);


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

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

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

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

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

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

    void saveOrUpdate4TaxationAisinoTxtRowParamListByPurchaserTaxpayersIDCode(TaxationAisinoTxtRow taxationAisinoTxtRowParamList, LoginSysUser loginSysUser);

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

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

    void cacheRefresh();

    void cacheRemove();

    String cacheGet(String hashTable, String keyField);


}
