You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

157 lines
5.5 KiB

using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc;
using Win_in.Sfs.Label.Application.Contracts;
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.Inventory.Application.Contracts;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using static IdentityServer4.Models.IdentityResources;
[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<MaterialRequestUnHandledOrderSumDto> GetUnHandledOrderSumAsync()
{
var dto = new MaterialRequestUnHandledOrderSumDto();
var list = await GetMaterialRequestAsync();
dto.Sum = list.Where(t => t.RequestStatus == EnumRequestStatus.New).Count();
return dto;
}
[HttpGet("un-issued-item-qty-sum")]
public virtual async Task<MaterialRequestUnIssuedItemQtySumDto> GetUnIssuedItemQtySumAsync()
{
var dto = new MaterialRequestUnIssuedItemQtySumDto();
var list = await GetMaterialRequestAsync();
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<List<MaterialRequestUnReceivedItemQtyByItemDto>>
GetUnIssuedItemQtySumByItemListAsync()
{
var dtos = new List<MaterialRequestUnReceivedItemQtyByItemDto>();
var list = await GetMaterialRequestAsync();
var details = new List<MaterialRequestDetailDTO>();
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<List<MaterialRequestItemQtyByReceivedStatusDto>> GetItemQtyByReceivedStatusListAsync()
{
var dtos = new List<MaterialRequestItemQtyByReceivedStatusDto>();
var ToBeIssuedQty = 0.0M;
var ToBeReceivedQty = 0.0M;
var Received = 0.0M;
var list = await GetMaterialRequestAsync();
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<List<MaterialRequestUnReceivedItemDto>> GetUnReceivedItemListAsync()
{
var dtos = new List<MaterialRequestUnReceivedItemDto>();
var notes = await this.GetIssueNotesAsync();
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<List<IssueNoteDTO>> GetIssueNotesAsync()
{
return await this._issueNoteApp.GetListUnConfirmedByTypeAsync(EnumTransSubType.Issue_WIP.ToString());
}
private async Task<List<MaterialRequestDTO>> GetMaterialRequestAsync()
{
return await this._materialRequestApp.GetListByTypeAsync(EnumTransSubType.Issue_WIP.ToString());
}
}
}