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

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.dal.dataobject.orderExceptionResult.OrderExceptionResultDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.order.vo.orderExceptionResult.OrderExceptionResultCreateReqVO;
import cn.iocoder.yudao.module.order.vo.orderExceptionResult.OrderExceptionResultQueryVO;
import cn.iocoder.yudao.module.order.vo.orderExceptionResult.OrderExceptionResultUpdateReqVO;

/**
 * 异常处理记录 Service 接口
 *
 * @author 系统管理员
 */
public interface OrderExceptionResultService extends IService<OrderExceptionResultDO> {

    /**
     * 创建异常处理记录
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createOrderExceptionResult(@Valid OrderExceptionResultCreateReqVO createReqVO);

    /**
     * 更新异常处理记录
     * @param updateReqVO 更新信息
     */
    void updateOrderExceptionResult(@Valid OrderExceptionResultUpdateReqVO updateReqVO);

    /**
     * 删除异常处理记录
     * @param id 编号
     */
    void deleteOrderExceptionResult(Long id);

    /**
     * 获得异常处理记录
     * @param id 编号
     * @return 异常处理记录
     */
    OrderExceptionResultDO getOrderExceptionResult(Long id);

    OrderExceptionResultDO getOrderExceptionResultByOrderExceptionId(Long orderExceptionId);

    /**
     * 获得异常处理记录列表
     * @param ids 编号
     * @return 异常处理记录列表
     */
    List<OrderExceptionResultDO> getOrderExceptionResultList(Collection<Long> ids);

    /**
     * 获得异常处理记录分页
     * @param page 分页查询
     * @param query 查询
     * @return 异常处理记录分页
     */
    PageResult<OrderExceptionResultDO> getOrderExceptionResultPage(OrderExceptionResultQueryVO query, PageVO page);

    /**
     * 获得异常处理记录列表, 用于 Excel 导出
     * @param query 查询
     * @return 异常处理记录列表
     */
    List<OrderExceptionResultDO> getOrderExceptionResultList(OrderExceptionResultQueryVO query);
}
