using System; using System.Collections.Generic; using System.Text.Json; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Volo.Abp.Application.Dtos; using Volo.Abp.AspNetCore.Mvc; using Win_in.Sfs.Auth.Application.Contracts; using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Wms.Store.Application.Contracts; namespace Win_in.Sfs.Wms.Pda.Controllers.Jobs; /// /// /// [ApiController] [Route($"{PdaHostConst.ROOT_ROUTE}job/put-away")] public class PutawayJobController : AbpController { private readonly IPutawayJobAppService _putawayJobAppService; private readonly IUserWorkGroupAppService _userWorkGroupAppService; /// /// /// /// /// public PutawayJobController( IPutawayJobAppService putawayJobAppService , IUserWorkGroupAppService userWorkGroupAppService) { _userWorkGroupAppService = userWorkGroupAppService; _putawayJobAppService = putawayJobAppService; } /// /// 获取上架任务详情 /// /// /// [HttpGet("{id}")] public virtual async Task> GetAsync(Guid id) { var result = await _putawayJobAppService.GetAsync(id).ConfigureAwait(false); return Ok(result); } /// /// 获取列表 /// /// /// /// [HttpGet("list")] public virtual async Task> GetListAsync(int pageSize, int pageIndex) { var wlgCodes = await _userWorkGroupAppService.GetCodsOfCurrentUserAsync().ConfigureAwait(false); var jsonCodes = JsonSerializer.Serialize(wlgCodes); List status = new List() { EnumJobStatus.Open.ToString(), EnumJobStatus.Doing.ToString() }; var jsonStatus = JsonSerializer.Serialize(status); var request = new SfsJobRequestInputBase { MaxResultCount = pageSize, SkipCount = (pageIndex - 1) * pageSize, Sorting = $"{nameof(PutawayJobDTO.Priority)} ASC", Condition = new Condition { Filters = new List { new(nameof(PutawayJobDTO.WorkGroupCode),jsonCodes,"In"), new(nameof(PutawayJobDTO.JobStatus),jsonStatus,"In") } } }; var list = await _putawayJobAppService.GetPagedListByFilterAsync(request, true).ConfigureAwait(false); return list; } /// /// 获取列表 筛选 /// /// /// [HttpPost("list")] public virtual async Task> GetListAsync(SfsJobRequestInputBase sfsRequestDTO) { var list = await _putawayJobAppService.GetPagedListByFilterAsync(sfsRequestDTO, true).ConfigureAwait(false); return list; } /// /// 获取任务数量 /// /// [HttpGet("count")] public virtual async Task> CountAsync() { var wlgCodes = await _userWorkGroupAppService.GetCodsOfCurrentUserAsync().ConfigureAwait(false); var jsonCodes = JsonSerializer.Serialize(wlgCodes); List status = new List() { EnumJobStatus.Open.ToString(), EnumJobStatus.Doing.ToString() }; var jsonStatus = JsonSerializer.Serialize(status); var request = new SfsJobRequestInputBase { Sorting = $"{nameof(PutawayJobDTO.Priority)} ASC", Condition = new Condition { Filters = new List { new(nameof(PutawayJobDTO.WorkGroupCode),jsonCodes,"In"), new(nameof(PutawayJobDTO.JobStatus),jsonStatus,"In") } } }; var count = await _putawayJobAppService.GetCountByFilterAsync(request).ConfigureAwait(false); return Ok(count); } /// /// 承接任务 /// /// /// [HttpPost("take/{id}")] public virtual async Task TakeAsync(Guid id) { await _putawayJobAppService.AcceptAsync(id).ConfigureAwait(false); } /// /// 取消承接任务 /// /// /// [HttpPost("cancel-take/{id}")] public virtual async Task CancelTakeAsync(Guid id) { await _putawayJobAppService.CancelAcceptAsync(id).ConfigureAwait(false); } /// /// 执行任务 /// /// /// /// [HttpPost("finish/{id}")] public virtual async Task FinishAsync(Guid id, [FromBody] PutawayJobDTO dto) { await _putawayJobAppService.CompleteJobAsync(id, dto).ConfigureAwait(false); } /// /// 根据托标签生成上架任务 /// /// /// [HttpPost("by-containercode")] public virtual async Task> CreateByContainerCodeAsync(PutawayByContainerCodeInput input) { var jobInput = new PutawayJobByContainerInput { Warehouse = "", LocationType = EnumLocationType.RAW, ContainerCodes = new List() }; foreach (var containerCode in input.ContainerCodes) { jobInput.ContainerCodes.Add(containerCode); } var dtos = await _putawayJobAppService.CreateByContainerCodeAsync(jobInput).ConfigureAwait(false); return dtos; } /// /// 根据箱标签生成上架任务 /// /// /// [HttpPost("by-packingcode")] public virtual async Task> CreateByPackingCodeAsync(PutawayByPackingCodeInput input) { var jobInput = new PutawayJobByPackingInput { Warehouse = "", LocationType = EnumLocationType.RAW, Inventories = new List() }; foreach (var inventory in input.Inventories) { jobInput.Inventories.Add(inventory); } var dtos = await _putawayJobAppService.CreateByPackingCodeAsync(jobInput).ConfigureAwait(false); return dtos; } /// /// 检查此箱是否存在任务 /// /// /// /// [HttpGet("check-job-exist-by-packing")] public virtual async Task> CheckJobExistByPackingCode(string packingCode, string itemCode) { return await _putawayJobAppService.CheckJobExistByPackingCode(packingCode, itemCode).ConfigureAwait(false); } /// /// 检查此托盘是否存在任务 /// /// /// /// [HttpGet("check-job-exist-by-container")] public virtual async Task> CheckJobExistByContainerCode(string containerCode, string itemCode) { return await _putawayJobAppService.CheckJobExistByContainerCode(containerCode, itemCode).ConfigureAwait(false); } }