using HMI.Core.Manager;
|
|
namespace Plugin.BurnIn.Util
|
{
|
public class SNValidator
|
{
|
public static bool ValidateSN(string model, string sn, out string msg)
|
{
|
msg = string.Empty;
|
string validate = string.Empty;
|
try
|
{
|
validate = ProductManager.GetParameterByProductAndName(model, "SNRValidate")?.Value;
|
if (string.IsNullOrEmpty(validate))
|
{
|
msg = $"当前型号[{model}]未配置SNRValidate参数,无法校验SN合法性";
|
return true;
|
}
|
string[] arr = validate.Split(';');
|
if (arr.Length == 1)
|
{
|
if (!sn.Contains(arr[0]))
|
{
|
msg = $"条码不包含固定码[{arr[0]}]";
|
return false;
|
}
|
return true;
|
}
|
|
if (arr.Length == 2)
|
{
|
int length = int.Parse(arr[1]);
|
if (!sn.Contains(arr[0]))
|
{
|
msg = $"条码不包含固定码[{arr[0]}]";
|
return false;
|
}
|
if (sn.Length != length)
|
{
|
msg = $"条码长度应为[{length}]";
|
return false;
|
}
|
return true;
|
}
|
|
if (arr.Length >= 3)
|
{
|
int length = int.Parse(arr[1]);
|
int startIndex = int.Parse(arr[2]);
|
|
if (sn.Length != length)
|
{
|
msg = $"条码长度应为[{length}]";
|
return false;
|
}
|
|
if (startIndex >= sn.Length)
|
{
|
msg = $"条码长读小于起始下标[{validate}]";
|
return false;
|
}
|
|
if (arr[0].Length > sn.Length)
|
{
|
msg = $"条码长读小于固定码长度[{validate}]";
|
return false;
|
}
|
|
if (sn.Substring(startIndex, arr[0].Length) != arr[0])
|
{
|
msg = $"固定码检查失败: [{validate}]";
|
return false;
|
}
|
return true;
|
}
|
msg = $"当前型号[{model}]配置参数[{validate}]解析失败";
|
return false;
|
}
|
catch (Exception ex)
|
{
|
msg = $"当前型号[{model}]配置参数[{validate}]解析失败";
|
return false;
|
}
|
}
|
}
|
}
|