Browse Source

修复盘点多增加记录和移除盘点计划的问题

交付给东阳的源代码
周红军 7 days ago
parent
commit
3cbe9b1e39
  1. 47
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/CountJobs/CountJobManager.cs
  2. 10
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Plans/CountPlans/CountPlanManager.cs

47
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/CountJobs/CountJobManager.cs

@ -22,16 +22,19 @@ public class CountJobManager : SfsJobManagerBase<CountJob, CountJobDetail>, ICou
private readonly IBalanceAppService _balanceAppService;
private readonly ICountJobRepository _repository;
private readonly ICountNoteRepository _noteRepository;
private readonly ICountPlanRepository _planRepository;
private readonly ICountAdjustRequestRepository _countAdjustRequestRepository;
public CountJobManager(
ICountJobRepository repository,
IBalanceAppService balanceAppService,
ICountNoteRepository noteRepository,
ICountPlanRepository planRepository,
ICountAdjustRequestRepository countAdjustRequestRepository
) : base(repository)
{
_noteRepository = noteRepository;
_planRepository = planRepository;
_balanceAppService = balanceAppService;
_repository = repository;
_countAdjustRequestRepository= countAdjustRequestRepository;
@ -304,31 +307,49 @@ public class CountJobManager : SfsJobManagerBase<CountJob, CountJobDetail>, ICou
{
decimal countCount = depDetail.CountQty;
var detail = entity.Details.FirstOrDefault(r => r.ItemCode == depDetail.ItemCode && r.PackingCode == depDetail.PackingCode && r.LocationCode == depDetail.LocationCode && r.InventoryStage == entity.InventoryStage&&r.Lot==depDetail.Lot);
var oldDepDetail = entity.DepDetails.FirstOrDefault(r => r.ItemCode == depDetail.ItemCode && r.PackingCode == depDetail.PackingCode && r.LocationCode == depDetail.LocationCode && r.InventoryStage == entity.InventoryStage && r.Lot == depDetail.Lot);
//var oldDepDetail = entity.DepDetails.FirstOrDefault(r => r.ItemCode == depDetail.ItemCode && r.PackingCode == depDetail.PackingCode && r.LocationCode == depDetail.LocationCode && r.InventoryStage == entity.InventoryStage && r.Lot == depDetail.Lot);
var oldDepDetail = entity.DepDetails.FirstOrDefault(r => r.Id == new Guid(depDetail.Id.ToString()));
if (depDetail.IsDelete)
{
countCount = -oldDepDetail.CountQty;
entity.DepDetails.Remove(oldDepDetail);
//移除的扫描记录盘点数量与计划中盘点数量一致,移除计划中的物料
var planDB = await _planRepository.FindAsync(r => r.Number == input.CountPlanNumber).ConfigureAwait(false);
if (planDB != null)
{
var planDetailDB = planDB.Details.FirstOrDefault(r => r.ItemCode == depDetail.ItemCode && r.PackingCode == depDetail.PackingCode && r.LocationCode == depDetail.LocationCode && r.Lot == depDetail.Lot && r.Status == depDetail.Status);
if (planDetailDB != null)
{
if(planDetailDB.FinalCountQty == oldDepDetail.CountQty)
{
planDB.Details.Remove(planDetailDB);
await _planRepository.UpdateAsync(planDB).ConfigureAwait(false);
}
}
}
}
else
{
if (oldDepDetail != null && depDetail.Id == oldDepDetail.Id)
{
countCount = depDetail.CountQty - oldDepDetail.CountQty;
entity.DepDetails.Remove(oldDepDetail);
oldDepDetail.CountQty = depDetail.CountQty;
}
var jobDepDetail = ObjectMapper.Map<CountJobDependentDetail, CountJobDependentDetail>(depDetail);
var number = entity.Number;
jobDepDetail.SetIdAndNumber(GuidGenerator, entity.Id, number);
jobDepDetail.CountLabel = GuidGenerator.Create().ToString();
entity.DepDetails.Add(jobDepDetail);
if (detail != null)
else
{
jobDepDetail.ArriveDate = detail.ArriveDate;
jobDepDetail.ProduceDate = detail.ProduceDate;
jobDepDetail.ExpireDate = detail.ExpireDate;
}
var jobDepDetail = ObjectMapper.Map<CountJobDependentDetail, CountJobDependentDetail>(depDetail);
var number = entity.Number;
jobDepDetail.SetIdAndNumber(GuidGenerator, entity.Id, number);
jobDepDetail.CountLabel = GuidGenerator.Create().ToString();
entity.DepDetails.Add(jobDepDetail);
if (detail != null)
{
jobDepDetail.ArriveDate = detail.ArriveDate;
jobDepDetail.ProduceDate = detail.ProduceDate;
jobDepDetail.ExpireDate = detail.ExpireDate;
}
}
}
if (detail == null)
{

10
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Plans/CountPlans/CountPlanManager.cs

@ -384,15 +384,7 @@ public class CountPlanManager : SfsStoreRequestManagerBase<CountPlan, CountPlanD
{
throw new UserFriendlyException($"盘点计划 {plan.Number} 的当前状态为 {entity.RequestStatus.GetDisplayName()}, 无法更新.");
}
foreach(var planDetail in entity.Details.ToList())
{
var entityDetail = plan.Details.FirstOrDefault(p => p.ItemCode == planDetail.ItemCode && p.PackingCode == planDetail.PackingCode && p.Lot == planDetail.Lot && p.LocationCode == planDetail.LocationCode);
if(entityDetail == null)
{
entity.Details.Remove(planDetail);
}
}
foreach (var planDetail in plan.Details)
{

Loading…
Cancel
Save