StatsDataManager.cs 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using Aitex.Core.RT.DBCore;
  5. using Aitex.Core.RT.Event;
  6. using Aitex.Core.RT.Log;
  7. using Aitex.Core.RT.OperationCenter;
  8. using Aitex.Core.Util;
  9. using MECF.Framework.Common.DBCore;
  10. namespace MECF.Framework.Common.DataCenter
  11. {
  12. public class StatsDataItem
  13. {
  14. public string Name { get; set; }
  15. public int Value { get; set; }
  16. public string Description { get; set; }
  17. public int Total { get; set; }
  18. public DateTime LastUpdateTime { get; set; }
  19. public DateTime LastResetTime { get; set; }
  20. public DateTime LastResetTotalTime { get; set; }
  21. public int WarningValue { get; set; }
  22. public bool WarningEnable { get; set; }
  23. public int AlarmValue { get; set; }
  24. public bool AlarmEnable { get; set; }
  25. public bool IsVisible { get; set; }
  26. }
  27. public class StatsDataItemRFAndPump
  28. {
  29. public string Name { get; set; }
  30. public string Description { get; set; }
  31. public DateTime LastPMTime { get; set; }
  32. public double fromLastPM { get; set; }
  33. public double Total { get; set; }
  34. public double PMInterval { get; set; }
  35. public bool AlarmEnable { get; set; }
  36. }
  37. public class StatsDataManager:Singleton<StatsDataManager>
  38. {
  39. private Dictionary<string, StatsDataItem> _items = new Dictionary<string, StatsDataItem>();
  40. private Dictionary<string, StatsDataItemRFAndPump> _itemsRFAndPump = new Dictionary<string, StatsDataItemRFAndPump>();
  41. private object _locker = new object();
  42. public StatsDataManager()
  43. {
  44. }
  45. public void Initialize()
  46. {
  47. try
  48. {
  49. OP.Subscribe("System.Stats.ResetValue", (method, args) =>
  50. {
  51. Reset((string)args[0]);
  52. return true;
  53. });
  54. OP.Subscribe("System.Stats.EnableAlarm", (method, args) =>
  55. {
  56. EnableAlarm((string)args[0], (bool)args[1]);
  57. return true;
  58. });
  59. OP.Subscribe("System.Stats.Alarm", (method, args) =>
  60. {
  61. Alarm((string)args[0]);
  62. return true;
  63. });
  64. OP.Subscribe("System.Stats.SetAlarmValue", (method, args) =>
  65. {
  66. SetAlarmValue((string)args[0], (int)args[1]);
  67. return true;
  68. });
  69. OP.Subscribe("System.Stats.EnableWarning", (method, args) =>
  70. {
  71. EnableWarning((string)args[0], (bool)args[1]);
  72. return true;
  73. });
  74. OP.Subscribe("System.Stats.Warning", (method, args) =>
  75. {
  76. Warning((string)args[0]);
  77. return true;
  78. });
  79. OP.Subscribe("System.Stats.SetWarningValue", (method, args) =>
  80. {
  81. SetWarningValue((string)args[0], (int)args[1]);
  82. return true;
  83. });
  84. OP.Subscribe("System.Stats.ResetTotalValue", (method, args) =>
  85. {
  86. ResetTotal((string)args[0]);
  87. return true;
  88. });
  89. OP.Subscribe("System.Stats.RFResetTotal", (method, args) =>
  90. {
  91. RFResetTotal((string)args[0]);
  92. return true;
  93. });
  94. OP.Subscribe("System.StatsRFAndPump.EnableAlarm", (method, args) =>
  95. {
  96. RFEnableAlarm((string)args[0], (bool)args[1]);
  97. return true;
  98. });
  99. OP.Subscribe("System.StatsRFAndPump.ResetValue", (method, args) =>
  100. {
  101. RFReset((string)args[0]);
  102. return true;
  103. });
  104. OP.Subscribe("System.StatsRFAndPump.SetPMIntervalValue", (method, args) =>
  105. {
  106. SetPMIntervalValue((string)args[0], (int)args[1]);
  107. return true;
  108. });
  109. DataTable dt = DataQuery.Query("select * from \"stats_data\"");
  110. for (int i = 0; i < dt.Rows.Count; i++)
  111. {
  112. StatsDataItem item = new StatsDataItem();
  113. item.Name = dt.Rows[i]["name"].ToString();
  114. item.Description = dt.Rows[i]["description"].ToString();
  115. if (int.TryParse(dt.Rows[i]["value"].ToString(), out int value))
  116. item.Value = value;
  117. if (int.TryParse(dt.Rows[i]["total"].ToString(), out int total))
  118. item.Total = total;
  119. if (int.TryParse(dt.Rows[i]["alarm_value"].ToString(), out int alarmValue))
  120. item.AlarmValue = alarmValue;
  121. if (!dt.Rows[i]["enable_alarm"].Equals(DBNull.Value))
  122. item.AlarmEnable = Convert.ToBoolean(dt.Rows[i]["enable_alarm"].ToString());
  123. if (int.TryParse(dt.Rows[i]["warning_value"].ToString(), out int WarningValue))
  124. item.WarningValue = WarningValue;
  125. if (!dt.Rows[i]["enable_warning"].Equals(DBNull.Value))
  126. item.WarningEnable = Convert.ToBoolean(dt.Rows[i]["enable_warning"].ToString());
  127. if (!dt.Rows[i]["is_visible"].Equals(DBNull.Value))
  128. item.IsVisible = Convert.ToBoolean(dt.Rows[i]["is_visible"].ToString());
  129. if (!dt.Rows[i]["last_update_time"].Equals(DBNull.Value))
  130. item.LastUpdateTime = (DateTime)dt.Rows[i]["last_update_time"] ;
  131. if (!dt.Rows[i]["last_reset_time"].Equals(DBNull.Value))
  132. item.LastResetTime = (DateTime)dt.Rows[i]["last_reset_time"];
  133. if (!dt.Rows[i]["last_total_reset_time"].Equals(DBNull.Value))
  134. item.LastResetTotalTime = (DateTime)dt.Rows[i]["last_total_reset_time"];
  135. _items[item.Name] = item;
  136. }
  137. DataTable dtRf = DataQuery.Query("select * from \"stats_data_rf_pump\"");
  138. for (int i = 0; i < dtRf.Rows.Count; i++)
  139. {
  140. StatsDataItemRFAndPump itemRf = new StatsDataItemRFAndPump();
  141. itemRf.Name = dtRf.Rows[i]["name"].ToString();
  142. itemRf.Description = dtRf.Rows[i]["description"].ToString();
  143. if (double.TryParse(dtRf.Rows[i]["total"].ToString(), out double total))
  144. itemRf.Total = total;
  145. if (double.TryParse(dtRf.Rows[i]["pm_interval"].ToString(), out double pmInterval))
  146. itemRf.PMInterval = pmInterval;
  147. if (double.TryParse(dtRf.Rows[i]["from_last_pm"].ToString(), out double fromLastPM))
  148. itemRf.fromLastPM = fromLastPM;
  149. if (!dtRf.Rows[i]["enable_alarm"].Equals(DBNull.Value))
  150. itemRf.AlarmEnable = Convert.ToBoolean(dtRf.Rows[i]["enable_alarm"].ToString());
  151. if (!dtRf.Rows[i]["last_pm_time"].Equals(DBNull.Value))
  152. itemRf.LastPMTime = (DateTime)dtRf.Rows[i]["last_pm_time"];
  153. _itemsRFAndPump[itemRf.Name] = itemRf;
  154. }
  155. }
  156. catch (Exception ex)
  157. {
  158. LOG.WriteExeption("init stats data manager failed", ex);
  159. }
  160. }
  161. private int SetAlarmValue(string name, int value)
  162. {
  163. lock (_locker)
  164. {
  165. if (!_items.ContainsKey(name))
  166. {
  167. //LOG.Error($"Can not set {name} alarm value, not defined item");
  168. return -1;
  169. }
  170. int preValue = _items[name].AlarmValue;
  171. _items[name].AlarmValue = value;
  172. string sql = string.Format(
  173. "UPDATE \"stats_data\" SET \"alarm_value\"='{0}'WHERE \"name\"='{1}';",_items[name].AlarmValue,
  174. name);
  175. DB.Insert(sql);
  176. EV.PostInfoLog("System", $"{name} stats alarm value changed from {preValue} to {value}");
  177. return preValue;
  178. }
  179. }
  180. private double SetPMIntervalValue(string name, int value)
  181. {
  182. lock (_locker)
  183. {
  184. if (!_itemsRFAndPump.ContainsKey(name))
  185. {
  186. //LOG.Error($"Can not set {name} alarm value, not defined item");
  187. return -1;
  188. }
  189. double preValue = _itemsRFAndPump[name].PMInterval;
  190. _itemsRFAndPump[name].PMInterval = value;
  191. string sql = string.Format(
  192. "UPDATE \"stats_data_rf_pump\" SET \"pm_interval\"='{0}'WHERE \"name\"='{1}';", _itemsRFAndPump[name].PMInterval,
  193. name);
  194. DB.Insert(sql);
  195. EV.PostInfoLog("System", $"{name} stats rf pump pm interval value changed from {preValue} to {value}");
  196. return preValue;
  197. }
  198. }
  199. private int SetWarningValue(string name, int value)
  200. {
  201. lock (_locker)
  202. {
  203. if (!_items.ContainsKey(name))
  204. {
  205. //LOG.Error($"Can not set {name} warning value, not defined item");
  206. return -1;
  207. }
  208. int preValue = _items[name].WarningValue;
  209. _items[name].WarningValue = value;
  210. string sql = string.Format(
  211. "UPDATE \"stats_data\" SET \"warning_value\"='{0}'WHERE \"name\"='{1}';", _items[name].WarningValue,
  212. name);
  213. DB.Insert(sql);
  214. EV.PostInfoLog("System", $"{name} stats warning value changed from {preValue} to {value}");
  215. return preValue;
  216. }
  217. }
  218. private void EnableAlarm(string name, bool enable)
  219. {
  220. lock (_locker)
  221. {
  222. if (!_items.ContainsKey(name))
  223. {
  224. //LOG.Error($"Can not set {name} alarm enable, not defined item");
  225. return;
  226. }
  227. bool preValue = _items[name].AlarmEnable;
  228. _items[name].AlarmEnable = enable;
  229. string sql = string.Format(
  230. "UPDATE \"stats_data\" SET \"enable_alarm\"='{0}'WHERE \"name\"='{1}';", _items[name].AlarmEnable,
  231. name);
  232. DB.Insert(sql);
  233. EV.PostInfoLog("System", $"{name} stats alarm enable changed from {preValue} to {enable}");
  234. return;
  235. }
  236. }
  237. private void RFEnableAlarm(string name, bool enable)
  238. {
  239. lock (_locker)
  240. {
  241. if (!_itemsRFAndPump.ContainsKey(name))
  242. {
  243. //LOG.Error($"Can not set {name} alarm enable, not defined item");
  244. return;
  245. }
  246. bool preValue = _itemsRFAndPump[name].AlarmEnable;
  247. _itemsRFAndPump[name].AlarmEnable = enable;
  248. string sql = string.Format(
  249. "UPDATE \"stats_data_rf_pump\" SET \"enable_alarm\"='{0}'WHERE \"name\"='{1}';", _itemsRFAndPump[name].AlarmEnable,
  250. name);
  251. DB.Insert(sql);
  252. EV.PostInfoLog("System", $"{name} stats data rf and pump alarm enable changed from {preValue} to {enable}");
  253. return;
  254. }
  255. }
  256. private void Alarm(string name)
  257. {
  258. lock (_locker)
  259. {
  260. if (!_items.ContainsKey(name))
  261. {
  262. //LOG.Error($"Can not set {name} alarm enable, not defined item");
  263. return;
  264. }
  265. EV.PostAlarmLog("System", $"{name} stats wafer value larger than wafer setting alarm value");
  266. return;
  267. }
  268. }
  269. private void EnableWarning(string name, bool enable)
  270. {
  271. lock (_locker)
  272. {
  273. if (!_items.ContainsKey(name))
  274. {
  275. //LOG.Error($"Can not set {name} warning enable, not defined item");
  276. return;
  277. }
  278. bool preValue = _items[name].WarningEnable;
  279. _items[name].WarningEnable = enable;
  280. string sql = string.Format(
  281. "UPDATE \"stats_data\" SET \"enable_warning\"='{0}'WHERE \"name\"='{1}';", _items[name].WarningEnable,
  282. name);
  283. DB.Insert(sql);
  284. EV.PostInfoLog("System", $"{name} stats warning enable changed from {preValue} to {enable}");
  285. return;
  286. }
  287. }
  288. private void Warning(string name)
  289. {
  290. lock (_locker)
  291. {
  292. if (!_items.ContainsKey(name))
  293. {
  294. //LOG.Error($"Can not set {name} warning enable, not defined item");
  295. return;
  296. }
  297. EV.PostWarningLog("System", $"{name} stats wafer value larger than wafer setting warning value");
  298. return;
  299. }
  300. }
  301. public void EnableVisible(string name, bool visible)
  302. {
  303. lock (_locker)
  304. {
  305. if (!_items.ContainsKey(name))
  306. {
  307. //LOG.Error($"Can not set {name} alarm enable, not defined item");
  308. return;
  309. }
  310. bool preValue = _items[name].IsVisible;
  311. _items[name].IsVisible = visible;
  312. string sql = string.Format(
  313. "UPDATE \"stats_data\" SET \"is_visible\"='{0}'WHERE \"name\"='{1}';", _items[name].IsVisible,
  314. name);
  315. DB.Insert(sql);
  316. EV.PostInfoLog("System", $"{name} stats visible changed from {preValue} to {visible}");
  317. return;
  318. }
  319. }
  320. public void Terminate()
  321. {
  322. }
  323. public void Subscribe(string name, string description, int initialValue, int warningValue = 0, bool warningEnable = false, int alarmValue = 0, bool alarmEnable = false, bool isVisible=true)
  324. {
  325. lock (_locker)
  326. {
  327. if (!_items.ContainsKey(name))
  328. {
  329. _items[name] = new StatsDataItem()
  330. {Description = description, Value = initialValue, Name = name, Total = 0};
  331. string executeInsert = string.Format(
  332. @"Insert into ""stats_data""(""name"",
  333. ""value"",
  334. ""total"",
  335. ""description"",
  336. ""last_update_time"",
  337. ""last_reset_time"",
  338. ""last_total_reset_time"",
  339. ""is_visible"",
  340. ""enable_warning"",
  341. ""warning_value"",
  342. ""enable_alarm"",
  343. ""alarm_value""
  344. ) values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}')",
  345. name, initialValue, initialValue, description, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")
  346. , DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), isVisible, warningEnable, warningValue, alarmEnable, alarmValue);
  347. DB.Insert(executeInsert);
  348. }
  349. }
  350. }
  351. public void Subscribe(string name, string description, double fromLastPM = 0, double Total = 0, double PMInterval = 0, bool alarmEnable = false)
  352. {
  353. lock (_locker)
  354. {
  355. if (!_itemsRFAndPump.ContainsKey(name))
  356. {
  357. _itemsRFAndPump[name] = new StatsDataItemRFAndPump()
  358. { Description = description, Name = name, fromLastPM = 0, Total = 0, PMInterval = 0, AlarmEnable = false };
  359. string executeInsert = string.Format(
  360. @"Insert into ""stats_data_rf_pump""(""name"",
  361. ""description"",
  362. ""last_pm_time"",
  363. ""from_last_pm"",
  364. ""total"",
  365. ""pm_interval"",
  366. ""enable_alarm""
  367. ) values('{0}','{1}','{2}','{3}','{4}','{5}','{6}')",
  368. name, description, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), fromLastPM, Total, PMInterval, alarmEnable);
  369. DB.Insert(executeInsert);
  370. }
  371. }
  372. }
  373. public void SetValue(string name, int value)
  374. {
  375. lock (_locker)
  376. {
  377. if (!_items.ContainsKey(name))
  378. {
  379. //LOG.Error($"Can not set {name} value, not defined item");
  380. return;
  381. }
  382. _items[name].Value = value;
  383. _items[name].LastUpdateTime = DateTime.Now;
  384. string sql = string.Format(
  385. "UPDATE \"stats_data\" SET \"last_update_time\"='{0}',\"value\"='{1}' WHERE \"name\"='{2}';",
  386. _items[name].LastUpdateTime.ToString("yyyy/MM/dd HH:mm:ss.fff"),
  387. value,
  388. name);
  389. DB.Insert(sql);
  390. }
  391. }
  392. public int GetValue(string name)
  393. {
  394. lock (_locker)
  395. {
  396. if (_items.ContainsKey(name))
  397. {
  398. return _items[name].Value;
  399. }
  400. }
  401. //LOG.Error($"Can not get {name} value, not defined item");
  402. return 0;
  403. }
  404. public StatsDataItem GetItem(string name)
  405. {
  406. lock (_locker)
  407. {
  408. if (_items.ContainsKey(name))
  409. {
  410. return _items[name];
  411. }
  412. }
  413. //LOG.Error($"Can not get {name} value, not defined item");
  414. return null;
  415. }
  416. public StatsDataItemRFAndPump GetItemRFAndPump(string name)
  417. {
  418. lock (_locker)
  419. {
  420. DataTable dtRf = DataQuery.Query($"select * from \"stats_data_rf_pump\"");
  421. for (int i = 0; i < dtRf.Rows.Count; i++)
  422. {
  423. StatsDataItemRFAndPump itemRf = new StatsDataItemRFAndPump();
  424. itemRf.Name = dtRf.Rows[i]["name"].ToString();
  425. itemRf.Description = dtRf.Rows[i]["description"].ToString();
  426. if (double.TryParse(dtRf.Rows[i]["total"].ToString(), out double total))
  427. itemRf.Total = total;
  428. if (double.TryParse(dtRf.Rows[i]["pm_interval"].ToString(), out double pmInterval))
  429. itemRf.PMInterval = pmInterval;
  430. if (double.TryParse(dtRf.Rows[i]["from_last_pm"].ToString(), out double fromLastPM))
  431. itemRf.fromLastPM = fromLastPM;
  432. if (!dtRf.Rows[i]["enable_alarm"].Equals(DBNull.Value))
  433. itemRf.AlarmEnable = Convert.ToBoolean(dtRf.Rows[i]["enable_alarm"].ToString());
  434. if (!dtRf.Rows[i]["last_pm_time"].Equals(DBNull.Value))
  435. itemRf.LastPMTime = (DateTime)dtRf.Rows[i]["last_pm_time"];
  436. _itemsRFAndPump[itemRf.Name] = itemRf;
  437. }
  438. if (_itemsRFAndPump.ContainsKey(name))
  439. {
  440. return _itemsRFAndPump[name];
  441. }
  442. }
  443. //LOG.Error($"Can not get {name} value, not defined item");
  444. return null;
  445. }
  446. public int Increase(string name, int additionValue=1)
  447. {
  448. lock (_locker)
  449. {
  450. if (!_items.ContainsKey(name))
  451. {
  452. //LOG.Error($"Can not increase {name} value, not defined item");
  453. return -1;
  454. }
  455. _items[name].Value += additionValue;
  456. _items[name].Total += additionValue;
  457. _items[name].LastUpdateTime = DateTime.Now;
  458. string sql = string.Format(
  459. "UPDATE \"stats_data\" SET \"last_update_time\"='{0}',\"value\"='{1}',\"total\"='{2}' WHERE \"name\"='{3}';",
  460. _items[name].LastUpdateTime.ToString("yyyy/MM/dd HH:mm:ss.fff"),
  461. _items[name].Value,
  462. _items[name].Total,
  463. name);
  464. DB.Insert(sql);
  465. return _items[name].Value;
  466. }
  467. }
  468. public int Increase(string name, string description, double fromLastPM = 0, double Total = 0, double PMInterval = 0, bool alarmEnable = false)
  469. {
  470. lock (_locker)
  471. {
  472. if (!_itemsRFAndPump.ContainsKey(name))
  473. {
  474. //LOG.Error($"Can not increase {name} value, not defined item");
  475. return -1;
  476. }
  477. _itemsRFAndPump[name].fromLastPM = fromLastPM;
  478. _itemsRFAndPump[name].Total = Total;
  479. string sql = string.Format(
  480. "UPDATE \"stats_data_rf_pump\" SET \"from_last_pm\"='{0}',\"total\"='{1}' WHERE \"name\"='{2}';",
  481. _itemsRFAndPump[name].fromLastPM, _itemsRFAndPump[name].Total, name);
  482. DB.Insert(sql);
  483. return 0;
  484. }
  485. }
  486. public int Reset(string name)
  487. {
  488. lock (_locker)
  489. {
  490. if (!_items.ContainsKey(name))
  491. {
  492. //LOG.Error($"Can not reset {name} value, not defined item");
  493. return -1;
  494. }
  495. int preValue = _items[name].Value;
  496. _items[name].Value = 0;
  497. _items[name].LastUpdateTime = DateTime.Now;
  498. _items[name].LastResetTime = DateTime.Now;
  499. string sql = string.Format(
  500. "UPDATE \"stats_data\" SET \"last_update_time\"='{0}',\"last_reset_time\"='{1}',\"value\"='{2}' WHERE \"name\"='{3}';",
  501. _items[name].LastUpdateTime.ToString("yyyy/MM/dd HH:mm:ss.fff"),
  502. _items[name].LastResetTime.ToString("yyyy/MM/dd HH:mm:ss.fff"),
  503. _items[name].Value,
  504. name);
  505. DB.Insert(sql);
  506. EV.PostInfoLog("System", $"{name} stats value reset to 0");
  507. return preValue;
  508. }
  509. }
  510. public int RFReset(string name)
  511. {
  512. lock (_locker)
  513. {
  514. if (!_itemsRFAndPump.ContainsKey(name))
  515. {
  516. //LOG.Error($"Can not reset {name} value, not defined item");
  517. return -1;
  518. }
  519. _itemsRFAndPump[name].fromLastPM = 0;
  520. _itemsRFAndPump[name].LastPMTime = DateTime.Now;
  521. string sql = string.Format(
  522. "UPDATE \"stats_data_rf_pump\" SET \"last_pm_time\"='{0}',\"from_last_pm\"='{1}' WHERE \"name\"='{2}';",
  523. _itemsRFAndPump[name].LastPMTime.ToString("yyyy/MM/dd HH:mm:ss.fff"),
  524. _itemsRFAndPump[name].fromLastPM,
  525. name);
  526. DB.Insert(sql);
  527. EV.PostInfoLog("System", $"{name} stats rf pump value reset to 0");
  528. return 0;
  529. }
  530. }
  531. public int RFResetTotal(string name)
  532. {
  533. lock (_locker)
  534. {
  535. if (!_itemsRFAndPump.ContainsKey(name))
  536. {
  537. //LOG.Error($"Can not reset {name} value, not defined item");
  538. return -1;
  539. }
  540. _itemsRFAndPump[name].fromLastPM = 0;
  541. _itemsRFAndPump[name].Total = 0;
  542. _itemsRFAndPump[name].LastPMTime = DateTime.Now;
  543. string sql = string.Format(
  544. "UPDATE \"stats_data_rf_pump\" SET \"last_pm_time\"='{0}',\"from_last_pm\"='{1}',\"total\"='{2}' WHERE \"name\"='{3}';",
  545. _itemsRFAndPump[name].LastPMTime.ToString("yyyy/MM/dd HH:mm:ss.fff"),
  546. _itemsRFAndPump[name].fromLastPM,
  547. _itemsRFAndPump[name].Total,
  548. name);
  549. DB.Insert(sql);
  550. EV.PostInfoLog("System", $"{name} stats rf pump total value reset to 0");
  551. return 0;
  552. }
  553. }
  554. public void ResetTotal(string name)
  555. {
  556. lock (_locker)
  557. {
  558. if (!_items.ContainsKey(name))
  559. {
  560. //LOG.Error($"Can not reset {name} value, not defined item");
  561. return;
  562. }
  563. //_items[name].Value = 0;
  564. _items[name].Total = 0;
  565. //_items[name].LastResetTime = DateTime.Now;
  566. _items[name].LastUpdateTime = DateTime.Now;
  567. _items[name].LastResetTotalTime = DateTime.Now;
  568. string sql = string.Format(
  569. "UPDATE \"stats_data\" SET \"last_update_time\"='{0}',\"last_total_reset_time\"='{1}',\"total\"='{2}' WHERE \"name\"='{3}';",
  570. _items[name].LastUpdateTime.ToString("yyyy/MM/dd HH:mm:ss.fff"),
  571. //_items[name].LastResetTime.ToString("yyyy/MM/dd HH:mm:ss.fff"),
  572. _items[name].LastResetTotalTime.ToString("yyyy/MM/dd HH:mm:ss.fff"),
  573. //_items[name].Value,
  574. _items[name].Total,
  575. name);
  576. EV.PostInfoLog("System", $"{name} stats total value reset to 0");
  577. DB.Insert(sql);
  578. }
  579. }
  580. }
  581. }