package com.sunda.spmsorder.service;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sunda.spmscommon.ResponseResult;
import com.sunda.spmsorder.entity.MaterialSap;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 物料表SAP 服务类
 * </p>
 *
 * @author Wayne
 * @since 2020-12-09
 */
public interface IMaterialSapService extends IService<MaterialSap> {

    /** 查询 material_sap 表指定数据，及关联目录信息，贸易货，备件货 */
    ResponseResult getMaterialSapXM(String materialNo);

    /** 查询 material_sap 表指定数据，及关联目录信息 */
    ResponseResult getMaterialSap(String materialNo, int pageNo, int pageSize);

    /** 根据多物料编码精确查询 或 物料描述模糊查询物料信息数据，包含物料长协信息 */
    Map<String, Object> searchMaterialSap(int pageNo, int pageSize, String categoryId, String materialNoList, String materialZhDesc, String materialEnDesc,String productLevelDesc,String specs,String brand);

    /** 根据多物料编码精确查询 或 物料描述模糊查询物料信息数据，不包含物料长协信息 
     * @param purchaseLocation */
    Map<String, Object> searchMaterialSapNoContract(int pageNo, int pageSize, String categoryId, String materialNoList, String materialZhDesc, String materialEnDesc,String productLevelDesc,String specs,String brand, String purchaseLocation);

    /** 根据多物料编码精确查询 或 物料描述模糊查询物料信息数据，不包含物料长协信息，所有类型都搜索，全局 */
    Map<String, Object> searchMaterialSapNoContractGlobal(int pageNo, int pageSize, String keyword, String searchInfos);

    /** 根据多物料编码精确查询 或 物料描述模糊查询物料信息数据，包含对应工厂下库存信息，不包含物料长协信息 */
    Map<String, Object> getMaterialSapInventory(int pageNo, int pageSize, String werks, String whsStr, String categoryId, String materialNoList, String materialZhDesc, String materialEnDesc,String productLevelDesc,String specs,String brand);

    /** 根据多物料编码精确查询 或 物料描述模糊查询物料信息数据，包含对应工厂下库存信息，包含物料长协信息 */
    Map<String, Object> getMaterialSapInventoryInfo(int pageNo, int pageSize, String werks, String categoryId, String materialNoList, String materialZhDesc, String materialEnDesc,String productLevelSmallDesc,String specs,String brand);

    /** 物料信息（SAP）接口，日期必须输入。实时从SAP获取物料更新接口。 */
    ResponseResult getMaterialDataFromSap(String dataDate, String userId);

    /** 查询物料实时更新操作记录 */
    ResponseResult getMaterialDataFromSapRecord(JSONObject doc);

    /** 获取系统中所有备件物料信息 */
    ResponseResult getAllMaterialX();

    /** 根据物料编号获取物料信息 */
    MaterialSap getMaterialInfo(String materialNo);

    /** 根据物料编号获取物料信息 */
    List<Map<String, Object>> searchMaterialSapByNo(String materialNo);
}
