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.QchjcAccountingUnifiedSupplierEntity;
import cn.superdesk.uniorder.dto.param.accounting.qchjc.QchjcSupplierAccountingListRequest;
import cn.superdesk.uniorder.dto.vo.organisation.UnifiedSupplierVo;
import cn.superdesk.uniorder.dto.vo.thirdpart.qchjc.accounting.QchjcAccountingUnifiedSupplierVo;

import java.util.List;

/**
 * @author xc
 * @description
 * @date 2022/4/1 18:33
 */
public interface DubboQchjcSupplierStatementService {
    /**
     * 接收供应商对账单
     *
     * @param toJSONString
     */
    void receive(String toJSONString) throws OpenApiException;

    /**
     * 集采-获取待入库状态供应商对账单集合
     *
     * @return
     */
    QchjcAccountingUnifiedSupplierVo getTodoList(Long id);

    void updateByPrimaryKeySelective(QchjcAccountingUnifiedSupplierEntity qchjcAccountingUnifiedSupplierEntity);

    QchjcAccountingUnifiedSupplierEntity selectByPrimaryKey(Long id);

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

    void doSave(Long id);

    R<List<QchjcAccountingUnifiedSupplierVo>> queryQchjcSupplierStatementList(QchjcSupplierAccountingListRequest request);

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

    R<QchjcAccountingUnifiedSupplierVo> getQchjcSupplierStatement(Long id);

    List<Long> getTodoIdList();

    R<List<UnifiedSupplierVo>> getSupplierList();

    void receiveJdOrder(String toJSONString) throws OpenApiException;

    void fix(Integer limit, String supplierAccountingOrderSn);
}
