|
|
@ -345,13 +345,145 @@ public class UnplannedIssueJobAppService |
|
|
|
{ |
|
|
|
_logger.LogError($"{"非生产领料" + requestDto.Number + "零件号:" + requestDtoDetail.ItemCode + "库存不够" + requestDtoDetail.Qty.ToString()}"); |
|
|
|
// Errors.Add($"{"非生产领料"+requestDto.Number+"零件号:"+requestDtoDetail.ItemCode + "库存不够" + requestDtoDetail.Qty.ToString()}");
|
|
|
|
continue; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (useBalances.Count > 0) |
|
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
foreach (var balanceDtoGroup in useBalances.GroupBy(p => p.LocationErpCode)) |
|
|
|
{ |
|
|
|
//var locationDto = await _locationAppService.GetByCodeAsync(balanceDtoGroup.Key).ConfigureAwait(false);
|
|
|
|
var job = new UnplannedIssueJob(); |
|
|
|
|
|
|
|
|
|
|
|
switch (locationDto.Type) |
|
|
|
{ |
|
|
|
case EnumLocationType.SEMI: |
|
|
|
job.IsHasPackingCode = false; |
|
|
|
job.UnplannedIssueType = EnumUnplannedIssueType.Raw; |
|
|
|
break; |
|
|
|
case EnumLocationType.CUST: |
|
|
|
job.IsHasPackingCode = false; |
|
|
|
job.UnplannedIssueType = EnumUnplannedIssueType.Raw; |
|
|
|
break; |
|
|
|
case EnumLocationType.FG: |
|
|
|
job.IsHasPackingCode = false; |
|
|
|
job.UnplannedIssueType = EnumUnplannedIssueType.Raw; |
|
|
|
break; |
|
|
|
case EnumLocationType.RAW: |
|
|
|
job.IsHasPackingCode = true; |
|
|
|
job.UnplannedIssueType = EnumUnplannedIssueType.Raw; |
|
|
|
break; |
|
|
|
case EnumLocationType.THIRDPARTY: |
|
|
|
job.IsHasPackingCode = false; |
|
|
|
job.UnplannedIssueType = EnumUnplannedIssueType.Raw; |
|
|
|
break; |
|
|
|
case EnumLocationType.OUTSIDE: |
|
|
|
job.IsHasPackingCode = false; |
|
|
|
job.UnplannedIssueType = EnumUnplannedIssueType.Raw; |
|
|
|
break; |
|
|
|
case EnumLocationType.DimensionalStorehouse: |
|
|
|
job.UnplannedIssueType = EnumUnplannedIssueType.Raw; |
|
|
|
job.IsHasPackingCode = false; |
|
|
|
break; |
|
|
|
|
|
|
|
case EnumLocationType.KittingWip: |
|
|
|
job.IsHasPackingCode = false; |
|
|
|
job.UnplannedIssueType = EnumUnplannedIssueType.Wip; |
|
|
|
break; |
|
|
|
case EnumLocationType.WIP: |
|
|
|
job.IsHasPackingCode = false; |
|
|
|
job.UnplannedIssueType = EnumUnplannedIssueType.Wip; |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
job.ItemCode = requestDtoDetail.ItemCode; |
|
|
|
job.ItemName = requestDtoDetail.ItemName; |
|
|
|
job.ItemDesc1 = requestDtoDetail.ItemDesc1; |
|
|
|
job.ItemDesc2 = requestDtoDetail.ItemDesc2; |
|
|
|
job.FromErpLocationCode = requestDtoDetail.LocationErpCode; |
|
|
|
job.Qty = requestDtoDetail.Qty; |
|
|
|
|
|
|
|
|
|
|
|
job.SetId(GuidGenerator.Create()); |
|
|
|
job.UnplannedIssueRequestNumber = requestDto.Number; |
|
|
|
job.JobType = EnumJobType.UnplannedIssueJob; |
|
|
|
job.JobStatus = EnumJobStatus.Open; |
|
|
|
job.IsAutoComplete = false; |
|
|
|
job.DeptCode = requestDto.DeptCode; |
|
|
|
job.DeptName = requestDto.DeptName; |
|
|
|
job.Worker = requestDto.Worker; |
|
|
|
job.OANumber = requestDto.OANumber; |
|
|
|
job.Number = await _unplannedIssueJobManager.GetNumber().ConfigureAwait(true); |
|
|
|
job.Details = new List<UnplannedIssueJobDetail>(); |
|
|
|
job.FacDetails = new List<UnplannedIssueJobFacDetail>(); |
|
|
|
job.WarehouseCode = balanceDtoGroup.First().WarehouseCode; |
|
|
|
job.BuildDate = DateTime.Now; |
|
|
|
|
|
|
|
foreach (var balanceDto in balanceDtoGroup) |
|
|
|
{ |
|
|
|
var jobfacDetail = new UnplannedIssueJobFacDetail(); |
|
|
|
jobfacDetail.Number = job.Number; |
|
|
|
jobfacDetail.SetIdAndNumber(GuidGenerator, job.Id, job.Number); |
|
|
|
jobfacDetail.CaseCode = requestDtoDetail.CaseCode; |
|
|
|
jobfacDetail.Explain = requestDtoDetail.Explain; |
|
|
|
jobfacDetail.OnceBusiCode = requestDtoDetail.OnceBusiCode; |
|
|
|
jobfacDetail.ProjCapacityCode = requestDtoDetail.ProjCapacityCode; |
|
|
|
//jobfacDetail.ReasonCode = requestDtoDetail.ReasonCode;
|
|
|
|
jobfacDetail.ItemCode = requestDtoDetail.ItemCode; |
|
|
|
jobfacDetail.ItemDesc1 = requestDtoDetail.ItemDesc1; |
|
|
|
jobfacDetail.ItemDesc2 = requestDtoDetail.ItemDesc2; |
|
|
|
jobfacDetail.ItemName = requestDtoDetail.ItemName; |
|
|
|
jobfacDetail.RecommendArriveDate = balanceDto.ArriveDate; |
|
|
|
jobfacDetail.RecommendContainerCode = string.Empty; |
|
|
|
jobfacDetail.RecommendExpireDate = balanceDto.ExpireDate; |
|
|
|
jobfacDetail.RecommendLot = balanceDto.Lot; |
|
|
|
jobfacDetail.RecommendPackingCode = balanceDto.PackingCode; |
|
|
|
jobfacDetail.RecommendProduceDate = balanceDto.ProduceDate; |
|
|
|
jobfacDetail.RecommendQty = balanceDto.Qty; |
|
|
|
jobfacDetail.RecommendSupplierBatch = balanceDto.SupplierBatch; |
|
|
|
jobfacDetail.StdPackQty = requestDtoDetail.StdPackQty; |
|
|
|
jobfacDetail.RecommendPackingCode = balanceDto.PackingCode; |
|
|
|
jobfacDetail.HandledFromLocationGroup = balanceDto.LocationGroup; |
|
|
|
jobfacDetail.HandledFromLocationArea = balanceDto.LocationArea; |
|
|
|
jobfacDetail.HandledFromLocationCode = balanceDto.LocationCode; |
|
|
|
jobfacDetail.HandledFromLocationErpCode = balanceDto.LocationErpCode; |
|
|
|
jobfacDetail.HandledFromWarehouseCode = balanceDto.WarehouseCode; |
|
|
|
jobfacDetail.HandledQty = balanceDto.Qty; |
|
|
|
jobfacDetail.HandledSupplierBatch = balanceDto.Lot; |
|
|
|
jobfacDetail.HandledArriveDate = balanceDto.ArriveDate; |
|
|
|
jobfacDetail.HandledProduceDate = balanceDto.ProduceDate; |
|
|
|
jobfacDetail.HandledExpireDate = balanceDto.ExpireDate; |
|
|
|
jobfacDetail.HandledContainerCode = balanceDto.ContainerCode; |
|
|
|
jobfacDetail.HandledLot = balanceDto.Lot; |
|
|
|
jobfacDetail.HandledPackingCode = balanceDto.PackingCode; |
|
|
|
jobfacDetail.RecommendFromLocationArea = balanceDto.LocationArea; |
|
|
|
jobfacDetail.RecommendFromLocationCode = balanceDto.LocationCode; |
|
|
|
jobfacDetail.RecommendFromLocationErpCode = balanceDto.LocationErpCode; |
|
|
|
jobfacDetail.RecommendFromLocationGroup = balanceDto.LocationGroup; |
|
|
|
jobfacDetail.RecommendFromWarehouseCode = balanceDto.WarehouseCode; |
|
|
|
jobfacDetail.Status = balanceDto.Status; |
|
|
|
jobfacDetail.HandledQty = balanceDto.Qty; |
|
|
|
jobfacDetail.Uom = balanceDto.Uom; |
|
|
|
//job.Details.Add(jobDetail);
|
|
|
|
job.FacDetails.Add(jobfacDetail); |
|
|
|
} |
|
|
|
|
|
|
|
if (locationDto.Type == EnumLocationType.DimensionalStorehouse)//如果是立库的
|
|
|
|
{ |
|
|
|
await SendDimensionalStorehouseAsync().ConfigureAwait(false); |
|
|
|
job.JobStatus = EnumJobStatus.Wait; |
|
|
|
} |
|
|
|
jobs.Add(job); |
|
|
|
} |
|
|
|
} |
|
|
|
foreach (var balanceDtoGroup in useBalances.GroupBy(p => p.LocationErpCode)) |
|
|
|
else |
|
|
|
{ |
|
|
|
//var locationDto = await _locationAppService.GetByCodeAsync(balanceDtoGroup.Key).ConfigureAwait(false);
|
|
|
|
var job = new UnplannedIssueJob(); |
|
|
|
|
|
|
|
|
|
|
|
switch (locationDto.Type) |
|
|
|
{ |
|
|
@ -398,14 +530,14 @@ public class UnplannedIssueJobAppService |
|
|
|
|
|
|
|
job.ItemCode = requestDtoDetail.ItemCode; |
|
|
|
job.ItemName = requestDtoDetail.ItemName; |
|
|
|
job.ItemDesc1 =requestDtoDetail.ItemDesc1; |
|
|
|
job.ItemDesc1 = requestDtoDetail.ItemDesc1; |
|
|
|
job.ItemDesc2 = requestDtoDetail.ItemDesc2; |
|
|
|
job.FromErpLocationCode = requestDtoDetail.LocationErpCode; |
|
|
|
job.Qty = requestDtoDetail.Qty; |
|
|
|
|
|
|
|
|
|
|
|
job.SetId(GuidGenerator.Create()); |
|
|
|
job.UnplannedIssueRequestNumber= requestDto.Number; |
|
|
|
job.UnplannedIssueRequestNumber = requestDto.Number; |
|
|
|
job.JobType = EnumJobType.UnplannedIssueJob; |
|
|
|
job.JobStatus = EnumJobStatus.Open; |
|
|
|
job.IsAutoComplete = false; |
|
|
@ -413,68 +545,18 @@ public class UnplannedIssueJobAppService |
|
|
|
job.DeptName = requestDto.DeptName; |
|
|
|
job.Worker = requestDto.Worker; |
|
|
|
job.OANumber = requestDto.OANumber; |
|
|
|
job.Number =await _unplannedIssueJobManager.GetNumber().ConfigureAwait(true); |
|
|
|
job.Number = await _unplannedIssueJobManager.GetNumber().ConfigureAwait(true); |
|
|
|
job.Details = new List<UnplannedIssueJobDetail>(); |
|
|
|
job.FacDetails = new List<UnplannedIssueJobFacDetail>(); |
|
|
|
job.WarehouseCode = balanceDtoGroup.First().WarehouseCode; |
|
|
|
job.WarehouseCode = locationDto.WarehouseCode; |
|
|
|
job.BuildDate = DateTime.Now; |
|
|
|
|
|
|
|
foreach (var balanceDto in balanceDtoGroup) |
|
|
|
{ |
|
|
|
var jobfacDetail = new UnplannedIssueJobFacDetail(); |
|
|
|
jobfacDetail.Number = job.Number; |
|
|
|
jobfacDetail.SetIdAndNumber(GuidGenerator, job.Id, job.Number); |
|
|
|
jobfacDetail.CaseCode = requestDtoDetail.CaseCode; |
|
|
|
jobfacDetail.Explain = requestDtoDetail.Explain; |
|
|
|
jobfacDetail.OnceBusiCode = requestDtoDetail.OnceBusiCode; |
|
|
|
jobfacDetail.ProjCapacityCode = requestDtoDetail.ProjCapacityCode; |
|
|
|
//jobfacDetail.ReasonCode = requestDtoDetail.ReasonCode;
|
|
|
|
jobfacDetail.ItemCode = requestDtoDetail.ItemCode; |
|
|
|
jobfacDetail.ItemDesc1 = requestDtoDetail.ItemDesc1; |
|
|
|
jobfacDetail.ItemDesc2 = requestDtoDetail.ItemDesc2; |
|
|
|
jobfacDetail.ItemName = requestDtoDetail.ItemName; |
|
|
|
jobfacDetail.RecommendArriveDate = balanceDto.ArriveDate; |
|
|
|
jobfacDetail.RecommendContainerCode = string.Empty; |
|
|
|
jobfacDetail.RecommendExpireDate = balanceDto.ExpireDate; |
|
|
|
jobfacDetail.RecommendLot = balanceDto.Lot; |
|
|
|
jobfacDetail.RecommendPackingCode = balanceDto.PackingCode; |
|
|
|
jobfacDetail.RecommendProduceDate = balanceDto.ProduceDate; |
|
|
|
jobfacDetail.RecommendQty = balanceDto.Qty; |
|
|
|
jobfacDetail.RecommendSupplierBatch = balanceDto.SupplierBatch; |
|
|
|
jobfacDetail.StdPackQty = requestDtoDetail.StdPackQty; |
|
|
|
jobfacDetail.RecommendPackingCode = balanceDto.PackingCode; |
|
|
|
jobfacDetail.HandledFromLocationGroup = balanceDto.LocationGroup; |
|
|
|
jobfacDetail.HandledFromLocationArea = balanceDto.LocationArea; |
|
|
|
jobfacDetail.HandledFromLocationCode = balanceDto.LocationCode; |
|
|
|
jobfacDetail.HandledFromLocationErpCode = balanceDto.LocationErpCode; |
|
|
|
jobfacDetail.HandledFromWarehouseCode = balanceDto.WarehouseCode; |
|
|
|
jobfacDetail.HandledQty = balanceDto.Qty; |
|
|
|
jobfacDetail.HandledSupplierBatch = balanceDto.Lot; |
|
|
|
jobfacDetail.HandledArriveDate = balanceDto.ArriveDate; |
|
|
|
jobfacDetail.HandledProduceDate = balanceDto.ProduceDate; |
|
|
|
jobfacDetail.HandledExpireDate = balanceDto.ExpireDate; |
|
|
|
jobfacDetail.HandledContainerCode =balanceDto.ContainerCode ; |
|
|
|
jobfacDetail.HandledLot = balanceDto.Lot; |
|
|
|
jobfacDetail.HandledPackingCode =balanceDto.PackingCode; |
|
|
|
jobfacDetail.RecommendFromLocationArea = balanceDto.LocationArea; |
|
|
|
jobfacDetail.RecommendFromLocationCode = balanceDto.LocationCode; |
|
|
|
jobfacDetail.RecommendFromLocationErpCode = balanceDto.LocationErpCode; |
|
|
|
jobfacDetail.RecommendFromLocationGroup = balanceDto.LocationGroup; |
|
|
|
jobfacDetail.RecommendFromWarehouseCode = balanceDto.WarehouseCode; |
|
|
|
jobfacDetail.Status = balanceDto.Status; |
|
|
|
jobfacDetail.HandledQty = balanceDto.Qty; |
|
|
|
jobfacDetail.Uom = balanceDto.Uom; |
|
|
|
//job.Details.Add(jobDetail);
|
|
|
|
job.FacDetails.Add(jobfacDetail); |
|
|
|
} |
|
|
|
|
|
|
|
if (locationDto.Type == EnumLocationType.DimensionalStorehouse)//如果是立库的
|
|
|
|
{ |
|
|
|
await SendDimensionalStorehouseAsync().ConfigureAwait(false); |
|
|
|
job.JobStatus = EnumJobStatus.Wait; |
|
|
|
} |
|
|
|
jobs.Add(job); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
//if (Errors.Count > 0)
|
|
|
|
//{
|
|
|
|