package cn.iocoder.yudao.module.order.service.batchOrderFeeApply;

import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO;
import cn.iocoder.yudao.framework.mybatis.core.service.IService;
import cn.iocoder.yudao.module.order.dto.OrderBackInfoDto;
import cn.iocoder.yudao.module.order.vo.batchOrderFeeApply.*;
import cn.iocoder.yudao.module.order.dal.dataobject.batchOrderFeeApply.BatchOrderFeeApplyDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.order.vo.order.OrderBackVO;

/**
 * 批量费用申请 Service 接口
 *
 * @author 系统管理员
 */
public interface BatchOrderFeeApplyService extends IService<BatchOrderFeeApplyDO> {

    /**
     * 创建批量费用申请
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createBatchOrderFeeApply(@Valid BatchOrderFeeApplyCreateReqVO createReqVO);


    /**
     * 获得批量费用申请
     * @param id 编号
     * @return 批量费用申请
     */
    BatchOrderFeeApplyBackVO getBatchOrderFeeApply(Long id);

    /**
     * 获得批量费用申请列表
     * @param ids 编号
     * @return 批量费用申请列表
     */
    List<BatchOrderFeeApplyDO> getBatchOrderFeeApplyList(Collection<Long> ids);

    /**
     * 获得批量费用申请分页
     * @param page 分页查询
     * @param query 查询
     * @return 批量费用申请分页
     */
    PageResult<BatchOrderFeeApplyBackVO> getBatchOrderFeeApplyPage(BatchOrderFeeApplyQueryVO query, PageVO page);

    /**
     * 获得批量费用申请列表, 用于 Excel 导出
     * @param query 查询
     * @return 批量费用申请列表
     */
    List<BatchOrderFeeApplyDO> getBatchOrderFeeApplyList(BatchOrderFeeApplyQueryVO query);

    BatchOrderFeeApplyBackVO getInfoByFormId(String formId);

    List<OrderBackInfoDto> getOrderListByIds(List<Long> orderIds);

    /**
     * 批量订单费用申请回调
     *
     * @param id 表单业务ID
     * @param result 1 处理中  2 通过 3 不通过 4 已取消
     */
    void batchOrderFeeApplyCallback(String id, Integer result);

}
