示例#1
0
        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();
                }
            }
        }