SystemConfig.cs 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. using CommunityToolkit.Mvvm.ComponentModel;
  2. namespace YZWater.Core.Models;
  3. /// <summary>
  4. /// 系统配置模型
  5. /// </summary>
  6. public partial class SystemConfig : ObservableObject
  7. {
  8. /// <summary>
  9. /// PLC IP 地址
  10. /// </summary>
  11. [ObservableProperty]
  12. private string _plcIp = "192.168.0.150";
  13. /// <summary>
  14. /// PLC 端口
  15. /// </summary>
  16. [ObservableProperty]
  17. private int _plcPort = 5000;
  18. /// <summary>
  19. /// 是否自动连接
  20. /// </summary>
  21. [ObservableProperty]
  22. private bool _autoConnect = true;
  23. /// <summary>
  24. /// 液位高报警值
  25. /// </summary>
  26. [ObservableProperty]
  27. private float _levelHighAlarm = 80f;
  28. /// <summary>
  29. /// 液位低报警值
  30. /// </summary>
  31. [ObservableProperty]
  32. private float _levelLowAlarm = 20f;
  33. /// <summary>
  34. /// 流量高报警值
  35. /// </summary>
  36. [ObservableProperty]
  37. private float _flowHighAlarm = 100f;
  38. /// <summary>
  39. /// 流量低报警值
  40. /// </summary>
  41. [ObservableProperty]
  42. private float _flowLowAlarm = 5f;
  43. /// <summary>
  44. /// 泵频率设置
  45. /// </summary>
  46. [ObservableProperty]
  47. private float _pumpFrequency = 50f;
  48. /// <summary>
  49. /// 系统名称
  50. /// </summary>
  51. [ObservableProperty]
  52. private string _systemName = "污水处理监控系统";
  53. /// <summary>
  54. /// 公司名称
  55. /// </summary>
  56. [ObservableProperty]
  57. private string _companyName = "扬州旭轩科技有限公司";
  58. /// <summary>
  59. /// 联系人
  60. /// </summary>
  61. [ObservableProperty]
  62. private string _contactPerson = "赵经理";
  63. /// <summary>
  64. /// 联系电话
  65. /// </summary>
  66. [ObservableProperty]
  67. private string _contactPhone = "18115099090";
  68. /// <summary>
  69. /// 是否深色主题
  70. /// </summary>
  71. [ObservableProperty]
  72. private bool _isDarkTheme;
  73. /// <summary>
  74. /// 是否中文语言
  75. /// </summary>
  76. [ObservableProperty]
  77. private bool _isChinese = true;
  78. /// <summary>
  79. /// 中控服务端口
  80. /// </summary>
  81. [ObservableProperty]
  82. private int _hubPort = 8765;
  83. /// <summary>
  84. /// 中控服务端地址(客户端模式使用)
  85. /// </summary>
  86. [ObservableProperty]
  87. private string _hubServerUrl = "ws://localhost:8765";
  88. /// <summary>
  89. /// 运行模式:Direct/Server/Client
  90. /// </summary>
  91. [ObservableProperty]
  92. private string _runMode = "Direct";
  93. /// <summary>
  94. /// Hub 通信令牌(服务端和客户端必须匹配)
  95. /// </summary>
  96. [ObservableProperty]
  97. private string _hubToken = string.Empty;
  98. /// <summary>
  99. /// 是否记住登录用户名
  100. /// </summary>
  101. [ObservableProperty]
  102. private bool _rememberUserName;
  103. /// <summary>
  104. /// 保存的用户名
  105. /// </summary>
  106. [ObservableProperty]
  107. private string _savedUserName = string.Empty;
  108. /// <summary>
  109. /// 当前激活的项目名称(对应 projects/ 目录下的 JSON 文件名,不含后缀)
  110. /// 空字符串表示使用内置默认项目配置
  111. /// </summary>
  112. [ObservableProperty]
  113. private string _activeProject = string.Empty;
  114. /// <summary>
  115. /// PLC 轮询间隔(毫秒)
  116. /// </summary>
  117. [ObservableProperty]
  118. private int _plcPollingIntervalMs = 1000;
  119. /// <summary>
  120. /// 是否开机自启动
  121. /// </summary>
  122. [ObservableProperty]
  123. private bool _runAtStartup;
  124. /// <summary>
  125. /// PLC 地址覆盖(key=标签名如 Tank1Level, value=地址如 VD100)
  126. /// 空则使用默认地址
  127. /// </summary>
  128. public Dictionary<string, string> PlcAddresses { get; set; } = new();
  129. /// <summary>
  130. /// PLC 协议类型:SiemensS7 / MitsubishiMC / OmronFins / ModbusTcp / AllenBradley
  131. /// 默认 SiemensS7(当前项目使用 S7-200 Smart)
  132. /// </summary>
  133. [ObservableProperty]
  134. private string _plcProtocol = "SiemensS7";
  135. // ═══ 数据保留配置 ═══
  136. /// <summary>
  137. /// 数据保留配置
  138. /// </summary>
  139. public DataRetentionConfig DataRetention { get; set; } = new();
  140. // ═══ 备份配置 ═══
  141. /// <summary>
  142. /// 备份配置
  143. /// </summary>
  144. public BackupConfig Backup { get; set; } = new();
  145. }
  146. /// <summary>
  147. /// 数据保留配置
  148. /// </summary>
  149. public class DataRetentionConfig
  150. {
  151. /// <summary>报警记录保留天数(默认 90 天)</summary>
  152. public int AlarmRecordRetentionDays { get; set; } = 90;
  153. /// <summary>流量记录保留天数(默认 360 天)</summary>
  154. public int FlowRecordRetentionDays { get; set; } = 360;
  155. /// <summary>模拟量记录保留天数(默认 360 天)</summary>
  156. public int AnalogRecordRetentionDays { get; set; } = 360;
  157. /// <summary>审计日志保留天数(默认 365 天)</summary>
  158. public int AuditLogRetentionDays { get; set; } = 365;
  159. }
  160. /// <summary>
  161. /// 备份配置
  162. /// </summary>
  163. public class BackupConfig
  164. {
  165. /// <summary>是否启用定时备份</summary>
  166. public bool EnableScheduledBackup { get; set; } = true;
  167. /// <summary>定时备份间隔(小时,默认 24 小时)</summary>
  168. public int BackupIntervalHours { get; set; } = 24;
  169. /// <summary>保留备份数量(默认 7 个)</summary>
  170. public int KeepBackupCount { get; set; } = 7;
  171. }