InboundProductionViewModel.cs
2.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using System.Collections.ObjectModel;
using IndustrialControl.Services;
using System.Threading.Tasks;
namespace IndustrialControl.ViewModels
{
public partial class InboundProductionViewModel : ObservableObject
{
private readonly IWarehouseDataService _warehouseSvc;
public InboundProductionViewModel(IWarehouseDataService warehouseSvc)
{
_warehouseSvc = warehouseSvc;
ConfirmCommand = new AsyncRelayCommand(ConfirmInboundAsync);
// 测试数据
Lines = new ObservableCollection<ProductionScanItem>
{
new ProductionScanItem { IsSelected = false, Barcode="FSC2025060300001", Bin="CK1_A201", Qty=1 },
new ProductionScanItem { IsSelected = false, Barcode="FSC2025060300002", Bin="CK1_A201", Qty=1 }
};
AvailableBins = new ObservableCollection<string>
{
"CK1_A201", "CK1_A202", "CK1_A203"
};
}
// 基础信息
[ObservableProperty] private string orderNo;
[ObservableProperty] private string workOrderNo;
[ObservableProperty] private string productName;
[ObservableProperty] private int pendingQty;
public ObservableCollection<ProductionScanItem> Lines { get; set; }
public ObservableCollection<string> AvailableBins { get; set; }
public IAsyncRelayCommand ConfirmCommand { get; }
public void ClearScan()
{
Lines.Clear();
}
public void ClearAll()
{
OrderNo = string.Empty;
WorkOrderNo = string.Empty;
ProductName = string.Empty;
PendingQty = 0;
Lines.Clear();
}
public void PassSelectedScan()
{
foreach (var item in Lines)
{
if (item.IsSelected)
{
// 扫描通过处理
}
}
}
public void CancelSelectedScan()
{
for (int i = Lines.Count - 1; i >= 0; i--)
{
if (Lines[i].IsSelected)
Lines.RemoveAt(i);
}
}
public async Task<bool> ConfirmInboundAsync()
{
if (string.IsNullOrWhiteSpace(OrderNo))
return false;
var result = await _warehouseSvc.ConfirmInboundProductionAsync(OrderNo,
Lines.Select(x => new ScanItem(0, x.Barcode, x.Bin, x.Qty)));
return result.Succeeded;
}
}
public class ProductionScanItem
{
public bool IsSelected { get; set; }
public string Barcode { get; set; }
public string Bin { get; set; }
public int Qty { get; set; }
}
}