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

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.service.IService;
import cn.iocoder.yudao.framework.mybatis.core.vo.PageVO;
import cn.iocoder.yudao.module.order.dal.dataobject.orderWarehousePicture.OrderWarehousePictureDO;
import cn.iocoder.yudao.module.order.vo.orderWarehousePicture.OrderWarehousePictureBackVO;
import cn.iocoder.yudao.module.order.vo.orderWarehousePicture.OrderWarehousePictureCreateReqVO;
import cn.iocoder.yudao.module.order.vo.orderWarehousePicture.OrderWarehousePictureQueryVO;
import cn.iocoder.yudao.module.order.vo.orderWarehousePicture.OrderWarehousePictureUpdateReqVO;

import javax.validation.Valid;
import java.util.Collection;
import java.util.List;

/**
 * 订单仓库图片 Service 接口
 *
 * @author yanghao
 */
public interface OrderWarehousePictureService extends IService<OrderWarehousePictureDO> {

    /**
     * 创建订单仓库图片
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createWarehousePicture(@Valid OrderWarehousePictureCreateReqVO createReqVO);

    /**
     * 插入影像
     * @param urls 影像列表
     * @param type 类型 1入仓 2调拨出仓 3调拨到仓 4订单转异
     * @param bizId 业务id
     */
    void createWarehousePictureBatch(List<String> urls, Integer type, Long bizId);

    /**
     * 更新订单仓库图片
     * @param updateReqVO 更新信息
     */
    void updateWarehousePicture(@Valid OrderWarehousePictureUpdateReqVO updateReqVO);

    /**
     * 删除订单仓库图片
     * @param id 编号
     */
    void deleteWarehousePicture(Long id);


    /**
     * 删除入仓影像
     *
     * @param orderItemId 订单项
     */
    void deleteOrderItemWarehousePicture(Long orderItemId);

    /**
     * 获得订单仓库图片
     * @param id 编号
     * @return 订单仓库图片
     */
    OrderWarehousePictureDO getWarehousePicture(Long id);

    /**
     * 获得订单仓库图片列表
     * @param ids 编号
     * @return 订单仓库图片列表
     */
    List<OrderWarehousePictureDO> getWarehousePictureList(Collection<Long> ids);


    /**
     * 获得订单仓库图片列表
     * @param type
     * @param bizId
     * @return
     */
    List<OrderWarehousePictureDO> getWarehousePictureList(Integer type, Long bizId);


    /**
     * 获得订单仓库图片列表
     * @param type
     * @param bizId
     * @return
     */
    List<String> getWarehousePictureUrlList(Integer type, Long bizId);


    /**
     * 获得订单仓库图片列表
     * @param type
     * @param bizId
     * @return
     */
    List<OrderWarehousePictureBackVO> getWarehousePictureBackVOList(Integer type, Long bizId);



    /**
     * 获得订单仓库图片分页
     * @param page 分页查询
     * @param query 查询
     * @return 订单仓库图片分页
     */
    PageResult<OrderWarehousePictureDO> getWarehousePicturePage(OrderWarehousePictureQueryVO query, PageVO page);

    /**
     * 获得订单仓库图片列表, 用于 Excel 导出
     * @param query 查询
     * @return 订单仓库图片列表
     */
    List<OrderWarehousePictureDO> getWarehousePictureList(OrderWarehousePictureQueryVO query);


    /**
     * 获取订单项的入仓影像url
     *
     * @param orderItemId
     * @return
     */
    List<String> getOrderItemWarehousePictureUrlList(Long orderItemId);

}
