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 } }