package com.sunda.spmsoversea.service;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.sunda.spmscommon.ResponseResult;
import com.sunda.spmsoversea.dto.OverseaConsumptionDTO;
import com.sunda.spmsoversea.dto.OverseaReport;
import com.sunda.spmsoversea.dto.WelcomePageSearchDTO;
import com.sunda.spmsoversea.dto.WelcomePageWerksOrderDTO;

import java.text.ParseException;
import java.util.List;
import java.util.Map;

public interface IOverseaReportService {

    /** 库龄分析(按物料) */
    List<Map<String, Object>> getInventoryAge(String werks, String whsLocationCode, String materialNo, Integer days);

    /** 库龄分析(按箱码) */
    List<Map<String, Object>> getBoxInventoryAge(String werks, String whsLocationCode, String boxNote, Integer days);

    /** 获取耗用记录 */
    List<Map<String, Object>> getConsumptionRecord(OverseaConsumptionDTO overseaConsumptionDTO);

    /** 首页待办项信息展示 */
    List<Map<String, Object>> getToDoTasks(String userId);

    /** 海外仓首页，车间请购单整单追溯查询 */
    ResponseResult getOrderWorkshopTrace(WelcomePageSearchDTO welcomePageSearchDTO, String userId);

    /** 海外仓首页，工厂请购单整单追溯查询 */
    ResponseResult getOrderWerksTrace(WelcomePageWerksOrderDTO welcomePageWerksOrderDTO, String userId);

    /** 按工厂请购单uuid查询所有关联箱码所在位置 */
    ResponseResult getOrderWerksBoxTrace(String uuid);

    /** 根据工厂请购单单号，向SRM请求SRM系统整单状态 */
    ResponseResult getOrderStatusFromSrm(String spmsId);

    /** 根据工厂、工厂请购单号、日期区间，查询符合条件下所有请购单全生命周期关键节点日期数据 */
    ResponseResult getOrderKeyDates(OverseaReport overseaReport, String userId);

    /** 根据工厂、工厂请购单号、日期区间，查询符合条件下所有请购单全生命周期关键节点日期数据 */
    List<Map<String, Object>> getOrderKeyDatesList(OverseaReport overseaReport, String userId);
    
    /** 查询提交SAP失败的单据 **/
    IPage getSendSapFailedListByRecord(OverseaReport overseaReport);
    
    /** 查询物料图片覆盖报表数据 **/
    ResponseResult getMaterialPhotosList(OverseaConsumptionDTO dto);
    
    /** 查询SPMS与SAP库存差异报表数据 **/
	ResponseResult getMaterialStockQtyDifferList(OverseaConsumptionDTO dto);

    /** 获取SAP在途数据报表 **/
    ResponseResult getIntransitData(OverseaConsumptionDTO dto);
    
    /**
     * 查询发货效率报表接口
     * @param jsonObject
     * @return
     * @throws Exception 
     */
	ResponseResult getDeliveryReportList(JSONObject jsonObject) throws Exception;
	
	/**
	 * 根据条件不分页查询在途超期数据
	 * @param jsonObject
	 * @return
	 */
	List<Map<String, Object>> getOnwayReportList(JSONObject jsonObject);
	
	/**
	 * 根据条件查询在途超期指标数据
	 * @param jsonObject
	 * @return
	 * @throws Exception 
	 */
	List<Map<String, Object>> getOnwayTargetReportList(JSONObject jsonObject) throws Exception;
	
	/**
	 * 不分页查询过账异常单据
	 * @param jsonObject
	 * @return
	 */
	List<Map<String, Object>> getAnomaliesReportList(JSONObject jsonObject);
	
	/**
	 * 不分页查询过账异常统计指标单据
	 * @param jsonObject
	 * @return
	 */
	List<Map<String, Object>> getAnomaliesTargetReportList(JSONObject jsonObject);

}
