MockWarehouseDataService.cs 1.8 KB
namespace IndustrialControl.Services;

public interface IWarehouseDataService
{
    Task<InboundOrder> GetInboundOrderAsync(string orderNo);
    Task<SimpleOk> ConfirmInboundAsync(string orderNo, IEnumerable<ScanItem> items);

    Task<SimpleOk> ConfirmInboundProductionAsync(string orderNo, IEnumerable<ScanItem> items);
    Task<SimpleOk> ConfirmOutboundMaterialAsync(string orderNo, IEnumerable<ScanItem> items);
    Task<SimpleOk> ConfirmOutboundFinishedAsync(string orderNo, IEnumerable<ScanItem> items);
}

public record InboundOrder(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", "关联单:CGD2736273", _rand.Next(10, 80)));

    public Task<SimpleOk> ConfirmInboundAsync(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> 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()} 条"));
}