diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedIssueJobs/IUnplannedIssueJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedIssueJobs/IUnplannedIssueJobAppService.cs index 7b698d394..bdc757940 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedIssueJobs/IUnplannedIssueJobAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/UnplannedIssueJobs/IUnplannedIssueJobAppService.cs @@ -10,4 +10,8 @@ public interface IUnplannedIssueJobAppService Task CreateByRecommendAsync(UnplannedIssueRequest requestDto); + Task IsAllJobOverByRequestNumberAsync(string requestNumber); + + + } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedIssueRequests/IUnplannedIssueRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedIssueRequests/IUnplannedIssueRequestAppService.cs index df00fd7cf..241aa6cf5 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedIssueRequests/IUnplannedIssueRequestAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/UnplannedIssueRequests/IUnplannedIssueRequestAppService.cs @@ -6,4 +6,7 @@ public interface IUnplannedIssueRequestAppService : ISfsStoreRequestMasterAppServiceBase { Task CreateByOAAsync(UnplannedIssueRequestEditInput input); + Task UpdateStatusByJobAsync(string requestNumber); + + } 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 a91937eb5..97e8d81b1 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 @@ -12,6 +12,7 @@ using Omu.ValueInjecter; using Volo.Abp; using Volo.Abp.Data; using Volo.Abp.ObjectMapping; +using Volo.Abp.Uow; using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Shared.Domain.Entities; using Win_in.Sfs.Shared.Domain.Shared; @@ -30,7 +31,8 @@ public class UnplannedIssueJobAppService : SfsJobAppServiceBase, IUnplannedIssueJobAppService { - + protected IUnplannedIssueRequestAppService UnplannedReceiptRequestAppService => + LazyServiceProvider.LazyGetRequiredService(); private readonly IUnplannedIssueJobManager _unplannedIssueJobManager; private readonly ILocationAppService _locationAppService; private readonly IBalanceAppService _balanceAppService; @@ -62,6 +64,15 @@ public class UnplannedIssueJobAppService } } + private async Task UpdateRequestStatusAsync(string requestNumber) + { + await UnplannedReceiptRequestAppService.UpdateStatusByJobAsync(requestNumber).ConfigureAwait(false); + } + + + + + /// /// 根据储位推荐 @@ -243,6 +254,10 @@ public class UnplannedIssueJobAppService 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(); @@ -348,7 +363,6 @@ public class UnplannedIssueJobAppService await SendDimensionalStorehouseAsync().ConfigureAwait(false); job.JobStatus = EnumJobStatus.Wait; } - jobs.Add(job); } } @@ -399,6 +413,47 @@ public class UnplannedIssueJobAppService return issuenote; } + /// + /// 根据申请单号判断下面的任务是否都是完成或取消 + /// + /// + [HttpPost("is-all-job-over-by-request-number")] + public async Task IsAllJobOverByRequestNumberAsync(string requestNumber) + { + var unplannedRequestJobs = await _repository.GetListAsync(p => p.UnplannedIssueRequestNumber == requestNumber).ConfigureAwait(false); + if (unplannedRequestJobs.Any(p => + p.JobStatus == EnumJobStatus.Open || p.JobStatus == EnumJobStatus.Partial || + p.JobStatus == EnumJobStatus.Doing || p.JobStatus == EnumJobStatus.Wait)) + { + return false; + } + return true; + } + + + [HttpPost("handle/{id}")] + [UnitOfWork] + public override async Task CompleteAsync(Guid id, UnplannedIssueJobDTO dto) + { + var job = await _repository.GetAsync(id).ConfigureAwait(false); + 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); + + var handleResult = await _unplannedIssueJobManager.CompleteAsync(handleEntity, CurrentUser).ConfigureAwait(false); + var handleDto = ObjectMapper.Map(handleResult); + + + await UpdateRequestStatusAsync(job.UnplannedIssueRequestNumber).ConfigureAwait(false); + + + return handleDto; + } + + + diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestAppService.cs index a46cd917a..27a27fffc 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestAppService.cs @@ -77,8 +77,9 @@ public abstract class UnplannedIssueRequestAppService : return dto; } - - - - + [HttpPost("update-status-by-job")] + public virtual async Task UpdateStatusByJobAsync(string requestNumber) + { + throw new System.NotImplementedException(); + } } 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 b67c76e45..5180205ff 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 @@ -36,13 +36,14 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA private readonly IBalanceAppService _balanceAppService; private readonly ILocationAppService _locationAppService; private readonly ITransactionTypeAclService _transactionTypeAclService; + private readonly IUnplannedIssueJobAppService _unplannedIssueJobAppService; //private readonly IExportImportService _excelService; public UnplannedIssueRequestForDongyangAppService(IUnplannedIssueRequestRepository repository, IUnplannedIssueRequestManager unplannedIssueRequestManager, IDepartmentAppService departmentApp, IBalanceAppService balanceAppService, ILocationAppService locationAppService, IExportImportService excelService, - ITransactionTypeAclService transactionTypeAclService + ITransactionTypeAclService transactionTypeAclService, IUnplannedIssueJobAppService unplannedIssueJobAppService ) : base( repository, unplannedIssueRequestManager, excelService) { _unplannedIssueRequestManager = unplannedIssueRequestManager; @@ -50,6 +51,7 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA _balanceAppService = balanceAppService; _locationAppService = locationAppService; _transactionTypeAclService = transactionTypeAclService; + _unplannedIssueJobAppService = unplannedIssueJobAppService; } /// /// OA创建计划外出库申请 @@ -186,6 +188,21 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA return dto; } + + [HttpPost("update-status-by-job")] + public override async Task UpdateStatusByJobAsync(string requestNumber) + { + var flag = await _unplannedIssueJobAppService.IsAllJobOverByRequestNumberAsync(requestNumber).ConfigureAwait(false); + if (flag) + { + var unplannedReceiptRequest = await _repository.FindAsync(p => p.Number == requestNumber).ConfigureAwait(false); + await _repository.UpdateAsync(unplannedReceiptRequest).ConfigureAwait(false); + } + } + + + + private async Task SetDetailPropertiesAsync(UnplannedIssueRequestDetail detail) { var itemBasic = await ItemBasicAclService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false); @@ -469,6 +486,12 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA entity.DirectCreateNote = tranType.DirectCreateNote; } + + + + + + #endregion #region 校验 diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedIssueJobEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedIssueJobEventHandler.cs index d9d76b371..0b76e9a35 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedIssueJobEventHandler.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/UnplannedIssueJobEventHandler.cs @@ -3,12 +3,15 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Threading.Tasks; +using Volo.Abp.Domain.Repositories; using Volo.Abp.EventBus; +using Volo.Abp.EventBus.Local; using Volo.Abp.Uow; using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Event; using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Domain; +using static Quartz.Logging.OperationName; namespace Win_in.Sfs.Wms.Store.Event.BusinessJob; @@ -47,6 +50,18 @@ public class UnplannedIssueJobEventHandler : var note = BuildUnplannedIssueNoteCreateInput(entity); await _noteApp.CreateAsync(note).ConfigureAwait(false); + entity.JobStatus=EnumJobStatus.Done; + + + //job.CompleteUserName = worker; + //job.JobStatus = EnumJobStatus.Done; + //job = await _repository.UpdateAsync(job).ConfigureAwait(false); + //await LocalEventBus.PublishAsync(new SfsCompletedEntityEventData(job), false).ConfigureAwait(false); + //await UpdateRequestStatusAsync(job.UnplannedReceiptRequestNumber).ConfigureAwait(false); + + + + } [UnitOfWork] 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 a1da37d65..39629793f 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 @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Linq; using System.Threading.Tasks; using Volo.Abp.Domain.Entities; using Volo.Abp.EventBus; @@ -23,8 +24,9 @@ public class UnplannedIssueNoteEventHandler private const EnumTransType TransType = EnumTransType.UnplannedIssue; private readonly IUnplannedIssueRequestAppService _unplannedIssueRequestApp; + private readonly IUnplannedIssueJobAppService _unplannedIssueJobApp; - public UnplannedIssueNoteEventHandler(IUnplannedIssueRequestAppService unplannedIssueRequestApp) + public UnplannedIssueNoteEventHandler(IUnplannedIssueRequestAppService unplannedIssueRequestApp,IUnplannedIssueJobAppService _unplannedIssueJobApp) { this._unplannedIssueRequestApp = unplannedIssueRequestApp; } @@ -37,10 +39,11 @@ public class UnplannedIssueNoteEventHandler if (!string.IsNullOrEmpty(entity.UnplannedIssueRequestNumber)) { - await _unplannedIssueRequestApp.CompleteByNumberAsync(entity.UnplannedIssueRequestNumber).ConfigureAwait(false); + + //await _unplannedIssueRequestApp.CompleteByNumberAsync(entity.UnplannedIssueRequestNumber).ConfigureAwait(false); if (entity.UnplannedIssueType == EnumUnplannedIssueType.Raw) { - await ExpectOutAppService.RemoveAsync(entity.UnplannedIssueRequestNumber).ConfigureAwait(false); + await ExpectOutAppService.RemoveAsync(entity.JobNumber).ConfigureAwait(false); } } }