using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using WMS_GIRAF_Interface.Data;
using WMS_GIRAF_Interface.Models;
namespace WMS_GIRAF_Interface.Controllers
{
///
///
///
[ApiController, Route("Asrs")]
public class AsrsStatusController(IConfiguration configuration,MichelinDbContext context) : ControllerBase
{
private readonly IConfiguration _configuration = configuration;
///
///
///
///
///
[HttpGet("{asrsIdentifier}/status")]
public bool KeepAlive([FromRoute] string asrsIdentifier)
{
//返回true,表示服务正常
return true;
}
[HttpGet("{asrsIdentifier}/stock")]
public List GetStock(
[FromRoute] string asrsIdentifier,
[FromQuery] string? sku)
{
//根据用户给出的sku,返回库存信息,
if (!string.IsNullOrEmpty(sku))
{
//根据lot number和WAREHOUSE code来生成库存信息
var getStockList =
context.GetStockList.FromSqlRaw($@"SELECT STOCK_BARCODE,LOTNUMBER,CELL_CODE,
CELL_MODEL,supportIdentifier,supportIsBlocked,
IsBlocked,IsPriority,
PopulationNumber,
DryDateTimeInUtc,DryDateTimeInLoc,
OldDateTimeInUtc,OldDateTimeInLoc,
HdvDateTimeInUtc,HdvDateTimeInLoc,
FabricationDateTimeInUtc,FabricationDateTimeInLoc,
IsAccessible FROM V_STORAGE_LIST
WHERE WAREHOUSE_CODE = '{asrsIdentifier}' AND LOTNUMBER = '{sku}' ")
.ToList();
if (getStockList is {Count:>0})
{
List newReturnJson = getStockList.Select(getStockListModel => new GetStockList.StockInfo()
{
sku = getStockListModel.LOTNUMBER,
storageAddress = getStockListModel.CELL_CODE,
IsAccessible = getStockListModel.IsAccessible==1,
support = new GetStockList.SupportS() { type = getStockListModel.CELL_MODEL, identifier = getStockListModel.supportIdentifier, IsBlocked = getStockListModel.supportIsBlocked },
products = new GetStockList.ProductForGetStock[]
{
new GetStockList.ProductForGetStock()
{
identifier = getStockListModel.STOCK_BARCODE,
isBlocked = getStockListModel.IsBlocked,
isPriority = getStockListModel.IsPriority,
productClass = getStockListModel.PopulationNumber??"0000000000",
fabricationDate = getStockListModel.FabricationDateTimeInLoc,
maturationDate = getStockListModel.DryDateTimeInLoc,
expirationDate = getStockListModel.OldDateTimeInLoc,
highPriorityDate = getStockListModel.HdvDateTimeInLoc
}
}
})
.ToList();
//获取库存信息
return newReturnJson;
}
else
{
//未查到对应sku的库存
return new List();
}
}
else
{
//查询当前库中所有库存信息
var getStockList =
context.GetStockList.FromSqlRaw($@"SELECT STOCK_BARCODE,LOTNUMBER,CELL_CODE,
CELL_MODEL,supportIdentifier,supportIsBlocked
IsBlocked,IsPriority,
PopulationNumber,
DryDateTimeInUtc,DryDateTimeInLoc,
OldDateTimeInUtc,OldDateTimeInLoc,
HdvDateTimeInUtc,HdvDateTimeInLoc,
FabricationDateTimeInUtc,FabricationDateTimeInLoc,
IsAccessible FROM V_STORAGE_LIST
WHERE WAREHOUSE_CODE = '{asrsIdentifier}' ")
.ToList();
if (getStockList is { Count: > 0 })
{
List newReturnJson = getStockList.Select(getStockListModel =>
new GetStockList.StockInfo()
{
sku = getStockListModel.LOTNUMBER,
storageAddress = getStockListModel.CELL_CODE,
IsAccessible = getStockListModel.IsAccessible==1,
support = new GetStockList.SupportS()
{
type = getStockListModel.CELL_MODEL,
identifier = getStockListModel.supportIdentifier,
IsBlocked = getStockListModel.supportIsBlocked
},
products = new GetStockList.ProductForGetStock[]
{
new GetStockList.ProductForGetStock()
{
identifier = getStockListModel.STOCK_BARCODE,
isBlocked = getStockListModel.IsBlocked,
isPriority = getStockListModel.IsPriority,
productClass = getStockListModel.PopulationNumber ?? "0000000000",
fabricationDate = getStockListModel.FabricationDateTimeInLoc,
maturationDate = getStockListModel.DryDateTimeInLoc,
expirationDate = getStockListModel.OldDateTimeInLoc,
highPriorityDate = getStockListModel.HdvDateTimeInLoc
}
}
})
.ToList();
//获取库存信息
return new List();
}
else
{
//未查到对应sku的库存
return new List();
}
}
}
}
}