/// <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); } }
/// <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); }
//上传账单数据 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); } } }
//上传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) { } } }
//上传会员卡销售 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) { } } }
//上传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) { } } }
//上传账单数据 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); } } }
//上传会员卡销售 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) { } } }