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
|
{
|
// /// <summary>
|
///// 测试接口
|
///// </summary>
|
///// <param name="xmlData"></param>
|
///// <returns></returns>
|
//[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<Root>(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<Root>(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 = @"<?xml version=""1.0"" encoding=""utf-8""?>
|
<ROOT>
|
<WLPZ>
|
<HEAD>
|
<KEY>唯一标识</KEY>
|
<GZRQ>过账日期</GZRQ>
|
<GZRY>过账人员</GZRY>
|
<GC>工厂</GC>
|
</HEAD>
|
<ITME>
|
<WLPZBH>物料凭证编号</WLPZBH>
|
<WLPZND>物料凭证年度</WLPZND>
|
<WLPZZDXM>物料凭证中的项目</WLPZZDXM>
|
<WLH>物料号</WLH>
|
<JBJLDW>基本计量单位</JBJLDW>
|
<SL>数量</SL>
|
<CGPZH>采购凭证号</CGPZH>
|
<CGPZXMBH>采购凭证项目编号</CGPZXMBH>
|
<KCDD>库存地点</KCDD>
|
<JYPBH>检验批编号</JYPBH>
|
<KJPZSSRQ>会计凭证输入日期</KJPZSSRQ>
|
<KJPZSRSJ>会计凭证输入时间</KJPZSRSJ>
|
<PC>批次</PC>
|
<ITEM1>
|
<XLH>序列号</XLH>
|
</ITEM1>
|
</ITME>
|
</WLPZ>
|
</ROOT>";
|
|
XmlDocument xmlDoc = new XmlDocument();
|
xmlDoc.LoadXml(xmlData);
|
|
XmlNodeList itemList = xmlDoc.SelectNodes("//ITME");
|
XmlNodeList headList = xmlDoc.SelectNodes("//HEAD");
|
var items = new List<Dictionary<string, object>>();
|
|
foreach (XmlNode itemNode in itemList)
|
{
|
var itemDict = new Dictionary<string, object>();
|
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<ITME> ss = MapDictionariesToClasses<ITME>(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;
|
}
|
/// <summary>
|
/// 单个
|
/// </summary>
|
/// <typeparam name="T"></typeparam>
|
/// <param name="dictionary"></param>
|
/// <returns></returns>
|
public static T MapDictionaryToClass<T>(Dictionary<string, object> 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;
|
}
|
/// <summary>
|
///
|
/// </summary>
|
/// <typeparam name="T"></typeparam>
|
/// <param name="dictionaries"></param>
|
/// <returns></returns>
|
public static List<T> MapDictionariesToClasses<T>(List<Dictionary<string, object>> dictionaries) where T : new()
|
{
|
List<T> list = new List<T>();
|
|
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<object>().GetInstance();
|
var locinfo = db.Queryable<Location>().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<Location>().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;
|
|
}
|
}
|
|
|
}
|