package com.sunda.spmsoversea.service;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sunda.spmscommon.ResponseResult;
import com.sunda.spmsoversea.dto.*;
import com.sunda.spmsoversea.entity.OverseaRequisition;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 领用申请表 服务类
 * </p>
 *
 * @author Wayne
 * @since 2021-09-22
 */
public interface IOverseaRequisitionService extends IService<OverseaRequisition> {

    /** 获取领用申请列表 */
    IPage getOverseaRequisitionPage (OverseaRequisitionQueryDTO overseaRequisitionQueryDTO);

    /** 获取领用单分析出库报表 */
    IPage getOverseaRequisitionReport (OverseaRequisitionReportDTO overseaRequisitionReportDTO);

    /** 创建领用申请 */
    ResponseResult createOverseaRequisition (OverseaRequisitionDTO overseaRequisitionDTO, String userId)throws Exception ;

    /** 根据 领用申请UUID 查询领用申请详情及领用明细 */
    ResponseResult getRequisitionAndDtl(String uuidRequisition);

    /** 领用申请审批通过 */
    ResponseResult updateOverseaRequisition(OverseaRequisitionDTO overseaRequisitionDTO, String userId)throws Exception;

    /** 领用申请退回 */
    ResponseResult cancelOverseaRequisition(String uuidRequisition, Integer dataVersion, String spmsStatus, String userId)throws Exception;

    /** 根据领用申请UUID获取领用申请信息 */
    OverseaRequisition getOverseaRequisition(String uuidRequisition);

    /** 根据领用申请更新领用申请表头信息 */
    int updateRequisition(OverseaRequisition overseaRequisition);

    /** 待发货领用申请异常报表/审批通过未出库超过3天 */
    List<Map<String, Object>> getRequisitionOverdueReports(String werks, String currentDate);
    
    /** 领用申请撤回 */
	ResponseResult rollBackOverseaRequisition(String uuidRequisition, Integer dataVersion, String userId,String cancelReason)throws Exception;

    /** 在途收货报表查询 */
    ResponseResult getReceiptAndDeliveryReports(OverseaReceiptAndDeliverySearchDTO overseaReceiptAndDeliverySearchDTO);
}
