package com.hzs.scm.trans.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.scm.trans.IcTransOutH;
import com.hzs.common.domain.scm.trans.ext.IcTransOutHExt;
import com.hzs.common.domain.scm.trans.ext.TransferOrderExt;
import com.hzs.scm.pub.param.ScmApproveParam;
import com.hzs.scm.trans.param.TransferItemParam;
import com.hzs.scm.trans.param.TransferParam;
import com.hzs.system.sys.dto.ApprovalBusinessResultDTO;
import com.hzs.system.sys.dto.LoginUser;

import java.util.List;

/**
 * <p>
 * 调拨出库单表头 服务类
 * </p>
 *
 * @author hzs
 * @since 2023-12-04
 */
public interface IIcTransOutHService extends IService<IcTransOutH> {
    /*
     * @description: 保存其他入库
     * @author: sui q
     * @date: 2023/11/20 15:54
     * @param: null null
     **/
    void insertTransferOutByTransferParam(List<TransferOrderExt> transferOrderList, TransferParam transferParam, Long pkMember);

    /*
     * @description: 修改保存其他入库
     * @author: sui q
     * @date: 2023/11/21 11:51
     * @param: null null
     **/
    void updateTransferOutByTransferParam(List<TransferOrderExt> transferOrderList, IcTransOutHExt transferOutExt, TransferParam poOrderParam, Long pkMember);

    /*
     * @description: 根据订单主键查询其他入库
     * @author: sui q
     * @date: 2023/11/21 10:47
     * @param: null null
     **/
    IcTransOutHExt queryTransferOutById(Long pkId, Integer orderStatus);

    /*
     * @description: 查询会员端显示的调拨出库单
     * @author: sui q
     * @date: 2023/11/25 9:55
     * @param: null null
     **/
    IcTransOutHExt queryDisTransferOutExtById(Long pkId, Integer orderStatus);

    /*
     * @description: 查询待入库的调拨订单,第一条带明细表，其他的没有明细表
     * @author: sui q
     * @date: 2023/11/23 13:53
     * @param: null null
     **/
    List<IcTransOutHExt> queryTransferOutToStoreByCondition(TransferParam transferParam);

    /*
     * @description: 查询会员端显示的调拨出库单
     * @author: sui q
     * @date: 2023/11/25 9:55
     * @param: null null
     **/
    List<IcTransOutHExt> queryDisTransferOutExtCondition(TransferParam transferParam);

    /*
     * @description: 删除采购订单
     * @author: sui q
     * @date: 2023/11/21 14:54
     * @param: null null
     **/
    void deleteTransferOut(Long pkId, Long pkMember);


    /*
     * @description: 参照生成调拨出库单，可能存在多个调拨订单生成一个入库单，支持1对多 多对1
     * @author: sui q
     * @date: 2023/11/21 17:47
     * @param: null null
     **/
    List<IcTransOutHExt> queryTransferOutByOrderItems(List<TransferItemParam> orderItemsParamList);
}
