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