
package com.tmerclub.cloud.order.service;

import com.tmerclub.cloud.api.delivery.dto.DeliveryOrderItemDTO;
import com.tmerclub.cloud.common.database.dto.PageDTO;
import com.tmerclub.cloud.common.database.vo.PageVO;
import com.tmerclub.cloud.order.model.PurchaseOrderItem;

import java.util.List;

/**
 * 采购商品
 *
 * @author lhd
 * @date 2022-06-22 17:12:02
 */
public interface PurchaseOrderItemService {

    /**
     * 分页获取采购商品列表
     *
     * @param pageDTO 分页参数
     * @return 采购商品列表分页数据
     */
    PageVO<PurchaseOrderItem> page(PageDTO pageDTO);

    /**
     * 根据采购商品id获取采购商品
     *
     * @param purchaseSpuId 采购商品id
     * @return 采购商品
     */
    PurchaseOrderItem getByPurchaseSpuId(Long purchaseSpuId);

    /**
     * 保存采购商品
     *
     * @param purchaseOrderItem 采购商品
     */
    void save(PurchaseOrderItem purchaseOrderItem);

    /**
     * 修改订单项发货状态
     *
     * @param selectOrderItems
     * @param deliveryType
     */
    void updateByDeliveries(List<DeliveryOrderItemDTO> selectOrderItems, Integer deliveryType);

    /**
     * 计算未发货商品数量
     *
     * @param orderId
     * @return
     */
    int countUnDeliveryNumByOrderId(Long orderId);

    /**
     * 根据订单号获取订单项的物流类型
     *
     * @param orderId 订单号
     * @return 物流类型
     */
    boolean getDevTypeByOrderId(Long orderId);

    /**
     * 批量修改
     *
     * @param purchaseOrderItemListDb
     */
    void updateBatchById(List<PurchaseOrderItem> purchaseOrderItemListDb);


    /**
     * 批量根据订单号修改为订单状态
     *
     * @param purchaseOrderStatus 订单状态
     * @param purchaseOrderId     订单号
     */
    void updateStatusByPurchaseOrderId(Integer purchaseOrderStatus, Long purchaseOrderId);
}
