package com.fjhx.service;

import com.fjhx.base.BaseService;
import com.fjhx.entity.ApplyPurchase;
import com.fjhx.entity.Order;

import java.util.List;

/**
 * <p>
 * 订单 服务类
 * </p>
 *
 * @author ${author}
 * @since 2022-08-25
 */
public interface OrderService extends BaseService<Order> {

    /**
     * 创建订单/发起订单
     *
     * @param supplierId        供应商id
     * @param applyPurchaseList 申购列表
     * @param code              订单号
     */
    void createOrder(Long supplierId, List<ApplyPurchase> applyPurchaseList, String code);

    /**
     * 创建订单/发起订单（指定前缀自动生成申购）
     *
     * @param supplierId        供应商id
     * @param applyPurchaseList 申购列表
     * @param codePrefix        编码前缀
     */
    void createOrderAuth(Long supplierId, List<ApplyPurchase> applyPurchaseList, String codePrefix);

    /**
     * 创建订单/发起订单（默认前缀自动生成申购）
     *
     * @param supplierId        供应商id
     * @param applyPurchaseList 申购列表
     */
    void createOrderAuth(Long supplierId, List<ApplyPurchase> applyPurchaseList);

    /**
     * 采购订单审批未通过
     *
     * @param orderId 订单id
     */
    void flowNotPass(Long orderId);

    /**
     * 采购订单审批通过
     *
     * @param orderId 订单id
     */
    void flowPass(Long orderId);

    /**
     * 订单是否完成，如果完成，自动修改状态为完成
     *
     * @param orderId 订单id
     * @return 订单是否完成
     */
    boolean orderComplete(Long orderId);

}
