diff --git a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/UnplannedReceiptJobController.cs b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/UnplannedReceiptJobController.cs
index b63dbf140..77bc5599e 100644
--- a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/UnplannedReceiptJobController.cs
+++ b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/UnplannedReceiptJobController.cs
@@ -216,7 +216,7 @@ public class UnplannedReceiptJobController : AbpController
///
///
///
- [HttpPost("finish/{id}")]
+ [HttpPost("finish")]
public virtual async Task FinishAsync(string jobNumber,string worker,List list)
{
await _unplannedReceiptJobAppService.DoByFreeAsync(jobNumber,worker,list).ConfigureAwait(false);
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedReceiptJobs/UnplannedReceiptJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedReceiptJobs/UnplannedReceiptJobAppService.cs
index 3ea3af4ff..93209b187 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedReceiptJobs/UnplannedReceiptJobAppService.cs
+++ b/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 detailDtos)
{
var details = ObjectMapper.Map, List>(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(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}】储位下没有库位");
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestForDongyangAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestForDongyangAppService.cs
index fd318bf3b..f916d2d4f 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestForDongyangAppService.cs
+++ b/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();
+ 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{ erpLoationCode }).ConfigureAwait(false);
+ if (!codes.Any())
+ {
+ throw new UserFriendlyException($"储位代码为【{erpLoationCode}】下,无任何库位");
+ }
+ }
+
protected virtual async Task CheckBalanceAsync(UnplannedReceiptRequestImportInput importInput, List validationRresult)
{
var balance = await BalanceAclService.GetByItemLocationAndPackingAsync(
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedIssueJobEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedIssueJobEventHandler.cs
index 142ce0be1..a5c2f04ff 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedIssueJobEventHandler.cs
+++ b/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(entity);
+ createInput.BuildDate=DateTime.Now;
+ createInput.ActiveDate=DateTime.Now;
createInput.Details.RemoveAll(p => p.Qty == 0);
/*
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedReceiptJobEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedReceiptJobEventHandler.cs
index a8fe6f097..b3ba204b6 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedReceiptJobEventHandler.cs
+++ b/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(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;
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/UnplannedReceiptNoteEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/UnplannedReceiptNoteEventHandler.cs
index aa43a2582..5e045a45f 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/UnplannedReceiptNoteEventHandler.cs
+++ b/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)