DBSlaveDetail.cs 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. using MV485.helper;
  2. using MV485.model;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Data.SQLite;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace MV485.db
  10. {
  11. public class DBSlaveDetail
  12. {
  13. public static bool InsertTSlaveDetail(TSlaveDetail detail)
  14. {
  15. string sql = @"
  16. INSERT OR IGNORE INTO t_slave_detail (
  17. detail_id, slave_id, device_sn, read_time,
  18. sample_result, sample_time, meter_type, image_file,read_memo
  19. )
  20. VALUES (
  21. @DetailId, @SlaveId, @DeviceSn, @ReadTime,
  22. @SampleResult, @SampleTime, @MeterType, @ImageFile, @ReadMemo
  23. )";
  24. SQLiteParameter[] parameters = new SQLiteParameter[]
  25. {
  26. new SQLiteParameter("@DetailId", detail.DetailId),
  27. new SQLiteParameter("@SlaveId", detail.SlaveId),
  28. new SQLiteParameter("@DeviceSn", detail.DeviceSn),
  29. new SQLiteParameter("@ReadTime", detail.ReadTime),
  30. new SQLiteParameter("@SampleResult", detail.SampleResult),
  31. new SQLiteParameter("@SampleTime", detail.SampleTime),
  32. new SQLiteParameter("@MeterType", detail.MeterType),
  33. new SQLiteParameter("@ImageFile", detail.ImageFile),
  34. new SQLiteParameter("@ReadMemo", detail.ReadMemo),
  35. };
  36. try
  37. {
  38. int rowsAffected = SQLiteHelper.ExecuteSql(sql, parameters);
  39. return rowsAffected > 0;
  40. }
  41. catch (Exception ex)
  42. {
  43. Console.WriteLine("Error inserting slave detail: " + ex.Message);
  44. return false;
  45. }
  46. }
  47. public static List<TSlaveDetail> GetSlaveDetailBySlaveId(string slaveId)
  48. {
  49. string sql = @"
  50. SELECT detail_id, slave_id, device_sn, read_time,
  51. sample_result, sample_time, meter_type, image_file
  52. FROM t_slave_detail
  53. WHERE slave_id = @SlaveId ORDER BY sample_time DESC";
  54. List<TSlaveDetail> details = new List<TSlaveDetail>();
  55. SQLiteParameter[] parameters = new SQLiteParameter[]
  56. {
  57. new SQLiteParameter("@SlaveId", slaveId)
  58. };
  59. using (SQLiteDataReader reader = SQLiteHelper.ExecuteReader(sql, parameters))
  60. {
  61. while (reader.Read())
  62. {
  63. TSlaveDetail detail = new TSlaveDetail
  64. {
  65. DetailId = reader["detail_id"].ToString(),
  66. SlaveId = reader["slave_id"].ToString(),
  67. DeviceSn = reader["device_sn"].ToString(),
  68. ReadTime = reader["read_time"].ToString(),
  69. SampleResult = Convert.ToUInt64(reader["sample_result"]),
  70. SampleTime = reader["sample_time"].ToString(),
  71. MeterType = Convert.ToInt32(reader["meter_type"]),
  72. ImageFile = reader["image_file"].ToString()
  73. };
  74. details.Add(detail);
  75. }
  76. }
  77. return details;
  78. }
  79. public static Tuple<int, int, List<TSlaveDetail>> GetPagedTSlaveDetails(int pageNumber, int pageSize, string slaveId)
  80. {
  81. // 计算 OFFSET 值
  82. int offset = (pageNumber - 1) * pageSize;
  83. // 定义 SQL 查询语句,带有分页
  84. string sql = @"
  85. SELECT detail_id, slave_id, device_sn, read_time, sample_result, sample_time, meter_type,image_file,read_memo
  86. FROM t_slave_detail
  87. WHERE slave_id = @SlaveId ";
  88. // 添加排序和分页
  89. sql += "ORDER BY read_time DESC LIMIT @PageSize OFFSET @Offset;";
  90. // 创建 SQL 参数
  91. List<SQLiteParameter> parameters = new List<SQLiteParameter>
  92. {
  93. new SQLiteParameter("@SlaveId", slaveId),
  94. new SQLiteParameter("@PageSize", pageSize),
  95. new SQLiteParameter("@Offset", offset),
  96. };
  97. // 执行查询并获取结果
  98. List<TSlaveDetail> slaveDetails = new List<TSlaveDetail>();
  99. using (SQLiteDataReader reader = SQLiteHelper.ExecuteReader(sql, parameters.ToArray()))
  100. {
  101. while (reader.Read())
  102. {
  103. // 将查询结果映射到 TSlaveDetail 对象
  104. TSlaveDetail slaveDetail = new TSlaveDetail
  105. {
  106. DetailId = reader.GetString(reader.GetOrdinal("detail_id")),
  107. SlaveId = reader.GetString(reader.GetOrdinal("slave_id")),
  108. DeviceSn = reader.GetString(reader.GetOrdinal("device_sn")),
  109. ReadTime = reader.GetString(reader.GetOrdinal("read_time")),
  110. //SampleResult = reader.get(reader.GetOrdinal("sample_result")),
  111. SampleResult = Convert.ToUInt64(reader["sample_result"]),
  112. SampleTime = reader.GetString(reader.GetOrdinal("sample_time")),
  113. MeterType = reader.GetInt32(reader.GetOrdinal("meter_type")),
  114. ImageFile = reader["image_file"].ToString(),
  115. ReadMemo = reader["read_memo"].ToString(),
  116. };
  117. slaveDetails.Add(slaveDetail);
  118. }
  119. }
  120. // 获取总记录数,用于计算总页数
  121. string countSql = "SELECT COUNT(*) FROM t_slave_detail WHERE slave_id = @SlaveId";
  122. int totalRecords = Convert.ToInt32(SQLiteHelper.GetSingle(countSql, new SQLiteParameter("@SlaveId", slaveId)));
  123. // 计算总页数
  124. int totalPages = (int)Math.Ceiling((double)totalRecords / pageSize);
  125. // 返回元组,包含总记录数、总页数和结果列表
  126. return Tuple.Create(totalRecords, totalPages, slaveDetails);
  127. }
  128. public static bool DeleteSlaveDetailBySlaveId(string slaveId)
  129. {
  130. string sql = "DELETE FROM t_slave_detail WHERE slave_id = @SlaveId";
  131. SQLiteParameter[] parameters = new SQLiteParameter[]
  132. {
  133. new SQLiteParameter("@SlaveId", slaveId)
  134. };
  135. try
  136. {
  137. int rowsAffected = SQLiteHelper.ExecuteSql(sql, parameters);
  138. return rowsAffected > 0;
  139. }
  140. catch (Exception ex)
  141. {
  142. Console.WriteLine("Error deleting slave detail: " + ex.Message);
  143. return false;
  144. }
  145. }
  146. public static bool DeleteSlaveDetailByDetailId(string detailId)
  147. {
  148. string sql = "DELETE FROM t_slave_detail WHERE detail_id = @DetailId";
  149. SQLiteParameter[] parameters = new SQLiteParameter[]
  150. {
  151. new SQLiteParameter("@DetailId", detailId)
  152. };
  153. try
  154. {
  155. int rowsAffected = SQLiteHelper.ExecuteSql(sql, parameters);
  156. return rowsAffected > 0;
  157. }
  158. catch (Exception ex)
  159. {
  160. Console.WriteLine("Error deleting slave detail: " + ex.Message);
  161. return false;
  162. }
  163. }
  164. //----------------------------------------------------------------------
  165. }
  166. }