NozzleLockAccessor.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. using SinoChemCommonUtilities;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data.SqlClient;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace NozzleLockConfiguration
  9. {
  10. public static class NozzleLockAccessor
  11. {
  12. static NLog.Logger logger = NLog.LogManager.LoadConfiguration("nlog.config").GetLogger("Application");
  13. private static SqlCommandUtility sqlCmd;
  14. public static void Init(string connectionString)
  15. {
  16. if (sqlCmd == null)
  17. {
  18. sqlCmd = new SqlCommandUtility(connectionString);
  19. }
  20. }
  21. #region sale related operations
  22. public static void FillinNozzles(Dictionary<int, IEnumerable<int>> fpNozzlesDict)
  23. {
  24. try
  25. {
  26. string sql;
  27. sql = "delete from nozzle_lock";
  28. sqlCmd.DeleteData(sql);
  29. List<int> nozzleIds = BuildNozzleListFromDict(fpNozzlesDict);
  30. foreach (var nId in nozzleIds)
  31. {
  32. sql = string.Format
  33. ($"insert into nozzle_lock values({nId}, {(int)NozzleLockStatus.Open}, '{DateTime.Now.ToString()}')");
  34. sqlCmd.Insertdata(sql, false);
  35. }
  36. }
  37. catch (Exception ex)
  38. {
  39. logger.Error(ex);
  40. }
  41. }
  42. public static bool IsNozzleClosedInTermsOfSale(int nozzleId)
  43. {
  44. try
  45. {
  46. NozzleLockModel model = GetNozzleLockModel(nozzleId);
  47. return (model != null) && (NozzleLockStatus.Clsoed == model.lock_status);
  48. }
  49. catch (Exception ex)
  50. {
  51. logger.Error(ex);
  52. return false;
  53. }
  54. }
  55. #endregion
  56. #region tool related operations
  57. public static IEnumerable<int> RetrieveNozzleIds()
  58. {
  59. string sql = string.Format($"select * from nozzle_lock");
  60. List<NozzleLockModel> listOfModels = sqlCmd.ReadData<List<NozzleLockModel>>(sql, ConstructListOfNozzleLockModels);
  61. return listOfModels.Select(m => m.jihao);
  62. }
  63. public static void UpdateAllNozzlesLockStatus(NozzleLockStatus newStatus)
  64. {
  65. string sql = string.Format
  66. ($"update nozzle_lock set lock_status={(int)newStatus}, last_change_time='{DateTime.Now.ToString()}'");
  67. sqlCmd.UpdateData(sql);
  68. }
  69. public static void UpdateOneNozzleLockStatus(int nozzleId, NozzleLockStatus newStatus)
  70. {
  71. string sql = string.Format
  72. ($" update nozzle_lock set lock_status={(int)newStatus}, last_change_time='{DateTime.Now.ToString()}'" +
  73. $" where jihao={nozzleId}");
  74. sqlCmd.UpdateData(sql);
  75. }
  76. public static NozzleLockModel GetNozzleLockModel(int nozzleId)
  77. {
  78. string sql = string.Format
  79. ($"select * from nozzle_lock where jihao={nozzleId}");
  80. NozzleLockModel model = sqlCmd.ReadData<NozzleLockModel>(sql, ConstructNozzleLockModel);
  81. return model;
  82. }
  83. #endregion
  84. #region supporting methods
  85. private static List<int> BuildNozzleListFromDict(Dictionary<int, IEnumerable<int>> fpNozzlesDict)
  86. {
  87. List<int> nIds = new List<int>();
  88. foreach (IEnumerable<int> item in fpNozzlesDict.Values)
  89. {
  90. nIds.AddRange(item);
  91. }
  92. nIds.Sort();
  93. return nIds;
  94. }
  95. private static NozzleLockModel ConstructNozzleLockModel(SqlDataReader reader)
  96. {
  97. if (reader.Read())
  98. {
  99. return FillinNozzleLockModel(reader);
  100. }
  101. else
  102. {
  103. return null;
  104. }
  105. }
  106. private static List<NozzleLockModel> ConstructListOfNozzleLockModels(SqlDataReader reader)
  107. {
  108. List<NozzleLockModel> list = new List<NozzleLockModel>();
  109. while (reader.Read())
  110. {
  111. NozzleLockModel model = FillinNozzleLockModel(reader);
  112. list.Add(model);
  113. }
  114. return list;
  115. }
  116. private static NozzleLockModel FillinNozzleLockModel(SqlDataReader reader)
  117. {
  118. return new NozzleLockModel()
  119. {
  120. jihao = DbFieldReader.SafelyReadDbField<int>(reader["jihao"]),
  121. lock_status = (NozzleLockStatus)DbFieldReader.SafelyReadDbField<int>(reader["lock_status"]),
  122. last_change_time = DbFieldReader.SafelyReadDbField<DateTime>(reader["last_change_time"]),
  123. };
  124. }
  125. #endregion
  126. }
  127. }