package com.hzs.sale.deliver.service;

import com.hzs.common.domain.sale.ext.SaOrderItemsExt;
import com.hzs.sale.deliver.param.DeliverSecondSubmitParam;
import com.hzs.sale.deliver.param.SelfDeliverBarCodeParam;
import com.hzs.sale.deliver.param.SelfDeliverParam;
import com.hzs.system.sys.dto.ApprovalBusinessResultDTO;
import com.hzs.system.sys.dto.LoginUser;

import java.util.List;

/**
 * 发货单业务服务
 */
public interface ISaDeliverBusinessService {

    /**
     * 订单自提提交
     *
     * @param param            自提入参
     * @param orderItemsList   自提订单明细列表
     * @param barCodeParamList 自提追溯码列表
     * @param loginUser        当前用户
     * @return
     */
    String selfDeliverSubmit(SelfDeliverParam param,
                             List<SaOrderItemsExt> orderItemsList,
                             List<SelfDeliverBarCodeParam> barCodeParamList,
                             LoginUser loginUser);

    /**
     * 订单自提审批通过
     *
     * @param approvalBusinessResultDTO
     * @return
     */
    String selfDeliverApprovalAgree(ApprovalBusinessResultDTO approvalBusinessResultDTO);

    /**
     * 订单自提审批驳回
     *
     * @param approvalBusinessResultDTO
     * @return
     */
    String selfDeliverApprovalReject(ApprovalBusinessResultDTO approvalBusinessResultDTO);

    /**
     * 订单二次发货提交
     *
     * @param param     二次发货入参
     * @param loginUser 当前用户
     * @return
     */
    String secondDeliverSubmit(DeliverSecondSubmitParam param, LoginUser loginUser);

    /**
     * 订单二次发货审批通过
     *
     * @param approvalBusinessResultDTO
     * @return
     */
    String secondDeliverApprovalAgree(ApprovalBusinessResultDTO approvalBusinessResultDTO);

    /**
     * 订单二次发货审批驳回
     *
     * @param approvalBusinessResultDTO
     * @return
     */
    String secondDeliverApprovalReject(ApprovalBusinessResultDTO approvalBusinessResultDTO);

}
