Browse Source

更新版本

dev_DY_CC
赵新宇 7 months ago
parent
commit
f7db58d28e
  1. 168
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs

168
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs

@ -136,14 +136,34 @@ public class UnplannedIssueJobAppService
balanceDTOs.Add(dto); balanceDTOs.Add(dto);
break; break;
case EnumLocationType.FG: case EnumLocationType.FG:
dto.InjectFrom(item);
balanceDTOs.Add(dto);
break;
case EnumLocationType.DimensionalStorehouse: case EnumLocationType.DimensionalStorehouse:
dto.InjectFrom(item);
balanceDTOs.Add(dto);
break;
case EnumLocationType.CUST: case EnumLocationType.CUST:
dto.InjectFrom(item);
balanceDTOs.Add(dto);
break;
case EnumLocationType.KittingWip: case EnumLocationType.KittingWip:
dto.InjectFrom(item);
balanceDTOs.Add(dto);
break;
case EnumLocationType.OUTSIDE: case EnumLocationType.OUTSIDE:
dto.InjectFrom(item);
balanceDTOs.Add(dto);
break;
case EnumLocationType.SEMI: case EnumLocationType.SEMI:
dto.InjectFrom(item);
balanceDTOs.Add(dto);
break;
case EnumLocationType.WIP: case EnumLocationType.WIP:
dto.InjectFrom(item);
balanceDTOs.Add(dto);
break;
case EnumLocationType.THIRDPARTY: case EnumLocationType.THIRDPARTY:
dto.InjectFrom(item); dto.InjectFrom(item);
balanceDTOs.Add(dto); balanceDTOs.Add(dto);
break; break;
@ -160,8 +180,7 @@ public class UnplannedIssueJobAppService
} }
private async Task<List<UnplannedIssueJob>> BuildUnplannedIssueJobAsync(UnplannedIssueRequest requestDto, List<BalanceDTO> useBalancesOut) private async Task<List<UnplannedIssueJob>> BuildUnplannedIssueJobAsync(UnplannedIssueRequest requestDto, List<BalanceDTO> useBalancesOut)
{ {
List<UnplannedIssueJob> jobs = new EditableList<UnplannedIssueJob>(); List<UnplannedIssueJob> jobs = new EditableList<UnplannedIssueJob>();
@ -171,18 +190,116 @@ public class UnplannedIssueJobAppService
{ {
var locationCodes = await _locationAppService.GetListByErpLocationCodes(new StringList(requestDtoDetail.LocationErpCode)).ConfigureAwait(false);//获取存放库位 var locationCodes = await _locationAppService.GetListByErpLocationCodes(new StringList(requestDtoDetail.LocationErpCode)).ConfigureAwait(false);//获取存放库位
var input = new RecommendBalanceRequestInput
if (locationCodes.Count == 0)
{ {
ItemCode = requestDtoDetail.ItemCode, throw new UserFriendlyException("ERP库位没有对应WMS库位!");
Qty = requestDtoDetail.Qty, }
Statuses = new EditableList<EnumInventoryStatus> { EnumInventoryStatus.OK },
Locations = locationCodes.Select(p => p.Code).ToList(),
IsPackingCode = false
};
var usableList = await _balanceAppService.GetUsableListAsync(input).ConfigureAwait(false);//获取推荐库存
usableList = usableList.Where(p => p.Qty> 0).ToList();
var first=locationCodes.FirstOrDefault();
var locationDto = await _locationAppService.GetByCodeAsync(first.Code).ConfigureAwait(false);
var input = new RecommendBalanceRequestInput();
switch (locationDto.Type)
{
case EnumLocationType.RAW:
input = new RecommendBalanceRequestInput
{
ItemCode = requestDtoDetail.ItemCode,
Qty = requestDtoDetail.Qty,
Statuses = new EditableList<EnumInventoryStatus> { EnumInventoryStatus.OK },
Locations = locationCodes.Select(p => p.Code).ToList(),
IsPackingCode = true
};
break;
case EnumLocationType.FG:
input = new RecommendBalanceRequestInput
{
ItemCode = requestDtoDetail.ItemCode,
Qty = requestDtoDetail.Qty,
Statuses = new EditableList<EnumInventoryStatus> { EnumInventoryStatus.OK },
Locations = locationCodes.Select(p => p.Code).ToList(),
IsPackingCode = false
};
break;
case EnumLocationType.DimensionalStorehouse:
input = new RecommendBalanceRequestInput
{
ItemCode = requestDtoDetail.ItemCode,
Qty = requestDtoDetail.Qty,
Statuses = new EditableList<EnumInventoryStatus> { EnumInventoryStatus.OK },
Locations = locationCodes.Select(p => p.Code).ToList(),
IsPackingCode = false
};
break;
case EnumLocationType.CUST:
input = new RecommendBalanceRequestInput
{
ItemCode = requestDtoDetail.ItemCode,
Qty = requestDtoDetail.Qty,
Statuses = new EditableList<EnumInventoryStatus> { EnumInventoryStatus.OK },
Locations = locationCodes.Select(p => p.Code).ToList(),
IsPackingCode = false
};
break;
case EnumLocationType.KittingWip:
input = new RecommendBalanceRequestInput
{
ItemCode = requestDtoDetail.ItemCode,
Qty = requestDtoDetail.Qty,
Statuses = new EditableList<EnumInventoryStatus> { EnumInventoryStatus.OK },
Locations = locationCodes.Select(p => p.Code).ToList(),
IsPackingCode = false
};
break;
case EnumLocationType.OUTSIDE:
input = new RecommendBalanceRequestInput
{
ItemCode = requestDtoDetail.ItemCode,
Qty = requestDtoDetail.Qty,
Statuses = new EditableList<EnumInventoryStatus> { EnumInventoryStatus.OK },
Locations = locationCodes.Select(p => p.Code).ToList(),
IsPackingCode = false
};
break;
case EnumLocationType.SEMI:
input = new RecommendBalanceRequestInput
{
ItemCode = requestDtoDetail.ItemCode,
Qty = requestDtoDetail.Qty,
Statuses = new EditableList<EnumInventoryStatus> { EnumInventoryStatus.OK },
Locations = locationCodes.Select(p => p.Code).ToList(),
IsPackingCode = false
};
break;
case EnumLocationType.WIP:
input = new RecommendBalanceRequestInput
{
ItemCode = requestDtoDetail.ItemCode,
Qty = requestDtoDetail.Qty,
Statuses = new EditableList<EnumInventoryStatus> { EnumInventoryStatus.OK },
Locations = locationCodes.Select(p => p.Code).ToList(),
IsPackingCode = false
};
break;
case EnumLocationType.THIRDPARTY:
input = new RecommendBalanceRequestInput
{
ItemCode = requestDtoDetail.ItemCode,
Qty = requestDtoDetail.Qty,
Statuses = new EditableList<EnumInventoryStatus> { EnumInventoryStatus.OK },
Locations = locationCodes.Select(p => p.Code).ToList(),
IsPackingCode = false
};
break;
}
var usableList = await _balanceAppService.GetUsableListAsync(input).ConfigureAwait(false);//获取推荐库存
usableList = usableList.Where(p => p.Qty> 0).ToList();
usableList = usableList usableList = usableList
.OrderBy(p => p.Lot) .OrderBy(p => p.Lot)
.ThenBy(p => p.PutInTime) .ThenBy(p => p.PutInTime)
@ -227,29 +344,22 @@ public class UnplannedIssueJobAppService
//} //}
if (returnlist.Count == 0) if (returnlist.Count == 0)
{ {
Errors.Add($"{""+requestDto.Number+":"+requestDtoDetail.ItemCode + "" + requestDtoDetail.Qty.ToString()}"); Errors.Add($"{""+requestDto.Number+":"+requestDtoDetail.ItemCode + "" + requestDtoDetail.Qty.ToString()}");
} }
foreach (var balanceDtoGroup in useBalances.GroupBy(p => p.LocationCode)) foreach (var balanceDtoGroup in useBalances.GroupBy(p => p.LocationCode))
{ {
var locationDto = await _locationAppService.GetByCodeAsync(balanceDtoGroup.Key).ConfigureAwait(false); //var locationDto = await _locationAppService.GetByCodeAsync(balanceDtoGroup.Key).ConfigureAwait(false);
var job = new UnplannedIssueJob(); var job = new UnplannedIssueJob();
switch (locationDto.Type) if (locationDto.Type==EnumLocationType.RAW)
{ {
case EnumLocationType.RAW: job.UnplannedIssueType = EnumUnplannedIssueType.Raw;
job.UnplannedIssueType = EnumUnplannedIssueType.Raw; }
break; else
case EnumLocationType.FG: {
case EnumLocationType.DimensionalStorehouse: job.UnplannedIssueType = EnumUnplannedIssueType.Wip;
case EnumLocationType.CUST:
case EnumLocationType.KittingWip:
case EnumLocationType.OUTSIDE:
case EnumLocationType.SEMI:
case EnumLocationType.WIP:
case EnumLocationType.THIRDPARTY:
job.UnplannedIssueType = EnumUnplannedIssueType.Wip;
break;
} }
job.SetId(GuidGenerator.Create()); job.SetId(GuidGenerator.Create());
job.UnplannedIssueRequestNumber= requestDto.Number; job.UnplannedIssueRequestNumber= requestDto.Number;
job.JobType = EnumJobType.UnplannedIssueJob; job.JobType = EnumJobType.UnplannedIssueJob;

Loading…
Cancel
Save