using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc; using Win_in.Sfs.Wms.Dashboard.Host.Models; namespace Win_in.Sfs.Wms.Dashboard.Host.Controllers; using System.Linq; using NUglify.Helpers; using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Wms.Store.Application.Contracts; [ApiController] [Route($"{PdaHostConst.ROOT_ROUTE}material-request")] public class MaterialRequestController : AbpController { private readonly IMaterialRequestAppService _materialRequestApp; private readonly IIssueNoteAppService _issueNoteApp; public MaterialRequestController(IMaterialRequestAppService materialRequestApp, IIssueNoteAppService issueNoteApp) { _materialRequestApp = materialRequestApp; _issueNoteApp = issueNoteApp; } [HttpGet("un-handled-order-sum")] public virtual async Task GetUnHandledOrderSumAsync() { var dto = new MaterialRequestUnHandledOrderSumDto(); var list = await GetMaterialRequestAsync().ConfigureAwait(false); dto.Sum = list.Where(t => t.RequestStatus == EnumRequestStatus.New).Count(); return dto; } [HttpGet("un-issued-item-qty-sum")] public virtual async Task GetUnIssuedItemQtySumAsync() { var dto = new MaterialRequestUnIssuedItemQtySumDto(); var list = await GetMaterialRequestAsync().ConfigureAwait(false); dto.Sum = list.Where(t => t.RequestStatus != EnumRequestStatus.New) .Sum(t => t.Details.Sum(t1 => t1.Qty - t1.IssuedQty)); return dto; } [HttpGet("un-received-item-qty-by-item-list")] public virtual async Task> GetUnIssuedItemQtySumByItemListAsync() { var dtos = new List(); var list = await GetMaterialRequestAsync().ConfigureAwait(false); var details = new List(); list.Where(t => t.RequestStatus != EnumRequestStatus.New).ForEach( item => { item.Details.ForEach( detail => { if (detail.IssuedQty - detail.ReceivedQty > 0) { details.Add(detail); } }); }); dtos = details.GroupBy(t => t.ItemCode).Select( item => new MaterialRequestUnReceivedItemQtyByItemDto() { ItemCode = item.Key, Sum = item.Sum(t => t.IssuedQty - t.ReceivedQty) }).ToList(); return dtos; } [HttpGet("item-qty-by-received-status-list")] public virtual async Task> GetItemQtyByReceivedStatusListAsync() { var dtos = new List(); var ToBeIssuedQty = 0.0M; var ToBeReceivedQty = 0.0M; var Received = 0.0M; var list = await GetMaterialRequestAsync().ConfigureAwait(false); list.ForEach( item => { ToBeIssuedQty += item.Details.Sum(t => t.ToBeIssuedQty); ToBeReceivedQty += item.Details.Sum(t => t.ToBeReceivedQty); Received += item.Details.Sum(t => t.ReceivedQty); }); dtos.Add(new MaterialRequestItemQtyByReceivedStatusDto() { ReceivedStatus = "请求未发", Sum = ToBeIssuedQty }); dtos.Add(new MaterialRequestItemQtyByReceivedStatusDto() { ReceivedStatus = "已发未收", Sum = ToBeReceivedQty }); dtos.Add(new MaterialRequestItemQtyByReceivedStatusDto() { ReceivedStatus = "请求已收", Sum = Received }); return dtos; } [HttpGet("un-received-item-list")] public virtual async Task> GetUnReceivedItemListAsync() { var dtos = new List(); var notes = await GetIssueNotesAsync().ConfigureAwait(false); foreach (var note in notes) { foreach (var noteDetail in note.Details) { var dto = new MaterialRequestUnReceivedItemDto(); dto.Number = note.RequestNumber; dto.ItemCode = noteDetail.ItemCode; dto.ItemDesc1 = noteDetail.ItemDesc1; dto.PackingCode = noteDetail.FromPackingCode; dto.IssuedQty = noteDetail.Qty; dto.IssuedTime = note.ActiveDate; dtos.Add(dto); } } return dtos; } private async Task> GetIssueNotesAsync() { return await _issueNoteApp.GetListUnConfirmedByTypeAsync(EnumTransSubType.Issue_WIP.ToString()).ConfigureAwait(false); } private async Task> GetMaterialRequestAsync() { return await _materialRequestApp.GetListByTypeAsync(EnumTransSubType.Issue_WIP.ToString()).ConfigureAwait(false); } }