| 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 | 
| { | 
|     /// <summary> | 
|     /// 调用ERP接口 | 
|     /// </summary> | 
|     public class InvokeERPService : IInvokeERPService | 
|     { | 
|         private readonly IApiInfoRepository _apiInfoRepository; | 
|         public InvokeERPService(IApiInfoRepository apiInfoRepository) | 
|         { | 
|             _apiInfoRepository = apiInfoRepository; | 
|         } | 
|         // 创建一个使用小驼峰命名法的序列化设置 | 
|         JsonSerializerSettings settings = new JsonSerializerSettings | 
|         { | 
|             ContractResolver = new CamelCasePropertyNamesContractResolver() | 
|         }; | 
|         /// <summary> | 
|         /// ERP收货单接口调用 | 
|         /// </summary> | 
|         /// <param name="receiveModel"></param> | 
|         /// <returns></returns> | 
|         public string InvokeMatReceiveApi(ERPReceiveModel receiveModel) | 
|         { | 
|             Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeErpApi.ToString()); | 
|             ERPBaseModel<ERPReceiveModel> model = new ERPBaseModel<ERPReceiveModel>() | 
|             { | 
|                 Data = receiveModel, | 
|                 Desc = "WMS收货单推送", | 
|                 Type = "toTCWMSReceive", | 
|                 SecurityCode = "TeChuang" | 
|             }; | 
|              | 
|             string request = JsonConvert.SerializeObject(model, settings); | 
|              | 
|             string response = HttpHelper.Post(apiInfo.ApiAddress, request); | 
|             return response; | 
|         } | 
|   | 
|         /// <summary> | 
|         /// ERP物料IQC检验单接口调用 | 
|         /// </summary> | 
|         /// <param name="checkModel"></param> | 
|         /// <returns></returns> | 
|         public string InvokeCheckOrderApi(ERPCheckModel checkModel) | 
|         { | 
|             Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeErpApi.ToString()); | 
|             ERPBaseModel<ERPCheckModel> model = new ERPBaseModel<ERPCheckModel>() | 
|             { | 
|                 Data = checkModel, | 
|                 Desc = "物料IQC检验单", | 
|                 Type = "toTCWMSIQCTest", | 
|                 SecurityCode = "TeChuang" | 
|             }; | 
|             string request = JsonConvert.SerializeObject(model, settings); | 
|   | 
|             string response = HttpHelper.Post(apiInfo.ApiAddress, request); | 
|             return response; | 
|         } | 
|   | 
|         /// <summary> | 
|         /// ERP物料送检接口调用 | 
|         /// </summary> | 
|         public string InvokeInspectApi(ERPInspectModel eRPInspectModel) | 
|         { | 
|             Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeErpApi.ToString()); | 
|             ERPBaseModel<ERPInspectModel> model = new ERPBaseModel<ERPInspectModel>() | 
|             { | 
|                 Data = eRPInspectModel, | 
|                 Desc = "物料出仓检验单", | 
|                 Type = "toTCWMSOUTTest", | 
|                 SecurityCode = "TeChuang" | 
|             }; | 
|             string request = JsonConvert.SerializeObject(model, settings); | 
|   | 
|             string response = HttpHelper.Post(apiInfo.ApiAddress, request); | 
|             return response; | 
|         } | 
|   | 
|         /// <summary> | 
|         /// ERP物料入库单接口调用 | 
|         /// </summary> | 
|         /// <param name="inboundModel"></param> | 
|         /// <returns></returns> | 
|         public string InvokeInboundOrderApi(ERPInboundModel inboundModel) | 
|         { | 
|             Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeErpApi.ToString()); | 
|             ERPBaseModel<ERPInboundModel> model = new ERPBaseModel<ERPInboundModel>() | 
|             { | 
|                 Data = inboundModel, | 
|                 Desc = "物料入库单", | 
|                 Type = "toTCWMSMaterialWarehousing", | 
|                 SecurityCode = "TeChuang" | 
|             }; | 
|             string request = JsonConvert.SerializeObject(model, settings); | 
|             string response = HttpHelper.Post(apiInfo.ApiAddress, request); | 
|             return response; | 
|         } | 
|         /// <summary> | 
|         /// ERP领料通知单出库 | 
|         /// </summary> | 
|         public string InvokeOutStandardsApi(ERPIssueModel issueModel) | 
|         { | 
|             Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeErpApi.ToString()); | 
|             ERPBaseModel<ERPIssueModel> model = new ERPBaseModel<ERPIssueModel>() | 
|             { | 
|                 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; | 
|         } | 
|         /// <summary> | 
|         /// ERP退料上报接口调用 | 
|         /// </summary> | 
|         public string InvokeReturnApi(ERPReturnModel returnModel) | 
|         { | 
|             Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeErpApi.ToString()); | 
|             ERPBaseModel<ERPReturnModel> model = new ERPBaseModel<ERPReturnModel>() | 
|             { | 
|                 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; | 
|         } | 
|         /// <summary> | 
|         /// ERP盘赢/亏上报接口调用 | 
|         /// </summary> | 
|         public string InvokeTakeStockApi(ERPTakeStockModel takeModel) | 
|         { | 
|             Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeErpApi.ToString()); | 
|             ERPBaseModel<ERPTakeStockModel> model = new ERPBaseModel<ERPTakeStockModel>() | 
|             { | 
|                 Data = takeModel, | 
|                 Desc = "材料盘点", | 
|                 Type = "toTCWMSMaterialCounting", | 
|                 SecurityCode = "TeChuang" | 
|             }; | 
|             string request = JsonConvert.SerializeObject(model, settings); | 
|             string response = HttpHelper.Post(apiInfo.ApiAddress, request); | 
|             return response; | 
|         } | 
|         /// <summary> | 
|         /// ERP成品出库上报接口调用 | 
|         /// </summary> | 
|         public string InvokeProOutApi(ERPProOutOrderModel outOrderModel) | 
|         { | 
|             Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeErpApi.ToString()); | 
|             ERPBaseModel<ERPProOutOrderModel> model = new ERPBaseModel<ERPProOutOrderModel>() | 
|             { | 
|                 Data = outOrderModel, | 
|                 Desc = "出库成品通知", | 
|                 Type = "toOrderAssignment", | 
|                 SecurityCode = "TeChuang" | 
|             }; | 
|             string request = JsonConvert.SerializeObject(model, settings); | 
|             string response = HttpHelper.Post(apiInfo.ApiAddress, request); | 
|             return response; | 
|         } | 
|         /// <summary> | 
|         /// ERP成品订单客户查询接口调用 | 
|         /// </summary> | 
|         /// <param name="saleOrderNo"></param> | 
|         /// <returns></returns> | 
|         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<string,string> requestHeader =new Dictionary<string, string> | 
|             { | 
|                 { "AccessToken", "TCKJF60B03C07E8E41B0B3CF759B7B01AB81HATC"}, | 
|             }; | 
|             string response = HttpHelper.Post(apiInfo.ApiAddress, request,headers:requestHeader); | 
|             return response; | 
|         } | 
|         /// <summary> | 
|         /// ERP成品订单出库库存查询 | 
|         /// </summary> | 
|         /// <returns></returns> | 
|         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<string, string> requestHeader = new Dictionary<string, string> | 
|             { | 
|                 { "AccessToken", "TCKJF60B03C07E8E41B0B3CF759B7B01AB81HATC"}, | 
|             }; | 
|             string response = HttpHelper.Post(apiInfo.ApiAddress, request, headers: requestHeader); | 
|             return response; | 
|         } | 
|         /// <summary> | 
|         /// ERP成品入库产品型号面积查询 | 
|         /// </summary> | 
|         /// <returns></returns> | 
|         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<string, string> requestHeader = new Dictionary<string, string> | 
|             { | 
|                 { "AccessToken", "TCKJF60B03C07E8E41B0B3CF759B7B01AB81HATC"}, | 
|             }; | 
|             string response = HttpHelper.Post(apiInfo.ApiAddress, request, headers: requestHeader); | 
|             return response; | 
|         } | 
|         /// <summary> | 
|         /// ERP成品入库上报接口调用 | 
|         /// </summary> | 
|         public string InvokeProInApi(ERPProInboundModel inboundModel) | 
|         { | 
|             Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeErpApi.ToString()); | 
|             ERPBaseModel<ERPProInboundModel> model = new ERPBaseModel<ERPProInboundModel>() | 
|             { | 
|                 Data = inboundModel, | 
|                 Desc = "成品入库", | 
|                 Type = "toWOStockForm", | 
|                 SecurityCode = "TeChuang" | 
|             }; | 
|             string request = JsonConvert.SerializeObject(model, settings); | 
|             string response = HttpHelper.Post(apiInfo.ApiAddress, request); | 
|             return response; | 
|         } | 
|         /// <summary> | 
|         /// 成品仓检报废出库推送ERP | 
|         /// </summary> | 
|         /// <param name="checkModel"></param> | 
|         /// <returns></returns> | 
|         public string InvokeProCheckApi(ERPProductCheckModel checkModel) | 
|         { | 
|             Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeErpApi.ToString()); | 
|             ERPBaseModel<ERPProductCheckModel> model = new ERPBaseModel<ERPProductCheckModel>() | 
|             { | 
|                 Data = checkModel, | 
|                 Desc = "成品检验单", | 
|                 Type = "toFGIIqcChecked", | 
|                 SecurityCode = "TeChuang" | 
|             }; | 
|             string request = JsonConvert.SerializeObject(model, settings); | 
|             string response = HttpHelper.Post(apiInfo.ApiAddress, request); | 
|             return response; | 
|         } | 
|         /// <summary> | 
|         /// 成品超周期报废推送ERP | 
|         /// </summary> | 
|         /// <param name="sheetModel"></param> | 
|         /// <returns></returns> | 
|         public string InvokeProScrapSheetApi(ERPScrapSheetModel sheetModel) | 
|         { | 
|             Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeErpApi.ToString()); | 
|             ERPBaseModel<ERPScrapSheetModel> model = new ERPBaseModel<ERPScrapSheetModel>() | 
|             { | 
|                 Data = sheetModel, | 
|                 Desc = "成品报废单", | 
|                 Type = "toFGIScrapSheet", | 
|                 SecurityCode = "TeChuang" | 
|             }; | 
|             string request = JsonConvert.SerializeObject(model, settings); | 
|             string response = HttpHelper.Post(apiInfo.ApiAddress, request); | 
|             return response; | 
|         } | 
|         /// <summary> | 
|         /// 成品盘点盘赢/盘亏 | 
|         /// </summary> | 
|         /// <param name="stockCheckModel"></param> | 
|         /// <returns></returns> | 
|         public string InvokeProStockCheckApi(ERPProStockCheckModel stockCheckModel) | 
|         { | 
|             Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeErpApi.ToString()); | 
|             ERPBaseModel<ERPProStockCheckModel> model = new ERPBaseModel<ERPProStockCheckModel>() | 
|             { | 
|                 Data = stockCheckModel, | 
|                 Desc = "成品盘点单", | 
|                 Type = "toStockCheck", | 
|                 SecurityCode = "TeChuang" | 
|             }; | 
|             string request = JsonConvert.SerializeObject(model, settings); | 
|             string response = HttpHelper.Post(apiInfo.ApiAddress, request); | 
|             return response; | 
|         } | 
|         /// <summary> | 
|         /// ERP物料出库接口调用 | 
|         /// </summary> | 
|         /// <param name="outboundModel"></param> | 
|         /// <returns></returns> | 
|         #region 弃用 | 
|         //public string InvokeOutboundOrderApi(ERPOutboundModel outboundModel) | 
|         //{ | 
|         //    Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.InvokeErpApi.ToString()); | 
|         //    ERPBaseModel<ERPOutboundModel> model = new ERPBaseModel<ERPOutboundModel>() | 
|         //    { | 
|         //        Data = outboundModel, | 
|         //        Desc = "材料出库", | 
|         //        Type = "toBomMaterialOutTC", | 
|         //        SecurityCode = "TeChuang" | 
|         //    }; | 
|         //    string request = JsonConvert.SerializeObject(model, settings); | 
|         //    string response = HttpHelper.Post(apiInfo.ApiAddress, request); | 
|         //    return response; | 
|         //} | 
|         #endregion | 
|     } | 
| } |