123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.ComponentModel.DataAnnotations;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using XdCxRhDW.Dto.Attribute;
- namespace XdCxRhDW.Dto
- {
- /// <summary>
- /// 检测计算模型
- /// </summary>
- public class DetectDto : IValidatableObject
- {
- /// <summary>
- /// 调用Upload接口上传文件后返回的文件名
- /// </summary>
- [FileMustExist]
- public string file1 { get; set; }
- /// <summary>
- /// 检测类型
- /// </summary>
- public EnumSigCheckTypeDto dmcType { get; set; }
- /// <summary>
- /// 多个检测类型时是否合并检测结果(重叠的信号只算一个,重叠区域超过500样点则认为是同一个)
- /// </summary>
- public bool mergeRes { get; set; } = false;
- /// <summary>
- /// 采样率 Hz
- /// </summary>
- [RangeDouble(0, 100e6, IncludeMin = true)]
- public double fsHz { get; set; }
- /// <summary>
- /// 信号带宽(KHz,只对IBS信号有效,默认25KHz)
- /// </summary>
- [RangeDouble(0, 100)]
- public double band { get; set; } = 25;
- /// <summary>
- /// 是否对信号进行识别(获取调制类型、速率、频偏等)
- /// </summary>
- public bool SigProc { get; set; } = false;
- /// <summary>
- /// 超时时间(单位秒,默认30秒)
- /// </summary>
- [RangeInt(10, 600, IncludeMin = true)]
- public int TimeoutSeconds { get; set; } = 30;
- /// <summary>
- ///
- /// </summary>
- /// <param name="validationContext"></param>
- /// <returns></returns>
- public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
- {
- var fields = typeof(EnumSigCheckTypeDto).GetFields().Where(p => p.FieldType.IsEnum);
- bool hasError = true;
- foreach (var field in fields)
- {
- var value = field.GetValue(null);
- if (this.dmcType.HasFlag((Enum)value))
- {
- hasError = false;
- break;
- }
- }
- if (hasError)
- yield return new ValidationResult("检测类型错误", new[] { nameof(this.dmcType) });
- else
- {
- if (dmcType.HasFlag(EnumSigCheckTypeDto.Normal))
- {
- yield return new ValidationResult("常规信号不需要检测", new[] { nameof(this.dmcType) });
- }
- if (dmcType.HasFlag(EnumSigCheckTypeDto.DAMA) && fsHz != 96000)
- {
- yield return new ValidationResult("DAMA检测采样率只支持96K", new[] { nameof(this.fsHz) });
- }
- if (dmcType.HasFlag(EnumSigCheckTypeDto.IBS) && band != 5 && band != 25)
- {
- yield return new ValidationResult("IBS检测信号带宽只支持5K、25K两种", new[] { nameof(this.band) });
- }
- }
- yield return null;
- }
- }
- }
|