| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Data;
- using System.IO;
- using System.Runtime.Serialization.Json;
- using System.Text;
- using System.Web.Script.Serialization;
- using System.Xml;
- using System.Xml.Serialization;
- using Dongke.IBOSS.PRD.Basics.Library;
- using Dongke.IBOSS.PRD.Service.BPMDataService.BPMWebService;
- using Newtonsoft.Json;
- namespace Dongke.IBOSS.PRD.Service.BPMDataService
- {
- public class BPMDataLogic
- {
- /// <summary>
- /// 同步BPM系统条码
- /// </summary>
- /// <returns></returns>
- public static string PushBPM( DataRow dr)
- {
- //INIUtility ini = INIUtility.Instance(INIUtility.IniFile.Config);
- //string endPointConfigurationName = ini.ReadIniData("BPM_INFO", "EndPointConfigurationName");
- try
- {
- using (ProcessServiceSoapClient bpmClient = new ProcessServiceSoapClient("ProcessServiceSoap"))
- {
- string token = "HEGIITOKEN";
- string userAccount = "MES001";
- string Processname = "Inventory Material Scrap And Adjustment Process";
- int Incident = 0;
- if(!string.IsNullOrEmpty(dr["Incident"] +""))
- {
- Incident = Convert.ToInt32(dr["Incident"]);
- }
- Hashtable pars1 = new Hashtable();
- pars1.Add("REQUESTDATE", DateTime.Now);
- pars1.Add("DOCUMENTTYPE", "报废及回收");
- pars1.Add("COMPANYNUMBER", "5000");
- pars1.Add("REMARK", "");
- pars1.Add("APPLICATEMPNO", "MES001");
- pars1.Add("APPLICANTEMPNAME", "MES001");
- pars1.Add("EFFECTIVEDATE", DateTime.Now.Date);
- Hashtable pars2 = new Hashtable();
- pars2.Add("ROWID", 1);
- pars2.Add("PROCESSINGTYPE", "551");//处理类型
- pars2.Add("STDMODE", dr["IDNRK"].ToString());//物料编码(组件编码)
- pars2.Add("PRODUCTNAME", dr["IDNRKNAME"].ToString());//物料描述(组件名称)
- pars2.Add("QUANTITY",Convert.ToDecimal( dr["MENGE"]));//数量
- pars2.Add("UNIT",dr["MEINS"].ToString());//单位
- pars2.Add("UNITNAME", dr["meinsname"].ToString());//单位名称
- pars2.Add("FACTORY", "5000");
- pars2.Add("STORAGELOCATION",dr["LGORT"].ToString());//存放库位(线边仓位号)
- pars2.Add("SALENUMBER", "");
- pars2.Add("ITEMNUMBER", "");
- pars2.Add("BATCHNUMBER", dr["CHARG"].ToString());//批次号
- pars2.Add("COSTCENTERNAME", "");
- pars2.Add("COSTCENTER", "");
- pars2.Add("REMARK", "");
- Hashtable pars3 = new Hashtable();
- pars3.Add("ROWID", "");
- pars3.Add("FILEURL", "");
- pars3.Add("FILENAME", "");
- Hashtable body = new Hashtable();
- body.Add("PROC_FINANCE_INVENTORYMATERIAL_SCRAP_AND_ADJUSTMENT", pars1);
- body.Add("PROC_FINANCE_INVENTORYMATERIAL_SCRAP_AND_ADJUSTMENT_DT", pars2);
- body.Add("PROC_FINANCE_INVENTORYMATERIAL_SCRAP_AND_ADJUSTMENT_ATTACT_DT", pars3);
- //Hashtable ds = new Hashtable();
- //ds.Add("NewDataSet", body);
- string mm = JsonHelper.ToJson(body);
- string XmlData = Json2Xml(mm).OuterXml;
- // 参数
- string result = bpmClient.SubmitProcess(token, userAccount, XmlData, Processname, Incident);
- return result;
- }
- }
- catch (Exception ex)
- {
- return "同步失败:" + ex.Message;
- }
-
- }
- /// <summary>
- /// 撤销BPM系统同步数据
- /// </summary>
- /// <param name="Incident"></param>
- /// <returns></returns>
- public static string CancelPushBPM(int Incident)
- {
- //INIUtility ini = INIUtility.Instance(INIUtility.IniFile.Config);
- //string endPointConfigurationName = ini.ReadIniData("BPM_INFO", "EndPointConfigurationName");
- try
- {
- using (ProcessServiceSoapClient bpmClient = new ProcessServiceSoapClient("ProcessServiceSoap"))
- {
- string token = "HEGIITOKEN";
- string userAccount = "MES001";
- string Processname = "Inventory Material Scrap And Adjustment Process";
-
- // 参数
- string result = bpmClient.ReturnProcess(token, userAccount, Processname, Incident);
- return result;
- }
- }
- catch (Exception ex)
- {
- return "同步失败:" + ex.Message;
- }
- }
- /// <summary>
- /// 泛型对象转换成xml
- /// </summary>
- /// <param name="obj">对象</param>
- /// <returns></returns>
- public static string ObjectToXml<T>(T obj)
- {
- if (obj == null)
- {
- return "";
- }
- using (MemoryStream stream = new MemoryStream())
- {
- XmlSerializer xml = new XmlSerializer(obj.GetType());
- xml.Serialize(stream, obj);
- stream.Position = 0;
- StreamReader sr = new StreamReader(stream);
- string str = sr.ReadToEnd();
- return str;
- }
- }
- /// <summary>
- /// Json转Xml格式
- /// </summary>
- /// <param name="strJson"></param>
- /// <returns></returns>
- public static string JsonToXml(string json)
- {
- string xml = string.Empty;
- XmlDocument xmlDoc = new XmlDocument();
- try
- {
- XmlDictionaryReader xmlReader = JsonReaderWriterFactory.CreateJsonReader(Encoding.UTF8.GetBytes(json), XmlDictionaryReaderQuotas.Max);
- xmlDoc.Load(xmlReader);
- //json转xml
- XmlDeclaration xmlDec = xmlDoc.CreateXmlDeclaration("1.0", "utf-8","no");
- //创建xml声明
- xmlDoc.InsertBefore(xmlDec, xmlDoc.DocumentElement); //插入xml声明
- //xmlDoc.AppendChild(xmlDec);
- //添加xml声明
- }
- catch (Exception ex)
- {
- //
- }
- return xmlDoc.OuterXml; //xml转string
- }
- /// <summary>
- /// json字符串转换为Xml对象
- /// </summary>
- /// <param name="sJson"></param>
- /// <returns></returns>
- public static XmlDocument Json2Xml(string sJson)
- {
- //XmlDictionaryReader reader = JsonReaderWriterFactory.CreateJsonReader(Encoding.UTF8.GetBytes(sJson), XmlDictionaryReaderQuotas.Max);
- //XmlDocument doc = new XmlDocument();
- //doc.Load(reader);
- JavaScriptSerializer oSerializer = new JavaScriptSerializer();
- Dictionary<string, object> Dic = (Dictionary<string, object>)oSerializer.DeserializeObject(sJson);
- XmlDocument doc = new XmlDocument();
- XmlDeclaration xmlDec;
- xmlDec = doc.CreateXmlDeclaration("1.0", "gb2312", "yes");
- doc.InsertBefore(xmlDec, doc.DocumentElement);
- XmlElement nRoot = doc.CreateElement("NewDataSet");
- doc.AppendChild(nRoot);
- foreach (KeyValuePair<string, object> item in Dic)
- {
- XmlElement element = doc.CreateElement(item.Key);
- KeyValue2Xml(element, item);
- nRoot.AppendChild(element);
- }
- return doc;
- }
- private static void KeyValue2Xml(XmlElement node, KeyValuePair<string, object> Source)
- {
- object kValue = Source.Value;
- if (kValue.GetType() == typeof(Dictionary<string, object>))
- {
- foreach (KeyValuePair<string, object> item in kValue as Dictionary<string, object>)
- {
- XmlElement element = node.OwnerDocument.CreateElement(item.Key);
- KeyValue2Xml(element, item);
- node.AppendChild(element);
- }
- }
- else if (kValue.GetType() == typeof(object[]))
- {
- object[] o = kValue as object[];
- for (int i = 0; i < o.Length; i++)
- {
- XmlElement xitem = node.OwnerDocument.CreateElement("Item");
- KeyValuePair<string, object> item = new KeyValuePair<string, object>("Item", o);
- KeyValue2Xml(xitem, item);
- node.AppendChild(xitem);
- }
- }
- else
- {
- XmlText text = node.OwnerDocument.CreateTextNode(kValue.ToString());
- node.AppendChild(text);
- }
- }
- }
- }
|