|
|
@ -2,6 +2,7 @@ using System; |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.Linq; |
|
|
|
using System.Threading.Tasks; |
|
|
|
using Castle.Components.DictionaryAdapter; |
|
|
|
using Microsoft.AspNetCore.Authorization; |
|
|
|
using Microsoft.AspNetCore.Mvc; |
|
|
|
using NUglify.Helpers; |
|
|
@ -139,14 +140,38 @@ public class KittingIssueRequestAppService : SfsStoreRequestAppServiceBase<Kitti |
|
|
|
return kittingIssueRequestDto; |
|
|
|
} |
|
|
|
|
|
|
|
public override async Task<KittingIssueRequestDTO> CancelAsync(Guid id) |
|
|
|
{ |
|
|
|
var request=await _repository.GetAsync(id).ConfigureAwait(false); |
|
|
|
|
|
|
|
var list=await _kittingIssueJobAppService.GetByRequestNumberAsync(request.Number).ConfigureAwait(false); |
|
|
|
if (list.Any()) |
|
|
|
{ |
|
|
|
foreach (var kittingIssueJobDto in list) |
|
|
|
{ |
|
|
|
if (kittingIssueJobDto.JobStatus == EnumJobStatus.Open || |
|
|
|
kittingIssueJobDto.JobStatus == EnumJobStatus.Partial || |
|
|
|
kittingIssueJobDto.JobStatus == EnumJobStatus.Doing || |
|
|
|
kittingIssueJobDto.JobStatus == EnumJobStatus.Wait) |
|
|
|
{ |
|
|
|
await _kittingIssueJobAppService.CancelAsync(kittingIssueJobDto.Id).ConfigureAwait(false); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return await base.CancelAsync(id).ConfigureAwait(false); |
|
|
|
} |
|
|
|
|
|
|
|
[HttpPost("UpdateStatusCompleted")] |
|
|
|
public async Task UpdateStatusCompletedAsync(string number) |
|
|
|
{ |
|
|
|
var kittingIssueRequest=await _repository.FindAsync(p=>p.Number== number).ConfigureAwait(false); |
|
|
|
|
|
|
|
await UpdateKittingIssueRequestDetailQtyAsync(kittingIssueRequest,new EditableList<KittingIssueJobDTO>()).ConfigureAwait(false); |
|
|
|
|
|
|
|
var kittingIssueJobDtos=await _kittingIssueJobAppService.GetByRequestNumberAsync(kittingIssueRequest.Number).ConfigureAwait(false); |
|
|
|
|
|
|
|
if (!kittingIssueJobDtos.Any(p => |
|
|
|
if (kittingIssueJobDtos.Any(p => |
|
|
|
p.JobStatus == EnumJobStatus.Open || p.JobStatus == EnumJobStatus.Doing || |
|
|
|
p.JobStatus == EnumJobStatus.Partial) ) |
|
|
|
{ |
|
|
@ -176,6 +201,54 @@ public class KittingIssueRequestAppService : SfsStoreRequestAppServiceBase<Kitti |
|
|
|
kittingIssueRequest.RequestStatus = EnumRequestStatus.Completed; |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 修改请求的 已发 已收数量
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="kittingIssueRequest"></param>
|
|
|
|
/// <param name="addKittingIssueJobDtos"></param>
|
|
|
|
/// <returns></returns>
|
|
|
|
private async Task UpdateKittingIssueRequestDetailQtyAsync(KittingIssueRequest kittingIssueRequest, |
|
|
|
List<KittingIssueJobDTO> addKittingIssueJobDtos) |
|
|
|
{ |
|
|
|
//原有任务
|
|
|
|
var existKittingIssueJobDtos = await _kittingIssueJobAppService.GetByRequestNumberAsync(kittingIssueRequest.Number) |
|
|
|
.ConfigureAwait(false); |
|
|
|
|
|
|
|
//新增的任务和已有的任务总和
|
|
|
|
var allKittingIssueJobDtos = new List<KittingIssueJobDTO>(); |
|
|
|
allKittingIssueJobDtos.AddRange(addKittingIssueJobDtos); |
|
|
|
allKittingIssueJobDtos.AddRange(existKittingIssueJobDtos); |
|
|
|
|
|
|
|
var groupByItemCodeLocationCode = kittingIssueRequest.Details.GroupBy(p => |
|
|
|
new { p.ItemCode, p.ToLocationCode }); |
|
|
|
foreach (var group in groupByItemCodeLocationCode) |
|
|
|
{ |
|
|
|
foreach (var requestDetail in group) |
|
|
|
{ |
|
|
|
//所有已发数量
|
|
|
|
decimal allIssuedQty = 0; |
|
|
|
|
|
|
|
//所有已发数量
|
|
|
|
decimal allReceivedQty = 0; |
|
|
|
|
|
|
|
foreach (var allKittingIssueJobDto in allKittingIssueJobDtos) |
|
|
|
{ |
|
|
|
var jobDetailDtos = allKittingIssueJobDto.Details.Where(p => |
|
|
|
p.ItemCode == group.Key.ItemCode && p.RequestLocationCode == group.Key.ToLocationCode); |
|
|
|
//所有已发数量
|
|
|
|
allIssuedQty += jobDetailDtos.Sum(p => p.RequestQty); |
|
|
|
//所有已发数量
|
|
|
|
allReceivedQty += jobDetailDtos.Sum(p => p.HandledToQty); |
|
|
|
} |
|
|
|
|
|
|
|
requestDetail.IssuedQty += allIssuedQty; |
|
|
|
requestDetail.ReceivedQty += allReceivedQty; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
await _repository.UpdateAsync(kittingIssueRequest).ConfigureAwait(false); |
|
|
|
} |
|
|
|
|
|
|
|
[HttpPost("IsHasNewJob")] |
|
|
|
public async Task<string> IsHasNewJobAsync(string requestNumber,List<string> jobNumber) |
|
|
|
{ |
|
|
|