DepositReturnStatService.cs 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. using System;
  2. using System.Collections.Generic;
  3. using Library;
  4. using LitJson;
  5. using System.Linq;
  6. using System.Data;
  7. using System.Threading;
  8. using MySystem.PxcModels;
  9. namespace MySystem
  10. {
  11. public class DepositReturnStatService
  12. {
  13. public readonly static DepositReturnStatService Instance = new DepositReturnStatService();
  14. private DepositReturnStatService()
  15. { }
  16. public void Start()
  17. {
  18. Thread th = new Thread(StartEverDay);
  19. th.IsBackground = true;
  20. th.Start();
  21. }
  22. public void StartEverDay()
  23. {
  24. while(true)
  25. {
  26. if(DateTime.Now.Day == 1 && DateTime.Now.Hour == 1)
  27. {
  28. StartEverDayDo();
  29. }
  30. Thread.Sleep(60000);
  31. }
  32. }
  33. public void StartEverDayDo()
  34. {
  35. string Month = DateTime.Now.ToString("yyyyMM");
  36. string chk = function.ReadInstance("/DepositReturn/" + Month + ".txt");
  37. if(!string.IsNullOrEmpty(chk))
  38. {
  39. return;
  40. }
  41. function.WritePage("/DepositReturn/", Month + ".txt", DateTime.Now.ToString());
  42. WebCMSEntities db = new WebCMSEntities();
  43. int startid = int.Parse(function.CheckInt(function.ReadInstance("/DepositReturn/MerchantId.txt")));
  44. List<PosMerchantInfo> merchants = db.PosMerchantInfo.Where(m => m.Id > startid && m.StandardStatus == 0).OrderBy(m => m.Id).Take(50).ToList();
  45. foreach(PosMerchantInfo merchant in merchants)
  46. {
  47. if(merchant.ActiveStatus == 1)
  48. {
  49. int StandardMonths = merchant.StandardMonths;
  50. int StandardStatus = merchant.StandardStatus;
  51. DateTime ActDate = merchant.MerStandardDate.Value;
  52. int MonthNum = StandardMonths;
  53. for (int i = StandardMonths + 1; i <= 10; i++)
  54. {
  55. string TradeMonth = ActDate.AddMonths(i).ToString("yyyyMM");
  56. if(int.Parse(TradeMonth) < int.Parse(DateTime.Now.ToString("yyyyMM")))
  57. {
  58. decimal TradeAmount = 0;
  59. bool CheckAmount = db.PosMerchantTradeSummay.Any(m => m.MerchantId == merchant.Id && m.TradeMonth == TradeMonth);
  60. if(CheckAmount)
  61. {
  62. TradeAmount = db.PosMerchantTradeSummay.Where(m => m.MerchantId == merchant.Id && m.TradeMonth == TradeMonth).Sum(m => m.TradeAmount);
  63. }
  64. if(TradeAmount >= 10000)
  65. {
  66. MonthNum = i;
  67. }
  68. else
  69. {
  70. StandardStatus = -1;
  71. break;
  72. }
  73. }
  74. }
  75. PosMerchantInfo edit = db.PosMerchantInfo.FirstOrDefault(m => m.Id == merchant.Id);
  76. if(edit != null)
  77. {
  78. edit.StandardMonths = MonthNum;
  79. edit.StandardStatus = StandardStatus;
  80. db.Dispose();
  81. }
  82. }
  83. startid = merchant.Id;
  84. }
  85. function.WritePage("/DepositReturn/", "MerchantId.txt", startid.ToString());
  86. db.Dispose();
  87. }
  88. }
  89. }