✨ feat(*): 重构PCB放行流程并接入双扫码校验
- 将流程改为 OMRON FINS + TCP 双扫码 + SFTP 文件校验 - 新增文件校验与扫码结果汇总实现,补充对应单测 - 同步更新流程设计文档、配置和系统设置页面文案
This commit is contained in:
@@ -1,67 +1,67 @@
|
||||
using System.Globalization;
|
||||
using System.Windows;
|
||||
using System.Windows.Data;
|
||||
|
||||
namespace AxiOmron.PcbCheck.Converters;
|
||||
|
||||
/// <summary>
|
||||
/// 将布尔值转换为 <see cref="Visibility"/>,支持通过 ConverterParameter 反转判定。
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// 当 ConverterParameter 为 "Invert"、"Inverse" 或 "!" 时,布尔值的真假意义取反。
|
||||
/// </remarks>
|
||||
public sealed class BooleanToVisibilityConverter : IValueConverter
|
||||
{
|
||||
/// <summary>
|
||||
/// 将布尔值转换为可见性。
|
||||
/// </summary>
|
||||
/// <param name="value">源布尔值。</param>
|
||||
/// <param name="targetType">目标类型。</param>
|
||||
/// <param name="parameter">若为 "Invert"/"!" 则反转判定。</param>
|
||||
/// <param name="culture">当前区域信息。</param>
|
||||
/// <returns><see cref="Visibility.Visible"/> 或 <see cref="Visibility.Collapsed"/>。</returns>
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
bool flag = value is bool b && b;
|
||||
if (IsInvert(parameter))
|
||||
{
|
||||
flag = !flag;
|
||||
}
|
||||
return flag ? Visibility.Visible : Visibility.Collapsed;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 将可见性反向转换为布尔值。
|
||||
/// </summary>
|
||||
/// <param name="value">目标可见性。</param>
|
||||
/// <param name="targetType">目标类型。</param>
|
||||
/// <param name="parameter">若为 "Invert"/"!" 则反转判定。</param>
|
||||
/// <param name="culture">当前区域信息。</param>
|
||||
/// <returns>布尔值。</returns>
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
bool flag = value is Visibility v && v == Visibility.Visible;
|
||||
if (IsInvert(parameter))
|
||||
{
|
||||
flag = !flag;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 判断参数是否要求反转判定。
|
||||
/// </summary>
|
||||
/// <param name="parameter">参数值。</param>
|
||||
/// <returns>是否反转。</returns>
|
||||
private static bool IsInvert(object? parameter)
|
||||
{
|
||||
if (parameter is null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
string token = parameter.ToString() ?? string.Empty;
|
||||
return token.Equals("Invert", StringComparison.OrdinalIgnoreCase)
|
||||
|| token.Equals("Inverse", StringComparison.OrdinalIgnoreCase)
|
||||
|| token.Equals("!", StringComparison.Ordinal);
|
||||
}
|
||||
}
|
||||
using System.Globalization;
|
||||
using System.Windows;
|
||||
using System.Windows.Data;
|
||||
|
||||
namespace AxiOmron.PcbCheck.Converters;
|
||||
|
||||
/// <summary>
|
||||
/// 将布尔值转换为 <see cref="Visibility"/>,支持通过 ConverterParameter 反转判定。
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// 当 ConverterParameter 为 "Invert"、"Inverse" 或 "!" 时,布尔值的真假意义取反。
|
||||
/// </remarks>
|
||||
public sealed class BooleanToVisibilityConverter : IValueConverter
|
||||
{
|
||||
/// <summary>
|
||||
/// 将布尔值转换为可见性。
|
||||
/// </summary>
|
||||
/// <param name="value">源布尔值。</param>
|
||||
/// <param name="targetType">目标类型。</param>
|
||||
/// <param name="parameter">若为 "Invert"/"!" 则反转判定。</param>
|
||||
/// <param name="culture">当前区域信息。</param>
|
||||
/// <returns><see cref="Visibility.Visible"/> 或 <see cref="Visibility.Collapsed"/>。</returns>
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
bool flag = value is bool b && b;
|
||||
if (IsInvert(parameter))
|
||||
{
|
||||
flag = !flag;
|
||||
}
|
||||
return flag ? Visibility.Visible : Visibility.Collapsed;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 将可见性反向转换为布尔值。
|
||||
/// </summary>
|
||||
/// <param name="value">目标可见性。</param>
|
||||
/// <param name="targetType">目标类型。</param>
|
||||
/// <param name="parameter">若为 "Invert"/"!" 则反转判定。</param>
|
||||
/// <param name="culture">当前区域信息。</param>
|
||||
/// <returns>布尔值。</returns>
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
bool flag = value is Visibility v && v == Visibility.Visible;
|
||||
if (IsInvert(parameter))
|
||||
{
|
||||
flag = !flag;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 判断参数是否要求反转判定。
|
||||
/// </summary>
|
||||
/// <param name="parameter">参数值。</param>
|
||||
/// <returns>是否反转。</returns>
|
||||
private static bool IsInvert(object? parameter)
|
||||
{
|
||||
if (parameter is null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
string token = parameter.ToString() ?? string.Empty;
|
||||
return token.Equals("Invert", StringComparison.OrdinalIgnoreCase)
|
||||
|| token.Equals("Inverse", StringComparison.OrdinalIgnoreCase)
|
||||
|| token.Equals("!", StringComparison.Ordinal);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user