static void Main(string[] args) { #region 步木作物料主数据 var logCfg = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log4net.config"); XmlConfigurator.ConfigureAndWatch(logCfg); var logger = log4net.LogManager.GetLogger(typeof(Program)); Boolean result = false; DateTime startDt = DateTime.Now.AddDays(-1); startDt = new DateTime(startDt.Year, startDt.Month, startDt.Day, 0, 0, 0); DateTime endDt = new DateTime(startDt.Year, startDt.Month, startDt.Day, 23, 59, 59); //DateTime startDt = DateTime.Parse("2017-10-12 00:00:00"); //DateTime endDt = DateTime.Parse("2017-10-12 23:59:59"); //Object tmpObj = null; if (args.Length > 0 && args[0].ToUpper().Substring(1) == "MMS") { startDt = DateTime.Parse(args[1] + " " + args[2]); endDt = DateTime.Parse(args[3] + " " + args[4]); } //构造查询时间段 MaterialSyncRequestWrap materialObj = new MaterialSyncRequestWrap(); materialObj.SetStartDatetime(startDt); materialObj.SetEndDatetime(endDt); try { GetSapMZData mmSender = new GetSapMZData("同步物料主数据", "MMS"); string dateString = "程序开始时间:" + DateTime.Now.ToString(); ResultWrap resultWrap = (ResultWrap)mmSender.SendDataToSAP(materialObj); dateString += " SAP接口返回数据时间:" + DateTime.Now.ToString(); //判断接口调用返回正常读取XML结构 if (resultWrap.SIGN == EnumResultFlagType.Y) { byte[] array = Encoding.UTF8.GetBytes(resultWrap.Data); MemoryStream stream = new MemoryStream(array); DataSet ds = new DataSet(); ds.ReadXml(stream, XmlReadMode.Auto); dateString += "XML结构转化为DATASET时间:" + DateTime.Now.ToString(); //判断返回的XML是有效数据后操作数据 if (ds.Tables.Count > 0 && ds.Tables[0].Columns.Count == 29) { bool resultBool = MZ_MES_DAL.DataOperation.AddMetralInfo(ds.Tables[0]); } dateString += "数据保存到MES数据库时间:" + DateTime.Now.ToString(); //记录日志 logger.Info(resultWrap.Data + dateString + "\r\n\r\n\r\n"); } else { logger.Info(resultWrap.Data + "\r\n\r\n\r\n"); } } catch (Exception ex) { logger.Error(ex + "\r\n\r\n\r\n"); } #endregion }
/// <summary> /// 从ERP把PS数据推给SAP并从SAP获取推送结果 /// </summary> /// <param name="requestObj">要推送的PS数据</param> /// <param name="endPointName">端点名称</param> /// <returns></returns> public Object SendDataToSAP(Object requestObj) { Object rw = null; ZWS_MZClient sap_ws = null; ZFUN_MZ sap_Obj = null; ZFUN_MZResponse sap_ObjResponse = null; String str = String.Empty; Utils utils = new Utils(); try { str = utils.GetSAPRequestData(requestObj); sap_Obj = new ZFUN_MZ(); sap_Obj.FCODE = EnumFCODE.ZFUN_PO_GOODS_OUT_MZ; sap_Obj.INPUT = str; using (sap_ws = new ZWS_MZClient(this.endPointName)) { //System.ServiceModel.Channels.Binding bind= sap_ObjResponse = sap_ws.ZFUN_MZ(sap_Obj); if (String.IsNullOrEmpty(sap_ObjResponse.OUTPUT)) { throw new InvalidDataException("无效的SAP返回数据!"); } try { rw = new ResultWrap() { SIGN = EnumResultFlagType.Y, MESSAGE = "木作数据抓取成功", Data = sap_ObjResponse.OUTPUT }; return(rw); } catch (InvalidOperationException ex) { throw ex; //rw = base.GetSAPResponseData(sap_ObjResponse.OUTPUT, typeof(ResultWrap)); } } } catch (Exception exc) { rw = null; if (sap_ws != null) { sap_ws.Abort(); } throw exc; } finally { if (sap_ws != null) { sap_ws.Close(); } } }