package cn.superdesk.uniorder.dubbo.facade.thirdpart.qchjc.accounting;

import cn.superdesk.uniorder.common.exception.OpenApiException;
import cn.superdesk.uniorder.common.rest.response.R;
import cn.superdesk.uniorder.dao.entity.thirdpart.qchjc.accounting.QchjcAccountingScoreCustomerEntity;
import cn.superdesk.uniorder.dto.param.accounting.qchjc.QchjcCustomerAccountingListRequest;
import cn.superdesk.uniorder.dto.vo._function.select.SelectOptionVirt;
import cn.superdesk.uniorder.dto.vo.thirdpart.qchjc.accounting.QchjcCustomerStatementVo;

import java.util.List;

/**
 * @author xc
 * @description
 * @date 2022/4/1 10:21
 */
public interface DubboQchjcCustomerStatementService {

    /**
     * 接收采购单位对账单
     *
     * @param toJSONString
     */
    void receive(String toJSONString) throws OpenApiException;

    /**
     * 查询所有待入库状态对账单
     *
     * @return
     */
    QchjcCustomerStatementVo getTodoList(Long id);

    void updateByPrimaryKeySelective(QchjcAccountingScoreCustomerEntity qchjcAccountingScoreCustomerEntity);

    QchjcAccountingScoreCustomerEntity selectByAccountingOrderSn(String accountingOrderSn);

    QchjcAccountingScoreCustomerEntity selectByPrimaryKey(Long id);

    /**
     * 对账单入库
     *
     * @param vo
     */
    void doSave(Long vo) throws OpenApiException;

    /**
     * 采购单位对账单状态同步 集采 -> 结算中心
     *
     * @param toJSONString
     */
    void syncStatus(String toJSONString) throws OpenApiException;

    R<List<QchjcCustomerStatementVo>> queryQchjcCustomerStatementList(QchjcCustomerAccountingListRequest request);

    R<String> updateRemark(Long id, String remark, String token);

    R<QchjcCustomerStatementVo> queryQchjcCustomerStatementVoById(Long id);

    List<Long> getTodoIdList();

    R<List<SelectOptionVirt>> queryCustomerList();
}
