using Newtonsoft.Json; using Newtonsoft.Json.Converters; using SWRIS.Enums; using System; using System.Collections.Generic; using System.IO.Ports; using System.Linq; namespace SWRIS.Models { public class ConfigModel { /// /// 系统名称 /// public string AppName { get; set; } /// /// 软件版本号 /// public string Version { get; set; } /// /// 版权/技术支持 /// public string Copyright { get; set; } /// /// Tcp Server 服务Ip地址 /// public string IpAddress { get; set; } /// /// Tcp Server 端口号 /// public int Port { get; set; } /// /// 数据保存天数 /// public int DataSaveDays { get; set; } = 120; /// /// 数据清理时间点 /// public TimeSpan CleanScheduledTime { get; set; } /// /// 损伤附近点数(检测报告内用) /// public int DamageNearPointCount { get; set; } = 20; /// /// 是否显示调试信息 /// public bool ShowDebugMessage { get; set; } = false; /// /// 语音报警级别 /// public RiskLevel SoundRiskLevel { get; set; } = RiskLevel.Moderate; /// /// 速度波动阈值 /// public double SpeedVariationThreshold { get; set; } = 0.25; /// /// 起重机名称 /// public string Crane { get; set; } /// /// 小车集合 /// public List Trolleys { get; set; } /// /// 设备集合 /// public List Equipments { get; set; } /// /// 应用切换 /// public List SwitchInstances { get; set; } /// /// 位置标定 /// public CalibrationSettings Calibration { get; set; } /// /// 损伤容差范围 /// public double DamageExtent { get; set; } /// /// 损伤确认频次 /// public int AlarmValidCount { get; set; } = 1; public string GenerateNewSerialNo() { string prefix = DateTime.Now.ToString("yyMM"); // 获取当前月份最大序号 int max = Equipments.Select(e => e.SerialNo)? .Where(s => s != null && s.StartsWith(prefix)) .Select(s => int.Parse(s.Substring(4))) .DefaultIfEmpty(0) .Max() ?? 0; // 生成新序号(最大+1,格式化为3位数) return $"{prefix}{(max + 1):D3}"; } } public class CalibrationSettings { public ModuleType ModuleType { get; set; } public List Limits { get; set; } public TcpSettings Tcp { get; set; } public SerialSettings Serial { get; set; } } public class TcpSettings { public string IpAddress { get; set; } public int Port { get; set; } public byte Station { get; set; } = 1; } public class SerialSettings { public string PortName { get; set; } public int BaudRate { get; set; } public int DataBits { get; set; } [JsonConverter(typeof(StringEnumConverter))] public Parity Parity { get; set; } public StopBits StopBits { get; set; } public byte Station { get; set; } = 1; } public class TrolleyData { public int Id { get; set; } public string Name { get; set; } } public class LimitData { public int TrolleyId { get; set; } public string Name { get; set; } public string Address { get; set; } public double Position { get; set; } public bool IsReverse { get; set; } public LimitState State { get; set; } public bool IsEnable { get; set; } public List RelatedRopes { get; set; } = new List(); public int SwitchIndex { get; set; } } public class SwitchInstance { public string InstanceName { get; set; } public string ProgressName { get; set; } public string ImageSource { get; set; } } }