using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.APIEnum;
using WIDESEA_Core.Helper;
using WIDESEA_External.Model;
using WIDESEA_IBasicRepository;
using WIDESEA_Model.Models;
namespace WIDESEA_External.ERPService
{
///
/// 调用ERP接口
///
public class InvokeERPService : IInvokeERPService
{
private readonly IApiInfoRepository _apiInfoRepository;
public InvokeERPService(IApiInfoRepository apiInfoRepository)
{
_apiInfoRepository = apiInfoRepository;
}
// 创建一个使用小驼峰命名法的序列化设置
JsonSerializerSettings settings = new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
///
/// ERP收货单接口调用
///
///
///
public string InvokeMatReceiveApi(ERPReceiveModel receiveModel)
{
Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeErpApi.ToString());
ERPBaseModel model = new ERPBaseModel()
{
Data = receiveModel,
Desc = "WMS收货单推送",
Type = "toTCWMSReceive",
SecurityCode = "TeChuang"
};
string request = JsonConvert.SerializeObject(model, settings);
string response = HttpHelper.Post(apiInfo.ApiAddress, request);
return response;
}
///
/// ERP物料IQC检验单接口调用
///
///
///
public string InvokeCheckOrderApi(ERPCheckModel checkModel)
{
Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeErpApi.ToString());
ERPBaseModel model = new ERPBaseModel()
{
Data = checkModel,
Desc = "物料IQC检验单",
Type = "toTCWMSIQCTest",
SecurityCode = "TeChuang"
};
string request = JsonConvert.SerializeObject(model, settings);
string response = HttpHelper.Post(apiInfo.ApiAddress, request);
return response;
}
///
/// ERP物料入库单接口调用
///
///
///
public string InvokeInboundOrderApi(ERPInboundModel inboundModel)
{
Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeErpApi.ToString());
ERPBaseModel model = new ERPBaseModel()
{
Data = inboundModel,
Desc = "物料入库单",
Type = "toTCWMSMaterialWarehousing",
SecurityCode = "TeChuang"
};
string request = JsonConvert.SerializeObject(model, settings);
string response = HttpHelper.Post(apiInfo.ApiAddress, request);
return response;
}
///
/// ERP领料通知单出库
///
public string InvokeOutStandardsApi(ERPIssueModel issueModel)
{
Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeErpApi.ToString());
ERPBaseModel model = new ERPBaseModel()
{
Data = issueModel,
Desc = "领料出库通知单",
Type = "toStandardPickList",
SecurityCode = "TeChuang"
};
string request = JsonConvert.SerializeObject(model, settings).Replace("issitem", "Issitem");
string response = HttpHelper.Post(apiInfo.ApiAddress, request);
return response;
}
///
/// ERP退料上报接口调用
///
public string InvokeReturnApi(ERPReturnModel returnModel)
{
Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeErpApi.ToString());
ERPBaseModel model = new ERPBaseModel()
{
Data = returnModel,
Desc = "材料退库",
Type = "importMaterialsIssueNoteWMS",
SecurityCode = "TeChuang"
};
string request = JsonConvert.SerializeObject(model, settings).Replace("issitem", "Issitem");
string response = HttpHelper.Post(apiInfo.ApiAddress, request);
return response;
}
///
/// ERP盘赢/亏上报接口调用
///
public string InvokeTakeStockApi(ERPTakeStockModel takeModel)
{
Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeErpApi.ToString());
ERPBaseModel model = new ERPBaseModel()
{
Data = takeModel,
Desc = "材料盘点",
Type = "toTCWMSMaterialCounting",
SecurityCode = "TeChuang"
};
string request = JsonConvert.SerializeObject(model, settings);
string response = HttpHelper.Post(apiInfo.ApiAddress, request);
return response;
}
///
/// ERP成品出库上报接口调用
///
public string InvokeProOutApi(ERPProOutOrderModel outOrderModel)
{
Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeErpApi.ToString());
ERPBaseModel model = new ERPBaseModel()
{
Data = outOrderModel,
Desc = "出库成品通知",
Type = "toOrderAssignment",
SecurityCode = "TeChuang"
};
string request = JsonConvert.SerializeObject(model, settings);
string response = HttpHelper.Post(apiInfo.ApiAddress, request);
return response;
}
///
/// ERP成品订单客户查询接口调用
///
///
///
public string InvokeProSaleCustomer(string saleOrderNo)
{
Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeErpSaleCustomApi.ToString());
object saleObj = new { soNumber=saleOrderNo };
string request = JsonConvert.SerializeObject(saleObj, settings);
Dictionary requestHeader =new Dictionary
{
{ "AccessToken", "TCKJF60B03C07E8E41B0B3CF759B7B01AB81HATC"},
};
string response = HttpHelper.Post(apiInfo.ApiAddress, request,headers:requestHeader);
return response;
}
///
/// ERP成品订单出库库存查询
///
///
public string InvokeOutProErpSync(string outProOrderNo)
{
Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeErpOutProErpSyncApi.ToString());
object outNoObj = new { shippingNumber = outProOrderNo };
string request = JsonConvert.SerializeObject(outNoObj, settings);
Dictionary requestHeader = new Dictionary
{
{ "AccessToken", "TCKJF60B03C07E8E41B0B3CF759B7B01AB81HATC"},
};
string response = HttpHelper.Post(apiInfo.ApiAddress, request, headers: requestHeader);
return response;
}
///
/// ERP成品入库产品型号面积查询
///
///
public string InvokeProInErpStatic(string partNum,string partNumWithRev)
{
Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeProInErpStatic.ToString());
object inObj = new { partNum, partNumWithRev };
string request = JsonConvert.SerializeObject(inObj, settings);
Dictionary requestHeader = new Dictionary
{
{ "AccessToken", "TCKJF60B03C07E8E41B0B3CF759B7B01AB81HATC"},
};
string response = HttpHelper.Post(apiInfo.ApiAddress, request, headers: requestHeader);
return response;
}
///
/// ERP成品入库上报接口调用
///
public string InvokeProInApi(ERPProInboundModel inboundModel)
{
Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeErpApi.ToString());
ERPBaseModel model = new ERPBaseModel()
{
Data = inboundModel,
Desc = "成品入库",
Type = "toWOStockForm",
SecurityCode = "TeChuang"
};
string request = JsonConvert.SerializeObject(model, settings);
string response = HttpHelper.Post(apiInfo.ApiAddress, request);
return response;
}
///
/// 成品仓检报废出库推送ERP
///
///
///
public string InvokeProCheckApi(ERPProductCheckModel checkModel)
{
Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeErpApi.ToString());
ERPBaseModel model = new ERPBaseModel()
{
Data = checkModel,
Desc = "成品检验单",
Type = "toFGIIqcChecked",
SecurityCode = "TeChuang"
};
string request = JsonConvert.SerializeObject(model, settings);
string response = HttpHelper.Post(apiInfo.ApiAddress, request);
return response;
}
///
/// 成品超周期报废推送ERP
///
///
///
public string InvokeProScrapSheetApi(ERPScrapSheetModel sheetModel)
{
Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeErpApi.ToString());
ERPBaseModel model = new ERPBaseModel()
{
Data = sheetModel,
Desc = "成品报废单",
Type = "toFGIScrapSheet",
SecurityCode = "TeChuang"
};
string request = JsonConvert.SerializeObject(model, settings);
string response = HttpHelper.Post(apiInfo.ApiAddress, request);
return response;
}
///
/// 成品盘点盘赢/盘亏
///
///
///
public string InvokeProStockCheckApi(ERPProStockCheckModel stockCheckModel)
{
Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeErpApi.ToString());
ERPBaseModel model = new ERPBaseModel()
{
Data = stockCheckModel,
Desc = "成品盘点单",
Type = "toStockCheck",
SecurityCode = "TeChuang"
};
string request = JsonConvert.SerializeObject(model, settings);
string response = HttpHelper.Post(apiInfo.ApiAddress, request);
return response;
}
///
/// ERP物料出库接口调用
///
///
///
#region 弃用
//public string InvokeOutboundOrderApi(ERPOutboundModel outboundModel)
//{
// Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeErpApi.ToString());
// ERPBaseModel model = new ERPBaseModel()
// {
// Data = outboundModel,
// Desc = "材料出库",
// Type = "toBomMaterialOutTC",
// SecurityCode = "TeChuang"
// };
// string request = JsonConvert.SerializeObject(model, settings);
// string response = HttpHelper.Post(apiInfo.ApiAddress, request);
// return response;
//}
#endregion
}
}