|
|
@ -119,21 +119,31 @@ public class CountJobManager : SfsJobManagerBase<CountJob, CountJobDetail>, 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<CountJobDependentDetail, CountJobDetail>(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<CountJobDependentDetail, CountJobDependentDetail>(depDetail); |
|
|
|
var number = entity.Number; |
|
|
@ -141,7 +151,7 @@ public class CountJobManager : SfsJobManagerBase<CountJob, CountJobDetail>, 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); |
|
|
|
|
|
|
@ -150,11 +160,6 @@ public class CountJobManager : SfsJobManagerBase<CountJob, CountJobDetail>, ICou |
|
|
|
{ |
|
|
|
|
|
|
|
var jobDetail = ObjectMapper.Map<CountJobDetail, CountJobDetail>(detail); |
|
|
|
//var number =await GetNumber();
|
|
|
|
//jobDetail.SetIdAndNumber(GuidGenerator,entity.Id, number);
|
|
|
|
//jobDetail.CountLabel = GuidGenerator.Create().ToString();
|
|
|
|
//CountJobDetail jobDetail = new CountJobDetail() { };
|
|
|
|
|
|
|
|
entity.AddDetail(jobDetail); |
|
|
|
} |
|
|
|
else |
|
|
@ -163,6 +168,8 @@ public class CountJobManager : SfsJobManagerBase<CountJob, CountJobDetail>, 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) |
|
|
|