Browse Source

提交数量bug

dev_DY_CC
赵新宇 7 months ago
parent
commit
be0c8fbc6e
  1. 43
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/UnplannedIssueJobs/UnplannedIssueJobAppService.cs
  2. 5
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs
  3. 10
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/UnplannedIssueNoteEventHandler.cs

43
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 Omu.ValueInjecter;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Data; using Volo.Abp.Data;
using Volo.Abp.Domain.Entities;
using Volo.Abp.ObjectMapping; using Volo.Abp.ObjectMapping;
using Volo.Abp.Uow; using Volo.Abp.Uow;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
@ -37,16 +38,18 @@ public class UnplannedIssueJobAppService
private readonly ILocationAppService _locationAppService; private readonly ILocationAppService _locationAppService;
private readonly IBalanceAppService _balanceAppService; private readonly IBalanceAppService _balanceAppService;
private readonly IExpectOutAppService _expectOutAppService; private readonly IExpectOutAppService _expectOutAppService;
private readonly IUnitOfWorkManager _unitOfWorkManager;
public UnplannedIssueJobAppService( 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 ) ) : base(repository, unplannedIssueJobManager )
{ {
_unplannedIssueJobManager = unplannedIssueJobManager; _unplannedIssueJobManager = unplannedIssueJobManager;
_locationAppService = locationAppService; _locationAppService = locationAppService;
_balanceAppService = balanceAppService; _balanceAppService = balanceAppService;
_expectOutAppService = expectOutAppService; _expectOutAppService = expectOutAppService;
_unitOfWorkManager = unitOfWorkManager;
} }
/// <summary> /// <summary>
@ -97,14 +100,14 @@ public class UnplannedIssueJobAppService
public static string[] GetAllFields(Type type) //public static string[] GetAllFields(Type type)
{ //{
// 获取公共实例字段 // // 获取公共实例字段
var fields = type.GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic); // 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); decimal availableToDeduct = Math.Min(item.Qty, quantityToDeduct - totalDeducted);
item.Qty -= availableToDeduct; item.Qty -= availableToDeduct;
totalDeducted += availableToDeduct; totalDeducted += availableToDeduct;
BalanceDTO dto = new BalanceDTO();
dto.InjectFrom(item);
dto.Qty = availableToDeduct;
balanceDTOs.Add(dto);
// 如果已经扣减达到所需数量,退出循环 // 如果已经扣减达到所需数量,退出循环
if (totalDeducted >= quantityToDeduct) if (totalDeducted >= quantityToDeduct)
{ {
break; break;
} }
BalanceDTO dto = new BalanceDTO();
dto.InjectFrom(item);
dto.Qty = availableToDeduct;
balanceDTOs.Add(dto);
} }
// 返回实际扣减的库存数量 // 返回实际扣减的库存数量
return balanceDTOs; return balanceDTOs;
@ -344,10 +348,12 @@ public class UnplannedIssueJobAppService
public override async Task<UnplannedIssueJobDTO> CompleteAsync(Guid id, UnplannedIssueJobDTO dto) public override async Task<UnplannedIssueJobDTO> CompleteAsync(Guid id, UnplannedIssueJobDTO dto)
{ {
//using (var _uow = new UnitOfWorkManager()) { }
var job = await _repository.GetAsync(id).ConfigureAwait(false); var job = await _repository.GetAsync(id).ConfigureAwait(false);
var handleDto = new UnplannedIssueJobDTO();
using (var uow = _unitOfWorkManager.Begin())
{
// 在工作单元中插入数据
if (job.JobStatus is EnumJobStatus.Closed or EnumJobStatus.Cancelled or EnumJobStatus.None or EnumJobStatus.Done)//需要考虑下 多次提交的问题 所以不判断 进行中 if (job.JobStatus is EnumJobStatus.Closed or EnumJobStatus.Cancelled or EnumJobStatus.None or EnumJobStatus.Done)//需要考虑下 多次提交的问题 所以不判断 进行中
{ {
throw new UserFriendlyException($"任务状态错误:编号为【{job.Number}】的任务已经【{job.JobStatus.GetDisplayName()}】"); throw new UserFriendlyException($"任务状态错误:编号为【{job.Number}】的任务已经【{job.JobStatus.GetDisplayName()}】");
@ -356,7 +362,10 @@ public class UnplannedIssueJobAppService
handleEntity.JobStatus = EnumJobStatus.Done; handleEntity.JobStatus = EnumJobStatus.Done;
var handleResult = await _unplannedIssueJobManager.CompleteAsync(handleEntity, CurrentUser).ConfigureAwait(false); var handleResult = await _unplannedIssueJobManager.CompleteAsync(handleEntity, CurrentUser).ConfigureAwait(false);
var handleDto = ObjectMapper.Map<UnplannedIssueJob, UnplannedIssueJobDTO>(handleResult); handleDto = ObjectMapper.Map<UnplannedIssueJob, UnplannedIssueJobDTO>(handleResult);
await _expectOutAppService.RemoveAsync(dto.Number).ConfigureAwait(false);
};
await UpdateRequestStatusAsync(job.UnplannedIssueRequestNumber).ConfigureAwait(false); await UpdateRequestStatusAsync(job.UnplannedIssueRequestNumber).ConfigureAwait(false);

5
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;
using Volo.Abp.Data; using Volo.Abp.Data;
using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Entities;
using Volo.Abp.Uow;
using Volo.Abp.Users; using Volo.Abp.Users;
using Win_in.Sfs.Auth.Application.Contracts; using Win_in.Sfs.Auth.Application.Contracts;
using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Application.Contracts;
@ -37,13 +38,14 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA
private readonly ILocationAppService _locationAppService; private readonly ILocationAppService _locationAppService;
private readonly ITransactionTypeAclService _transactionTypeAclService; private readonly ITransactionTypeAclService _transactionTypeAclService;
private readonly IUnplannedIssueJobAppService _unplannedIssueJobAppService; private readonly IUnplannedIssueJobAppService _unplannedIssueJobAppService;
private readonly IUnitOfWorkManager _unitOfWorkManager;
//private readonly IExportImportService _excelService; //private readonly IExportImportService _excelService;
public UnplannedIssueRequestForDongyangAppService(IUnplannedIssueRequestRepository repository, public UnplannedIssueRequestForDongyangAppService(IUnplannedIssueRequestRepository repository,
IUnplannedIssueRequestManager unplannedIssueRequestManager, IUnplannedIssueRequestManager unplannedIssueRequestManager,
IDepartmentAppService departmentApp, IBalanceAppService balanceAppService, ILocationAppService locationAppService, IExportImportService excelService, IDepartmentAppService departmentApp, IBalanceAppService balanceAppService, ILocationAppService locationAppService, IExportImportService excelService,
ITransactionTypeAclService transactionTypeAclService, IUnplannedIssueJobAppService unplannedIssueJobAppService ITransactionTypeAclService transactionTypeAclService, IUnplannedIssueJobAppService unplannedIssueJobAppService, IUnitOfWorkManager unitOfWorkManager
) : base( repository, unplannedIssueRequestManager, excelService) ) : base( repository, unplannedIssueRequestManager, excelService)
{ {
_unplannedIssueRequestManager = unplannedIssueRequestManager; _unplannedIssueRequestManager = unplannedIssueRequestManager;
@ -52,6 +54,7 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA
_locationAppService = locationAppService; _locationAppService = locationAppService;
_transactionTypeAclService = transactionTypeAclService; _transactionTypeAclService = transactionTypeAclService;
_unplannedIssueJobAppService = unplannedIssueJobAppService; _unplannedIssueJobAppService = unplannedIssueJobAppService;
_unitOfWorkManager = unitOfWorkManager;
} }
/// <summary> /// <summary>
/// OA创建计划外出库申请 /// OA创建计划外出库申请

10
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)) 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); //await _unplannedIssueRequestApp.CompleteByNumberAsync(entity.UnplannedIssueRequestNumber).ConfigureAwait(false);
if (entity.UnplannedIssueType == EnumUnplannedIssueType.Raw) //if (entity.UnplannedIssueType == EnumUnplannedIssueType.Raw)
{ //{
await ExpectOutAppService.RemoveAsync(entity.JobNumber).ConfigureAwait(false); // await ExpectOutAppService.RemoveAsync(entity.JobNumber).ConfigureAwait(false);
} //}
} }
} }

Loading…
Cancel
Save