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 { /// /// Wms任务管理服务 /// [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; /// /// Initializes a new instance of the class. /// /// The wmsTask application service. public WmsTaskController(IWmsTaskAppService wmsTaskAppService) { _wmsTaskAppService = wmsTaskAppService; } /// /// 获取Wms任务管理 /// /// 标识符. /// [HttpGet] [Route("{id}")] public virtual Task GetAsync(Guid id) { return _wmsTaskAppService.GetAsync(id); } /// /// 分页获取Wms任务管理的列表. /// /// 输入. /// [HttpGet] [Route("Page")] public virtual Task> GetListAsync([FromQuery] GetWmsTaskInput input) { return _wmsTaskAppService.GetListAsync(input); } /// /// 创建Wms任务管理 /// /// 输入. /// //[Authorize] [HttpPost] public virtual Task CreateAsync(WmsTaskCreateDto input) { return _wmsTaskAppService.CreateAsync(input); } /// /// 更新Wms任务管理 /// /// 标识符. /// 输入. /// //[Authorize] [HttpPut] [Route("{id}")] public virtual Task UpdateAsync(Guid id, WmsTaskUpdateDto input) { return _wmsTaskAppService.UpdateAsync(id, input); } /// /// 克隆Wms任务管理 /// /// Id集合. /// //[Authorize] [HttpPost] [Route("Clone")] public virtual Task> CloneAsync([FromBody] IEnumerable ids) { return _wmsTaskAppService.CloneAsync(ids); } /// /// 删除Wms任务管理 /// /// 标识符. /// //[Authorize] [HttpDelete] [Route("{id}")] public virtual Task DeleteAsync(Guid id) { return _wmsTaskAppService.DeleteAsync(id); } /// /// 批量删除Wms任务管理 /// /// The ids. /// //[Authorize] [HttpDelete] public virtual Task DeleteAsync([FromBody] IEnumerable ids) { return _wmsTaskAppService.DeleteManyAsync(ids); } /// /// 调整排序Wms任务管理 /// /// 标识符. /// [HttpPut] [Route("{id}/AdjustSort/{sort}")] public virtual Task AdjustSortAsync(Guid id, int sort) { return _wmsTaskAppService.AdjustSortAsync(id, sort); } /// /// 导入Wms任务管理 /// /// [Authorize] [HttpPost] [Route("Import")] public virtual async Task 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(stream, sheetName: "配置").ToList() : new(); if (!wmsTaskRows.Any()) { throw new UserFriendlyException("请检查导入的表格"); } await _wmsTaskAppService.ImportAsync(new WmsTasksImportModel { WmsTasks = wmsTaskRows, }); return Ok(); } /// /// 导出Wms任务管理 /// /// [HttpGet] [Route("Export")] public virtual async Task 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" }; } /// /// 强制完成任务 /// /// /// [HttpPost] [Route("FinishTask")] public async Task FinishTaskAsync(WmsTaskStatusDto input) { await _wmsTaskAppService.FinishTaskAsync(input); } /// /// 取消任务 /// /// /// [HttpPost] [Route("CancelTask")] public async Task CancelTaskAsync(WmsTaskStatusDto input) { await _wmsTaskAppService.CancelTaskAysnc(input); } /// /// 修改任务目标库位 /// /// /// [HttpPost] [Route("ChangeTaskToPlace")] public async Task ChangeTaskToPlaceAsync(ChangeTaskToPlaceInput input) { await _wmsTaskAppService.ChangeTaskToPlaceAsync(input); } /// /// 获取需要执行的堆垛机任务 /// /// /// [HttpPost] [Route("ToExecuteTask")] public async Task GetToExecuteTaskAsync(QueryTaskTypeInput input) { return await _wmsTaskAppService.GetToExecuteTaskAsync(input); } } }