Esempio n. 1
0
        private static void CreateLog(XmlDocument xmlResult)
        {
            var zfbDA    = new ZFBDA();
            var logEnity = new ZFBLogEntity();

            logEnity.ImportData = xmlResult.InnerXml;
            logEnity.PayTermsNo = 34;
            logEnity.PayTerms   = "支付宝";
            logEnity.InUser     = "******";
            logEnity.InDate     = DateTime.Now;
            OnShowInfo("开始记录日志表");
            try
            {
                logEnity = zfbDA.CreateLogContent(logEnity);
                zfbDA.CreateLog(logEnity);
            }
            catch (Exception ex)
            {
                OnShowInfo(string.Format("记录日志表失败:{0}", ex.Message));
            }
            OnShowInfo("记录日志表完成");
        }
Esempio n. 2
0
        public static void DoWork(AutoResetEvent are)
        {
            ZFBDA    zfbDA = new ZFBDA();
            DateTime createStart, createEnd;

            #region 测试importData

            //zfbDA.ImportDataLength();
            //throw new Exception("测试");

            #endregion

            try
            {
                if (zfbDA.IsFirst())
                {
                    createStart = Settings.DefaultDate;
                    createEnd   = createStart.AddDays(1);
                }
                else
                {
                    createStart = zfbDA.GetLastImportDate();
                    createEnd   = createStart.AddDays(1);
                    lastInfo    = zfbDA.GetLastTimeData(createStart);
                }

                OnShowInfo("createStart:" + createStart);
                OnShowInfo("createEnd:" + createEnd);

                if (!string.IsNullOrEmpty(Settings.Partner) && !string.IsNullOrEmpty(Settings.Key))
                {
                    ProcessData(createStart, createEnd, Settings.Partner, Settings.Key);
                }
                if (!string.IsNullOrEmpty(Settings.partnerAdd) && !string.IsNullOrEmpty(Settings.KeyAdd))
                {
                    ProcessData(createStart, createEnd, Settings.partnerAdd, Settings.KeyAdd);
                }

                OnShowInfo("开始同步PayedDate:" + DateTime.Now);

                var rowCount = 0;

                do
                {
                    Stopwatch sw = Stopwatch.StartNew();

                    rowCount = zfbDA.SysncPayedDate();

                    OnShowInfo(string.Format("更新到{0}条数据..花费时间{1}ms", rowCount.ToString(), sw.ElapsedMilliseconds.ToString()));
                }while (rowCount > 0);

                OnShowInfo("同步PayedDate完毕:" + DateTime.Now);

                Console.ForegroundColor = ConsoleColor.Green;
                OnShowInfo("\r\n执行完毕");
                are.Set();
            }
            catch (Exception ex)
            {
                are.Set();
                throw ex;
            }
        }
Esempio n. 3
0
        private static void CreateData(XmlDocument xmlResult, string AttachInfo2)
        {
            var zfbDA      = new ZFBDA();
            var entityList = new List <ZFBDataEntity>();
            var now        = DateTime.Now;

            XmlNodeList nodeList = xmlResult.GetElementsByTagName("csv_data");

            if (nodeList.Count == 0)
            {
                throw new Exception("获取数据失败");
            }
            string strResult = nodeList[0].InnerXml;

            XmlNodeList nodeList01 = xmlResult.GetElementsByTagName("is_success");
            string      flag       = nodeList01[0].InnerXml;

            XmlNodeList nodeList02 = xmlResult.GetElementsByTagName("count");
            int         countList  = int.Parse(nodeList02[0].InnerXml);


            if (flag == "F")
            {
                throw new Exception("获取失败,is_success标识为F");
            }
            if (countList <= 0)
            {
                throw new Exception("当天没有交易记录");
            }

            //去掉左右冗余符号
            strResult = strResult.Replace("&lt;![CDATA[", "").Replace("]]&gt;", "").Replace("\n", "").Trim();
            string[]  resultArray = strResult.Split(',');
            const int coulmnCount = 14;
            int       rowCount    = resultArray.Count() / coulmnCount - 1;

            DataTable  table = new DataTable();
            DataColumn column;
            DataRow    row;

            //加列头
            for (int i = 0; i < coulmnCount; i++)
            {
                column            = new DataColumn();
                column.DataType   = System.Type.GetType("System.String");
                column.ColumnName = resultArray[i];
                table.Columns.Add(column);
            }
            //加行
            int index = coulmnCount;

            for (int j = 0; j < rowCount; j++)
            {
                row = table.NewRow();
                for (int i = 0; i < coulmnCount; i++)
                {
                    row[i] = resultArray[index++];
                }
                table.Rows.Add(row);
            }

            foreach (DataRow rowData in table.Rows)
            {
                try
                {
                    var soSysNo          = Convert.ToInt32(rowData[0]);
                    var getPayTypeResult = zfbDA.GetPayType(soSysNo);
                    if (getPayTypeResult == null || getPayTypeResult.Count == 0)
                    {
                        throw new Exception("SO_Master中查找不到该订单信息");
                    }
                    PayTypeEntity paytypeEntity = getPayTypeResult[0];

                    entityList.Add(new ZFBDataEntity
                    {
                        SoSysNo       = soSysNo,
                        PayTermsNo    = paytypeEntity.PayTermsNo,
                        PayTerms      = paytypeEntity.PayTerms,
                        PayedDate     = Convert.ToDateTime(rowData[2]),
                        PayedAmt      = Convert.ToDecimal(rowData[8]),
                        SerialNumber  = rowData[3].ToString(),
                        OutOrderNo    = rowData[4].ToString(),
                        PayedUserTag  = rowData[5].ToString(),
                        PayedUserName = rowData[6].ToString(),
                        PayedUserNo   = rowData[7].ToString(),
                        PartnerName   = "支付宝",
                        TradeType     = rowData[12].ToString(),
                        AttachInfo    = rowData[11].ToString(),
                        AttachInfo2   = AttachInfo2,
                        InUser        = "******",
                        InDate        = now
                    });
                }
                catch (Exception ex)
                {
                    string[] strArray = rowData.ItemArray.Select(x =>
                    {
                        return(x == null ? string.Empty : x.ToString());
                    }).ToArray <string>();
                    string details = string.Format("异常订单信息 SoSysNo:{0},InDate:{1},Error:{2},ErrorInfoSource:{3}",
                                                   rowData[0].ToString(),
                                                   rowData[2].ToString(),
                                                   ex.Message,
                                                   string.Join(",", strArray));
                    OnShowInfo(details);
                    SendMail("支付宝对账异常", details);

                    if (rowData[0].ToString().Length >= 9)
                    {
                        var longInfo = string.Format("支付宝过长订单号信息提醒 SoSysNo:{0},InDate:{1},ErrorInfoSource:{2}",
                                                     rowData[0].ToString(),
                                                     rowData[2].ToString(),
                                                     string.Join(",", strArray));
                        MailDA.SendEmail(Settings.LongOrderSysNoAlert, "支付宝过长订单号信息提醒", longInfo);
                    }
                    else if (ex.Message.Contains("SO_Master中查找不到该订单信息"))
                    {
                        var longInfo = string.Format("无法确认支付宝订单提醒 SoSysNo:{0},InDate:{1},ErrorInfoSource:{2}",
                                                     rowData[0].ToString(),
                                                     rowData[2].ToString(),
                                                     string.Join(",", strArray));
                        MailDA.SendEmail(Settings.LongOrderSysNoAlert, "无法确认支付宝订单提醒", longInfo);
                    }
                }
            }

            if (lastInfo != null && lastInfo.Count > 0)
            {
                entityList = entityList.Except(lastInfo, new ZFBEntityComparer()).ToList();
            }

            if (entityList == null || entityList.Count == 0)
            {
                throw new Exception("不存在可导入记录");
            }
            OnShowInfo("开始导入数据");
            try
            {
                //每一百条数据导入一次
                var entityMiddle = new List <ZFBDataEntity>();
                for (int i = 0; i < entityList.Count; i++)
                {
                    entityMiddle.Add(entityList[i]);
                    if ((i != 0 && (i + 1) % 100 == 0) || (i + 1) == entityList.Count)
                    {
                        zfbDA.CreateData(entityMiddle);
                        OnShowInfo(string.Format("导入了{0}条记录", (i + 1).ToString()));
                        entityMiddle.Clear();
                    }
                }
            }
            catch (Exception ex)
            {
                OnShowInfo(string.Format("导入失败:{0}", ex.Message));
            }
            OnShowInfo("导入完毕");
        }