OperateService.cs 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338
  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.OpModels;
  9. namespace MySystem
  10. {
  11. public class OperateService
  12. {
  13. public readonly static OperateService Instance = new OperateService();
  14. private OperateService()
  15. { }
  16. public void Start()
  17. {
  18. Thread th = new Thread(StartDo);
  19. th.IsBackground = true;
  20. th.Start();
  21. }
  22. public void StartDo()
  23. {
  24. while (true)
  25. {
  26. if (DateTime.Now.Hour >= 3)
  27. {
  28. StatSendEverDayV2();
  29. }
  30. Thread.Sleep(30000);
  31. }
  32. }
  33. public void StatSendEverDayV2()
  34. {
  35. OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString();
  36. function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "运营中心发货统计日志");
  37. WebCMSEntities db = new WebCMSEntities();
  38. using (var tran = db.Database.BeginTransaction())
  39. {
  40. try
  41. {
  42. string startId = function.ReadInstance("/SendStat/Id.txt");
  43. if (string.IsNullOrEmpty(startId))
  44. {
  45. startId = "0";
  46. }
  47. DataTable idsDt = OtherMySqlConn.dtable("select Id from StoreStockChange where Id>=" + startId + " and CreateDate>='2022-12-19 00:00:00' and OpId>0 and Status=0 order by Id limit 50");
  48. if (idsDt.Rows.Count > 0)
  49. {
  50. string ids = "";
  51. foreach (DataRow idsDr in idsDt.Rows)
  52. {
  53. ids += idsDr["Id"].ToString() + ",";
  54. startId = idsDr["Id"].ToString();
  55. }
  56. DataTable selfDt = OtherMySqlConn.dtable("select OpId,StoreId,TransType,DATE_FORMAT(CreateDate,'%Y%m%d'),count(Id) from StoreStockChange where Id in (" + ids.TrimEnd(',') + ") group by OpId,StoreId,TransType,DATE_FORMAT(CreateDate,'%Y%m%d')");
  57. if (selfDt.Rows.Count > 0)
  58. {
  59. function.WriteLog("统计数:" + selfDt.Rows.Count + "\n\n", "运营中心发货统计日志");
  60. foreach (DataRow selfDr in selfDt.Rows)
  61. {
  62. int OpId = int.Parse(selfDr["OpId"].ToString());
  63. int StoreId = int.Parse(selfDr["StoreId"].ToString());
  64. int TransType = int.Parse(selfDr["TransType"].ToString());
  65. string TradeDate = selfDr[3].ToString();
  66. string TradeMonth = TradeDate.Substring(0, 6);
  67. int SendCount = int.Parse(selfDr[4].ToString());
  68. if(TransType == 1)
  69. {
  70. SendDaySummary selfStat = db.SendDaySummary.FirstOrDefault(m => m.OpId == OpId && m.TradeDate == TradeDate);
  71. if (selfStat == null)
  72. {
  73. selfStat = db.SendDaySummary.Add(new SendDaySummary()
  74. {
  75. TradeDate = TradeDate,
  76. OpId = OpId,
  77. }).Entity;
  78. db.SaveChanges();
  79. }
  80. selfStat.SendCount += SendCount;
  81. SendMonthSummary monthStat = db.SendMonthSummary.FirstOrDefault(m => m.OpId == OpId && m.TradeMonth == TradeMonth);
  82. if (monthStat == null)
  83. {
  84. monthStat = db.SendMonthSummary.Add(new SendMonthSummary()
  85. {
  86. TradeMonth = TradeMonth,
  87. OpId = OpId,
  88. }).Entity;
  89. db.SaveChanges();
  90. }
  91. monthStat.SendCount += SendCount;
  92. }
  93. else if(TransType == 2 || TransType == 10 || TransType == 11)
  94. {
  95. StoreSendDaySummary selfStat = db.StoreSendDaySummary.FirstOrDefault(m => m.OpId == StoreId && m.TradeDate == TradeDate);
  96. if (selfStat == null)
  97. {
  98. selfStat = db.StoreSendDaySummary.Add(new StoreSendDaySummary()
  99. {
  100. TradeDate = TradeDate,
  101. OpId = StoreId,
  102. }).Entity;
  103. db.SaveChanges();
  104. }
  105. selfStat.SendCount += SendCount;
  106. StoreSendMonthSummary monthStat = db.StoreSendMonthSummary.FirstOrDefault(m => m.OpId == StoreId && m.TradeMonth == TradeMonth);
  107. if (monthStat == null)
  108. {
  109. monthStat = db.StoreSendMonthSummary.Add(new StoreSendMonthSummary()
  110. {
  111. TradeMonth = TradeMonth,
  112. OpId = StoreId,
  113. }).Entity;
  114. db.SaveChanges();
  115. }
  116. monthStat.SendCount += SendCount;
  117. }
  118. }
  119. OtherMySqlConn.op("update StoreStockChange set Status=1 where Id in (" + ids.TrimEnd(',') + ")");
  120. function.WritePage("/SendStat/", "Id.txt", startId);
  121. }
  122. db.SaveChanges();
  123. }
  124. tran.Commit();
  125. }
  126. catch (Exception ex)
  127. {
  128. tran.Rollback();
  129. function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "运营中心发货统计异常");
  130. }
  131. }
  132. db.Dispose();
  133. function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "运营中心发货统计日志");
  134. }
  135. // 统计运营中心激活数
  136. public void StartPosActNum()
  137. {
  138. Thread th = new Thread(StartPosActNumFor);
  139. th.IsBackground = true;
  140. th.Start();
  141. }
  142. public void StartPosActNumFor()
  143. {
  144. while (true)
  145. {
  146. if(DateTime.Now.Hour >= 3)
  147. {
  148. StartPosActNumEverTime();
  149. }
  150. Thread.Sleep(120000);
  151. }
  152. }
  153. public void StartPosActNumEverTime()
  154. {
  155. OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString();
  156. function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "运营中心激活数日志");
  157. WebCMSEntities db = new WebCMSEntities();
  158. try
  159. {
  160. DataTable idsDt = OtherMySqlConn.dtable("select Id from PosMachinesTwo where QueryCount=1 and ActivationState=1 and ActivationTime is not null and ActivationTime>='2022-12-19 00:00:00' and OpId>0 limit 50");
  161. if(idsDt.Rows.Count > 0)
  162. {
  163. string ids = "";
  164. foreach (DataRow idsDr in idsDt.Rows)
  165. {
  166. ids += idsDr["Id"].ToString() + ",";
  167. }
  168. DataTable userDt = OtherMySqlConn.dtable("select OpId,StoreId,DATE_FORMAT(ActivationTime, '%Y%m%d'),count(Id) from PosMachinesTwo where Id in (" + ids.TrimEnd(',') + ") group by OpId,StoreId,DATE_FORMAT(ActivationTime, '%Y%m%d')");
  169. if (userDt.Rows.Count > 0)
  170. {
  171. function.WriteLog("人数:" + userDt.Rows.Count + "\n\n", "运营中心激活数日志");
  172. foreach (DataRow userDr in userDt.Rows)
  173. {
  174. int OpId = int.Parse(userDr["OpId"].ToString());
  175. int StoreId = int.Parse(userDr["StoreId"].ToString());
  176. string TradeDate = userDr[2].ToString();
  177. int ActCount = int.Parse(function.CheckInt(userDr[3].ToString()));
  178. string TradeMonth = TradeDate.Substring(0, 6);
  179. ActMerDaySummary selfStat = db.ActMerDaySummary.FirstOrDefault(m => m.OpId == OpId && m.TradeDate == TradeDate);
  180. if (selfStat == null)
  181. {
  182. selfStat = db.ActMerDaySummary.Add(new ActMerDaySummary()
  183. {
  184. OpId = OpId,
  185. TradeDate = TradeDate,
  186. }).Entity;
  187. db.SaveChanges();
  188. }
  189. selfStat.ActCount += ActCount;
  190. ActMerMonthSummary monthStat = db.ActMerMonthSummary.FirstOrDefault(m => m.OpId == OpId && m.TradeMonth == TradeMonth);
  191. if (monthStat == null)
  192. {
  193. monthStat = db.ActMerMonthSummary.Add(new ActMerMonthSummary()
  194. {
  195. OpId = OpId,
  196. TradeMonth = TradeMonth,
  197. }).Entity;
  198. db.SaveChanges();
  199. }
  200. monthStat.ActCount += ActCount;
  201. StoreActMerDaySummary selfStat2 = db.StoreActMerDaySummary.FirstOrDefault(m => m.OpId == StoreId && m.TradeDate == TradeDate);
  202. if (selfStat2 == null)
  203. {
  204. selfStat2 = db.StoreActMerDaySummary.Add(new StoreActMerDaySummary()
  205. {
  206. OpId = StoreId,
  207. TradeDate = TradeDate,
  208. }).Entity;
  209. db.SaveChanges();
  210. }
  211. selfStat2.ActCount += ActCount;
  212. StoreActMerMonthSummary monthStat2 = db.StoreActMerMonthSummary.FirstOrDefault(m => m.OpId == StoreId && m.TradeMonth == TradeMonth);
  213. if (monthStat2 == null)
  214. {
  215. monthStat2 = db.StoreActMerMonthSummary.Add(new StoreActMerMonthSummary()
  216. {
  217. OpId = StoreId,
  218. TradeMonth = TradeMonth,
  219. }).Entity;
  220. db.SaveChanges();
  221. }
  222. monthStat2.ActCount += ActCount;
  223. }
  224. db.SaveChanges();
  225. OtherMySqlConn.op("update PosMachinesTwo set QueryCount=2 where Id in (" + ids.TrimEnd(',') + ")");
  226. }
  227. }
  228. }
  229. catch (Exception ex)
  230. {
  231. function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "运营中心激活数异常");
  232. }
  233. db.Dispose();
  234. function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "运营中心激活数日志");
  235. }
  236. // 统计运营中心机具券销售量
  237. public void StartPosCouponSaleNum()
  238. {
  239. Thread th = new Thread(StartPosCouponSaleNumFor);
  240. th.IsBackground = true;
  241. th.Start();
  242. }
  243. public void StartPosCouponSaleNumFor()
  244. {
  245. while (true)
  246. {
  247. if(DateTime.Now.Hour >= 3)
  248. {
  249. StartPosCouponSaleNumEverTime();
  250. }
  251. Thread.Sleep(120000);
  252. }
  253. }
  254. public void StartPosCouponSaleNumEverTime()
  255. {
  256. OtherMySqlConn.connstr = Library.ConfigurationManager.AppSettings["SqlConnStr"].ToString();
  257. function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), "运营中心机具券销售量日志");
  258. WebCMSEntities db = new WebCMSEntities();
  259. try
  260. {
  261. string startId = function.ReadInstance("/SaleStat/Id.txt");
  262. if (string.IsNullOrEmpty(startId))
  263. {
  264. startId = "0";
  265. }
  266. DataTable idsDt = OtherMySqlConn.dtable("select Id from PosCouponRecord where Id>=" + startId + " and CreateDate>='2022-12-19 00:00:00' and OpId>0 and Status=0 order by Id limit 50");
  267. if (idsDt.Rows.Count > 0)
  268. {
  269. string ids = "";
  270. foreach (DataRow idsDr in idsDt.Rows)
  271. {
  272. ids += idsDr["Id"].ToString() + ",";
  273. startId = idsDr["Id"].ToString();
  274. }
  275. DataTable selfDt = OtherMySqlConn.dtable("select OpId,DATE_FORMAT(CreateDate,'%Y%m%d'),count(Id) from PosCouponRecord where Id in (" + ids.TrimEnd(',') + ") group by OpId,DATE_FORMAT(CreateDate,'%Y%m%d')");
  276. if (selfDt.Rows.Count > 0)
  277. {
  278. function.WriteLog("人数:" + selfDt.Rows.Count + "\n\n", "运营中心机具券销售量日志");
  279. foreach (DataRow userDr in selfDt.Rows)
  280. {
  281. int OpId = int.Parse(userDr["OpId"].ToString());
  282. string TradeDate = userDr[1].ToString();
  283. int SaleCount = int.Parse(function.CheckInt(userDr[2].ToString()));
  284. string TradeMonth = TradeDate.Substring(0, 6);
  285. PosCouponDaySummary selfStat = db.PosCouponDaySummary.FirstOrDefault(m => m.OpId == OpId && m.TradeDate == TradeDate);
  286. if (selfStat == null)
  287. {
  288. selfStat = db.PosCouponDaySummary.Add(new PosCouponDaySummary()
  289. {
  290. OpId = OpId,
  291. TradeDate = TradeDate,
  292. }).Entity;
  293. db.SaveChanges();
  294. }
  295. selfStat.SaleCount += SaleCount;
  296. PosCouponMonthSummary monthStat = db.PosCouponMonthSummary.FirstOrDefault(m => m.OpId == OpId && m.TradeMonth == TradeMonth);
  297. if (monthStat == null)
  298. {
  299. monthStat = db.PosCouponMonthSummary.Add(new PosCouponMonthSummary()
  300. {
  301. OpId = OpId,
  302. TradeMonth = TradeMonth,
  303. }).Entity;
  304. db.SaveChanges();
  305. }
  306. monthStat.SaleCount += SaleCount;
  307. }
  308. db.SaveChanges();
  309. OtherMySqlConn.op("update PosCouponRecord set Status=1 where Id in (" + ids.TrimEnd(',') + ")");
  310. function.WritePage("/SaleStat/", "Id.txt", startId);
  311. }
  312. }
  313. }
  314. catch (Exception ex)
  315. {
  316. function.WriteLog(DateTime.Now.ToString() + "\n" + ex.ToString(), "运营中心机具券销售量异常");
  317. }
  318. db.Dispose();
  319. function.WriteLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "\n\n", "运营中心机具券销售量日志");
  320. }
  321. }
  322. }