From f3e25e6fedfc7304a3deb41a9e3cede32ac9e58e Mon Sep 17 00:00:00 2001 From: zhouhongjun <565221961@qq.com> Date: Thu, 14 Mar 2024 17:28:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=A9=BA=E5=99=A8=E5=85=B7?= =?UTF-8?q?=E7=94=B3=E8=AF=B7PDA=E6=9C=8D=E5=8A=A1=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Jobs/ContainerJobController.cs | 188 ++++++++++++++++++ .../Stores/ContainerNoteController.cs | 38 ++++ .../Stores/ContainerRequestController.cs | 51 +++++ 3 files changed, 277 insertions(+) create mode 100644 be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/ContainerJobController.cs create mode 100644 be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/ContainerNoteController.cs create mode 100644 be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/ContainerRequestController.cs diff --git a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/ContainerJobController.cs b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/ContainerJobController.cs new file mode 100644 index 000000000..5b9baac9a --- /dev/null +++ b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/ContainerJobController.cs @@ -0,0 +1,188 @@ +using System; +using System.Collections.Generic; +using System.Text.Json; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp; +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/container")] +public class ContainerJobController : AbpController +{ + private readonly IContainerJobAppService _containerJobAppService; + + private readonly IUserWorkGroupAppService _userWorkGroupAppService; + + /// + /// + /// + /// + /// + public ContainerJobController( + IContainerJobAppService ContainerJobAppService + , IUserWorkGroupAppService userWorkGroupAppService) + { + _userWorkGroupAppService = userWorkGroupAppService; + _containerJobAppService = ContainerJobAppService; + } + + /// + /// 获取任务详情 + /// + /// + /// + [HttpGet("{id}")] + + public virtual async Task> GetAsync(Guid id) + { + var result = await _containerJobAppService.GetAsync(id).ConfigureAwait(false); + return Ok(result); + } + + /// + /// 获取列表 筛选 + /// + /// + /// + [HttpPost("list")] + public virtual async Task> GetListAsync(SfsJobRequestInputBase sfsRequestDTO) + { + var list = await _containerJobAppService.GetPagedListByFilterAsync(sfsRequestDTO, true).ConfigureAwait(false); + return list; + } + + /// + /// 获取列表 + /// + /// + /// + /// + [HttpGet("list")] + public virtual async Task> GetListAsync(int pageSize, int pageIndex) + { + var wlgCodes = await _userWorkGroupAppService.GetCodsOfCurrentUserAsync().ConfigureAwait(false); + _ = JsonSerializer.Serialize(wlgCodes); + + var status = new List() { (int)EnumJobStatus.Open, (int)EnumJobStatus.Doing }; + var jsonStatus = JsonSerializer.Serialize(status); + + var request = new SfsJobRequestInputBase + { + MaxResultCount = pageSize, + SkipCount = (pageIndex - 1) * pageSize, + Sorting = $"{nameof(ContainerJobDTO.Priority)} ASC", + Condition = new Condition + { + Filters = new List + { + // new(nameof(ContainerJobDTO.WorkGroupCode),jsonCodes,"In"), + new(nameof(ContainerJobDTO.JobStatus),jsonStatus,"In") + } + } + }; + + var list = await _containerJobAppService.GetPagedListByFilterAsync(request, true).ConfigureAwait(false); + return list; + } + + /// + /// 根据Job Number 获取任务列表 + /// + /// + /// + [HttpGet("by-number/{jobNumber}")] + public virtual async Task> GetByNumberAsync(string jobNumber) + { + var jobDto = await _containerJobAppService.GetByNumberAsync(jobNumber).ConfigureAwait(false); + if (jobDto == null) + { + throw new UserFriendlyException($"未找到编号为 {jobNumber} 的任务"); + } + var wlgCodes = await _userWorkGroupAppService.GetCodsOfCurrentUserAsync().ConfigureAwait(false); + if (!wlgCodes.Contains(jobDto.WorkGroupCode)) + { + return new NotFoundObjectResult($"任务属于工作组 {jobDto.WorkGroupCode}"); + } + if (jobDto.JobStatus == EnumJobStatus.Doing && jobDto.AcceptUserId != CurrentUser.Id) + { + return new NotFoundObjectResult($"任务正在被 {jobDto.AcceptUserName} 处理"); + } + return jobDto; + } + + /// + /// 获取任务数量 + /// + /// + [HttpGet("count")] + public virtual async Task> CountAsync() + { + var wlgCodes = await _userWorkGroupAppService.GetCodsOfCurrentUserAsync().ConfigureAwait(false); + var jsonCodes = JsonSerializer.Serialize(wlgCodes); + + var status = new List() { (int)EnumJobStatus.Open, (int)EnumJobStatus.Doing }; + var jsonStatus = JsonSerializer.Serialize(status); + + var request = new SfsJobRequestInputBase + { + Sorting = $"{nameof(ContainerJobDTO.Priority)} ASC", + Condition = new Condition + { + Filters = new List + { + new(nameof(ContainerJobDTO.WorkGroupCode),jsonCodes,"In"), + new(nameof(ContainerJobDTO.JobStatus),jsonStatus,"In") + } + } + }; + + var count = await _containerJobAppService.GetCountByFilterAsync(request).ConfigureAwait(false); + + return Ok(count); + } + + /// + /// 承接任务 + /// + /// + /// + [HttpPost("take/{id}")] + public virtual async Task TakeAsync(Guid id) + { + await _containerJobAppService.AcceptAsync(id).ConfigureAwait(false); + } + + /// + /// 取消承接任务 + /// + /// + /// + [HttpPost("cancel-take/{id}")] + public virtual async Task CancelTakeAsync(Guid id) + { + await _containerJobAppService.CancelAcceptAsync(id).ConfigureAwait(false); + } + + /// + /// 执行任务 + /// + /// + /// + /// + [HttpPost("finish/{id}")] + public virtual async Task FinishAsync(Guid id, [FromBody] ContainerJobDTO dto) + { + await _containerJobAppService.CompleteAsync(id, dto).ConfigureAwait(false); + } +} diff --git a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/ContainerNoteController.cs b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/ContainerNoteController.cs new file mode 100644 index 000000000..9a5a39473 --- /dev/null +++ b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/ContainerNoteController.cs @@ -0,0 +1,38 @@ +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc; +using Win_in.Sfs.Wms.Store.Application.Contracts; + +namespace Win_in.Sfs.Wms.Pda.Controllers.Stores; + +/// +/// +/// +[ApiController] +[Route($"{PdaHostConst.ROOT_ROUTE}store/container")] + +public class ContainerNoteController : AbpController +{ + private readonly IContainerNoteAppService _containerNoteAppService; + + /// + /// + /// + /// + public ContainerNoteController(IContainerNoteAppService containerNoteAppService) + { + _containerNoteAppService = containerNoteAppService; + } + + /// + /// 创建器具转移记录 + /// + /// CreateInput + /// + [HttpPost("")] + public virtual async Task CreateAsync(ContainerNoteEditInput input) + { + await _containerNoteAppService.CreateAsync(input).ConfigureAwait(false); + } + +} diff --git a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/ContainerRequestController.cs b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/ContainerRequestController.cs new file mode 100644 index 000000000..e93974d71 --- /dev/null +++ b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/ContainerRequestController.cs @@ -0,0 +1,51 @@ +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc; +using Win_in.Sfs.Wms.Store.Application.Contracts; + +namespace Win_in.Sfs.Wms.Pda.Controllers.Stores; + +/// +///空器具呼叫请求 +/// +[ApiController] +[Route($"{PdaHostConst.ROOT_ROUTE}store/container-request")] + +public class ContainerRequestController : AbpController +{ + private readonly IContainerRequestAppService _containerRequestAppService; + + /// + /// + /// + /// + public ContainerRequestController(IContainerRequestAppService ContainerRequestAppService) + { + _containerRequestAppService = ContainerRequestAppService; + } + + /// + /// 空器具申请 + /// + /// + /// + [HttpPost("")] + public virtual async Task CreateAsync(ContainerRequestEditInput input) + { + _ = await _containerRequestAppService.CreateAsync(input).ConfigureAwait(false); + } + + /// + /// 根据number获取空器具申请详情 + /// + /// + /// + [HttpGet("{number}")] + + public virtual async Task> GetAsync(string number) + { + var result = await _containerRequestAppService.GetByNumberAsync(number).ConfigureAwait(false); + return Ok(result); + } + +}