package com.hzs.sale.order.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.sale.ext.SaOrderChargeLogExt;
import com.hzs.common.domain.sale.order.SaOrderChargeLog;
import com.hzs.sale.order.param.SaOrderChargeLogParam;

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

/**
 * 订单修改记录 服务类
 *
 * @author hzs
 * @since 2023-02-01
 */
public interface ISaOrderChargeLogService extends IService<SaOrderChargeLog> {

    /**
     * 查询订单以及修改次数
     *
     * @param pkOrderList 订单ID列表
     * @param pkCountry   所属国家（非必传）
     * @return
     */
    Map<Long, Integer> queryOrderAndLogCount(List<Long> pkOrderList, Integer pkCountry);

    /**
     * 根据类型和编号查询数据
     *
     * @param chargeType
     * @param businessCode
     * @param pkCountry    所属国家（非必传）
     * @return
     */
    List<SaOrderChargeLogExt> queryDataByTypeAndCode(Integer chargeType, String businessCode, Integer pkCountry);

    /**
     * 订单审批是否进行中
     *
     * @param typeList      业务类型列表
     * @param orderCodeList 订单编号列表
     * @param pkCountry     所属国家
     * @param businessCode 单据编号
     * @return
     */
    int checkOrderApprovalExist(List<Integer> typeList, List<String> orderCodeList, Integer pkCountry, String ... businessCode);

    /**
     * 查询撤单列表
     * @return
     */
    List<SaOrderChargeLogExt> selectByOrderCharge(SaOrderChargeLogParam orderChargeLogParam);

    /**
     * 撤单列表
     * @param orderChargeLogParam
     * @return
     */
    List<SaOrderChargeLogExt> cancellationList(SaOrderChargeLogParam orderChargeLogParam);
}
