Exemplo n.º 1
0
 /// <summary>
 /// Get the last access time of a report if we know about it
 /// </summary>
 /// <param name="ReportId">Report to look for</param>
 /// <param name="LastAccessTime">Time to fill in of last attempted file upload to report, if found</param>
 /// <returns>Whether report was found</returns>
 public bool TryGetLastAccessTime(string ReportId, ref DateTime LastAccessTime)
 {
     lock (Mutex)
     {
         FReportRecord UploadRecord;
         if (UploadRecords.TryGetValue(ReportId.ToLower(), out UploadRecord))
         {
             LastAccessTime = UploadRecord.LastAccessTime;
             return(true);
         }
         return(false);
     }
 }
Exemplo n.º 2
0
        /// <summary>
        /// Create a record of files that have been uploaded for a report, if there's not one already
        /// </summary>
        /// <param name="ReportId">Directory name being used as report id</param>
        /// <returns>The record object with a set of files that have been uploaded so far</returns>
        FReportRecord EnsureRecord(string ReportId)
        {
            string        ReportIdKey = ReportId.ToLower();
            FReportRecord UploadRecord;

            if (!UploadRecords.TryGetValue(ReportIdKey, out UploadRecord))
            {
                UploadRecord = new FReportRecord();
                UploadRecords[ReportIdKey] = UploadRecord;
            }

            UploadRecord.LastAccessTime = DateTime.Now;

            DoHouseKeeping();

            return(UploadRecord);
        }
Exemplo n.º 3
0
        //上传账单数据
        private void run_account()
        {
            while (true)
            {
                try
                {
                    var db = new BathDBDataContext(connectionString);

                    long maxId = -1;
                    var abandonIds = new List<long>();
                    var account_uploadRecords = db.UploadRecords.FirstOrDefault(x => x.tableName == "Account");
                    if (account_uploadRecords != null)
                    {
                        maxId = MConvert<long>.ToTypeOrDefault(account_uploadRecords.maxId, -1);
                        if (account_uploadRecords.abandonId != null)
                        {
                            var idArray = account_uploadRecords.abandonId.Split(Constants.SplitChar);
                            abandonIds = Array.ConvertAll<string, long>(idArray, delegate(string s) { return MConvert<long>.ToTypeOrDefault(s, -1); }).ToList();
                        }
                    }
                    else
                    {
                        account_uploadRecords = new UploadRecords();
                        account_uploadRecords.tableName = "Account";
                        db.UploadRecords.InsertOnSubmit(account_uploadRecords);
                        db.SubmitChanges();
                    }

                    #region 更新abandonIds,去除掉夜审之前的,以免abandonIds过长

                    var maxTime = DateTime.Parse("2013-01-01 00:00:00");
                    if (db.ClearTable.Any())
                        maxTime = db.ClearTable.Max(x => x.clearTime);
                    var max_passed_account_id = db.Account.Where(x => x.payTime <= maxTime).Max(x => x.id);
                    abandonIds.RemoveAll(x => x <= max_passed_account_id);

                    var _idArray = Array.ConvertAll<long, string>(abandonIds.ToArray(), delegate(long s) { return s.ToString(); });
                    account_uploadRecords.abandonId = string.Join(Constants.SplitChar.ToString(), _idArray);
                    db.SubmitChanges();

                    #endregion

                    var accounts = db.Account.Where(x => x.id > maxId);
                    var _accounts = db.Account.Where(x => x.payTime >= maxTime && x.abandon != null && !abandonIds.Contains(x.id));
                    accounts = accounts.Union(_accounts).Distinct();

                    bool changed = false;
                    foreach (var account in accounts)
                    {
                        bool sucess = false;
                        while (!sucess)
                        {
                            sucess = upload_json(BathClass.ConvertToJsonString(account), "account");
                            if (sucess)
                            {
                                changed = true;
                                if (maxId < account.id)
                                {
                                    maxId = account.id;
                                    account_uploadRecords.maxId = account.id;
                                }
                                if (account.abandon != null && account.id >= max_passed_account_id)
                                {
                                    account_uploadRecords.abandonId += Constants.SplitChar + account.id.ToString();
                                }
                            }
                        }
                    }

                    if (changed)
                        db.SubmitChanges();
                }
                catch (System.Exception ex)
                {
                    IOUtil.insert_file(BathClass.getErrorFileName(), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "run_account" + ex.Message);
                }
            }
        }
Exemplo n.º 4
0
        //上传ClearTable数据
        private void run_clearTable()
        {
            while (true)
            {
                try
                {
                    var db = new BathDBDataContext(connectionString);
                    long maxId = -1;
                    DateTime clearTime = DateTime.Now;
                    var uploadRecords = db.UploadRecords.FirstOrDefault(x => x.tableName == "ClearTable");
                    if (uploadRecords != null)
                    {
                        maxId = MConvert<long>.ToTypeOrDefault(uploadRecords.maxId, -1);
                        clearTime = MConvert<DateTime>.ToTypeOrDefault(uploadRecords.clearTime, clearTime);
                    }
                    else
                    {
                        uploadRecords = new UploadRecords();
                        uploadRecords.tableName = "ClearTable";
                        db.UploadRecords.InsertOnSubmit(uploadRecords);
                        db.SubmitChanges();
                    }

                    var clearTables = db.ClearTable.Where(x => x.id > maxId);
                    var _clearTables = db.ClearTable.Where(x => x.id == maxId && x.clearTime != clearTime);
                    clearTables = clearTables.Union(_clearTables).Distinct();

                    bool changed = false;
                    foreach (var clearTable in clearTables)
                    {
                        bool sucess = false;
                        while (!sucess)
                        {
                            sucess = upload_json(BathClass.ConvertToJsonString(clearTable), "ClearTable");
                            if (sucess)
                            {
                                changed = true;
                                if (maxId < clearTable.id)
                                {
                                    maxId = clearTable.id;
                                    uploadRecords.maxId = clearTable.id;
                                }
                                if (clearTable.clearTime != clearTime)
                                {
                                    clearTime = clearTable.clearTime;
                                    uploadRecords.clearTime = clearTable.clearTime;
                                }
                                db.SubmitChanges();
                            }
                        }
                    }
                    if (changed)
                        db.SubmitChanges();
                }
                catch (System.Exception ex)
                {

                }
            }
        }
Exemplo n.º 5
0
        //上传会员卡销售
        private void run_cardSale()
        {
            while (true)
            {
                try
                {
                    var db = new BathDBDataContext(connectionString);

                    long maxId = -1;
                    var abandonIds = new List<long>();
                    var uploadRecords = db.UploadRecords.FirstOrDefault(x => x.tableName == "CardSale");
                    if (uploadRecords != null)
                    {
                        maxId = MConvert<long>.ToTypeOrDefault(uploadRecords.maxId, -1);
                        if (uploadRecords.abandonId != null)
                        {
                            var idArray = uploadRecords.abandonId.Split(Constants.SplitChar);
                            abandonIds = Array.ConvertAll<string, long>(idArray, delegate(string s) { return MConvert<long>.ToTypeOrDefault(s, -1); }).ToList();
                        }
                    }
                    else
                    {
                        uploadRecords = new UploadRecords();
                        uploadRecords.tableName = "CardSale";
                        db.UploadRecords.InsertOnSubmit(uploadRecords);
                        db.SubmitChanges();
                    }

                    #region 更新abandonIds,去除掉夜审之前的,以免abandonIds过长

                    var maxTime = DateTime.Parse("2013-01-01 00:00:00");
                    if (db.ClearTable.Any())
                        maxTime = db.ClearTable.Max(x => x.clearTime);
                    var max_passed_id = db.CardSale.Where(x => x.payTime <= maxTime).Max(x => x.id);
                    abandonIds.RemoveAll(x => x <= max_passed_id);

                    var _idArray = Array.ConvertAll<long, string>(abandonIds.ToArray(), delegate(long s) { return s.ToString(); });
                    uploadRecords.abandonId = string.Join(Constants.SplitChar.ToString(), _idArray);
                    db.SubmitChanges();

                    #endregion

                    var cardSales = db.CardSale.Where(x => x.id > maxId);
                    var _cardSales = db.CardSale.Where(x => x.payTime >= maxTime && x.abandon != null && !abandonIds.Contains(x.id));
                    cardSales = cardSales.Union(_cardSales).Distinct();

                    bool changed = false;
                    foreach (var cardSale in cardSales)
                    {
                        bool sucess = false;
                        while (!sucess)
                        {
                            sucess = upload_json(BathClass.ConvertToJsonString(cardSale), "CardSale");
                            if (sucess)
                            {
                                changed = true;
                                if (maxId < cardSale.id)
                                {
                                    maxId = cardSale.id;
                                    uploadRecords.maxId = cardSale.id;
                                }
                                if (cardSale.abandon != null && cardSale.id >= max_passed_id)
                                {
                                    uploadRecords.abandonId += Constants.SplitChar + cardSale.id.ToString();
                                }
                            }
                        }
                    }
                    if (changed)
                        db.SubmitChanges();
                }
                catch (System.Exception ex)
                {

                }
            }
        }
Exemplo n.º 6
0
        //上传ClearTable数据
        private void run_clearTable()
        {
            while (true)
            {
                try
                {
                    var      db            = new BathDBDataContext(connectionString);
                    long     maxId         = -1;
                    DateTime clearTime     = DateTime.Now;
                    var      uploadRecords = db.UploadRecords.FirstOrDefault(x => x.tableName == "ClearTable");
                    if (uploadRecords != null)
                    {
                        maxId = MConvert <long> .ToTypeOrDefault(uploadRecords.maxId, -1);

                        clearTime = MConvert <DateTime> .ToTypeOrDefault(uploadRecords.clearTime, clearTime);
                    }
                    else
                    {
                        uploadRecords           = new UploadRecords();
                        uploadRecords.tableName = "ClearTable";
                        db.UploadRecords.InsertOnSubmit(uploadRecords);
                        db.SubmitChanges();
                    }

                    var clearTables  = db.ClearTable.Where(x => x.id > maxId);
                    var _clearTables = db.ClearTable.Where(x => x.id == maxId && x.clearTime != clearTime);
                    clearTables = clearTables.Union(_clearTables).Distinct();

                    bool changed = false;
                    foreach (var clearTable in clearTables)
                    {
                        bool sucess = false;
                        while (!sucess)
                        {
                            sucess = upload_json(BathClass.ConvertToJsonString(clearTable), "ClearTable");
                            if (sucess)
                            {
                                changed = true;
                                if (maxId < clearTable.id)
                                {
                                    maxId = clearTable.id;
                                    uploadRecords.maxId = clearTable.id;
                                }
                                if (clearTable.clearTime != clearTime)
                                {
                                    clearTime = clearTable.clearTime;
                                    uploadRecords.clearTime = clearTable.clearTime;
                                }
                                db.SubmitChanges();
                            }
                        }
                    }
                    if (changed)
                    {
                        db.SubmitChanges();
                    }
                }
                catch (System.Exception ex)
                {
                }
            }
        }
Exemplo n.º 7
0
        //上传账单数据
        private void run_account()
        {
            while (true)
            {
                try
                {
                    var db = new BathDBDataContext(connectionString);

                    long maxId                 = -1;
                    var  abandonIds            = new List <long>();
                    var  account_uploadRecords = db.UploadRecords.FirstOrDefault(x => x.tableName == "Account");
                    if (account_uploadRecords != null)
                    {
                        maxId = MConvert <long> .ToTypeOrDefault(account_uploadRecords.maxId, -1);

                        if (account_uploadRecords.abandonId != null)
                        {
                            var idArray = account_uploadRecords.abandonId.Split(Constants.SplitChar);
                            abandonIds = Array.ConvertAll <string, long>(idArray, delegate(string s) { return(MConvert <long> .ToTypeOrDefault(s, -1)); }).ToList();
                        }
                    }
                    else
                    {
                        account_uploadRecords           = new UploadRecords();
                        account_uploadRecords.tableName = "Account";
                        db.UploadRecords.InsertOnSubmit(account_uploadRecords);
                        db.SubmitChanges();
                    }

                    #region 更新abandonIds,去除掉夜审之前的,以免abandonIds过长

                    var maxTime = DateTime.Parse("2013-01-01 00:00:00");
                    if (db.ClearTable.Any())
                    {
                        maxTime = db.ClearTable.Max(x => x.clearTime);
                    }
                    var max_passed_account_id = db.Account.Where(x => x.payTime <= maxTime).Max(x => x.id);
                    abandonIds.RemoveAll(x => x <= max_passed_account_id);

                    var _idArray = Array.ConvertAll <long, string>(abandonIds.ToArray(), delegate(long s) { return(s.ToString()); });
                    account_uploadRecords.abandonId = string.Join(Constants.SplitChar.ToString(), _idArray);
                    db.SubmitChanges();

                    #endregion

                    var accounts  = db.Account.Where(x => x.id > maxId);
                    var _accounts = db.Account.Where(x => x.payTime >= maxTime && x.abandon != null && !abandonIds.Contains(x.id));
                    accounts = accounts.Union(_accounts).Distinct();

                    bool changed = false;
                    foreach (var account in accounts)
                    {
                        bool sucess = false;
                        while (!sucess)
                        {
                            sucess = upload_json(BathClass.ConvertToJsonString(account), "account");
                            if (sucess)
                            {
                                changed = true;
                                if (maxId < account.id)
                                {
                                    maxId = account.id;
                                    account_uploadRecords.maxId = account.id;
                                }
                                if (account.abandon != null && account.id >= max_passed_account_id)
                                {
                                    account_uploadRecords.abandonId += Constants.SplitChar + account.id.ToString();
                                }
                            }
                        }
                    }

                    if (changed)
                    {
                        db.SubmitChanges();
                    }
                }
                catch (System.Exception ex)
                {
                    IOUtil.insert_file(BathClass.getErrorFileName(), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "run_account" + ex.Message);
                }
            }
        }
Exemplo n.º 8
0
        //上传会员卡销售
        private void run_cardSale()
        {
            while (true)
            {
                try
                {
                    var db = new BathDBDataContext(connectionString);

                    long maxId         = -1;
                    var  abandonIds    = new List <long>();
                    var  uploadRecords = db.UploadRecords.FirstOrDefault(x => x.tableName == "CardSale");
                    if (uploadRecords != null)
                    {
                        maxId = MConvert <long> .ToTypeOrDefault(uploadRecords.maxId, -1);

                        if (uploadRecords.abandonId != null)
                        {
                            var idArray = uploadRecords.abandonId.Split(Constants.SplitChar);
                            abandonIds = Array.ConvertAll <string, long>(idArray, delegate(string s) { return(MConvert <long> .ToTypeOrDefault(s, -1)); }).ToList();
                        }
                    }
                    else
                    {
                        uploadRecords           = new UploadRecords();
                        uploadRecords.tableName = "CardSale";
                        db.UploadRecords.InsertOnSubmit(uploadRecords);
                        db.SubmitChanges();
                    }

                    #region 更新abandonIds,去除掉夜审之前的,以免abandonIds过长

                    var maxTime = DateTime.Parse("2013-01-01 00:00:00");
                    if (db.ClearTable.Any())
                    {
                        maxTime = db.ClearTable.Max(x => x.clearTime);
                    }
                    var max_passed_id = db.CardSale.Where(x => x.payTime <= maxTime).Max(x => x.id);
                    abandonIds.RemoveAll(x => x <= max_passed_id);

                    var _idArray = Array.ConvertAll <long, string>(abandonIds.ToArray(), delegate(long s) { return(s.ToString()); });
                    uploadRecords.abandonId = string.Join(Constants.SplitChar.ToString(), _idArray);
                    db.SubmitChanges();

                    #endregion

                    var cardSales  = db.CardSale.Where(x => x.id > maxId);
                    var _cardSales = db.CardSale.Where(x => x.payTime >= maxTime && x.abandon != null && !abandonIds.Contains(x.id));
                    cardSales = cardSales.Union(_cardSales).Distinct();

                    bool changed = false;
                    foreach (var cardSale in cardSales)
                    {
                        bool sucess = false;
                        while (!sucess)
                        {
                            sucess = upload_json(BathClass.ConvertToJsonString(cardSale), "CardSale");
                            if (sucess)
                            {
                                changed = true;
                                if (maxId < cardSale.id)
                                {
                                    maxId = cardSale.id;
                                    uploadRecords.maxId = cardSale.id;
                                }
                                if (cardSale.abandon != null && cardSale.id >= max_passed_id)
                                {
                                    uploadRecords.abandonId += Constants.SplitChar + cardSale.id.ToString();
                                }
                            }
                        }
                    }
                    if (changed)
                    {
                        db.SubmitChanges();
                    }
                }
                catch (System.Exception ex)
                {
                }
            }
        }