StatsDataManager.cs 28 KB

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