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.IssueJobs; /// /// 涂装叫料PDA任务 /// [ApiController] [Route($"{PdaHostConst.ROOT_ROUTE}job/coating-issue")] public class CoatingIssueJobsController : AbpController { private readonly ICoatingIssueJobAppService _coatingIssueJobAppService; private readonly IUserWorkGroupAppService _userWorkGroupAppService; public CoatingIssueJobsController(ICoatingIssueJobAppService coatingIssueJobAppService, IUserWorkGroupAppService userWorkGroupAppService) { _coatingIssueJobAppService = coatingIssueJobAppService; _userWorkGroupAppService = userWorkGroupAppService; } /// /// 获取列表 /// /// /// /// /// [HttpPost("list")] public virtual async Task> GetListAsync(int pageSize, int pageIndex, string jobStatus) { var status = new List(); if (jobStatus == "ALL") { status.Add((int)EnumJobStatus.Open); status.Add((int)EnumJobStatus.Wait); status.Add((int)EnumJobStatus.Doing); status.Add((int)EnumJobStatus.Partial); } else if (jobStatus == "Open") { status.Add((int)EnumJobStatus.Open); } else if (jobStatus == "Wait") { status.Add((int)EnumJobStatus.Wait); } else { status.Add((int)EnumJobStatus.Done); } var jsonStatus = JsonSerializer.Serialize(status); var request = new SfsJobRequestInputBase { MaxResultCount = pageSize, SkipCount = (pageIndex - 1) * pageSize, Sorting = $"{nameof(CoatingIssueJobDTO.JobStatus)} ASC,{nameof(CoatingIssueJobDTO.CreationTime)} ASC", Condition = new Condition { Filters = new List { new(nameof(CoatingIssueJobDTO.JobStatus), jsonStatus, "In") } } }; var list = await _coatingIssueJobAppService.GetPagedListByFilterAsync(request, true).ConfigureAwait(false); return list; } /// /// 承接任务 /// /// /// [HttpPost("take/{id}")] public virtual async Task TakeAsync(Guid id) { await _coatingIssueJobAppService.AcceptAsync(id).ConfigureAwait(false); } /// /// 取消承接任务 /// /// /// [HttpPost("cancel-take/{id}")] public virtual async Task CancelTakeAsync(Guid id) { await _coatingIssueJobAppService.CancelAcceptAsync(id).ConfigureAwait(false); } /// /// 执行任务明细 /// /// [HttpPost("ExecuteDetail/{masterId}")] public async Task ExecuteDetailAsync(Guid masterId, Guid detailId, CoatingIssueJobDetailDTO issueJobDetailDto) { await _coatingIssueJobAppService.ExecuteDetailAsync(masterId, detailId, issueJobDetailDto).ConfigureAwait(false); } /// /// 获取任务数量 /// /// [HttpGet("count")] public virtual async Task> CountAsync() { var status = new List { (int)EnumJobStatus.Open, (int)EnumJobStatus.Doing, (int)EnumJobStatus.Partial, (int)EnumJobStatus.Wait }; var jsonStatus = JsonSerializer.Serialize(status); var request = new SfsJobRequestInputBase { Sorting = $"{nameof(InspectJobDTO.Priority)} ASC", Condition = new Condition { Filters = new List { //new(nameof(InspectJobDTO.WorkGroupCode),jsonCodes,"In"), new(nameof(InspectJobDTO.JobStatus), jsonStatus, "In") } } }; var count = await _coatingIssueJobAppService.GetCountByFilterAsync(request).ConfigureAwait(false); return Ok(count); } /// /// 获取任务详情 /// /// /// [HttpGet("{id}")] public virtual async Task> GetAsync(Guid id) { var result = await _coatingIssueJobAppService.GetAsync(id).ConfigureAwait(false); return Ok(result); } /// /// 根据Job Number 获取盘点任务列表 /// /// /// [HttpGet("by-number/{jobNumber}")] public virtual async Task> GetByNumberAsync(string jobNumber) { //var jobDto = await _coatingIssueJobAppService.GetByNumberAsync(jobNumber).ConfigureAwait(false); var jobDto = await _coatingIssueJobAppService.GetByNumber2Async(jobNumber).ConfigureAwait(false); if (jobDto == null) { throw new UserFriendlyException($"未找到编号为 {jobNumber} 的任务"); } //if (jobDto.JobStatus == EnumJobStatus.Doing && jobDto.ClaimsUserId != CurrentUser.Id.ToString() && jobDto.IsClaims) //{ // return new NotFoundObjectResult($"任务正在被 {jobDto.ClaimsUserName} 处理"); //} return jobDto; } /// /// 根据Request Number 获取任务列表 /// /// /// [HttpPost("by-request-number/{requestNumber}")] public virtual async Task> GetByRequestNumberAsync(string requestNumber) { return await _coatingIssueJobAppService.GetByRequestNumberAsync(requestNumber).ConfigureAwait(false); } }