AlarmRepository.cs 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using Dapper;
  2. using SWRIS.Core;
  3. using SWRIS.Enums;
  4. using SWRIS.Models;
  5. using System;
  6. namespace SWRIS.Repository
  7. {
  8. public class AlarmRepository : SqLiteBaseRepository, IAlarmRepository
  9. {
  10. public int AddAlarm(AlarmDataModel alarm, AlarmSourceType sourceType, double damageExtent)
  11. {
  12. if (alarm != null)
  13. {
  14. damageExtent = Math.Abs(damageExtent / 2);
  15. using (var cnn = DbConnection())
  16. {
  17. try
  18. {
  19. cnn.Open();
  20. var sql = @"
  21. -- 先插入新记录
  22. INSERT INTO Alarms (RopeNumber, DamagePosition, DamageValue, DamageLevel, CreateTime, SourceType)
  23. VALUES (@RopeNumber, @DamagePosition, @DamageValue, @DamageLevel, @CreateTime, @SourceType);
  24. -- 查询该位置范围内的总报警次数(包括刚插入的这条)
  25. SELECT COUNT(*)
  26. FROM Alarms
  27. WHERE RopeNumber = @RopeNumber
  28. AND SourceType = @SourceType
  29. AND ABS(DamagePosition - @DamagePosition) <= @DamageExtent;";
  30. var parameters = new
  31. {
  32. alarm.RopeNumber,
  33. alarm.DamagePosition,
  34. alarm.DamageValue,
  35. alarm.DamageLevel,
  36. CreateTime = DateTime.Now,
  37. DamageExtent = damageExtent,
  38. SourceType = sourceType
  39. };
  40. int totalCount = cnn.QueryFirst<int>(sql, parameters);
  41. return totalCount;
  42. }
  43. catch (Exception ex)
  44. {
  45. LogHelper.Error("执行AddAlarm SQL语句时出错:" + ex.Message, ex);
  46. return -1;
  47. }
  48. }
  49. }
  50. return -1;
  51. }
  52. public bool ClearAlarms(int ropeNumbner)
  53. {
  54. using (var cnn = DbConnection())
  55. {
  56. try
  57. {
  58. cnn.Open();
  59. var sql = "DELETE FROM Alarms WHERE RopeNumber=@RopeNumber;";
  60. int effect = cnn.Execute(sql, new
  61. {
  62. RopeNumbner = ropeNumbner
  63. });
  64. cnn.Close();
  65. return effect > 0;
  66. }
  67. catch (Exception ex)
  68. {
  69. LogHelper.Error("执行ClearAlarms SQL语句时出错:" + ex.Message, ex);
  70. return false;
  71. }
  72. }
  73. }
  74. }
  75. }