ConfigModel.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. using Newtonsoft.Json;
  2. using Newtonsoft.Json.Converters;
  3. using SWRIS.Enums;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.IO.Ports;
  7. using System.Linq;
  8. namespace SWRIS.Models
  9. {
  10. public class ConfigModel
  11. {
  12. /// <summary>
  13. /// 系统名称
  14. /// </summary>
  15. public string AppName { get; set; }
  16. /// <summary>
  17. /// 软件版本号
  18. /// </summary>
  19. public string Version { get; set; }
  20. /// <summary>
  21. /// 版权/技术支持
  22. /// </summary>
  23. public string Copyright { get; set; }
  24. /// <summary>
  25. /// Tcp Server 服务Ip地址
  26. /// </summary>
  27. public string IpAddress { get; set; }
  28. /// <summary>
  29. /// Tcp Server 端口号
  30. /// </summary>
  31. public int Port { get; set; }
  32. /// <summary>
  33. /// 数据保存天数
  34. /// </summary>
  35. public int DataSaveDays { get; set; } = 120;
  36. /// <summary>
  37. /// 数据清理时间点
  38. /// </summary>
  39. public TimeSpan CleanScheduledTime { get; set; }
  40. /// <summary>
  41. /// 损伤附近点数(检测报告内用)
  42. /// </summary>
  43. public int DamageNearPointCount { get; set; } = 20;
  44. /// <summary>
  45. /// 是否显示调试信息
  46. /// </summary>
  47. public bool ShowDebugMessage { get; set; } = false;
  48. /// <summary>
  49. /// 语音报警级别
  50. /// </summary>
  51. public RiskLevel SoundRiskLevel { get; set; } = RiskLevel.Moderate;
  52. /// <summary>
  53. /// 速度波动阈值
  54. /// </summary>
  55. public double SpeedVariationThreshold { get; set; } = 0.25;
  56. /// <summary>
  57. /// 起重机名称
  58. /// </summary>
  59. public string Crane { get; set; }
  60. /// <summary>
  61. /// 小车集合
  62. /// </summary>
  63. public List<TrolleyData> Trolleys { get; set; }
  64. /// <summary>
  65. /// 设备集合
  66. /// </summary>
  67. public List<EquipmentModel> Equipments { get; set; }
  68. /// <summary>
  69. /// 应用切换
  70. /// </summary>
  71. public List<SwitchInstance> SwitchInstances { get; set; }
  72. /// <summary>
  73. /// 位置标定
  74. /// </summary>
  75. public CalibrationSettings Calibration { get; set; }
  76. /// <summary>
  77. /// 损伤容差范围
  78. /// </summary>
  79. public double DamageExtent { get; set; }
  80. /// <summary>
  81. /// 损伤确认频次
  82. /// </summary>
  83. public int AlarmValidCount { get; set; } = 1;
  84. public string GenerateNewSerialNo()
  85. {
  86. string prefix = DateTime.Now.ToString("yyMM");
  87. // 获取当前月份最大序号
  88. int max = Equipments.Select(e => e.SerialNo)?
  89. .Where(s => s != null && s.StartsWith(prefix))
  90. .Select(s => int.Parse(s.Substring(4)))
  91. .DefaultIfEmpty(0)
  92. .Max() ?? 0;
  93. // 生成新序号(最大+1,格式化为3位数)
  94. return $"{prefix}{(max + 1):D3}";
  95. }
  96. }
  97. public class CalibrationSettings
  98. {
  99. public ModuleType ModuleType { get; set; }
  100. public List<LimitData> Limits { get; set; }
  101. public TcpSettings Tcp { get; set; }
  102. public SerialSettings Serial { get; set; }
  103. }
  104. public class TcpSettings
  105. {
  106. public string IpAddress { get; set; }
  107. public int Port { get; set; }
  108. public byte Station { get; set; } = 1;
  109. }
  110. public class SerialSettings
  111. {
  112. public string PortName { get; set; }
  113. public int BaudRate { get; set; }
  114. public int DataBits { get; set; }
  115. [JsonConverter(typeof(StringEnumConverter))]
  116. public Parity Parity { get; set; }
  117. public StopBits StopBits { get; set; }
  118. public byte Station { get; set; } = 1;
  119. }
  120. public class TrolleyData
  121. {
  122. public int Id { get; set; }
  123. public string Name { get; set; }
  124. }
  125. public class LimitData
  126. {
  127. public int TrolleyId { get; set; }
  128. public string Name { get; set; }
  129. public string Address { get; set; }
  130. public double Position { get; set; }
  131. public bool IsReverse { get; set; }
  132. public LimitState State { get; set; }
  133. public bool IsEnable { get; set; }
  134. public List<int> RelatedRopes { get; set; } = new List<int>();
  135. public int SwitchIndex { get; set; }
  136. }
  137. public class SwitchInstance
  138. {
  139. public string InstanceName { get; set; }
  140. public string ProgressName { get; set; }
  141. public string ImageSource { get; set; }
  142. }
  143. }