✨ feat(*): 重构PCB放行流程并接入双扫码校验
- 将流程改为 OMRON FINS + TCP 双扫码 + SFTP 文件校验 - 新增文件校验与扫码结果汇总实现,补充对应单测 - 同步更新流程设计文档、配置和系统设置页面文案
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
using AxiOmron.PcbCheck.Models;
|
||||
using AxiOmron.PcbCheck.Services.Implementations;
|
||||
using Xunit;
|
||||
|
||||
namespace AxiOmron.PcbCheck.Tests;
|
||||
|
||||
/// <summary>
|
||||
/// 验证双扫码枪结果汇总规则。
|
||||
/// </summary>
|
||||
public sealed class DualScannerResultMergerTests
|
||||
{
|
||||
/// <summary>
|
||||
/// 任一扫码枪成功时,应使用成功条码继续后续 SFTP 流程。
|
||||
/// </summary>
|
||||
[Fact]
|
||||
public void Merge_ShouldUseSecondBarcode_WhenOnlySecondScannerSucceeds()
|
||||
{
|
||||
var first = new ScanOperationResult
|
||||
{
|
||||
IsSuccess = false,
|
||||
DeviceConnected = true,
|
||||
ErrorMessage = "扫码枪1超时"
|
||||
};
|
||||
var second = new ScanOperationResult
|
||||
{
|
||||
IsSuccess = true,
|
||||
DeviceConnected = true,
|
||||
Barcode = "PCB-SECOND"
|
||||
};
|
||||
|
||||
ScanOperationResult result = DualScannerResultMerger.Merge(first, second);
|
||||
|
||||
Assert.True(result.IsSuccess);
|
||||
Assert.Equal("PCB-SECOND", result.Barcode);
|
||||
Assert.Contains("扫码枪2", result.RawMessage);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 两把扫码枪都成功但内容不一致时,应优先使用扫码枪1条码并保留不一致说明。
|
||||
/// </summary>
|
||||
[Fact]
|
||||
public void Merge_ShouldPreferFirstBarcode_WhenBothScannersReturnDifferentBarcodes()
|
||||
{
|
||||
var first = new ScanOperationResult
|
||||
{
|
||||
IsSuccess = true,
|
||||
DeviceConnected = true,
|
||||
Barcode = "PCB-FIRST"
|
||||
};
|
||||
var second = new ScanOperationResult
|
||||
{
|
||||
IsSuccess = true,
|
||||
DeviceConnected = true,
|
||||
Barcode = "PCB-SECOND"
|
||||
};
|
||||
|
||||
ScanOperationResult result = DualScannerResultMerger.Merge(first, second);
|
||||
|
||||
Assert.True(result.IsSuccess);
|
||||
Assert.Equal("PCB-FIRST", result.Barcode);
|
||||
Assert.Contains("不一致", result.ErrorMessage);
|
||||
Assert.Contains("PCB-SECOND", result.RawMessage);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user