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 = "收货单",
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 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;
}
}
}