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; }
}
}