using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Text; using System.Threading.Tasks; using System.Web.Http; using System.Xml.Linq; using System.Xml; using static HH.WCS.Mobox3.pinggao.models.SapRoot; using HH.WCS.Mobox3.pinggao; using Newtonsoft.Json.Linq; using static HH.WCS.Mobox3.pinggao.api.ApiModel; using System.Reflection; using HH.WCS.Mobox3.pinggao.api; using static HH.WCS.Mobox3.pinggao.api.OtherModel; using static HH.WCS.Mobox3.pinggao.api.ApibackModel; using HH.WCS.Mobox3.pinggao.models; namespace HH.WCS.Mobox3.pinggao.api { public class WmsSapController : System.Web.Http.ApiController { /// /// 供应商接收接口获取 /// /// /// [HttpPost] public GYSReturnRoot.Root GYSReceiveXmlData([FromBody] GYSDto.Root xmlData) { #region xml数据接收转数组 LogHelper.Info("供应商接收接口:" + JsonConvert.SerializeObject(xmlData)); ////接收xml数据 //XmlDocument xmlDoc = new XmlDocument(); //xmlDoc.LoadXml(xmlData.ToString()); //// 将 XmlDocument 转换为 JSON 字符串 //JObject jsonObject = JsonConvert.DeserializeObject(JsonConvert.SerializeXmlNode(xmlDoc)); //// 处理特定字段,强制转换为数组 //WmsSpaHelper.EnsureArrayFormats(jsonObject, "ITEM"); //// 反序列化为RootWithArray //var data = JsonConvert.DeserializeObject(jsonObject.ToString()); #endregion #region 外采入库业务流程 GYSReturnRoot.Root simpleResult = WmsSpaHelper.GYS_In(xmlData); //接收返回参数 生成sap对接文档返回格式 //var json = WmsSpaHelper.GetJsonResult(simpleResult.WLPZBH, simpleResult.resultCode.ToString(), simpleResult.resultMsg); #endregion #region 返回xml //string xml = JsonConvert.DeserializeXmlNode(json, "root").OuterXml; ////返回json //var response = new HttpResponseMessage() //{ // Content = new StringContent(xml, Encoding.UTF8, "application/xml") //}; //return response; return simpleResult; #endregion } /// /// 生产订单信息获取 /// /// /// [HttpPost] public Orderback.Root OrderReceiveXmlData([FromBody] OrderDto.Root xmlData) { #region xml数据接收转数组 LogHelper.Info("生产订单接收接口:" + JsonConvert.SerializeObject(xmlData)); ////接收xml数据 //XmlDocument xmlDoc = new XmlDocument(); //xmlDoc.LoadXml(xmlData.ToString()); //// 将 XmlDocument 转换为 JSON 字符串 //JObject jsonObject = JsonConvert.DeserializeObject(JsonConvert.SerializeXmlNode(xmlDoc)); //// 处理特定字段,强制转换为数组 //WmsSpaHelper.EnsureArrayFormats(jsonObject, "ITEM"); //// 反序列化为RootWithArray //var data = JsonConvert.DeserializeObject(jsonObject.ToString()); #endregion #region 外采入库业务流程 Orderback.Root simpleResult = WmsSpaHelper.Mater_In(xmlData); //接收返回参数 生成sap对接文档返回格式 //var json = WmsSpaHelper.GetJsonResult(simpleResult.WLPZBH, simpleResult.resultCode.ToString(), simpleResult.resultMsg); #endregion #region 返回xml //string xml = JsonConvert.DeserializeXmlNode(json, "root").OuterXml; ////返回json //var response = new HttpResponseMessage() //{ // Content = new StringContent(xml, Encoding.UTF8, "application/xml") //}; //return response; return simpleResult; #endregion } /// /// 主物料信息获取 /// /// /// [HttpPost] public WLReturnRoot.Root MaterReceiveXmlData([FromBody] MaterDto.Root xmlData) { #region xml数据接收转数组 LogHelper.Info("物料接收接口:" + JsonConvert.SerializeObject(xmlData)); ////接收xml数据 //XmlDocument xmlDoc = new XmlDocument(); //xmlDoc.LoadXml(xmlData.ToString()); //// 将 XmlDocument 转换为 JSON 字符串 //JObject jsonObject = JsonConvert.DeserializeObject(JsonConvert.SerializeXmlNode(xmlDoc)); //// 处理特定字段,强制转换为数组 //WmsSpaHelper.EnsureArrayFormats(jsonObject, "ITEM"); //// 反序列化为RootWithArray //var data = JsonConvert.DeserializeObject(jsonObject.ToString()); #endregion #region 外采入库业务流程 WLReturnRoot.Root simpleResult = WmsSpaHelper.Mater_In(xmlData); //接收返回参数 生成sap对接文档返回格式 //var json = WmsSpaHelper.GetJsonResult(simpleResult.WLPZBH, simpleResult.resultCode.ToString(), simpleResult.resultMsg); //#endregion //#region 返回xml //string xml = JsonConvert.DeserializeXmlNode(json, "root").OuterXml; ////返回json //var response = new HttpResponseMessage() //{ // Content = new StringContent(xml, Encoding.UTF8, "application/xml") //}; //return response; var json = JsonConvert.SerializeObject(simpleResult); return simpleResult; #endregion } /// /// 外采收货 /// /// /// [HttpPost] public WcReturnRoot.Root WCReceiveXmlData([FromBody] SapRoot.Root xmlData) { #region xml数据接收转数组 LogHelper.Info("外采收货接口:" + JsonConvert.SerializeObject(xmlData)); //接收xml数据 //XmlDocument xmlDoc = new XmlDocument(); //xmlDoc.LoadXml(xmlData.ToString()); // 将 XmlDocument 转换为 JSON 字符串 //JObject jsonObject = JsonConvert.DeserializeObject(JsonConvert.SerializeXmlNode(xmlDoc)); // 处理特定字段,强制转换为数组 //WmsSpaHelper.EnsureArrayFormat(jsonObject, "ITME", "ITEM1"); // 反序列化为RootWithArray //var data = JsonConvert.DeserializeObject(jsonObject.ToString()); #endregion #region 外采入库业务流程 List simpleResult = WmsSpaHelper.Inbound_Order_In(xmlData); //接收返回参数 生成sap对接文档返回格式 List wcReturnRoots = new List(); foreach (var item in simpleResult) { WcReturnRoot.ITEM wcReturnRoot = new WcReturnRoot.ITEM(); wcReturnRoot.WLPZH = item.WLPZBH; wcReturnRoot.WLPZND = item.WLPZND; wcReturnRoot.MSGCODE = item.resultCode; wcReturnRoot.MSGDESP = item.resultMsg; wcReturnRoots.Add(wcReturnRoot); } //var json = WmsSpaHelper.GetJsonResult(simpleResult.WLPZBH, simpleResult.resultCode.ToString(), simpleResult.resultMsg); // 完整嵌套实例化 var result = new WcReturnRoot.Root { ROOT = new WcReturnRoot.ROOT { ITEM = wcReturnRoots } }; #endregion #region 返回xml var json = JsonConvert.SerializeObject(result); //string xml = JsonConvert.DeserializeXmlNode(json, "ROOT").OuterXml; ////返回json //var response = new HttpResponseMessage() //{ // Content = new StringContent(xml, Encoding.UTF8, "application/xml") //}; return result; #endregion } /// /// 内采入库/出库 /// /// /// [HttpPost] public WcReturnRoot.Root NCReceiveXmlData([FromBody] NcDto.Root xmlData) { #region xml数据接收转数组 //NcDto.ROOT rOOT = new NcDto.ROOT(); //rOOT.WLPZ = new NcDto.WLPZ(); LogHelper.Info("内采收货接口:" + JsonConvert.SerializeObject(xmlData)); ////接收xmloo //XmlDocument xmlDoc = new XmlDocument(); //xmlDoc.LoadXml(xmlData.ToString()); //// 将 XmlDocument 转换为 JSON 字符串 //JObject jsonObject = JsonConvert.DeserializeObject(JsonConvert.SerializeXmlNode(xmlDoc)); //// 处理特定字段,强制转换为数组 //WmsSpaHelper.EnsureArrayFormat(jsonObject, "ITME", "ITEM1"); //// 反序列化为RootWithArray //var data = JsonConvert.DeserializeObject(jsonObject.ToString()); //// SimpleResult simpleResult = WmsSpaHelper.OtherOut_Order_Ins(data); //#endregion //#region 返回xml //string xml = JsonConvert.DeserializeXmlNode(json, "ROOT").OuterXml; ////返回json //var response = new HttpResponseMessage() //{ // Content = new StringContent(xml, Encoding.UTF8, "application/xml") //}; //return response; #endregion List simpleResult = WmsSpaHelper.NCInbound_Order_In(xmlData); //接收返回参数 生成sap对接文档返回格式 List wcReturnRoots = new List(); foreach (var item in simpleResult) { WcReturnRoot.ITEM wcReturnRoot = new WcReturnRoot.ITEM(); wcReturnRoot.WLPZH = item.WLPZBH; wcReturnRoot.WLPZND = item.WLPZND; wcReturnRoot.MSGCODE = item.resultCode; wcReturnRoot.MSGDESP = item.resultMsg; wcReturnRoots.Add(wcReturnRoot); } //var json = WmsSpaHelper.GetJsonResult(simpleResult.WLPZBH, simpleResult.resultCode.ToString(), simpleResult.resultMsg); // 完整嵌套实例化 var result = new WcReturnRoot.Root { ROOT = new WcReturnRoot.ROOT { ITEM = wcReturnRoots } }; #region 返回xml var json = JsonConvert.SerializeObject(result); return result; #endregion } /// /// 其他出入库[FromBody] XElement xmlData /// /// /// [HttpPost] public OtherReturnRoot.Root OtherReceiveXmlData([FromBody] otherDto.Root xmlData) { #region xml数据接收转数组 LogHelper.Info("其他出入库sap接口:" + JsonConvert.SerializeObject(xmlData)); ////接收xml数据 //XmlDocument xmlDoc = new XmlDocument(); //xmlDoc.LoadXml(xmlData.ToString()); //// 将 XmlDocument 转换为 JSON 字符串 //JObject jsonObject = JsonConvert.DeserializeObject(JsonConvert.SerializeXmlNode(xmlDoc)); //// 处理特定字段,强制转换为数组 //WmsSpaHelper.EnsureArrayFormat(jsonObject, "ITEM", "ITEM1"); //// 反序列化为RootWithArray //var data = JsonConvert.DeserializeObject(jsonObject.ToString()); #endregion #region 其他出入库业务流程 List simpleResult = WmsSpaHelper.Otherbound_Order_In(xmlData); //接收返回参数 生成sap对接文档返回格式 //var json = WmsSpaHelper.GetJsonResult(simpleResult.WLPZBH, simpleResult.resultCode.ToString(), simpleResult.resultMsg); #endregion #region 返回xml //string xml = JsonConvert.DeserializeXmlNode(json, "ROOT").OuterXml; ////返回json //var response = new HttpResponseMessage() //{ // Content = new StringContent(xml, Encoding.UTF8, "application/xml") //}; //return response; #endregion List wcReturnRoots = new List(); foreach (var item in simpleResult) { OtherReturnRoot.ITEM wcReturnRoot = new OtherReturnRoot.ITEM(); wcReturnRoot.WLPZBH = item.WLPZBH; wcReturnRoot.WLPZND = item.WLPZND; wcReturnRoot.MSGCODE = item.resultCode; wcReturnRoot.MSGDESP = item.resultMsg; wcReturnRoots.Add(wcReturnRoot); } //var json = WmsSpaHelper.GetJsonResult(simpleResult.WLPZBH, simpleResult.resultCode.ToString(), simpleResult.resultMsg); // 完整嵌套实例化 var result = new OtherReturnRoot.Root { ROOT = new OtherReturnRoot.ROOT { ITEM = wcReturnRoots } }; return result; // 处理XML数据 // ... } /// /// 码盘入库 /// /// /// [HttpPost] public SimpleResult InboundOrderSorting(MPSorting model) { return WmsSpaHelper.InboundOrderSorting(model); } /// /// pda分拣 /// /// /// [HttpPost] public Task OutboundOrderSorting(FJSorting model) { return WmsSpaHelper.OutboundOrderSorting(model); } /// /// 生产订单领料单(出库单) /// /// /// //[HttpPost] //public HttpResponseMessage ReceiveXmlCKData([FromBody] XElement xmlData) //{ // #region xml数据接收转数组 // ROOT rOOT = new ROOT(); // rOOT.WLPZ = new WLPZ(); // LogHelper.Info("外采收货接口:" + xmlData.ToString()); // //接收xml数据 // XmlDocument xmlDoc = new XmlDocument(); // xmlDoc.LoadXml(xmlData.ToString()); // // 将 XmlDocument 转换为 JSON 字符串 // JObject jsonObject = JsonConvert.DeserializeObject(JsonConvert.SerializeXmlNode(xmlDoc)); // // 处理特定字段,强制转换为数组 // //WmsSpaHelper.EnsureArrayFormat(jsonObject, "ITME"); // WmsSpaHelper.EnsureArrayFormat(jsonObject["ROOT"]["SCDDLL"] as JObject, "ITEM"); // // 反序列化为RootWithArray // var data = JsonConvert.DeserializeObject(jsonObject.ToString()); // #endregion // #region 出库业务流程 // var json = WmsSpaHelper.Out_Order_In(data); // //接收返回参数 生成sap对接文档返回格式 // //var json = WmsSpaHelper.GetJsonResult(simpleResult.WLPZBH, simpleResult.resultCode.ToString(), simpleResult.resultMsg); // #endregion // #region 返回xml // string xml = JsonConvert.DeserializeXmlNode(json, "root").OuterXml; // //返回json // var response = new HttpResponseMessage() // { // Content = new StringContent(xml, Encoding.UTF8, "application/xml") // }; // return response; // #endregion //} /// /// 生产订单领料单(生成领料单) /// /// /// [HttpPost] public LLDReturnRoot.Root LLDReceiveXmlData([FromBody] CKDdto.Root xmlData) { #region xml数据接收转数组 LogHelper.Info("生产订单领料单(生成领料单)接口:" + JsonConvert.SerializeObject(xmlData)); ////接收xml数据 //XmlDocument xmlDoc = new XmlDocument(); //xmlDoc.LoadXml(xmlData.ToString()); //// 将 XmlDocument 转换为 JSON 字符串 //JObject jsonObject = JsonConvert.DeserializeObject(JsonConvert.SerializeXmlNode(xmlDoc)); //// 处理特定字段,强制转换为数组 ////WmsSpaHelper.EnsureArrayFormat(jsonObject, "ITME"); //WmsSpaHelper.EnsureArrayFormat(jsonObject["ROOT"]["SCDDLL"] as JObject, "ITEM"); //// 反序列化为RootWithArray //var data = JsonConvert.DeserializeObject(jsonObject.ToString()); #endregion #region 出库业务流程 LLDReturnRoot.Root json = WmsSpaHelper.Out_Order_Ins(xmlData); //接收返回参数 生成sap对接文档返回格式 //var json = WmsSpaHelper.GetJsonResult(simpleResult.WLPZBH, simpleResult.resultCode.ToString(), simpleResult.resultMsg); //接收返回参数 生成sap对接文档返回格式 List wcReturnRoots = new List(); return json; #endregion //#region 返回xml //string xml = JsonConvert.DeserializeXmlNode(json, "root").OuterXml; ////返回json //var response = new HttpResponseMessage() //{ // Content = new StringContent(xml, Encoding.UTF8, "application/xml") //}; //return response; //#endregion } /// /// 领料单生成出库单 /// /// /// [HttpPost] public WeiLiResult GetLLDReceiveXmlData(LLDDto dto) { var json = WmsSpaHelper.Out_Order_Inss(dto.S_NO); return json; } #region wms-sap接口 /// /// 外采入库/内采入库/计划外退料入库审核接口 /// /// /// [HttpPost] public async Task WcInboundOrderAccieve(WcRkDto model) { return await WmsSpaHelper.NcRkBacking(model); } ///// ///// 内采收货入库接口 ///// ///// ///// //[HttpPost] //public async Task NcInboundOrderAccieve(WcRkDto model) //{ // return await WmsSpaHelper.NcRkBacking(model); //} #endregion /// /// 测试接口 /// /// /// [HttpPost] public HttpResponseMessage cesReceiveXmlData([FromBody] XElement xmlData) { string xmlDatas = "{\r\n \"ROOT\": {\r\n \"ITEM\": {\r\n \"KEY\": \"唯一标识\",\r\n \"WLPZBH\": \"物料凭证号\",\r\n " + " \"WLPZND\": \"物料凭年度\",\r\n \"MSGCODE\": \"1\",\r\n \"MSGDESP\": \"失败原因或者成功信息字符长度255\"\r\n }\r\n }\r\n}"; var data = JsonConvert.DeserializeObject(xmlDatas); string xml = JsonConvert.DeserializeXmlNode(xmlDatas, "").OuterXml; //返回json var response = new HttpResponseMessage() { Content = new StringContent(xml, Encoding.UTF8, "application/xml") }; return response; } } }