MockWarehouseDataService.cs
5.4 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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
using IndustrialControl.ViewModels;
namespace IndustrialControl.Services;
public interface IWarehouseDataService
{
Task<InboundOrder> GetInboundOrderAsync(string orderNo);
Task<OutboundOrder> GetOutboundOrderAsync(string orderNo);
Task<SimpleOk> ConfirmInboundAsync(string orderNo, IEnumerable<ScanItem> items);
Task<SimpleOk> ConfirmInboundProductionAsync(string orderNo, IEnumerable<ScanItem> items);
Task<SimpleOk> ConfirmOutboundProductionAsync(string orderNo, IEnumerable<ScanItem> items);
Task<SimpleOk> ConfirmOutboundMaterialAsync(string orderNo, IEnumerable<ScanItem> items);
Task<SimpleOk> ConfirmOutboundFinishedAsync(string orderNo, IEnumerable<ScanItem> items);
Task<IEnumerable<string>> ListInboundBinsAsync(string orderNo);
Task<IEnumerable<string>> ListOutboundBinsAsync(string orderNo);
// NEW: 查询列表(图1)
Task<IEnumerable<InboundOrderSummary>> ListInboundOrdersAsync(string? orderNoOrBarcode, DateTime createdDate);
// NEW: 查询列表(图1)
Task<IEnumerable<OutboundOrderSummary>> ListOutboundOrdersAsync(string? orderNoOrBarcode, DateTime createdDate);
}
public record InboundOrder(string OrderNo, string Supplier, string LinkedNo, int ExpectedQty);
public record OutboundOrder(string OrderNo, string Supplier, string LinkedNo, int ExpectedQty);
public record ScanItem(int Index, string Barcode, string? Bin, int Qty);
public record SimpleOk(bool Succeeded, string? Message = null);
public class MockWarehouseDataService : IWarehouseDataService
{
private readonly Random _rand = new();
public Task<InboundOrder> GetInboundOrderAsync(string orderNo)
=> Task.FromResult(new InboundOrder(orderNo, "XXXX", "DHD_23326", _rand.Next(10, 80)));
public Task<OutboundOrder> GetOutboundOrderAsync(string orderNo)
=> Task.FromResult(new OutboundOrder(orderNo, "XXXX", "DHD_23326", _rand.Next(10, 80)));
public Task<SimpleOk> ConfirmInboundAsync(string orderNo, IEnumerable<ScanItem> items)
=> Task.FromResult(new SimpleOk(true, $"入库成功:{items.Count()} 条"));
public Task<SimpleOk> ConfirmOutboundAsync(string orderNo, IEnumerable<ScanItem> items)
=> Task.FromResult(new SimpleOk(true, $"出库库成功:{items.Count()} 条"));
public Task<SimpleOk> ConfirmInboundProductionAsync(string orderNo, IEnumerable<ScanItem> items)
=> Task.FromResult(new SimpleOk(true, $"生产入库成功:{items.Count()} 条"));
public Task<SimpleOk> ConfirmOutboundProductionAsync(string orderNo, IEnumerable<ScanItem> items)
=> Task.FromResult(new SimpleOk(true, $"生产出库成功:{items.Count()} 条"));
public Task<SimpleOk> ConfirmOutboundMaterialAsync(string orderNo, IEnumerable<ScanItem> items)
=> Task.FromResult(new SimpleOk(true, $"物料出库成功:{items.Count()} 条"));
public Task<SimpleOk> ConfirmOutboundFinishedAsync(string orderNo, IEnumerable<ScanItem> items)
=> Task.FromResult(new SimpleOk(true, $"成品出库成功:{items.Count()} 条"));
public Task<IEnumerable<InboundOrderSummary>> ListInboundOrdersAsync(string? orderNoOrBarcode, DateTime createdDate)
{
// 简单过滤逻辑(按需改造)
var today = DateTime.Today;
var all = Enumerable.Range(1, 8).Select(i =>
new InboundOrderSummary(
OrderNo: $"CGD{today:yyyyMMdd}-{i:000}",
InboundType: (i % 2 == 0) ? "采购入库" : "生产入库",
Supplier: $"供应商{i}",
CreatedAt: today.AddDays(-i)
));
IEnumerable<InboundOrderSummary> filtered = all;
//if (!string.IsNullOrWhiteSpace(orderNoOrBarcode))
// filtered = filtered.Where(x => x.OrderNo.Contains(orderNoOrBarcode, StringComparison.OrdinalIgnoreCase));
//// 示例:按创建日期“同一天”过滤(你可以换成 >= 起始 && < 次日)
//filtered = filtered.Where(x => x.CreatedAt.Date == createdDate.Date);
return Task.FromResult(filtered);
}
public Task<IEnumerable<OutboundOrderSummary>> ListOutboundOrdersAsync(string? orderNoOrBarcode, DateTime createdDate)
{
// 简单过滤逻辑(按需改造)
var today = DateTime.Today;
var all = Enumerable.Range(1, 8).Select(i =>
new OutboundOrderSummary(
OrderNo: $"CGD{today:yyyyMMdd}-{i:000}",
InboundType: (i % 2 == 0) ? "采购入库" : "生产入库",
Supplier: $"供应商{i}",
CreatedAt: today.AddDays(-i)
));
IEnumerable<OutboundOrderSummary> filtered = all;
//if (!string.IsNullOrWhiteSpace(orderNoOrBarcode))
// filtered = filtered.Where(x => x.OrderNo.Contains(orderNoOrBarcode, StringComparison.OrdinalIgnoreCase));
//// 示例:按创建日期“同一天”过滤(你可以换成 >= 起始 && < 次日)
//filtered = filtered.Where(x => x.CreatedAt.Date == createdDate.Date);
return Task.FromResult(filtered);
}
public Task<IEnumerable<string>> ListInboundBinsAsync(string orderNo)
{
var bins = new[] { "CK1_A201", "CK1_A202", "CK1_A203", "CK1_A204", "CK1_B101" };
return Task.FromResult<IEnumerable<string>>(bins);
}
public Task<IEnumerable<string>> ListOutboundBinsAsync(string orderNo)
{
var bins = new[] { "CK1_A201", "CK1_A202", "CK1_A203", "CK1_A204", "CK1_B101" };
return Task.FromResult<IEnumerable<string>>(bins);
}
}