Browse Source

优化代码

dev_DY_CC
郑勃旭 1 year ago
parent
commit
1efd9162f0
  1. 47
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/IssueRequest/AssembleIssueRequestEventHandler.cs
  2. 44
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/IssueRequest/CoatingIssueRequestEventHandler.cs
  3. 44
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/IssueRequest/InjectionIssueRequestEventHandler.cs
  4. 0
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/IssueRequest/KittingIssueRequestEventHandler.cs
  5. 0
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/IssueRequest/SortBalance.cs
  6. 96
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/Note/CoatingIssueNoteEventHandler.cs

47
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/Issue/AssembleIssueRequestEventHandler.cs → be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/IssueRequest/AssembleIssueRequestEventHandler.cs

@ -1,6 +1,5 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text;
using System.Text.Json; using System.Text.Json;
using System.Threading.Tasks; using System.Threading.Tasks;
using AutoMapper; using AutoMapper;
@ -15,7 +14,6 @@ using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Inventory.Application.Contracts; using Win_in.Sfs.Wms.Inventory.Application.Contracts;
using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain; using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Event.BusinessRequest; namespace Win_in.Sfs.Wms.Store.Event.BusinessRequest;
@ -33,13 +31,11 @@ public class AssembleIssueRequestEventHandler
private readonly ILocationAppService _locationAppService; private readonly ILocationAppService _locationAppService;
private readonly IBalanceAppService _balanceAppService; private readonly IBalanceAppService _balanceAppService;
private IMapper _mapper; private IMapper _mapper;
//private readonly IAssembleIssueRequestManager _assembleIssueRequestManager;
public AssembleIssueRequestEventHandler( public AssembleIssueRequestEventHandler(
IAssembleIssueJobAppService assembleIssueJobAppService, IProductionLineAppService productionLineAppService, IAssembleIssueJobAppService assembleIssueJobAppService, IProductionLineAppService productionLineAppService,
ILocationAppService locationAppService, ILocationAppService locationAppService,
IBalanceAppService balanceAppService, IProductionLineItemAppService productionLineItemAppService IBalanceAppService balanceAppService, IProductionLineItemAppService productionLineItemAppService
//, IAssembleIssueRequestManager assembleIssueRequestManager
) )
{ {
_assembleIssueJobAppService = assembleIssueJobAppService; _assembleIssueJobAppService = assembleIssueJobAppService;
@ -47,7 +43,6 @@ public class AssembleIssueRequestEventHandler
_locationAppService = locationAppService; _locationAppService = locationAppService;
_balanceAppService = balanceAppService; _balanceAppService = balanceAppService;
_productionLineItemAppService = productionLineItemAppService; _productionLineItemAppService = productionLineItemAppService;
//_assembleIssueRequestManager = assembleIssueRequestManager;
} }
/// <summary> /// <summary>
@ -67,8 +62,6 @@ public class AssembleIssueRequestEventHandler
/// <param name="eventData">Event data</param> /// <param name="eventData">Event data</param>
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<List<AssembleIssueRequest>> eventData) public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<List<AssembleIssueRequest>> eventData)
{ {
var entity = eventData.Entity;
await Task.CompletedTask.ConfigureAwait(false); await Task.CompletedTask.ConfigureAwait(false);
} }
@ -102,7 +95,7 @@ public class AssembleIssueRequestEventHandler
public virtual async Task HandleEventAsync(SfsCompletedEntityEventData<AssembleIssueRequest> eventData) public virtual async Task HandleEventAsync(SfsCompletedEntityEventData<AssembleIssueRequest> eventData)
{ {
_ = eventData.Entity; _ = eventData.Entity;
// await _assembleIssueJobAppService.CompleteByAssembleIssueRequestAsync(entity.Number); // await _AssembleIssueJobAppService.CompleteByAssembleIssueRequestAsync(entity.Number);
await Task.CompletedTask.ConfigureAwait(false); await Task.CompletedTask.ConfigureAwait(false);
} }
@ -179,8 +172,8 @@ public class AssembleIssueRequestEventHandler
if (assembleIssueJobDetailInputs.Any()) if (assembleIssueJobDetailInputs.Any())
{ {
var assembleIssueJobEditInput = new AssembleIssueJobEditInput(); var assembleIssueJobEditInput = await BuildAssembleIssueJobCreateInputWithQtyTypeAsync(
assembleIssueJobEditInput = await BuildAssembleIssueJobCreateInputWithQtyTypeAsync(assembleIssueRequest, assembleIssueRequest,
assembleIssueRequestDetails.First()).ConfigureAwait(false); assembleIssueRequestDetails.First()).ConfigureAwait(false);
assembleIssueJobEditInput.Details = assembleIssueJobDetailInputs; assembleIssueJobEditInput.Details = assembleIssueJobDetailInputs;
jobs.Add(assembleIssueJobEditInput); jobs.Add(assembleIssueJobEditInput);
@ -212,7 +205,6 @@ public class AssembleIssueRequestEventHandler
return job; return job;
} }
/// <summary> /// <summary>
/// 构造注塑任务明细-按数量 /// 构造注塑任务明细-按数量
/// </summary> /// </summary>
@ -339,22 +331,19 @@ public class AssembleIssueRequestEventHandler
{ {
var inputJobs = new List<AssembleIssueJobEditInput>(); var inputJobs = new List<AssembleIssueJobEditInput>();
var jobs = await _assembleIssueJobAppService.GetByRequestNumberAsync(assembleIssueRequest.Number).ConfigureAwait(false); var jobs = await _assembleIssueJobAppService.GetByRequestNumberAsync(assembleIssueRequest.Number)
.ConfigureAwait(false);
//已用的库存的集合
useBalanceList = useBalanceList;
foreach (var detail in assembleIssueRequestDetailList) foreach (var detail in assembleIssueRequestDetailList)
{ {
//当前零件的集合 //当前零件的集合
var inputDetails = assembleIssueRequestDetailList; var inputDetails = assembleIssueRequestDetailList;
//获取请求下 这个零件和这个库位一个需要多少箱 //获取请求下 这个零件和这个库位一个需要多少箱
var sumBoxQty = inputDetails.Sum(p => p.BoxQty -jobs.Count); var sumBoxQty = inputDetails.Sum(p => p.BoxQty - jobs.Count);
//获取生产线 //获取生产线
var productionLineDto = await _productionLineAppService var productionLineDto = await _productionLineAppService
.GetByLocationCodeAsync(inputDetails.First().ToLocationCode).ConfigureAwait(false); .GetByLocationCodeAsync(inputDetails.First().ToLocationCode).ConfigureAwait(false);
var productLineCodeAndItemCode = await _productionLineItemAppService var productLineCodeAndItemCode = await _productionLineItemAppService
.GetByProductLineCodeAndItemCodeAsync(productionLineDto.Code, detail.ItemCode) .GetByProductLineCodeAndItemCodeAsync(productionLineDto.Code, detail.ItemCode)
.ConfigureAwait(false); .ConfigureAwait(false);
@ -366,7 +355,8 @@ public class AssembleIssueRequestEventHandler
//可用库存 //可用库存
var usableList = recommendbalanceDtos; var usableList = recommendbalanceDtos;
usableList = usableList.Where(p => !useBalanceList.Select(p => p.PackingCode).Contains(p.PackingCode)) usableList = usableList.Where(p =>
!useBalanceList.Select(balanceDto => balanceDto.PackingCode).Contains(p.PackingCode))
.ToList(); .ToList();
if (usableList.Any()) if (usableList.Any())
{ {
@ -375,7 +365,7 @@ public class AssembleIssueRequestEventHandler
if (usableList.Any()) if (usableList.Any())
{ {
var firstUsable = usableList.First(); var firstUsable = usableList.First();
useBalanceList.Add((BalanceDTO)firstUsable); useBalanceList.Add(firstUsable);
usableList.Remove(firstUsable); usableList.Remove(firstUsable);
var assembleIssueJobEditInput = var assembleIssueJobEditInput =
@ -429,7 +419,6 @@ public class AssembleIssueRequestEventHandler
/// </summary> /// </summary>
/// <param name="assembleIssueRequestDetail"></param> /// <param name="assembleIssueRequestDetail"></param>
/// <param name="balance"></param> /// <param name="balance"></param>
/// <param name="toLocationGroupCode"></param>
/// <returns></returns> /// <returns></returns>
private async Task<AssembleIssueJobDetailInput> BuildAssembleIssueJobDetailWithBoxQtyTypeAsync( private async Task<AssembleIssueJobDetailInput> BuildAssembleIssueJobDetailWithBoxQtyTypeAsync(
AssembleIssueRequestDetail assembleIssueRequestDetail, BalanceDTO balance) AssembleIssueRequestDetail assembleIssueRequestDetail, BalanceDTO balance)
@ -594,8 +583,6 @@ public class AssembleIssueRequestEventHandler
} }
} }
usableList = temp;
assembleIssueJobEditInputs.AddRange( assembleIssueJobEditInputs.AddRange(
await CreateAssembleIssueJobWithQtyTypeAsync(assembleIssueRequest, await CreateAssembleIssueJobWithQtyTypeAsync(assembleIssueRequest,
new List<AssembleIssueRequestDetail> { assembleIssueRequestDetail }, temp, new List<AssembleIssueRequestDetail> { assembleIssueRequestDetail }, temp,
@ -608,7 +595,8 @@ public class AssembleIssueRequestEventHandler
if (assembleIssueJobEditInputs.Count > 0) //有库存 可以创建任务 if (assembleIssueJobEditInputs.Count > 0) //有库存 可以创建任务
{ {
//新增任务 //新增任务
var addAssembleIssueJobDtos = await _assembleIssueJobAppService.CreateManyAsync(assembleIssueJobEditInputs) var addAssembleIssueJobDtos = await _assembleIssueJobAppService
.CreateManyAsync(assembleIssueJobEditInputs)
.ConfigureAwait(false); .ConfigureAwait(false);
await UpdateAssembleIssueRequestDetailQtyAsync(assembleIssueRequest, addAssembleIssueJobDtos) await UpdateAssembleIssueRequestDetailQtyAsync(assembleIssueRequest, addAssembleIssueJobDtos)
@ -665,18 +653,15 @@ public class AssembleIssueRequestEventHandler
requestDetail.ReceivedQty = allReceivedQty; requestDetail.ReceivedQty = allReceivedQty;
} }
} }
//await _assembleIssueRequestManager.UpdateAsync(assembleIssueRequest).ConfigureAwait(false);
} }
/// <summary> /// <summary>
/// 排序规则 1.批次正序 2.底层 3.到货日期正序 4.数量倒序(整箱优先) 5.库位正序 6.箱码正序 /// 排序规则 1.批次正序 2.底层 3.到货日期正序 4.数量倒序(整箱优先) 5.库位正序 6.箱码正序
/// </summary> /// </summary>
/// <param name="balances"></param> /// <param name="balances"></param>
/// <returns></returns> /// <returns></returns>
public async Task<List<SortBalance>> SortByFifoAsync(List<BalanceDTO> balances) public async Task<List<SortBalance>> SortByFifoAsync(List<BalanceDTO> balances)
{ {
var sortBalances = new List<SortBalance>();
var config = new MapperConfiguration(cfg => var config = new MapperConfiguration(cfg =>
{ {
cfg.CreateMap<BalanceDTO, SortBalance>() cfg.CreateMap<BalanceDTO, SortBalance>()
@ -687,15 +672,16 @@ public class AssembleIssueRequestEventHandler
var resultBalances = _mapper.Map<List<BalanceDTO>, List<SortBalance>>(balances); var resultBalances = _mapper.Map<List<BalanceDTO>, List<SortBalance>>(balances);
foreach (var resultBalance in resultBalances) foreach (var resultBalance in resultBalances)
{ {
var locationDto = await _locationAppService.GetByCodeAsync(resultBalance.LocationCode).ConfigureAwait(false); var locationDto =
await _locationAppService.GetByCodeAsync(resultBalance.LocationCode).ConfigureAwait(false);
resultBalance.LocationRow = locationDto.RowCode; resultBalance.LocationRow = locationDto.RowCode;
} }
resultBalances resultBalances = resultBalances
.OrderBy(p => p.Lot) .OrderBy(p => p.Lot)
.ThenBy(p => p.LocationRow) .ThenBy(p => p.LocationRow)
.ThenBy(p => p.PutInTime) .ThenBy(p => p.PutInTime)
.ThenBy(p => p.Qty)//2023-9-14 苑静雯 从小数开始发料 .ThenBy(p => p.Qty) //2023-9-14 苑静雯 从小数开始发料
.ThenBy(p => p.LocationCode) .ThenBy(p => p.LocationCode)
.ThenBy(p => p.PackingCode) .ThenBy(p => p.PackingCode)
.ToList(); .ToList();
@ -703,4 +689,3 @@ public class AssembleIssueRequestEventHandler
return resultBalances; return resultBalances;
} }
} }

44
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/Issue/CoatingIssueRequestEventHandler.cs → be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/IssueRequest/CoatingIssueRequestEventHandler.cs

@ -12,7 +12,6 @@ using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store; using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
using Win_in.Sfs.Shared.Event; using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Inventory.Application.Contracts; using Win_in.Sfs.Wms.Inventory.Application.Contracts;
using Win_in.Sfs.Wms.Inventory.Domain;
using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain; using Win_in.Sfs.Wms.Store.Domain;
@ -32,13 +31,11 @@ public class CoatingIssueRequestEventHandler
private readonly ILocationAppService _locationAppService; private readonly ILocationAppService _locationAppService;
private readonly IBalanceAppService _balanceAppService; private readonly IBalanceAppService _balanceAppService;
private IMapper _mapper; private IMapper _mapper;
//private readonly ICoatingIssueRequestManager _coatingIssueRequestManager;
public CoatingIssueRequestEventHandler( public CoatingIssueRequestEventHandler(
ICoatingIssueJobAppService coatingIssueJobAppService, IProductionLineAppService productionLineAppService, ICoatingIssueJobAppService coatingIssueJobAppService, IProductionLineAppService productionLineAppService,
ILocationAppService locationAppService, ILocationAppService locationAppService,
IBalanceAppService balanceAppService, IProductionLineItemAppService productionLineItemAppService IBalanceAppService balanceAppService, IProductionLineItemAppService productionLineItemAppService
//, ICoatingIssueRequestManager coatingIssueRequestManager
) )
{ {
_coatingIssueJobAppService = coatingIssueJobAppService; _coatingIssueJobAppService = coatingIssueJobAppService;
@ -46,7 +43,6 @@ public class CoatingIssueRequestEventHandler
_locationAppService = locationAppService; _locationAppService = locationAppService;
_balanceAppService = balanceAppService; _balanceAppService = balanceAppService;
_productionLineItemAppService = productionLineItemAppService; _productionLineItemAppService = productionLineItemAppService;
//_coatingIssueRequestManager = coatingIssueRequestManager;
} }
/// <summary> /// <summary>
@ -66,8 +62,6 @@ public class CoatingIssueRequestEventHandler
/// <param name="eventData">Event data</param> /// <param name="eventData">Event data</param>
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<List<CoatingIssueRequest>> eventData) public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<List<CoatingIssueRequest>> eventData)
{ {
var entity = eventData.Entity;
await Task.CompletedTask.ConfigureAwait(false); await Task.CompletedTask.ConfigureAwait(false);
} }
@ -101,7 +95,7 @@ public class CoatingIssueRequestEventHandler
public virtual async Task HandleEventAsync(SfsCompletedEntityEventData<CoatingIssueRequest> eventData) public virtual async Task HandleEventAsync(SfsCompletedEntityEventData<CoatingIssueRequest> eventData)
{ {
_ = eventData.Entity; _ = eventData.Entity;
// await _coatingIssueJobAppService.CompleteByCoatingIssueRequestAsync(entity.Number); // await _CoatingIssueJobAppService.CompleteByCoatingIssueRequestAsync(entity.Number);
await Task.CompletedTask.ConfigureAwait(false); await Task.CompletedTask.ConfigureAwait(false);
} }
@ -178,8 +172,8 @@ public class CoatingIssueRequestEventHandler
if (coatingIssueJobDetailInputs.Any()) if (coatingIssueJobDetailInputs.Any())
{ {
var coatingIssueJobEditInput = new CoatingIssueJobEditInput(); var coatingIssueJobEditInput = await BuildCoatingIssueJobCreateInputWithQtyTypeAsync(
coatingIssueJobEditInput = await BuildCoatingIssueJobCreateInputWithQtyTypeAsync(coatingIssueRequest, coatingIssueRequest,
coatingIssueRequestDetails.First()).ConfigureAwait(false); coatingIssueRequestDetails.First()).ConfigureAwait(false);
coatingIssueJobEditInput.Details = coatingIssueJobDetailInputs; coatingIssueJobEditInput.Details = coatingIssueJobDetailInputs;
jobs.Add(coatingIssueJobEditInput); jobs.Add(coatingIssueJobEditInput);
@ -211,7 +205,6 @@ public class CoatingIssueRequestEventHandler
return job; return job;
} }
/// <summary> /// <summary>
/// 构造注塑任务明细-按数量 /// 构造注塑任务明细-按数量
/// </summary> /// </summary>
@ -338,10 +331,8 @@ public class CoatingIssueRequestEventHandler
{ {
var inputJobs = new List<CoatingIssueJobEditInput>(); var inputJobs = new List<CoatingIssueJobEditInput>();
var jobs = await _coatingIssueJobAppService.GetByRequestNumberAsync(coatingIssueRequest.Number).ConfigureAwait(false); var jobs = await _coatingIssueJobAppService.GetByRequestNumberAsync(coatingIssueRequest.Number)
.ConfigureAwait(false);
//已用的库存的集合
useBalanceList = useBalanceList;
foreach (var detail in coatingIssueRequestDetailList) foreach (var detail in coatingIssueRequestDetailList)
{ {
@ -353,7 +344,6 @@ public class CoatingIssueRequestEventHandler
var productionLineDto = await _productionLineAppService var productionLineDto = await _productionLineAppService
.GetByLocationCodeAsync(inputDetails.First().ToLocationCode).ConfigureAwait(false); .GetByLocationCodeAsync(inputDetails.First().ToLocationCode).ConfigureAwait(false);
var productLineCodeAndItemCode = await _productionLineItemAppService var productLineCodeAndItemCode = await _productionLineItemAppService
.GetByProductLineCodeAndItemCodeAsync(productionLineDto.Code, detail.ItemCode) .GetByProductLineCodeAndItemCodeAsync(productionLineDto.Code, detail.ItemCode)
.ConfigureAwait(false); .ConfigureAwait(false);
@ -365,7 +355,8 @@ public class CoatingIssueRequestEventHandler
//可用库存 //可用库存
var usableList = recommendbalanceDtos; var usableList = recommendbalanceDtos;
usableList = usableList.Where(p => !useBalanceList.Select(p => p.PackingCode).Contains(p.PackingCode)) usableList = usableList.Where(p =>
!useBalanceList.Select(balanceDto => balanceDto.PackingCode).Contains(p.PackingCode))
.ToList(); .ToList();
if (usableList.Any()) if (usableList.Any())
{ {
@ -374,7 +365,7 @@ public class CoatingIssueRequestEventHandler
if (usableList.Any()) if (usableList.Any())
{ {
var firstUsable = usableList.First(); var firstUsable = usableList.First();
useBalanceList.Add((BalanceDTO)firstUsable); useBalanceList.Add(firstUsable);
usableList.Remove(firstUsable); usableList.Remove(firstUsable);
var coatingIssueJobEditInput = var coatingIssueJobEditInput =
@ -428,7 +419,6 @@ public class CoatingIssueRequestEventHandler
/// </summary> /// </summary>
/// <param name="coatingIssueRequestDetail"></param> /// <param name="coatingIssueRequestDetail"></param>
/// <param name="balance"></param> /// <param name="balance"></param>
/// <param name="toLocationGroupCode"></param>
/// <returns></returns> /// <returns></returns>
private async Task<CoatingIssueJobDetailInput> BuildCoatingIssueJobDetailWithBoxQtyTypeAsync( private async Task<CoatingIssueJobDetailInput> BuildCoatingIssueJobDetailWithBoxQtyTypeAsync(
CoatingIssueRequestDetail coatingIssueRequestDetail, BalanceDTO balance) CoatingIssueRequestDetail coatingIssueRequestDetail, BalanceDTO balance)
@ -593,8 +583,6 @@ public class CoatingIssueRequestEventHandler
} }
} }
usableList = temp;
coatingIssueJobEditInputs.AddRange( coatingIssueJobEditInputs.AddRange(
await CreateCoatingIssueJobWithQtyTypeAsync(coatingIssueRequest, await CreateCoatingIssueJobWithQtyTypeAsync(coatingIssueRequest,
new List<CoatingIssueRequestDetail> { coatingIssueRequestDetail }, temp, new List<CoatingIssueRequestDetail> { coatingIssueRequestDetail }, temp,
@ -607,7 +595,8 @@ public class CoatingIssueRequestEventHandler
if (coatingIssueJobEditInputs.Count > 0) //有库存 可以创建任务 if (coatingIssueJobEditInputs.Count > 0) //有库存 可以创建任务
{ {
//新增任务 //新增任务
var addCoatingIssueJobDtos = await _coatingIssueJobAppService.CreateManyAsync(coatingIssueJobEditInputs) var addCoatingIssueJobDtos = await _coatingIssueJobAppService
.CreateManyAsync(coatingIssueJobEditInputs)
.ConfigureAwait(false); .ConfigureAwait(false);
await UpdateCoatingIssueRequestDetailQtyAsync(coatingIssueRequest, addCoatingIssueJobDtos) await UpdateCoatingIssueRequestDetailQtyAsync(coatingIssueRequest, addCoatingIssueJobDtos)
@ -664,18 +653,15 @@ public class CoatingIssueRequestEventHandler
requestDetail.ReceivedQty = allReceivedQty; requestDetail.ReceivedQty = allReceivedQty;
} }
} }
//await _coatingIssueRequestManager.UpdateAsync(coatingIssueRequest).ConfigureAwait(false);
} }
/// <summary> /// <summary>
/// 排序规则 1.批次正序 2.底层 3.到货日期正序 4.数量倒序(整箱优先) 5.库位正序 6.箱码正序 /// 排序规则 1.批次正序 2.底层 3.到货日期正序 4.数量倒序(整箱优先) 5.库位正序 6.箱码正序
/// </summary> /// </summary>
/// <param name="balances"></param> /// <param name="balances"></param>
/// <returns></returns> /// <returns></returns>
public async Task<List<SortBalance>> SortByFifoAsync(List<BalanceDTO> balances) public async Task<List<SortBalance>> SortByFifoAsync(List<BalanceDTO> balances)
{ {
var sortBalances = new List<SortBalance>();
var config = new MapperConfiguration(cfg => var config = new MapperConfiguration(cfg =>
{ {
cfg.CreateMap<BalanceDTO, SortBalance>() cfg.CreateMap<BalanceDTO, SortBalance>()
@ -686,15 +672,16 @@ public class CoatingIssueRequestEventHandler
var resultBalances = _mapper.Map<List<BalanceDTO>, List<SortBalance>>(balances); var resultBalances = _mapper.Map<List<BalanceDTO>, List<SortBalance>>(balances);
foreach (var resultBalance in resultBalances) foreach (var resultBalance in resultBalances)
{ {
var locationDto = await _locationAppService.GetByCodeAsync(resultBalance.LocationCode).ConfigureAwait(false); var locationDto =
await _locationAppService.GetByCodeAsync(resultBalance.LocationCode).ConfigureAwait(false);
resultBalance.LocationRow = locationDto.RowCode; resultBalance.LocationRow = locationDto.RowCode;
} }
resultBalances resultBalances = resultBalances
.OrderBy(p => p.Lot) .OrderBy(p => p.Lot)
.ThenBy(p => p.LocationRow) .ThenBy(p => p.LocationRow)
.ThenBy(p => p.PutInTime) .ThenBy(p => p.PutInTime)
.ThenBy(p => p.Qty)//2023-9-14 苑静雯 从小数开始发料 .ThenBy(p => p.Qty) //2023-9-14 苑静雯 从小数开始发料
.ThenBy(p => p.LocationCode) .ThenBy(p => p.LocationCode)
.ThenBy(p => p.PackingCode) .ThenBy(p => p.PackingCode)
.ToList(); .ToList();
@ -702,4 +689,3 @@ public class CoatingIssueRequestEventHandler
return resultBalances; return resultBalances;
} }
} }

44
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/Issue/InjectionIssueRequestEventHandler.cs → be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/IssueRequest/InjectionIssueRequestEventHandler.cs

@ -12,7 +12,6 @@ using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store; using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
using Win_in.Sfs.Shared.Event; using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Inventory.Application.Contracts; using Win_in.Sfs.Wms.Inventory.Application.Contracts;
using Win_in.Sfs.Wms.Inventory.Domain;
using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain; using Win_in.Sfs.Wms.Store.Domain;
@ -32,13 +31,11 @@ public class InjectionIssueRequestEventHandler
private readonly ILocationAppService _locationAppService; private readonly ILocationAppService _locationAppService;
private readonly IBalanceAppService _balanceAppService; private readonly IBalanceAppService _balanceAppService;
private IMapper _mapper; private IMapper _mapper;
//private readonly IInjectionIssueRequestManager _injectionIssueRequestManager;
public InjectionIssueRequestEventHandler( public InjectionIssueRequestEventHandler(
IInjectionIssueJobAppService injectionIssueJobAppService, IProductionLineAppService productionLineAppService, IInjectionIssueJobAppService injectionIssueJobAppService, IProductionLineAppService productionLineAppService,
ILocationAppService locationAppService, ILocationAppService locationAppService,
IBalanceAppService balanceAppService, IProductionLineItemAppService productionLineItemAppService IBalanceAppService balanceAppService, IProductionLineItemAppService productionLineItemAppService
//, IInjectionIssueRequestManager injectionIssueRequestManager
) )
{ {
_injectionIssueJobAppService = injectionIssueJobAppService; _injectionIssueJobAppService = injectionIssueJobAppService;
@ -46,7 +43,6 @@ public class InjectionIssueRequestEventHandler
_locationAppService = locationAppService; _locationAppService = locationAppService;
_balanceAppService = balanceAppService; _balanceAppService = balanceAppService;
_productionLineItemAppService = productionLineItemAppService; _productionLineItemAppService = productionLineItemAppService;
//_injectionIssueRequestManager = injectionIssueRequestManager;
} }
/// <summary> /// <summary>
@ -66,8 +62,6 @@ public class InjectionIssueRequestEventHandler
/// <param name="eventData">Event data</param> /// <param name="eventData">Event data</param>
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<List<InjectionIssueRequest>> eventData) public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<List<InjectionIssueRequest>> eventData)
{ {
var entity = eventData.Entity;
await Task.CompletedTask.ConfigureAwait(false); await Task.CompletedTask.ConfigureAwait(false);
} }
@ -101,7 +95,7 @@ public class InjectionIssueRequestEventHandler
public virtual async Task HandleEventAsync(SfsCompletedEntityEventData<InjectionIssueRequest> eventData) public virtual async Task HandleEventAsync(SfsCompletedEntityEventData<InjectionIssueRequest> eventData)
{ {
_ = eventData.Entity; _ = eventData.Entity;
// await _injectionIssueJobAppService.CompleteByInjectionIssueRequestAsync(entity.Number); // await _InjectionIssueJobAppService.CompleteByInjectionIssueRequestAsync(entity.Number);
await Task.CompletedTask.ConfigureAwait(false); await Task.CompletedTask.ConfigureAwait(false);
} }
@ -178,8 +172,8 @@ public class InjectionIssueRequestEventHandler
if (injectionIssueJobDetailInputs.Any()) if (injectionIssueJobDetailInputs.Any())
{ {
var injectionIssueJobEditInput = new InjectionIssueJobEditInput(); var injectionIssueJobEditInput = await BuildInjectionIssueJobCreateInputWithQtyTypeAsync(
injectionIssueJobEditInput = await BuildInjectionIssueJobCreateInputWithQtyTypeAsync(injectionIssueRequest, injectionIssueRequest,
injectionIssueRequestDetails.First()).ConfigureAwait(false); injectionIssueRequestDetails.First()).ConfigureAwait(false);
injectionIssueJobEditInput.Details = injectionIssueJobDetailInputs; injectionIssueJobEditInput.Details = injectionIssueJobDetailInputs;
jobs.Add(injectionIssueJobEditInput); jobs.Add(injectionIssueJobEditInput);
@ -211,7 +205,6 @@ public class InjectionIssueRequestEventHandler
return job; return job;
} }
/// <summary> /// <summary>
/// 构造注塑任务明细-按数量 /// 构造注塑任务明细-按数量
/// </summary> /// </summary>
@ -338,22 +331,19 @@ public class InjectionIssueRequestEventHandler
{ {
var inputJobs = new List<InjectionIssueJobEditInput>(); var inputJobs = new List<InjectionIssueJobEditInput>();
var jobs=await _injectionIssueJobAppService.GetByRequestNumberAsync(injectionIssueRequest.Number).ConfigureAwait(false); var jobs = await _injectionIssueJobAppService.GetByRequestNumberAsync(injectionIssueRequest.Number)
.ConfigureAwait(false);
//已用的库存的集合
useBalanceList = useBalanceList;
foreach (var detail in injectionIssueRequestDetailList) foreach (var detail in injectionIssueRequestDetailList)
{ {
//当前零件的集合 //当前零件的集合
var inputDetails = injectionIssueRequestDetailList; var inputDetails = injectionIssueRequestDetailList;
//获取请求下 这个零件和这个库位一需要多少箱 //获取请求下 这个零件和这个库位一需要多少箱
var sumBoxQty = inputDetails.Sum(p => p.BoxQty - jobs.Count); var sumBoxQty = inputDetails.Sum(p => p.BoxQty - jobs.Count);
//获取生产线 //获取生产线
var productionLineDto = await _productionLineAppService var productionLineDto = await _productionLineAppService
.GetByLocationCodeAsync(inputDetails.First().ToLocationCode).ConfigureAwait(false); .GetByLocationCodeAsync(inputDetails.First().ToLocationCode).ConfigureAwait(false);
var productLineCodeAndItemCode = await _productionLineItemAppService var productLineCodeAndItemCode = await _productionLineItemAppService
.GetByProductLineCodeAndItemCodeAsync(productionLineDto.Code, detail.ItemCode) .GetByProductLineCodeAndItemCodeAsync(productionLineDto.Code, detail.ItemCode)
.ConfigureAwait(false); .ConfigureAwait(false);
@ -365,7 +355,8 @@ public class InjectionIssueRequestEventHandler
//可用库存 //可用库存
var usableList = recommendbalanceDtos; var usableList = recommendbalanceDtos;
usableList = usableList.Where(p => !useBalanceList.Select(p => p.PackingCode).Contains(p.PackingCode)) usableList = usableList.Where(p =>
!useBalanceList.Select(balanceDto => balanceDto.PackingCode).Contains(p.PackingCode))
.ToList(); .ToList();
if (usableList.Any()) if (usableList.Any())
{ {
@ -374,7 +365,7 @@ public class InjectionIssueRequestEventHandler
if (usableList.Any()) if (usableList.Any())
{ {
var firstUsable = usableList.First(); var firstUsable = usableList.First();
useBalanceList.Add((BalanceDTO)firstUsable); useBalanceList.Add(firstUsable);
usableList.Remove(firstUsable); usableList.Remove(firstUsable);
var injectionIssueJobEditInput = var injectionIssueJobEditInput =
@ -428,7 +419,6 @@ public class InjectionIssueRequestEventHandler
/// </summary> /// </summary>
/// <param name="injectionIssueRequestDetail"></param> /// <param name="injectionIssueRequestDetail"></param>
/// <param name="balance"></param> /// <param name="balance"></param>
/// <param name="toLocationGroupCode"></param>
/// <returns></returns> /// <returns></returns>
private async Task<InjectionIssueJobDetailInput> BuildInjectionIssueJobDetailWithBoxQtyTypeAsync( private async Task<InjectionIssueJobDetailInput> BuildInjectionIssueJobDetailWithBoxQtyTypeAsync(
InjectionIssueRequestDetail injectionIssueRequestDetail, BalanceDTO balance) InjectionIssueRequestDetail injectionIssueRequestDetail, BalanceDTO balance)
@ -593,8 +583,6 @@ public class InjectionIssueRequestEventHandler
} }
} }
usableList = temp;
injectionIssueJobEditInputs.AddRange( injectionIssueJobEditInputs.AddRange(
await CreateInjectionIssueJobWithQtyTypeAsync(injectionIssueRequest, await CreateInjectionIssueJobWithQtyTypeAsync(injectionIssueRequest,
new List<InjectionIssueRequestDetail> { injectionIssueRequestDetail }, temp, new List<InjectionIssueRequestDetail> { injectionIssueRequestDetail }, temp,
@ -607,7 +595,8 @@ public class InjectionIssueRequestEventHandler
if (injectionIssueJobEditInputs.Count > 0) //有库存 可以创建任务 if (injectionIssueJobEditInputs.Count > 0) //有库存 可以创建任务
{ {
//新增任务 //新增任务
var addInjectionIssueJobDtos = await _injectionIssueJobAppService.CreateManyAsync(injectionIssueJobEditInputs) var addInjectionIssueJobDtos = await _injectionIssueJobAppService
.CreateManyAsync(injectionIssueJobEditInputs)
.ConfigureAwait(false); .ConfigureAwait(false);
await UpdateInjectionIssueRequestDetailQtyAsync(injectionIssueRequest, addInjectionIssueJobDtos) await UpdateInjectionIssueRequestDetailQtyAsync(injectionIssueRequest, addInjectionIssueJobDtos)
@ -664,18 +653,15 @@ public class InjectionIssueRequestEventHandler
requestDetail.ReceivedQty = allReceivedQty; requestDetail.ReceivedQty = allReceivedQty;
} }
} }
//await _injectionIssueRequestManager.UpdateAsync(injectionIssueRequest).ConfigureAwait(false);
} }
/// <summary> /// <summary>
/// 排序规则 1.批次正序 2.底层 3.到货日期正序 4.数量倒序(整箱优先) 5.库位正序 6.箱码正序 /// 排序规则 1.批次正序 2.底层 3.到货日期正序 4.数量倒序(整箱优先) 5.库位正序 6.箱码正序
/// </summary> /// </summary>
/// <param name="balances"></param> /// <param name="balances"></param>
/// <returns></returns> /// <returns></returns>
public async Task<List<SortBalance>> SortByFifoAsync(List<BalanceDTO> balances) public async Task<List<SortBalance>> SortByFifoAsync(List<BalanceDTO> balances)
{ {
var sortBalances = new List<SortBalance>();
var config = new MapperConfiguration(cfg => var config = new MapperConfiguration(cfg =>
{ {
cfg.CreateMap<BalanceDTO, SortBalance>() cfg.CreateMap<BalanceDTO, SortBalance>()
@ -686,7 +672,8 @@ public class InjectionIssueRequestEventHandler
var resultBalances = _mapper.Map<List<BalanceDTO>, List<SortBalance>>(balances); var resultBalances = _mapper.Map<List<BalanceDTO>, List<SortBalance>>(balances);
foreach (var resultBalance in resultBalances) foreach (var resultBalance in resultBalances)
{ {
var locationDto = await _locationAppService.GetByCodeAsync(resultBalance.LocationCode).ConfigureAwait(false); var locationDto =
await _locationAppService.GetByCodeAsync(resultBalance.LocationCode).ConfigureAwait(false);
resultBalance.LocationRow = locationDto.RowCode; resultBalance.LocationRow = locationDto.RowCode;
} }
@ -694,7 +681,7 @@ public class InjectionIssueRequestEventHandler
.OrderBy(p => p.Lot) .OrderBy(p => p.Lot)
.ThenBy(p => p.LocationRow) .ThenBy(p => p.LocationRow)
.ThenBy(p => p.PutInTime) .ThenBy(p => p.PutInTime)
.ThenBy(p => p.Qty)//2023-9-14 苑静雯 从小数开始发料 .ThenBy(p => p.Qty) //2023-9-14 苑静雯 从小数开始发料
.ThenBy(p => p.LocationCode) .ThenBy(p => p.LocationCode)
.ThenBy(p => p.PackingCode) .ThenBy(p => p.PackingCode)
.ToList(); .ToList();
@ -702,4 +689,3 @@ public class InjectionIssueRequestEventHandler
return resultBalances; return resultBalances;
} }
} }

0
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/Issue/KittingIssueRequestEventHandler.cs → be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/IssueRequest/KittingIssueRequestEventHandler.cs

0
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/Issue/SortBalance.cs → be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/IssueRequest/SortBalance.cs

96
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/Note/CoatingIssueNoteEventHandler.cs

@ -1,96 +0,0 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.EventBus;
using Volo.Abp.Uow;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Store.Domain;
namespace Win_in.Sfs.Wms.Store.Event.BusinessRequest;
public class CoatingIssueNoteEventHandler
: StoreEventHandlerBase
, ILocalEventHandler<SfsCreatedEntityEventData<CoatingIssueNote>>
, ILocalEventHandler<SfsCreatedEntityEventData<List<CoatingIssueNote>>>
, ILocalEventHandler<SfsConfirmedEntityEventData<CoatingIssueNote>>
{
private readonly ICoatingIssueRequestManager _materialRequestManager;
public CoatingIssueNoteEventHandler(
ICoatingIssueRequestManager materialRequestManager
)
{
_materialRequestManager = materialRequestManager;
}
/// <summary>
/// 当叫料记录创建后 修改请求的值
/// </summary>
/// <param name="eventData"></param>
/// <returns></returns>
[UnitOfWork]
public virtual async Task HandleEventAsync(SfsConfirmedEntityEventData<CoatingIssueNote> eventData)
{
var entity = eventData.Entity;
await UpdateReceivedQtyMaterialRequestAsync(entity).ConfigureAwait(false);
}
/// <summary>
/// 当叫料记录创建后 修改请求的值
/// </summary>
/// <param name="eventData"></param>
/// <returns></returns>
[UnitOfWork]
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<CoatingIssueNote> eventData)
{
var entity = eventData.Entity;
if (!entity.UseOnTheWayLocation)
{
await UpdateReceivedQtyMaterialRequestAsync(entity).ConfigureAwait(false);
}
}
/// <summary>
/// 当叫料记录创建后 修改请求的值
/// </summary>
/// <param name="eventData"></param>
/// <returns></returns>
[UnitOfWork]
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<List<CoatingIssueNote>> eventData)
{
var entities = eventData.Entity;
foreach (var entity in entities.Where(entity => !entity.UseOnTheWayLocation))
{
await UpdateReceivedQtyMaterialRequestAsync(entity).ConfigureAwait(false);
}
}
private async Task UpdateReceivedQtyMaterialRequestAsync(CoatingIssueNote entity)
{
//var receiveQtyGroup = entity.Details
// .GroupBy(p => new { p.ItemCode, p.ToLocationCode })
// .Select(p => new { p.Key.ItemCode, p.Key.ToLocationCode, Qty = p.Sum(d => d.Qty) })
// .ToList();
//var materialRequest = await _materialRequestManager.GetByNumberAsync(entity.RequestNumber).ConfigureAwait(false);
//if (entity.RequestType != EnumMaterialRequestType.Issue_Direct.ToString())
//{
// //更新叫料请求的已收数量
// foreach (var materialRequestDetail in materialRequest.Details)
// {
// var receiveQty = receiveQtyGroup.FirstOrDefault(p =>
// p.ItemCode == materialRequestDetail.ItemCode &&
// p.ToLocationCode == materialRequestDetail.ToLocationCode)?.Qty;
// if (receiveQty != null)
// {
// materialRequestDetail.ReceivedQty += receiveQty.Value;
// }
// }
//}
}
}
Loading…
Cancel
Save