using HH.WCS.Mobox3.pinggao.models; using HH.WCS.Mobox3.pinggao; using HH.WCS.Mobox3.pinggao.dispatch; using HH.WCS.Mobox3.pinggao.util; using HH.WCS.Mobox3.pinggao.wms; using Newtonsoft.Json; using Swashbuckle.Swagger; using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Reflection; using System.Reflection.Emit; using System.Text; using System.Threading.Tasks; using System.Web.Http; using System.Web.UI.WebControls; using System.Xml; using System.Xml.Linq; using static HH.WCS.Mobox3.pinggao.models.SapRoot; using static HH.WCS.Mobox3.pinggao.api.ApiModel; using static HH.WCS.Mobox3.pinggao.dispatch.NDC; using static HH.WCS.Mobox3.pinggao.wms.ExpressionHelper; namespace HH.WCS.Mobox3.pinggao.api { public class TestController : System.Web.Http.ApiController { // /// ///// 测试接口 ///// ///// ///// //[HttpPost] //public HttpResponseMessage ReceiveXmlDatas([FromBody] XElement xmlData) //{ // if (xmlData == null) // { // LogHelper.Info("无数据:"); // return null; // } // XmlDocument xmlDoc = new XmlDocument(); // xmlDoc.LoadXml(xmlData.ToString()); // //将 XmlDocument 转换为 JSON 字符串 // string json1 = JsonConvert.SerializeXmlNode(xmlDoc); // var data = JsonConvert.DeserializeObject(json1); // // var json = JsonConvert.SerializeObject(new { id = 123, name = "jack" }); // var json = JsonConvert.SerializeObject(data.ROOT); // string xml = JsonConvert.DeserializeXmlNode(json, "root").OuterXml; // var response = new HttpResponseMessage() // { // Content = new StringContent(xml, Encoding.UTF8, "application/xml") // }; // return response; //} [HttpPost] public HttpResponseMessage ReceiveXmlDatas([FromBody] XElement xmlData) { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(xmlData.ToString()); //将 XmlDocument 转换为 JSON 字符串 string json1 = JsonConvert.SerializeXmlNode(xmlDoc); var data = JsonConvert.DeserializeObject(json1); // var json = JsonConvert.SerializeObject(new { id = 123, name = "jack" }); var json = JsonConvert.SerializeObject(data.ROOT); string xml = JsonConvert.DeserializeXmlNode(json, "root").OuterXml; var response = new HttpResponseMessage() { Content = new StringContent(xml, Encoding.UTF8, "application/xml") }; return response; // 处理XML数据 // ... } public HttpResponseMessage Main() { string xmlData = @" 唯一标识 过账日期 过账人员 工厂 物料凭证编号 物料凭证年度 物料凭证中的项目 物料号 基本计量单位 数量 采购凭证号 采购凭证项目编号 库存地点 检验批编号 会计凭证输入日期 会计凭证输入时间 批次 序列号 "; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(xmlData); XmlNodeList itemList = xmlDoc.SelectNodes("//ITME"); XmlNodeList headList = xmlDoc.SelectNodes("//HEAD"); var items = new List>(); foreach (XmlNode itemNode in itemList) { var itemDict = new Dictionary(); foreach (XmlNode childNode in itemNode.ChildNodes) { itemDict.Add(childNode.Name, childNode.InnerText); } items.Add(itemDict); } ROOT rOOT = new ROOT(); //rOOT.WLPZ = new WLPZ(); ////多xml转类 //List ss = MapDictionariesToClasses(items); //rOOT.WLPZ.ITME = ss; string json = JsonConvert.SerializeObject(new { ITME = items }); string xml = JsonConvert.DeserializeXmlNode(json, "root").OuterXml; var response = new HttpResponseMessage() { Content = new StringContent(xml, Encoding.UTF8, "application/xml") }; return response; } /// /// 单个 /// /// /// /// public static T MapDictionaryToClass(Dictionary dictionary) where T : new() { T obj = new T(); foreach (var prop in typeof(T).GetProperties()) { if (dictionary.TryGetValue(prop.Name, out object value)) { // 尝试将值转换为属性的类型并进行赋值 try { prop.SetValue(obj, value); } catch (Exception ex) { // 处理类型转换异常或其他异常 Console.WriteLine($"Error setting property {prop.Name}: {ex.Message}"); } } } return obj; } /// /// /// /// /// /// public static List MapDictionariesToClasses(List> dictionaries) where T : new() { List list = new List(); foreach (var dict in dictionaries) { T obj = new T(); foreach (var prop in typeof(T).GetProperties()) { if (dict.TryGetValue(prop.Name, out object value)) { try { prop.SetValue(obj, value); } catch (Exception ex) { // Handle the exception according to your needs Console.WriteLine($"Error setting property {prop.Name}: {ex.Message}"); } } } list.Add(obj); } return list; } public SimpleResult NdcRecives(string From, string To) { SimpleResult result = new SimpleResult(); result.resultCode = 0; result.resultMsg = "成功"; try { var db = new SqlHelper().GetInstance(); var locinfo = db.Queryable().Where(a => a.S_CODE == From).First(); if (locinfo?.N_LOCK_STATE != 0) { result.resultCode = 1; result.resultMsg = "起始库位已锁"; LogHelper.Info("起始库位已锁"); return result; } var endlocinfo = db.Queryable().Where(a => a.S_CODE == To).First(); if (endlocinfo?.N_LOCK_STATE != 0) { result.resultCode = 1; result.resultMsg = "终点库位已锁"; LogHelper.Info("终点库位已锁"); return result; } var wcsTask = new WCSTask { S_OP_CODE = "", S_OP_NAME = "", S_CODE = WCSHelper.GenerateTaskNo(), S_TYPE = "转运", S_START_LOC = From, S_START_AREA = locinfo.S_AREA_CODE, S_START_WH = locinfo.S_WH_CODE, S_END_LOC = endlocinfo.S_CODE, S_END_AREA = endlocinfo.S_AREA_CODE, S_END_WH = endlocinfo.S_WH_CODE, S_SCHEDULE_TYPE = "NDC", //N_CNTR_COUNT = 1, S_CNTR_CODE = WMSHelper.GenerateCntrCodeNo() }; bool res = WCSHelper.CreateTask(wcsTask); if (res) { LocationHelper.LockLoc(locinfo.S_CODE, 2); LocationHelper.LockLoc(endlocinfo.S_CODE, 1); } } catch (Exception ex) { throw; } return result; } } }