diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/SplitPackings/SplitPackingRecManager.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/SplitPackings/SplitPackingRecManager.cs
index 04916ad6d..994c5308e 100644
--- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/SplitPackings/SplitPackingRecManager.cs
+++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/SplitPackings/SplitPackingRecManager.cs
@@ -42,14 +42,6 @@ public class SplitPackingRecManager : DomainService, ISplitPackingRecManager
{
throw new UserFriendlyException("操作类型不是拆箱或合箱状态,源箱码和目标箱码必须相同!");
}
- if (item.FromTopPackingCode.IsNullOrEmpty())
- {
- item.FromTopPackingCode = item.FromPackingCode;
- }
- if (item.ToTopPackingCode.IsNullOrEmpty())
- {
- item.ToTopPackingCode = item.FromPackingCode;// ToPackingCode;
- }
}
#endregion
@@ -91,6 +83,14 @@ public class SplitPackingRecManager : DomainService, ISplitPackingRecManager
}
else
{
+ if (item.FromTopPackingCode.IsNullOrEmpty())
+ {
+ item.FromTopPackingCode = item.FromPackingCode;
+ }
+ if (item.ToTopPackingCode.IsNullOrEmpty())
+ {
+ item.ToTopPackingCode = item.FromPackingCode;// ToPackingCode;
+ }
SplitPackingRec newEntity = CommonHelper.CloneObj(item);
newEntity.SetId(GuidGenerator.Create());
var ret = await _repository.InsertAsync(newEntity, true).ConfigureAwait(false);
@@ -202,24 +202,42 @@ public class SplitPackingRecManager : DomainService, ISplitPackingRecManager
/// 取顶级箱码
///
/// 箱码历史
- /// 当前箱码
+ /// 箱码,from to时都传入from
///
private static string GetTopPackingCode(IQueryable historyQuery, string packingCode)
{
- var historyRec = historyQuery.Where(itm => itm.FromPackingCode == packingCode).OrderBy(itm => itm.CreationTime).FirstOrDefault();
- if (historyRec != null)
- {
- return historyRec.FromTopPackingCode;
- }
- else
+ var qry = historyQuery.Where(itm => itm.OprType == OprTypeEnum.SplitBox || itm.OprType == OprTypeEnum.MergeBox);
+ string ret = null;
+ SplitPackingRec? firstObj = null;
+ string toCode = packingCode;
+ while (1 == 1)
{
- historyRec = historyQuery.Where(itm => itm.ToPackingCode == packingCode).OrderBy(itm => itm.CreationTime).FirstOrDefault();
- if (historyRec != null)
+ firstObj = qry.FirstOrDefault(itm => itm.ToPackingCode == toCode);
+ if (firstObj == null)
+ {
+ ret = toCode;
+ break;
+ }
+ else
{
- return historyRec.ToTopPackingCode;
+ toCode = firstObj.FromPackingCode;
}
}
- return null;
+ return ret;
+ //var historyRec = historyQuery.Where(itm => itm.FromPackingCode == packingCode).OrderBy(itm => itm.CreationTime).FirstOrDefault();
+ //if (historyRec != null)
+ //{
+ // return historyRec.FromTopPackingCode;
+ //}
+ //else
+ //{
+ // historyRec = historyQuery.Where(itm => itm.ToPackingCode == packingCode).OrderBy(itm => itm.CreationTime).FirstOrDefault();
+ // if (historyRec != null)
+ // {
+ // return historyRec.ToTopPackingCode;
+ // }
+ //}
+ //return null;
}
private static void SetBillNumber(IQueryable historyQuery, SplitPackingRec obj)
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/PurchaseReceiptRequests/PurchaseReceiptRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/PurchaseReceiptRequests/PurchaseReceiptRequestAppService.cs
index 1bfe1c39d..37ac275c1 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/PurchaseReceiptRequests/PurchaseReceiptRequestAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/PurchaseReceiptRequests/PurchaseReceiptRequestAppService.cs
@@ -9,7 +9,6 @@ using Volo.Abp.Domain.Entities;
using Volo.Abp.ObjectMapping;
using Volo.Abp.Uow;
using Win_in.Sfs.Basedata.Application.Contracts;
-using Win_in.Sfs.Basedata.Domain;
using Win_in.Sfs.Basedata.Domain.Shared;
using Win_in.Sfs.Label.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
@@ -31,20 +30,20 @@ public class PurchaseReceiptRequestAppService :
{
private readonly IPurchaseReceiptRequestManager _purchaseReceiptRequestManager;
- private readonly ISplitPackingRecManager _splitPackingRecManager;
+ private readonly ISplitPackingRecAppService _splitPackingRecAppService;
public PurchaseReceiptRequestAppService(
IPurchaseReceiptRequestRepository repository,
IPurchaseReceiptRequestManager purchaseReceiptRequestManager,
- ISplitPackingRecManager splitPackingRecManager) : base(repository, purchaseReceiptRequestManager)
+ ISplitPackingRecAppService splitPackingRecAppService) : base(repository, purchaseReceiptRequestManager)
{
_purchaseReceiptRequestManager = purchaseReceiptRequestManager;
base.CreatePolicyName = PurchaseReceiptRequestPermissions.Create;
base.UpdatePolicyName = PurchaseReceiptRequestPermissions.Update;
base.DeletePolicyName = PurchaseReceiptRequestPermissions.Delete;
- _splitPackingRecManager = splitPackingRecManager;
+ _splitPackingRecAppService = splitPackingRecAppService;
}
#region 东阳使用
@@ -103,7 +102,7 @@ public class PurchaseReceiptRequestAppService :
public virtual async Task GetDetailByItemAndRootPackingAsync(string itemCode,
string packingCode)
{
- var topObj = await _splitPackingRecManager.GetTopPackingCode(packingCode).ConfigureAwait(false);
+ var topObj = await _splitPackingRecAppService.GetTopPackingCode(packingCode).ConfigureAwait(false);
if (topObj == null || string.IsNullOrEmpty(topObj.ToTopPackingCode))
{
throw new UserFriendlyException($"根据箱码{packingCode}到拆箱记录表中没有取到顶级箱码!");