diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs
index fdb297d77..9eeb6fd15 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs
@@ -37,4 +37,134 @@ public class UnplannedIssueJobAppService
await _unplannedIssueJobManager.CancelAsync(entity).ConfigureAwait(false);
}
}
+
+ /////
+ ///// 根据储位推荐
+ /////
+ /////
+ //[HttpPost("create-by-recommend")]
+ //public async Task CreateByRecommendAsync(UnplannedReceiptRequestDTO requestDto)
+ //{
+ // List useBalancesOut = new EditableList();
+ // var jobs = await BuildUnplannedIssueJobAsync(requestDto, useBalancesOut).ConfigureAwait(false);
+ // await _repository.InsertManyAsync(jobs).ConfigureAwait(false);
+ // var outEditInputs = await BuildExpectOutAsync(useBalancesOut).ConfigureAwait(false);
+ // await _expectOutAppService.AddManyAsync(outEditInputs).ConfigureAwait(false);
+ //}
+
+ //private async Task> BuildUnplannedIssueJobAsync(UnplannedReceiptRequestDTO requestDto, List useBalancesOut)
+ //{
+ // List jobs = new EditableList();
+
+ // foreach (var requestDtoDetail in requestDto.Details)
+ // {
+ // var locationCodes = await _locationAppService.GetListByErpLocationCodes(new StringList(requestDtoDetail.ErpLocationCode)).ConfigureAwait(false);
+ // var input = new RecommendBalanceRequestInput
+ // {
+ // ItemCode = requestDtoDetail.ItemCode,
+ // Qty = requestDtoDetail.Qty,
+ // Statuses = new EditableList { EnumInventoryStatus.OK },
+ // Locations = locationCodes.Select(p => p.Code).ToList(),
+ // IsPackingCode = false
+ // };
+ // var usableList = await _balanceAppService.GetUsableListAsync(input).ConfigureAwait(false);
+ // usableList = usableList
+ // .OrderBy(p => p.Lot)
+ // .ThenBy(p => p.PutInTime)
+ // .ThenBy(p => p.Qty) //2023-9-14 苑静雯 从小数开始发料
+ // .ThenBy(p => p.LocationCode)
+ // .ThenBy(p => p.PackingCode)
+ // .ToList();
+
+ // decimal qty = 0;
+ // //实际要用库存
+ // List useBalances = new List();
+ // foreach (var balanceDto in usableList)
+ // {
+ // if (qty >= requestDtoDetail.Qty)
+ // {
+ // break;
+ // }
+
+ // if (qty + balanceDto.Qty > requestDtoDetail.Qty)
+ // {
+ // qty += requestDtoDetail.Qty - balanceDto.Qty;
+ // }
+ // else
+ // {
+ // qty += balanceDto.Qty;
+ // }
+
+ // useBalances.Add(balanceDto);
+ // useBalancesOut.Add(balanceDto);
+ // }
+
+ // foreach (var balanceDtoGroup in useBalances.GroupBy(p => p.LocationCode))
+ // {
+ // var locationDto = await _locationAppService.GetByCodeAsync(balanceDtoGroup.Key).ConfigureAwait(false);
+ // var job = new UnplannedReceiptJob();
+
+ // job.UnplannedReceiptRequestNumber = requestDto.Number;
+ // job.JobType = EnumJobType.UnplannedReceiptJob;
+ // job.JobStatus = EnumJobStatus.Open;
+ // job.IsAutoComplete = false;
+ // job.OANumber = requestDto.OANumber;
+ // job.Details = new List();
+ // job.WarehouseCode = balanceDtoGroup.First().WarehouseCode;
+
+ // foreach (var balanceDto in balanceDtoGroup)
+ // {
+ // var jobDetail = new UnplannedReceiptJobDetail();
+ // jobDetail.CaseCode = requestDtoDetail.CaseCode;
+ // jobDetail.Explain = requestDtoDetail.Explain;
+ // jobDetail.OnceBusiCode = requestDtoDetail.OnceBusiCode;
+ // jobDetail.ProjCapacityCode = requestDtoDetail.ProjCapacityCode;
+ // jobDetail.ReasonCode = requestDtoDetail.ReasonCode;
+ // jobDetail.ItemCode = requestDtoDetail.ItemCode;
+ // jobDetail.ItemDesc1 = requestDtoDetail.ItemDesc1;
+ // jobDetail.ItemDesc2 = requestDtoDetail.ItemDesc2;
+ // jobDetail.ItemName = requestDtoDetail.ItemName;
+ // jobDetail.RecommendArriveDate = balanceDto.ArriveDate;
+ // jobDetail.RecommendContainerCode = string.Empty;
+ // jobDetail.RecommendExpireDate = balanceDto.ExpireDate;
+ // jobDetail.RecommendLot = balanceDto.Lot;
+ // jobDetail.RecommendPackingCode = balanceDto.PackingCode;
+ // jobDetail.RecommendProduceDate = balanceDto.ProduceDate;
+ // jobDetail.RecommendQty = balanceDto.Qty;
+ // jobDetail.RecommendSupplierBatch = balanceDto.SupplierBatch;
+ // jobDetail.RecommendToLocationArea = balanceDto.LocationArea;
+ // jobDetail.RecommendToLocationCode = balanceDto.LocationCode;
+ // jobDetail.RecommendToLocationErpCode = balanceDto.LocationErpCode;
+ // jobDetail.RecommendToLocationGroup = balanceDto.LocationGroup;
+ // jobDetail.RecommendToWarehouseCode = balanceDto.WarehouseCode;
+
+ // job.Details.Add(jobDetail);
+ // }
+
+ // if (locationDto.Type == EnumLocationType.DimensionalStorehouse)//如果是立库的
+ // {
+ // await SendDimensionalStorehouseAsync().ConfigureAwait(false);
+ // job.JobStatus = EnumJobStatus.Wait;
+ // }
+
+ // jobs.Add(job);
+ // }
+ // }
+
+ // return jobs;
+ //}
+
+ //private async Task> BuildExpectOutAsync(List balanceDtos)
+ //{
+ // return ObjectMapper.Map, List>(balanceDtos);
+ //}
+
+ /////
+ ///// 给立体库发送
+ /////
+ /////
+ //public async Task SendDimensionalStorehouseAsync()
+ //{
+ // throw new System.NotImplementedException();
+ //}
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedReceiptJobs/UnplannedReceiptJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedReceiptJobs/UnplannedReceiptJobAppService.cs
index 71b152d7b..10b775088 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedReceiptJobs/UnplannedReceiptJobAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedReceiptJobs/UnplannedReceiptJobAppService.cs
@@ -2,9 +2,11 @@ using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
+using Volo.Abp;
using Volo.Abp.Domain.Entities;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Shared.Domain.Shared;
+using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Domain.Shared;
@@ -63,116 +65,60 @@ public class UnplannedReceiptJobAppService
}
///
- /// 根据储位推荐
+ /// 根据储位任意退料
///
///
- [HttpPost("create-by-recommend")]
- public async Task CreateByRecommendAsync(UnplannedReceiptRequestDTO requestDto)
+ [HttpPost("create-by-free")]
+ public async Task CreateByFreeAsync(UnplannedReceiptRequestDTO requestDto)
{
- List useBalancesOut = new EditableList();
- var jobs=await BuildUnplannedIssueJobAsync(requestDto, useBalancesOut).ConfigureAwait(false);
+ var jobs=await BuildUnplannedIssueJobAsync(requestDto).ConfigureAwait(false);
await _repository.InsertManyAsync(jobs).ConfigureAwait(false);
- var outEditInputs=await BuildExpectOutAsync(useBalancesOut).ConfigureAwait(false);
- await _expectOutAppService.AddManyAsync(outEditInputs).ConfigureAwait(false);
}
- private async Task> BuildUnplannedIssueJobAsync(UnplannedReceiptRequestDTO requestDto, List useBalancesOut)
+ private async Task> BuildUnplannedIssueJobAsync(UnplannedReceiptRequestDTO requestDto)
{
List jobs = new EditableList();
foreach (var requestDtoDetail in requestDto.Details)
{
- var locationCodes=await _locationAppService.GetListByErpLocationCodes(new StringList(requestDtoDetail.ErpLocationCode)).ConfigureAwait(false);
- var input = new RecommendBalanceRequestInput
- {
- ItemCode = requestDtoDetail.ItemCode,
- Qty = requestDtoDetail.Qty,
- Statuses = new EditableList { EnumInventoryStatus.OK },
- Locations = locationCodes.Select(p=>p.Code).ToList(),
- IsPackingCode = false
- };
- var usableList = await _balanceAppService.GetUsableListAsync(input).ConfigureAwait(false);
- usableList = usableList
- .OrderBy(p => p.Lot)
- .ThenBy(p => p.PutInTime)
- .ThenBy(p => p.Qty) //2023-9-14 苑静雯 从小数开始发料
- .ThenBy(p => p.LocationCode)
- .ThenBy(p => p.PackingCode)
- .ToList();
-
- decimal qty = 0;
- //实际要用库存
- List useBalances = new List();
- foreach (var balanceDto in usableList)
+ var locationDtos = await _locationAppService.GetListByErpLocationCodes(new List{ requestDtoDetail.ErpLocationCode }).ConfigureAwait(false);
+ var job = new UnplannedReceiptJob();
+
+ job.UnplannedReceiptRequestNumber = requestDto.Number;
+ job.JobType = EnumJobType.UnplannedReceiptJob;
+ job.JobStatus = EnumJobStatus.Open;
+ job.IsAutoComplete = false;
+ job.OANumber = requestDto.OANumber;
+ job.Details = new List();
+ job.WarehouseCode = requestDtoDetail.WarehouseCode;
+ switch (locationDtos.First().Type)
{
- if (qty >= requestDtoDetail.Qty)
- {
+ case EnumLocationType.RAW:
+ job.UnplannedReceiptType = EnumUnplannedReceiptType.Raw;
+ break;
+ case EnumLocationType.FG:
+ case EnumLocationType.DimensionalStorehouse:
+ case EnumLocationType.CUST:
+ case EnumLocationType.KittingWip:
+ case EnumLocationType.OUTSIDE:
+ case EnumLocationType.SEMI:
+ case EnumLocationType.WIP:
+ case EnumLocationType.THIRDPARTY:
+ job.UnplannedReceiptType = EnumUnplannedReceiptType.Wip;
break;
- }
-
- if (qty + balanceDto.Qty > requestDtoDetail.Qty)
- {
- qty += requestDtoDetail.Qty - balanceDto.Qty;
- }
- else
- {
- qty += balanceDto.Qty;
- }
-
- useBalances.Add(balanceDto);
- useBalancesOut.Add(balanceDto);
}
- foreach (var balanceDtoGroup in useBalances.GroupBy(p=>p.LocationCode))
- {
- var locationDto=await _locationAppService.GetByCodeAsync(balanceDtoGroup.Key).ConfigureAwait(false);
- var job = new UnplannedReceiptJob();
-
- job.UnplannedReceiptRequestNumber = requestDto.Number;
- job.JobType = EnumJobType.UnplannedReceiptJob;
- job.JobStatus = EnumJobStatus.Open;
- job.IsAutoComplete = false;
- job.OANumber = requestDto.OANumber;
- job.Details = new List();
- job.WarehouseCode = balanceDtoGroup.First().WarehouseCode;
-
- foreach (var balanceDto in balanceDtoGroup)
- {
- var jobDetail = new UnplannedReceiptJobDetail();
- jobDetail.CaseCode = requestDtoDetail.CaseCode;
- jobDetail.Explain = requestDtoDetail.Explain;
- jobDetail.OnceBusiCode = requestDtoDetail.OnceBusiCode;
- jobDetail.ProjCapacityCode = requestDtoDetail.ProjCapacityCode;
- jobDetail.ReasonCode = requestDtoDetail.ReasonCode;
- jobDetail.ItemCode = requestDtoDetail.ItemCode;
- jobDetail.ItemDesc1 = requestDtoDetail.ItemDesc1;
- jobDetail.ItemDesc2 = requestDtoDetail.ItemDesc2;
- jobDetail.ItemName = requestDtoDetail.ItemName;
- jobDetail.RecommendArriveDate = balanceDto.ArriveDate;
- jobDetail.RecommendContainerCode = string.Empty;
- jobDetail.RecommendExpireDate = balanceDto.ExpireDate;
- jobDetail.RecommendLot = balanceDto.Lot;
- jobDetail.RecommendPackingCode = balanceDto.PackingCode;
- jobDetail.RecommendProduceDate = balanceDto.ProduceDate;
- jobDetail.RecommendQty = balanceDto.Qty;
- jobDetail.RecommendSupplierBatch = balanceDto.SupplierBatch;
- jobDetail.RecommendToLocationArea = balanceDto.LocationArea;
- jobDetail.RecommendToLocationCode = balanceDto.LocationCode;
- jobDetail.RecommendToLocationErpCode = balanceDto.LocationErpCode;
- jobDetail.RecommendToLocationGroup = balanceDto.LocationGroup;
- jobDetail.RecommendToWarehouseCode = balanceDto.WarehouseCode;
-
- job.Details.Add(jobDetail);
- }
-
- if (locationDto.Type==EnumLocationType.DimensionalStorehouse)//如果是立库的
- {
- await SendDimensionalStorehouseAsync().ConfigureAwait(false);
- job.JobStatus = EnumJobStatus.Wait;
- }
-
- jobs.Add(job);
- }
+ var jobDetail = new UnplannedReceiptJobDetail();
+ jobDetail.CaseCode = requestDtoDetail.CaseCode;
+ jobDetail.Explain = requestDtoDetail.Explain;
+ jobDetail.OnceBusiCode = requestDtoDetail.OnceBusiCode;
+ jobDetail.ProjCapacityCode = requestDtoDetail.ProjCapacityCode;
+ jobDetail.ReasonCode = requestDtoDetail.ReasonCode;
+ jobDetail.ItemCode = requestDtoDetail.ItemCode;
+ jobDetail.ItemDesc1 = requestDtoDetail.ItemDesc1;
+ jobDetail.ItemDesc2 = requestDtoDetail.ItemDesc2;
+ jobDetail.ItemName = requestDtoDetail.ItemName;
+ job.Details.Add(jobDetail);
}
return jobs;