diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Boms/BomAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Boms/BomAppService.cs index 0a25e7940..51c67e03c 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Boms/BomAppService.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Boms/BomAppService.cs @@ -108,7 +108,7 @@ public class BomAppService : [HttpGet("get-bom-tree-by-code")] public virtual async Task> GetBomTreeByCodeAsync(string productCode) { - var entities = await _bomManager.GetAllItemByCode(productCode).ConfigureAwait(false); + var entities = await _bomManager.GetAllItemByCode(productCode,GuidGenerator.Create()).ConfigureAwait(false); var dtos = ObjectMapper.Map, List>(entities); diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Boms/BomManager.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Boms/BomManager.cs index 269b68211..57f0475b5 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Boms/BomManager.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Boms/BomManager.cs @@ -379,14 +379,15 @@ public class BomManager : DomainService, IBomManager /// /// /// - public virtual async Task> GetAllItemByCode(string productCode) + public virtual async Task> GetAllItemByCode(string productCode,Guid id) { List boms = new List(); var lst = await _repository.GetListAsync(p => p.Product == productCode).ConfigureAwait(false); foreach (var bom in lst) { + bom.Remark = id.ToString(); boms.Add(bom); - var results= await GetAllItemByCode(bom.Component).ConfigureAwait(false); + var results= await GetAllItemByCode(bom.Component,bom.Id).ConfigureAwait(false); boms.AddRange(results); } return boms; diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Boms/IBomManager.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Boms/IBomManager.cs index 2004cf8c2..b58ebea14 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Boms/IBomManager.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Boms/IBomManager.cs @@ -42,7 +42,7 @@ public interface IBomManager : IDomainService, IBulkImportService /// 总成数量 /// Task> GetMaterialTotalQtyAsync(string productCode, int productNum); - Task> GetAllItemByCode(string productCode); Task> GetSubcomponentsRecursiveList(List p_lst, EnumBomSelectedType p_type); + Task> GetAllItemByCode(string productCode, Guid id); } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/CountJobs/CountJob.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/CountJobs/CountJob.cs index dd89bb9a8..677eecc06 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/CountJobs/CountJob.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/CountJobs/CountJob.cs @@ -96,7 +96,7 @@ public class CountJob : SfsJobAggregateRootBase detail.ExpireDate = expireDate; detail.LocationCode = locationCode; - detail.CountQty = detail.CountQty+qty; + detail.CountQty = qty; detail.CountTime = time; detail.CountOperator = oper; detail.CountDescription = desc; diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/CountJobs/CountJobManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/CountJobs/CountJobManager.cs index c0af47777..88e1b0935 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/CountJobs/CountJobManager.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/CountJobs/CountJobManager.cs @@ -118,22 +118,32 @@ public class CountJobManager : SfsJobManagerBase, ICou } private async Task SetDetailsAsync(CountJob input, CountJob entity) - { - foreach (var depDetail in input.DepDetails) + { + //将任务里所有可盘数量置为0 + input.Details.ForEach(r => { - var inputDetail = input.Details.FirstOrDefault(r => r.ItemCode == depDetail.ItemCode && r.PackingCode == depDetail.PackingCode); - if (inputDetail != null) - { - inputDetail.CountQty += depDetail.CountQty; - } - else + r.CountQty = 0; + + }); + //清除之前的扫描明细 + entity.DepDetails.RemoveAll(r=>r.InventoryStage==entity.InventoryStage); + //遍历扫描明细 + foreach (var depDetail in input.DepDetails.Where(r=>r.InventoryStage==entity.InventoryStage)) + { + var inputDetail = input.Details.FirstOrDefault(r => r.ItemCode == depDetail.ItemCode && r.PackingCode == depDetail.PackingCode&&r.LocationCode == depDetail.LocationCode&&r.InventoryStage == entity.InventoryStage); + if (inputDetail == null) { var jobDetail = ObjectMapper.Map(depDetail); + jobDetail.InventoryQty = 0; var detailNumber = await GetNumber().ConfigureAwait(false); jobDetail.SetIdAndNumber(GuidGenerator, entity.Id, detailNumber); jobDetail.CountLabel = GuidGenerator.Create().ToString(); input.Details.Add(jobDetail); } + else + { + inputDetail.CountQty += depDetail.CountQty; + } var jobDepDetail = ObjectMapper.Map(depDetail); var number = entity.Number; @@ -141,7 +151,7 @@ public class CountJobManager : SfsJobManagerBase, ICou jobDepDetail.CountLabel = GuidGenerator.Create().ToString(); entity.DepDetails.Add(jobDepDetail); } - foreach (var detail in input.Details) + foreach (var detail in input.Details.Where(r => r.InventoryStage == entity.InventoryStage)) { var entityDetail = entity.Details.FirstOrDefault(p => p.Id == detail.Id); @@ -149,12 +159,7 @@ public class CountJobManager : SfsJobManagerBase, ICou if (entityDetail == null || entityDetail.Id == Guid.Empty) { - var jobDetail = ObjectMapper.Map(detail); - //var number =await GetNumber(); - //jobDetail.SetIdAndNumber(GuidGenerator,entity.Id, number); - //jobDetail.CountLabel = GuidGenerator.Create().ToString(); - //CountJobDetail jobDetail = new CountJobDetail() { }; - + var jobDetail = ObjectMapper.Map(detail); entity.AddDetail(jobDetail); } else @@ -163,6 +168,8 @@ public class CountJobManager : SfsJobManagerBase, ICou .ConfigureAwait(false); } } + //移除原有明细里没有,并且第二次扫描以处的项目 + entity.Details.RemoveAll(r => r.InventoryQty == 0 && r.CountQty == 0&& r.InventoryStage == entity.InventoryStage); } public override void CheckDetails(CountJob entity, AbpValidationResult result) diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/CountPlanEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/CountPlanEventHandler.cs index cba7ab568..ab4562f87 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/CountPlanEventHandler.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/CountPlanEventHandler.cs @@ -238,6 +238,7 @@ public class CountPlanEventHandler foreach (var countPlanDetail in countPlanDetails) { var countJobDetail = ObjectMapper.Map(countPlanDetail); + countJobDetail.InventoryStage = countPlan.InventoryStage; countJob.Details.Add(countJobDetail); }