using Microsoft.AspNetCore.Mvc;
using System;
using System.Linq;
using System.Threading.Tasks;
namespace Kean.Presentation.Rest.Controllers
{
///
/// 指令服务
///
[ApiController, Route("api/instructions")]
public class InstructionsController : ControllerBase
{
private readonly Application.Query.Interfaces.IWcsService _wcsQueryService; // 指令查询服务
///
/// 依赖注入
///
public InstructionsController(
Application.Query.Interfaces.IWcsService wcsQueryService)
{
_wcsQueryService = wcsQueryService;
}
///
/// 获取指令记录列表
///
/// 成功
[HttpGet]
[ProducesResponseType(200)]
public async Task GetList(
[FromQuery] string[] warehouse,
[FromQuery] string direction,
[FromQuery] int? function,
[FromQuery] string device,
[FromQuery] string barcode,
[FromQuery] int? state,
[FromQuery] DateTime? beginTimeFrom,
[FromQuery] DateTime? beginTimeTo,
[FromQuery] DateTime? endTimeFrom,
[FromQuery] DateTime? endTimeTo,
[FromQuery] string sort,
[FromQuery] int? offset,
[FromQuery] int? limit)
{
if (warehouse.Length == 0)
{
warehouse = null;
}
var items = await _wcsQueryService.GetInstructionList(warehouse, direction, function, device, barcode, state, beginTimeFrom, beginTimeTo, endTimeFrom, endTimeTo, sort, offset, limit);
if (offset.HasValue || limit.HasValue)
{
var total = await _wcsQueryService.GetInstructionCount(warehouse, direction, function, device, barcode, state, beginTimeFrom, beginTimeTo, endTimeFrom, endTimeTo);
return StatusCode(200, new { items, total });
}
else
{
return StatusCode(200, new { items, total = items.Count() });
}
}
}
}