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