using Ao.Lang;
|
using CMS.Extensions.Abp.AspNetCore.Mvc.Filters;
|
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsTask;
|
using CMS.Plugin.HIAWms.Application.Contracts.Services;
|
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Mvc;
|
using MiniExcelLibs;
|
using System.Reflection;
|
using Volo.Abp;
|
using Volo.Abp.Application.Dtos;
|
|
namespace CMS.Plugin.HIAWms.Controller
|
{
|
/// <summary>
|
/// Wms任务管理服务
|
/// </summary>
|
[ApiController]
|
[TypeFilter(typeof(CMSLanguageFilter))]
|
[TypeFilter(typeof(CMSUowActionFilter))]
|
[TypeFilter(typeof(CMSAuditActionFilter))]
|
[TypeFilter(typeof(CMSExceptionFilter))]
|
[Route("api/v{version:apiVersion}/HIAWms/[controller]")]
|
public class WmsTaskController : ControllerBase
|
{
|
private readonly IWmsTaskAppService _wmsTaskAppService;
|
|
/// <summary>
|
/// Initializes a new instance of the <see cref="WmsTaskController"/> class.
|
/// </summary>
|
/// <param name="wmsTaskAppService">The wmsTask application service.</param>
|
public WmsTaskController(IWmsTaskAppService wmsTaskAppService)
|
{
|
_wmsTaskAppService = wmsTaskAppService;
|
}
|
|
/// <summary>
|
/// 获取Wms任务管理
|
/// </summary>
|
/// <param name="id">标识符.</param>
|
/// <returns></returns>
|
[HttpGet]
|
[Route("{id}")]
|
public virtual Task<WmsTaskDto> GetAsync(Guid id)
|
{
|
return _wmsTaskAppService.GetAsync(id);
|
}
|
|
/// <summary>
|
/// 分页获取Wms任务管理的列表.
|
/// </summary>
|
/// <param name="input">输入.</param>
|
/// <returns></returns>
|
[HttpGet]
|
[Route("Page")]
|
public virtual Task<PagedResultDto<WmsTaskDto>> GetListAsync([FromQuery] GetWmsTaskInput input)
|
{
|
return _wmsTaskAppService.GetListAsync(input);
|
}
|
|
/// <summary>
|
/// 创建Wms任务管理
|
/// </summary>
|
/// <param name="input">输入.</param>
|
/// <returns></returns>
|
[Authorize]
|
[HttpPost]
|
public virtual Task<WmsTaskDto> CreateAsync(WmsTaskCreateDto input)
|
{
|
return _wmsTaskAppService.CreateAsync(input);
|
}
|
|
/// <summary>
|
/// 更新Wms任务管理
|
/// </summary>
|
/// <param name="id">标识符.</param>
|
/// <param name="input">输入.</param>
|
/// <returns></returns>
|
[Authorize]
|
[HttpPut]
|
[Route("{id}")]
|
public virtual Task<WmsTaskDto> UpdateAsync(Guid id, WmsTaskUpdateDto input)
|
{
|
return _wmsTaskAppService.UpdateAsync(id, input);
|
}
|
|
/// <summary>
|
/// 克隆Wms任务管理
|
/// </summary>
|
/// <param name="ids">Id集合.</param>
|
/// <returns></returns>
|
[Authorize]
|
[HttpPost]
|
[Route("Clone")]
|
public virtual Task<List<WmsTaskDto>> CloneAsync([FromBody] IEnumerable<Guid> ids)
|
{
|
return _wmsTaskAppService.CloneAsync(ids);
|
}
|
|
/// <summary>
|
/// 删除Wms任务管理
|
/// </summary>
|
/// <param name="id">标识符.</param>
|
/// <returns></returns>
|
[Authorize]
|
[HttpDelete]
|
[Route("{id}")]
|
public virtual Task DeleteAsync(Guid id)
|
{
|
return _wmsTaskAppService.DeleteAsync(id);
|
}
|
|
/// <summary>
|
/// 批量删除Wms任务管理
|
/// </summary>
|
/// <param name="ids">The ids.</param>
|
/// <returns></returns>
|
[Authorize]
|
[HttpDelete]
|
public virtual Task DeleteAsync([FromBody] IEnumerable<Guid> ids)
|
{
|
return _wmsTaskAppService.DeleteManyAsync(ids);
|
}
|
|
/// <summary>
|
/// 调整排序Wms任务管理
|
/// </summary>
|
/// <param name="id">标识符.</param>
|
/// <returns></returns>
|
[HttpPut]
|
[Route("{id}/AdjustSort/{sort}")]
|
public virtual Task AdjustSortAsync(Guid id, int sort)
|
{
|
return _wmsTaskAppService.AdjustSortAsync(id, sort);
|
}
|
|
/// <summary>
|
/// 导入Wms任务管理
|
/// </summary>
|
/// <returns></returns>
|
[Authorize]
|
[HttpPost]
|
[Route("Import")]
|
public virtual async Task<IActionResult> ImportAsync(IFormFile file)
|
{
|
using var stream = new MemoryStream();
|
await file.CopyToAsync(stream);
|
stream.Seek(0L, SeekOrigin.Begin);
|
|
var sheetNames = stream.GetSheetNames();
|
var wmsTaskRows = sheetNames.Contains("配置") ? MiniExcel.Query<WmsTasksImportModel.WmsTaskImportModel>(stream, sheetName: "配置").ToList() : new();
|
|
if (!wmsTaskRows.Any())
|
{
|
throw new UserFriendlyException("请检查导入的表格");
|
}
|
|
await _wmsTaskAppService.ImportAsync(new WmsTasksImportModel
|
{
|
WmsTasks = wmsTaskRows,
|
});
|
|
return Ok();
|
}
|
|
/// <summary>
|
/// 导出Wms任务管理
|
/// </summary>
|
/// <returns></returns>
|
[HttpGet]
|
[Route("Export")]
|
public virtual async Task<IActionResult> ExportAsync([FromQuery] GetWmsTaskInput input)
|
{
|
input.MaxResultCount = int.MaxValue;
|
var exportData = await _wmsTaskAppService.ExportAsync(input);
|
var templatePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Resources/Templates/WmsTask导出模板.xlsx");
|
if (!System.IO.File.Exists(templatePath))
|
{
|
templatePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? string.Empty, $"Resources/Templates/WmsTask导出模板.xlsx");
|
}
|
|
var memoryStream = new MemoryStream();
|
await memoryStream.SaveAsByTemplateAsync(templatePath, exportData.Sheets);
|
memoryStream.Seek(0L, SeekOrigin.Begin);
|
return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { FileDownloadName = $"{exportData.FileName}_{DateTime.Now:yyyyMMddhhmmss}.xlsx" };
|
}
|
|
/// <summary>
|
/// 强制完成任务
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpPost]
|
[Route("FinishTask")]
|
public async Task<WmsTaskDto> FinishTaskAsync(WmsTaskStatusDto input)
|
{
|
return await _wmsTaskAppService.FinishTaskAsync(input);
|
}
|
|
/// <summary>
|
/// 取消任务
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpPost]
|
[Route("CancelTask")]
|
public async Task CancelTaskAsync(WmsTaskStatusDto input)
|
{
|
await _wmsTaskAppService.CancelTaskAysnc(input);
|
}
|
|
/// <summary>
|
/// 修改任务目标库位
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpPost]
|
[Route("ChangeTaskToPlace")]
|
public async Task ChangeTaskToPlaceAsync(ChangeTaskToPlaceInput input)
|
{
|
await _wmsTaskAppService.ChangeTaskToPlaceAsync(input);
|
}
|
|
/// <summary>
|
/// 获取需要执行的堆垛机任务
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpPost]
|
[Route("GetExecuteTask")]
|
public async Task<WmsTaskDto> GetToExecuteTaskAsync(QueryTaskTypeInput input)
|
{
|
return await _wmsTaskAppService.GetToExecuteTaskAsync(input);
|
}
|
/// <summary>
|
/// 更新任务为执行中
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
[HttpPost]
|
[Route("ToExecuteTask")]
|
public async Task<WmsTaskDto> StartExecuteTaskAsync(ExcecuteTaskInput input)
|
{
|
return await _wmsTaskAppService.StartExecuteTaskAsync(input);
|
}
|
}
|
}
|