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
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());
|
|
}
|
|
}
|
|
}
|
|
|