From be0c8fbc6e5d9fe62dd26b937cb2f1dba047a3ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A6=20=E8=B5=B5?= <89237069@qq.com> Date: Wed, 16 Oct 2024 17:05:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=95=B0=E9=87=8Fbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UnplannedIssueJobAppService.cs | 57 +++++++++++-------- ...lannedIssueRequestForDongyangAppService.cs | 5 +- .../UnplannedIssueNoteEventHandler.cs | 10 ++-- 3 files changed, 42 insertions(+), 30 deletions(-) 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 d927fe72a..7b3b7728e 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 @@ -11,6 +11,7 @@ using Microsoft.AspNetCore.Mvc; using Omu.ValueInjecter; using Volo.Abp; using Volo.Abp.Data; +using Volo.Abp.Domain.Entities; using Volo.Abp.ObjectMapping; using Volo.Abp.Uow; using Win_in.Sfs.Basedata.Application.Contracts; @@ -37,16 +38,18 @@ public class UnplannedIssueJobAppService private readonly ILocationAppService _locationAppService; private readonly IBalanceAppService _balanceAppService; private readonly IExpectOutAppService _expectOutAppService; + private readonly IUnitOfWorkManager _unitOfWorkManager; public UnplannedIssueJobAppService( - IUnplannedIssueJobRepository repository, IUnplannedIssueJobManager unplannedIssueJobManager, ILocationAppService locationAppService, IBalanceAppService balanceAppService, IExpectOutAppService expectOutAppService + IUnplannedIssueJobRepository repository, IUnplannedIssueJobManager unplannedIssueJobManager, ILocationAppService locationAppService, + IBalanceAppService balanceAppService, IExpectOutAppService expectOutAppService, IUnitOfWorkManager unitOfWorkManager ) : base(repository, unplannedIssueJobManager ) { _unplannedIssueJobManager = unplannedIssueJobManager; _locationAppService = locationAppService; _balanceAppService = balanceAppService; _expectOutAppService = expectOutAppService; - + _unitOfWorkManager = unitOfWorkManager; } /// @@ -97,14 +100,14 @@ public class UnplannedIssueJobAppService - public static string[] GetAllFields(Type type) - { - // 获取公共实例字段 - var fields = type.GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic); + //public static string[] GetAllFields(Type type) + //{ + // // 获取公共实例字段 + // var fields = type.GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic); - // 返回字段名称 - return fields.Select(f => f.Name).ToArray(); - } + // // 返回字段名称 + // return fields.Select(f => f.Name).ToArray(); + //} @@ -117,15 +120,16 @@ public class UnplannedIssueJobAppService decimal availableToDeduct = Math.Min(item.Qty, quantityToDeduct - totalDeducted); item.Qty -= availableToDeduct; totalDeducted += availableToDeduct; - BalanceDTO dto = new BalanceDTO(); - dto.InjectFrom(item); - dto.Qty = availableToDeduct; - balanceDTOs.Add(dto); + // 如果已经扣减达到所需数量,退出循环 if (totalDeducted >= quantityToDeduct) { break; } + BalanceDTO dto = new BalanceDTO(); + dto.InjectFrom(item); + dto.Qty = availableToDeduct; + balanceDTOs.Add(dto); } // 返回实际扣减的库存数量 return balanceDTOs; @@ -344,21 +348,26 @@ public class UnplannedIssueJobAppService public override async Task CompleteAsync(Guid id, UnplannedIssueJobDTO dto) { - - //using (var _uow = new UnitOfWorkManager()) { } - - var job = await _repository.GetAsync(id).ConfigureAwait(false); - if (job.JobStatus is EnumJobStatus.Closed or EnumJobStatus.Cancelled or EnumJobStatus.None or EnumJobStatus.Done)//需要考虑下 多次提交的问题 所以不判断 进行中 + var job = await _repository.GetAsync(id).ConfigureAwait(false); + var handleDto = new UnplannedIssueJobDTO(); + using (var uow = _unitOfWorkManager.Begin()) { - throw new UserFriendlyException($"任务状态错误:编号为【{job.Number}】的任务已经【{job.JobStatus.GetDisplayName()}】"); - } - var handleEntity = ObjectMapper.Map(dto); + // 在工作单元中插入数据 + + if (job.JobStatus is EnumJobStatus.Closed or EnumJobStatus.Cancelled or EnumJobStatus.None or EnumJobStatus.Done)//需要考虑下 多次提交的问题 所以不判断 进行中 + { + throw new UserFriendlyException($"任务状态错误:编号为【{job.Number}】的任务已经【{job.JobStatus.GetDisplayName()}】"); + } + var handleEntity = ObjectMapper.Map(dto); - handleEntity.JobStatus = EnumJobStatus.Done; - var handleResult = await _unplannedIssueJobManager.CompleteAsync(handleEntity, CurrentUser).ConfigureAwait(false); - var handleDto = ObjectMapper.Map(handleResult); + handleEntity.JobStatus = EnumJobStatus.Done; + var handleResult = await _unplannedIssueJobManager.CompleteAsync(handleEntity, CurrentUser).ConfigureAwait(false); + handleDto = ObjectMapper.Map(handleResult); + await _expectOutAppService.RemoveAsync(dto.Number).ConfigureAwait(false); + }; + await UpdateRequestStatusAsync(job.UnplannedIssueRequestNumber).ConfigureAwait(false); diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs index 1f26798b7..67e499d38 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs @@ -12,6 +12,7 @@ using Omu.ValueInjecter; using Volo.Abp; using Volo.Abp.Data; using Volo.Abp.Domain.Entities; +using Volo.Abp.Uow; using Volo.Abp.Users; using Win_in.Sfs.Auth.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts; @@ -37,13 +38,14 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA private readonly ILocationAppService _locationAppService; private readonly ITransactionTypeAclService _transactionTypeAclService; private readonly IUnplannedIssueJobAppService _unplannedIssueJobAppService; + private readonly IUnitOfWorkManager _unitOfWorkManager; //private readonly IExportImportService _excelService; public UnplannedIssueRequestForDongyangAppService(IUnplannedIssueRequestRepository repository, IUnplannedIssueRequestManager unplannedIssueRequestManager, IDepartmentAppService departmentApp, IBalanceAppService balanceAppService, ILocationAppService locationAppService, IExportImportService excelService, - ITransactionTypeAclService transactionTypeAclService, IUnplannedIssueJobAppService unplannedIssueJobAppService + ITransactionTypeAclService transactionTypeAclService, IUnplannedIssueJobAppService unplannedIssueJobAppService, IUnitOfWorkManager unitOfWorkManager ) : base( repository, unplannedIssueRequestManager, excelService) { _unplannedIssueRequestManager = unplannedIssueRequestManager; @@ -52,6 +54,7 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA _locationAppService = locationAppService; _transactionTypeAclService = transactionTypeAclService; _unplannedIssueJobAppService = unplannedIssueJobAppService; + _unitOfWorkManager = unitOfWorkManager; } /// /// OA创建计划外出库申请 diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/UnplannedIssueNoteEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/UnplannedIssueNoteEventHandler.cs index bbaf0d010..e756006f9 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/UnplannedIssueNoteEventHandler.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/UnplannedIssueNoteEventHandler.cs @@ -40,12 +40,12 @@ public class UnplannedIssueNoteEventHandler if (!string.IsNullOrEmpty(entity.UnplannedIssueRequestNumber)) { - await _unplannedIssueRequestApp.UpdateStatusByJobAsync(entity.UnplannedIssueRequestNumber).ConfigureAwait(false); + //await _unplannedIssueRequestApp.UpdateStatusByJobAsync(entity.UnplannedIssueRequestNumber).ConfigureAwait(false); //await _unplannedIssueRequestApp.CompleteByNumberAsync(entity.UnplannedIssueRequestNumber).ConfigureAwait(false); - if (entity.UnplannedIssueType == EnumUnplannedIssueType.Raw) - { - await ExpectOutAppService.RemoveAsync(entity.JobNumber).ConfigureAwait(false); - } + //if (entity.UnplannedIssueType == EnumUnplannedIssueType.Raw) + //{ + // await ExpectOutAppService.RemoveAsync(entity.JobNumber).ConfigureAwait(false); + //} } }