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 78143a07c..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
@@ -95,14 +95,15 @@ public class UnplannedReceiptJobAppService
{
var details = ObjectMapper.Map, List>(detailDtos);
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 507deafca..8abb5c37a 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 0b76e9a35..327e8fe7f 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,7 +1,3 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reflection;
using System.Threading.Tasks;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.EventBus;
@@ -82,6 +78,11 @@ 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);
+
+ /*
createInput.Details = new List();
//var strs= GetDifferentPropertyNames(typeof(UnplannedIssueJobDetail), typeof(UnplannedIssueNoteDetailInput));
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)