Browse Source

非生产退料

dev_DY_CC
郑勃旭 7 months ago
parent
commit
be3c509b5b
  1. 2
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/UnplannedReceiptJobController.cs
  2. 13
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedReceiptJobs/UnplannedReceiptJobAppService.cs
  3. 35
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestForDongyangAppService.cs
  4. 3
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedIssueJobEventHandler.cs
  5. 9
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedReceiptJobEventHandler.cs
  6. 8
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/UnplannedReceiptNoteEventHandler.cs

2
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/UnplannedReceiptJobController.cs

@ -216,7 +216,7 @@ public class UnplannedReceiptJobController : AbpController
/// <param name="id"></param>
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost("finish/{id}")]
[HttpPost("finish")]
public virtual async Task FinishAsync(string jobNumber,string worker,List<UnplannedReceiptJobDetailDTO> list)
{
await _unplannedReceiptJobAppService.DoByFreeAsync(jobNumber,worker,list).ConfigureAwait(false);

13
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedReceiptJobs/UnplannedReceiptJobAppService.cs

@ -94,15 +94,16 @@ public class UnplannedReceiptJobAppService
public async Task DoByFreeAsync(string jobNumber,string worker,List<UnplannedReceiptJobDetailDTO> detailDtos)
{
var details = ObjectMapper.Map<List<UnplannedReceiptJobDetailDTO>, List<UnplannedReceiptJobDetail>>(detailDtos);
var job=await _repository.FindAsync(p => p.Number == jobNumber).ConfigureAwait(false);
var job=await _repository.FindAsync(p => p.Number == jobNumber).ConfigureAwait(false);
if (job == null)
{
throw new UserFriendlyException($"{jobNumber}【任务】不存在");
}
if (job.JobStatus != EnumJobStatus.Open)
if (job.JobStatus!=EnumJobStatus.Doing)
{
throw new UserFriendlyException($"{jobNumber}【任务】不是【打开】状态");
throw new UserFriendlyException($"{jobNumber}【任务】不是【执行】状态");
}
if (detailDtos.Count(p => p.ItemCode != job.ItemCode)>0)
@ -121,7 +122,7 @@ public class UnplannedReceiptJobAppService
var itemBasicDto=await _itemBasicAppService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
detail.HandledToLocationArea = locationDto.AreaCode;
detail.HandledToLocationErpCode = locationDto.ErpLocationCode;
detail.HandledToLocationErpCode = locationDto.ErpLocationCode;
detail.HandledToLocationGroup = locationDto.LocationGroupCode;
detail.HandledToLocationCode=locationDto.Code;
detail.Status = EnumInventoryStatus.OK;
@ -167,6 +168,8 @@ public class UnplannedReceiptJobAppService
job.Details = details;
job.CompleteUserName = worker;
job.JobStatus = EnumJobStatus.Done;
job.CompleteTime=DateTime.Now;
job.Worker=worker;
job =await _repository.UpdateAsync(job).ConfigureAwait(false);
await LocalEventBus.PublishAsync(new SfsCompletedEntityEventData<UnplannedReceiptJob>(job), false).ConfigureAwait(false);
await UpdateRequestStatusAsync(job.UnplannedReceiptRequestNumber).ConfigureAwait(false);
@ -207,6 +210,8 @@ public class UnplannedReceiptJobAppService
job.DeptCode = requestDto.DeptCode;
job.DeptName = requestDto.DeptName;
job.Qty = requestDtoDetail.Qty;
job.Worker = "未执行";
job.BuildDate = DateTime.Now;
if (locationDtos == null || locationDtos.Count < 1)
{
throw new UserFriendlyException($"该【{requestDtoDetail.FromErpLocationCode}】储位下没有库位");

35
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestForDongyangAppService.cs

@ -5,6 +5,7 @@ using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using NUglify.Helpers;
using Volo.Abp;
using Volo.Abp.Data;
using Volo.Abp.ObjectMapping;
@ -75,6 +76,7 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ
if (flag)
{
var unplannedReceiptRequest = await _repository.FindAsync(p => p.Number == requestNumber).ConfigureAwait(false);
unplannedReceiptRequest.RequestStatus = EnumRequestStatus.Completed;
await _repository.UpdateAsync(unplannedReceiptRequest).ConfigureAwait(false);
}
}
@ -88,6 +90,28 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ
{
var addList = dictionary.Where(p => p.Value == EntityState.Added).Select(p => p.Key);
var listDetails = new List<UnplannedReceiptRequestDetail>();
addList.ForEach(p=>
{
listDetails.AddRange(p.Details);
});
var groupBy=listDetails.GroupBy(p =>new { p.ItemCode, p.FromErpLocationCode });
foreach (var keyGroup in groupBy)
{
if (keyGroup.ToList().Count > 1)
{
throw new UserFriendlyException($"Erp料号【{keyGroup.Key.ItemCode}】和储位【{keyGroup.Key.FromErpLocationCode}】有重复项");
}
foreach (var detail in keyGroup)
{
if (detail.Qty <= 0)
{
throw new UserFriendlyException($"数量必须大于0");
}
}
}
foreach (var unplannedReceiptRequest in addList)
{
if (unplannedReceiptRequest.UnplannedReceiptType != EnumUnplannedReceiptType.Wip && unplannedReceiptRequest.UnplannedReceiptType != EnumUnplannedReceiptType.Raw)
@ -119,6 +143,7 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ
{
var itemBasic = await ItemBasicAclService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
CheckItemBasic(itemBasic, detail.ItemCode);
await CheckErpLocationCodeAsync(detail.FromErpLocationCode).ConfigureAwait(false);
if (itemBasic != null)
{
detail.ItemName = itemBasic.Name;
@ -199,6 +224,16 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ
throw new UserFriendlyException($"库位代码为【{locationCode}】不存在");
}
}
private async Task CheckErpLocationCodeAsync(string erpLoationCode)
{
var codes=await _locationAppService.GetListByErpLocationCodes(new List<string>{ erpLoationCode }).ConfigureAwait(false);
if (!codes.Any())
{
throw new UserFriendlyException($"储位代码为【{erpLoationCode}】下,无任何库位");
}
}
protected virtual async Task<BalanceDTO> CheckBalanceAsync(UnplannedReceiptRequestImportInput importInput, List<ValidationResult> validationRresult)
{
var balance = await BalanceAclService.GetByItemLocationAndPackingAsync(

3
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedIssueJobEventHandler.cs

@ -1,3 +1,4 @@
using System;
using System.Threading.Tasks;
using Volo.Abp.EventBus;
using Volo.Abp.Uow;
@ -63,6 +64,8 @@ public class UnplannedIssueJobEventHandler :
private UnplannedIssueNoteEditInput BuildUnplannedIssueNoteCreateInput(UnplannedIssueJob entity)
{
var createInput = ObjectMapper.Map<UnplannedIssueJob, UnplannedIssueNoteEditInput>(entity);
createInput.BuildDate=DateTime.Now;
createInput.ActiveDate=DateTime.Now;
createInput.Details.RemoveAll(p => p.Qty == 0);
/*

9
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedReceiptJobEventHandler.cs

@ -63,8 +63,15 @@ public class UnplannedReceiptJobEventHandler :
private UnplannedReceiptNoteEditInput BuildUnplannedReceiptNoteCreateInput(UnplannedReceiptJob entity)
{
var createInput = ObjectMapper.Map<UnplannedReceiptJob, UnplannedReceiptNoteEditInput>(entity);
createInput.Details.RemoveAll(p => p.Qty == 0);
foreach (var detailInput in createInput.Details)
{
detailInput.CaseCode=entity.CaseCode;
detailInput.Explain=entity.Explain;
detailInput.OnceBusiCode=entity.OnceBusiCode;
detailInput.ProjCapacityCode=entity.ProjCapacityCode;
detailInput.ReasonCode=entity.ReasonCode;
}
return createInput;
}

8
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/UnplannedReceiptNoteEventHandler.cs

@ -32,10 +32,10 @@ public class UnplannedReceiptNoteEventHandler
var entity = eventData.Entity;
await AddTransactionsAsync(entity).ConfigureAwait(false);
if (!string.IsNullOrEmpty(entity.UnplannedReceiptRequestNumber))
{
await _unplannedReceiptRequestApp.CompleteByNumberAsync(entity.UnplannedReceiptRequestNumber).ConfigureAwait(false);
}
//if (!string.IsNullOrEmpty(entity.UnplannedReceiptRequestNumber))
//{
// await _unplannedReceiptRequestApp.CompleteByNumberAsync(entity.UnplannedReceiptRequestNumber).ConfigureAwait(false);
//}
}
private async Task AddTransactionsAsync(UnplannedReceiptNote unplannedReceiptNote)

Loading…
Cancel
Save