diff --git a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/ThirdLocationJobController.cs b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/ThirdLocationJobController.cs new file mode 100644 index 000000000..f86c7587d --- /dev/null +++ b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/ThirdLocationJobController.cs @@ -0,0 +1,204 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.Json; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Polly.Caching; +using Volo.Abp; +using Volo.Abp.Application.Dtos; +using Volo.Abp.AspNetCore.Mvc; +using Win_in.Sfs.Auth.Application.Contracts; +using Win_in.Sfs.Basedata.Application.Contracts; +using Win_in.Sfs.Shared.Domain; +using Win_in.Sfs.Shared.Domain.Shared; +using Win_in.Sfs.Wms.Inventory.Application.Contracts; +using Win_in.Sfs.Wms.Store.Application.Contracts; + +namespace Win_in.Sfs.Wms.Pda.Controllers.Jobs; + +/// +/// +/// +[ApiController] +[Route($"{PdaHostConst.ROOT_ROUTE}job/third-location")] +public class ThirdLocationJobController : AbpController +{ + private readonly IThirdLocationJobAppService _thirdLocationJobAppService; + + private readonly IUserWorkGroupAppService _userWorkGroupAppService; + + private readonly IDictAppService _dictApp; + + /// + /// + /// + /// + /// + public ThirdLocationJobController( + IThirdLocationJobAppService thirdLocationJobAppService, + IDictAppService dictApp + , IUserWorkGroupAppService userWorkGroupAppService) + { + _userWorkGroupAppService = userWorkGroupAppService; + _thirdLocationJobAppService = thirdLocationJobAppService; + _dictApp = dictApp; + } + + /// + /// 获取任务详情 + /// + /// + /// + [HttpGet("{id}")] + + public virtual async Task> GetAsync(Guid id) + { + var result = await _thirdLocationJobAppService.GetAsync(id).ConfigureAwait(false); + return Ok(result); + } + + /// + /// 获取列表 筛选 + /// + /// + /// + [HttpPost("list")] + public virtual async Task> GetListAsync(SfsJobRequestInputBase sfsRequestDTO) + { + var list = await _thirdLocationJobAppService.GetPagedListByFilterAsync(sfsRequestDTO, true).ConfigureAwait(false); + return list; + } + + /// + /// 获取列表 + /// + /// + /// + /// + [HttpGet("list")] + public virtual async Task> GetListAsync(int pageSize, int pageIndex, bool isFinished) + { + var dtos = await _dictApp.GetByCodeAsync("ContainerSpecificationsType").ConfigureAwait(false); + + var status = new List(); + if (isFinished == true) + { + status.Add((int)EnumJobStatus.Done); + } + else + { + status.Add((int)EnumJobStatus.Open); + } + var jsonStatus = JsonSerializer.Serialize(status); + + var request = new SfsJobRequestInputBase + { + MaxResultCount = pageSize, + SkipCount = (pageIndex - 1) * pageSize, + Sorting = $"{nameof(ThirdLocationJobDTO.CreationTime)} ASC", + Condition = new Condition + { + Filters = new List + { + new(nameof(ThirdLocationJobDTO.JobStatus),jsonStatus,"In") + } + } + }; + + var list = await _thirdLocationJobAppService.GetPagedListByFilterAsync(request, true).ConfigureAwait(false); + + + return list; + } + + /// + /// 根据Job Number 获取任务列表 + /// + /// + /// + [HttpGet("by-number/{jobNumber}")] + public virtual async Task> GetByNumberAsync(string jobNumber) + { + var jobDto = await _thirdLocationJobAppService.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(ThirdLocationJobDTO.Priority)} ASC", + Condition = new Condition + { + Filters = new List + { + new(nameof(ThirdLocationJobDTO.WorkGroupCode),jsonCodes,"In"), + new(nameof(ThirdLocationJobDTO.JobStatus),jsonStatus,"In") + } + } + }; + + var count = await _thirdLocationJobAppService.GetCountByFilterAsync(request).ConfigureAwait(false); + + return Ok(count); + } + + /// + /// 承接任务 + /// + /// + /// + [HttpPost("take/{id}")] + public virtual async Task TakeAsync(Guid id) + { + await _thirdLocationJobAppService.AcceptAsync(id).ConfigureAwait(false); + } + + /// + /// 取消承接任务 + /// + /// + /// + [HttpPost("cancel-take/{id}")] + public virtual async Task CancelTakeAsync(Guid id) + { + await _thirdLocationJobAppService.CancelAcceptAsync(id).ConfigureAwait(false); + } + + /// + /// 执行任务 + /// + /// + /// + /// + [HttpPost("finish/{id}")] + public virtual async Task FinishAsync(Guid id, [FromBody] ThirdLocationJobDTO dto) + { + await _thirdLocationJobAppService.CompleteAsync(id, dto).ConfigureAwait(false); + } +} diff --git a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/ThirdLocationNoteController.cs b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/ThirdLocationNoteController.cs new file mode 100644 index 000000000..9006c134d --- /dev/null +++ b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/ThirdLocationNoteController.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/third-location-note")] + +public class ThirdLocationNoteController : AbpController +{ + private readonly IThirdLocationNoteAppService _thirdLocationNoteAppService; + + /// + /// + /// + /// + public ThirdLocationNoteController(IThirdLocationNoteAppService thirdLocationNoteAppService) + { + _thirdLocationNoteAppService = thirdLocationNoteAppService; + } + + /// + /// 创建器具转移记录 + /// + /// CreateInput + /// + [HttpPost("")] + public virtual async Task CreateAsync(ThirdLocationNoteEditInput input) + { + await _thirdLocationNoteAppService.CreateAsync(input).ConfigureAwait(false); + } + +} diff --git a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/ThirdLocationRequestController.cs b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/ThirdLocationRequestController.cs new file mode 100644 index 000000000..2ad863e8f --- /dev/null +++ b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/ThirdLocationRequestController.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/third-location-request")] + +public class ThirdLocationRequestController : AbpController +{ + private readonly IThirdLocationRequestAppService _thirdLocationRequestAppService; + + /// + /// + /// + /// + public ThirdLocationRequestController(IThirdLocationRequestAppService ThirdLocationRequestAppService) + { + _thirdLocationRequestAppService = ThirdLocationRequestAppService; + } + + /// + /// 三方库库移申请 + /// + /// + /// + [HttpPost("")] + public virtual async Task CreateAsync(ThirdLocationRequestEditInput input) + { + _ = await _thirdLocationRequestAppService.CreateAsync(input).ConfigureAwait(false); + } + + /// + /// 根据number获取三方库库移申请详情 + /// + /// + /// + [HttpGet("{number}")] + + public virtual async Task> GetAsync(string number) + { + var result = await _thirdLocationRequestAppService.GetByNumberAsync(number).ConfigureAwait(false); + return Ok(result); + } + +} diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ErpLocationItems/ErpLocationItemAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ErpLocationItems/ErpLocationItemAppService.cs index 1f81f0138..1e34c1f8b 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ErpLocationItems/ErpLocationItemAppService.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ErpLocationItems/ErpLocationItemAppService.cs @@ -61,7 +61,7 @@ public class ErpLocationItemAppService if(entity != null) { - throw new UserFriendlyException($"物品{input.ItemCode}和储位{input.ErpLocationCode} 对应关系已存在"); + throw new UserFriendlyException($"物品 {input.ItemCode} 和储位 {input.ErpLocationCode} 对应关系已存在"); } return await base.CreateAsync(input).ConfigureAwait(false);