Browse Source

修改 报废

集成Redis
郑勃旭 2 years ago
parent
commit
ee94377aa7
  1. 1
      be/Hosts/Wms.Host/Win_in.Sfs.Wms.Store.HttpApi.Host/scripts/db.Microsoft.EntityFrameworkCore.SqlServer.StoreDbContext.sql
  2. 6
      be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Inventory/EnumTransSubType.cs
  3. 10
      be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumScrapType.cs
  4. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Bases/DTOs/SfsJobRecommendFromDetailDTOBase.cs
  5. 15
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ScrapRequests/Inputs/ScrapRequestImportInput.cs
  6. 270
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/PurchaseReturnRequests/PurchaseReturnRequestAppService.cs
  7. 22
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ScrapRequests/ScrapRequestAppService.cs
  8. 6
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/PurchaseReturnJobs/PurchaseReturnJob.cs
  9. 8
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/PurchaseReturnJobs/PurchaseReturnJobManager.cs
  10. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/DeliverJobAutoMapperProfile.cs
  11. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/DeliverRequestMapperProfile.cs
  12. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/PurchaseReturnRequestAutoMapperProfile.cs
  13. 63
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/PurchaseReturnRequestEventHandler.cs

1
be/Hosts/Wms.Host/Win_in.Sfs.Wms.Store.HttpApi.Host/scripts/db.Microsoft.EntityFrameworkCore.SqlServer.StoreDbContext.sql

@ -700,6 +700,7 @@ CREATE TABLE [Store_DeliverNote] (
[DeliverTime] datetime2 NOT NULL,
[DeliverRequestNumber] nvarchar(max) NULL,
[DeliverRequestType] nvarchar(64) NOT NULL,
[CountPrint] int NOT NULL,
[ExtraProperties] nvarchar(max) NULL,
[ConcurrencyStamp] nvarchar(40) NULL,
[CreationTime] datetime2 NOT NULL,

6
be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Inventory/EnumTransSubType.cs

@ -85,6 +85,12 @@ public enum EnumTransSubType
[Display(Name = "人工报废")]
Scrap_Manual = 3601,
/// <summary>
/// 完工报废
/// </summary>
[Display(Name = "完工报废")]
Scrap_Product = 3604,
/// <summary>
/// 线边调整
/// </summary>

10
be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumScrapType.cs

@ -5,9 +5,9 @@ namespace Win_in.Sfs.Shared.Domain.Shared;
public enum EnumScrapType
{
/// <summary>
/// 人工报废
/// 人工报废(原料报废)
/// </summary>
[Display(Name = "人工报废")]
[Display(Name = "人工报废(原料报废)")]
Scrap_Manual = 3601,
/// <summary>
@ -15,4 +15,10 @@ public enum EnumScrapType
/// </summary>
[Display(Name = "线边报废")]
Scrap_WIP = 3603,
/// <summary>
/// 完工报废
/// </summary>
[Display(Name = "完工报废")]
Scrap_Product = 3604,
}

7
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Bases/DTOs/SfsJobRecommendFromDetailDTOBase.cs

@ -220,10 +220,13 @@ public abstract class SfsJobRecommendFromDetailDTOBase
HandledProduceDate = RecommendProduceDate;
HandledExpireDate = RecommendExpireDate;
HandledLot = RecommendLot;
HandledQty = RecommendQty;
HandledFromLocationCode = RecommendFromLocationCode;
HandledFromLocationErpCode = RecommendFromLocationErpCode;
HandledQty = RecommendQty;
HandledFromLocationArea= RecommendFromLocationArea;
HandledFromWarehouseCode= RecommendFromWarehouseCode;
HandledFromLocationGroup = RecommendFromLocationGroup;
}
}

15
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ScrapRequests/Inputs/ScrapRequestImportInput.cs

@ -1,4 +1,6 @@
using System.ComponentModel.DataAnnotations;
using DocumentFormat.OpenXml.Wordprocessing;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
@ -7,11 +9,16 @@ namespace Win_in.Sfs.Wms.Store.Application.Contracts;
public class ScrapRequestImportInput : SfsStoreImportInputBase
{
/// <summary>
/// 类型
/// 报废类型
/// </summary>
[Display(Name = "类型")]
[Required]
public EnumScrapType Type { get; set; }
[Display(Name = "报废类型")]
[Required(ErrorMessage = "{0}是必填项")]
[ImporterHeader(Name = "报废类型")]
[ExporterHeader(DisplayName = "报废类型")]
[ValueMapping("线边报废", EnumTransSubType.Scrap_WIP)]
[ValueMapping("原料报废", EnumTransSubType.Scrap_Manual)]
[ValueMapping("完工报废", EnumTransSubType.Scrap_Product)]
public string Type { get; set; }
/// <summary>
/// 物料代码

270
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/PurchaseReturnRequests/PurchaseReturnRequestAppService.cs

@ -6,7 +6,9 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Volo.Abp;
using Volo.Abp.Domain.Entities;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Label.Application.Contracts;
using Win_in.Sfs.Label.Domain;
@ -14,6 +16,7 @@ using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
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.Domain;
using Win_in.Sfs.Wms.Store.Domain.Shared;
@ -30,18 +33,22 @@ public class PurchaseReturnRequestAppService :
SfsStoreRequestAppServiceBase
<PurchaseReturnRequest, PurchaseReturnRequestDTO, SfsStoreRequestInputBase, PurchaseReturnRequestEditInput, PurchaseReturnRequestDetail, PurchaseReturnRequestDetailDTO, SfsStoreRequestInputBase, PurchaseReturnRequestImportInput>, IPurchaseReturnRequestAppService
{
private readonly IPurchaseReturnRequestManager _purchaseReturnRequestManager;
private readonly IInventoryLabelAppService _inventoryLabelApp;
private readonly ILocationAppService _locationAppService;
private readonly ITransactionTypeAppService _transactionTypeAppService;
private readonly IPurchaseReturnRequestManager _purchaseReturnRequestManager;
public PurchaseReturnRequestAppService(
IPurchaseReturnRequestRepository repository,
IPurchaseReturnRequestManager purchaseReturnRequestManager,
IInventoryLabelAppService inventoryLabelApp
) : base(repository, purchaseReturnRequestManager)
IInventoryLabelAppService inventoryLabelApp,
ILocationAppService locationAppService,
ITransactionTypeAppService transactionTypeAppService) : base(repository, purchaseReturnRequestManager)
{
_purchaseReturnRequestManager = purchaseReturnRequestManager;
this._inventoryLabelApp = inventoryLabelApp;
_inventoryLabelApp = inventoryLabelApp;
_locationAppService = locationAppService;
_transactionTypeAppService = transactionTypeAppService;
base.CreatePolicyName = PurchaseReturnRequestPermissions.Create;
base.UpdatePolicyName = PurchaseReturnRequestPermissions.Update;
@ -55,6 +62,102 @@ public class PurchaseReturnRequestAppService :
throw new NotImplementedException();
}
#region 东阳
protected override async Task<Dictionary<PurchaseReturnRequest, EntityState>> ImportProcessingEntityAsync(Dictionary<PurchaseReturnRequest, EntityState> dictionary)
{
var addList = dictionary.Where(p => p.Value == EntityState.Added).Select(p => p.Key);
foreach (var purchaseReturnRequest in addList)
{
await SetRequestAutoPropertiesAsync(purchaseReturnRequest).ConfigureAwait(false);
purchaseReturnRequest.Worker = CurrentUser.GetUserName();
purchaseReturnRequest.CreatorId = CurrentUser.Id;
foreach (var detail in purchaseReturnRequest.Details)
{
//通过箱标签 查找标签服务 构造其他字段
var labelDto = await _inventoryLabelApp.GetByCodeAsync(detail.PackingCode).ConfigureAwait(false);
var balanceDto = await BalanceAclService.GetByPackingCodeAsync(detail.PackingCode).ConfigureAwait(false);
var locationDto= await _locationAppService.GetByCodeAsync(balanceDto.LocationCode).ConfigureAwait(false);
purchaseReturnRequest.AsnNumber = labelDto.AsnNumber;
purchaseReturnRequest.RpNumber = labelDto.RpNumber;
purchaseReturnRequest.ReturnTime=DateTime.Now;
purchaseReturnRequest.SupplierCode= labelDto.SupplierCode;
purchaseReturnRequest.ReturnType = EnumPurchaseReturnType.AfterPuton;
purchaseReturnRequest.PoNumber = labelDto.PoNumber;
await SetDetailPropertiesAsync(detail, labelDto, balanceDto,locationDto).ConfigureAwait(false);
}
}
return dictionary;
}
/// <summary>
/// 赋值Request业务属性
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
private async Task SetRequestAutoPropertiesAsync(PurchaseReturnRequest entity)
{
var tranType = await _transactionTypeAppService.GetByTransTypeAsync(EnumTransType.PurchaseReturn, EnumTransSubType.None).ConfigureAwait(false);
Check.NotNull(tranType, "事务类型", "事务类型不存在");
entity.AutoCompleteJob = tranType.AutoCompleteJob;
entity.AutoSubmit = tranType.AutoSubmitRequest;
entity.AutoAgree = tranType.AutoAgreeRequest;
entity.AutoHandle = tranType.AutoHandleRequest;
entity.DirectCreateNote = tranType.DirectCreateNote;
}
/// <summary>
/// 赋值详情
/// </summary>
/// <param name="labelDto"></param>
/// <param name="balanceDto"></param>
/// <returns></returns>
private async Task SetDetailPropertiesAsync(
PurchaseReturnRequestDetail detail,
InventoryLabelDto labelDto,
BalanceDTO balanceDto,
LocationDTO locationDto)
{
if (labelDto != null)
{
detail.PoNumber = labelDto.PoNumber;
}
if (balanceDto != null)
{
detail.PackingCode = balanceDto.PackingCode;
detail.ContainerCode = balanceDto.ContainerCode;
detail.WarehouseCode = locationDto.WarehouseCode;
detail.LocationCode = balanceDto.LocationCode;
detail.LocationErpCode = locationDto.ErpLocationCode;
detail.LocationArea = locationDto.AreaCode;
detail.LocationGroup = locationDto.LocationGroupCode;
detail.Status = balanceDto.Status;
detail.Lot = balanceDto.Lot;
detail.SupplierBatch = balanceDto.SupplierBatch;
detail.Uom = balanceDto.Uom;
detail.ArriveDate = balanceDto.ArriveDate;
detail.ProduceDate = balanceDto.ProduceDate;
detail.ExpireDate = balanceDto.ExpireDate;
detail.ItemName = balanceDto.ItemName;
detail.ItemDesc1 = balanceDto.ItemDesc1;
detail.ItemDesc2 = balanceDto.ItemDesc2;
detail.StdPackQty = balanceDto.StdPackQty;
detail.Qty = balanceDto.Qty;
}
}
#endregion
#region 校验
protected virtual async Task CheckImportInputBusinessAsync(PurchaseReturnRequestImportInput importInput, EnumImportMethod importMethod, List<ValidationResult> validationRresult)
{
//await base.CheckImportInputBusinessAsync(importInput, importMethod);
@ -140,162 +243,6 @@ public class PurchaseReturnRequestAppService :
return transactionType;
}
protected virtual async Task ImportDataAsync(List<PurchaseReturnRequest> entites, List<PurchaseReturnRequest> deleteEntities)
{
await _purchaseReturnRequestManager.ImportDataAsync(entites, deleteEntities).ConfigureAwait(false);
}
protected override Func<PurchaseReturnRequestImportInput, object> GetEntityExpression()
{
return p => (1);
}
protected virtual async Task<(List<PurchaseReturnRequest> entites, List<PurchaseReturnRequest> deleteEntities)> BuildImportDataAsync(ImportResult<PurchaseReturnRequestImportInput> importResult, EnumImportMethod importMethod = EnumImportMethod.Update, bool isAllowPartImport = false)
{
if (importResult.Data.Any(t => t.ReportStatus == EnumImportReportStatus.Failed))
{
if (!isAllowPartImport)
{
return (null, null);
}
}
var entites = new List<PurchaseReturnRequest>();
var details = new List<PurchaseReturnRequestDetail>();
var deleteEntites = new List<PurchaseReturnRequest>();
var entityExpression = GetEntityExpression();
var groupList = importResult.Data.ToList().GroupBy(entityExpression).Distinct().ToList();
foreach (var group in groupList)
{
var input = group.FirstOrDefault();
var inputDetails = group.ToList();
if (!inputDetails.Any(t => t.ReportStatus == EnumImportReportStatus.Failed))
{
var exist = await GetEntityAsync(input).ConfigureAwait(false);
var entity = ObjectMapper.Map<PurchaseReturnRequestImportInput, PurchaseReturnRequest>(input);
await SetEntityPropertiesAsync(entity, input).ConfigureAwait(false);
switch (importMethod)
{
case EnumImportMethod.Update:
if (exist != null)
{
entity.SetId(exist.Id);
}
break;
case EnumImportMethod.Replace:
if (exist != null)
{
deleteEntites.Add(exist);
}
break;
}
foreach (var inputDetail in inputDetails)
{
var detail = ObjectMapper.Map<PurchaseReturnRequestImportInput, PurchaseReturnRequestDetail>(inputDetail);
detail.SetIdAndNumber(GuidGenerator, entity.Id, entity.Number);
await SetDetailPropertiesAsync(detail, inputDetail).ConfigureAwait(false);
entity.AddDetail(detail);
}
entites.Add(entity);
}
}
return (entites, deleteEntites);
}
private async Task SetDetailPropertiesAsync(
PurchaseReturnRequestDetail detail,
PurchaseReturnRequestImportInput input)
{
//通过箱标签 查找标签服务 构造其他字段
var label = await _inventoryLabelApp.GetByCodeAsync(input.PackingCode).ConfigureAwait(false);
if (label != null)
{
detail.PoNumber = label.PoNumber;
}
var balance = await BalanceAclService.GetByPackingCodeAsync(input.PackingCode).ConfigureAwait(false);
if (balance != null)
{
detail.PackingCode = balance.PackingCode;
detail.ContainerCode = balance.ContainerCode;
detail.LocationCode = balance.LocationCode;
detail.LocationErpCode = balance.LocationErpCode;
detail.WarehouseCode = balance.WarehouseCode;
detail.Status = balance.Status;
detail.Lot = balance.Lot;
detail.SupplierBatch = balance.SupplierBatch;
detail.ArriveDate = balance.ArriveDate;
detail.ProduceDate = balance.ProduceDate;
detail.ExpireDate = balance.ExpireDate;
detail.ItemName = balance.ItemName;
detail.ItemDesc1 = balance.ItemDesc1;
detail.ItemDesc2 = balance.ItemDesc2;
detail.StdPackQty = balance.StdPackQty;
detail.Qty = balance.Qty;
}
}
private async Task SetEntityPropertiesAsync(PurchaseReturnRequest entity, PurchaseReturnRequestImportInput input)
{
entity.Worker = CurrentUser.GetUserName();
//通过箱标签 查找标签服务 构造其他字段
var label = await _inventoryLabelApp.GetByCodeAsync(input.PackingCode).ConfigureAwait(false);
Check.NotNull(label, nameof(InventoryLabel));
entity.RpNumber = label.RpNumber;
entity.AsnNumber = label.AsnNumber;
entity.PoNumber = label.PoNumber;
var balance = await BalanceAclService.GetByPackingCodeAsync(input.PackingCode).ConfigureAwait(false);
Check.NotNull(balance, nameof(BalanceDTO));
//var order = await this._orderAppService.GetByNumberAsync(label.PoNumber);
//Check.NotNull(order, nameof(PurchaseOrder));
entity.SupplierCode = label.SupplierCode;
entity.ReturnTime = DateTime.Now;
await SetRequestAutoPropertiesAsync(entity).ConfigureAwait(false);
}
private async Task SetRequestAutoPropertiesAsync(PurchaseReturnRequest entity)
{
var tranType = await TransactionTypeAclService.GetByTransTypeAsync(EnumTransType.PurchaseReturn, EnumTransSubType.None).ConfigureAwait(false);
Check.NotNull(tranType, "事务类型", "事务类型不存在");
entity.AutoCompleteJob = tranType.AutoCompleteJob;
entity.AutoSubmit = tranType.AutoSubmitRequest;
entity.AutoAgree = tranType.AutoAgreeRequest;
entity.AutoHandle = tranType.AutoHandleRequest;
entity.DirectCreateNote = tranType.DirectCreateNote;
}
/// <summary>
/// 被 TransactionTypeHelper.CheckTransactionType()取代
/// </summary>
@ -375,4 +322,5 @@ public class PurchaseReturnRequestAppService :
}
#endregion
}

22
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ScrapRequests/ScrapRequestAppService.cs

@ -66,11 +66,27 @@ public class ScrapRequestAppService : SfsStoreRequestAppServiceBase
{
scrapRequest.CreatorId = CurrentUser.Id;
scrapRequest.Worker = CurrentUser.Name;
scrapRequest.Type = EnumTransSubType.Scrap_WIP.ToString();
scrapRequest.ActiveDate = DateTime.Now;
scrapRequest.Type = scrapRequest.Type;
EnumTransSubType enumTransSubType = 0;
if (scrapRequest.Type == "原料报废")
{
enumTransSubType = EnumTransSubType.Scrap_Manual;
}
if (scrapRequest.Type== "线边报废")
{
enumTransSubType = EnumTransSubType.Scrap_WIP;
}
if (scrapRequest.Type == "完工报废")
{
enumTransSubType = EnumTransSubType.Scrap_Product;
}
await SetEntityPropertiesAsync(scrapRequest, EnumTransSubType.Scrap_WIP).ConfigureAwait(false);
await SetEntityPropertiesAsync(scrapRequest, enumTransSubType).ConfigureAwait(false);
foreach (var detail in scrapRequest.Details)
{

6
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/PurchaseReturnJobs/PurchaseReturnJob.cs

@ -78,14 +78,18 @@ public class PurchaseReturnJob : SfsJobAggregateRootBase<PurchaseReturnJobDetail
/// <param name="handledPackingCode"></param>
/// <param name="reason"></param>
/// <returns></returns>
public virtual async Task SetDetail(Guid id, string handledLocationCode, string handledLocationErpCode, string handledWarehouseCode, decimal handledQty,
public virtual async Task SetDetail(Guid id, string handledLocationCode, string handledLocationErpCode, string handledWarehouseCode,string handledFromLocationArea,string handledFromLocationGroup, decimal handledQty,
string handledSupplierBatch, DateTime handledArriveDate, DateTime handledProduceDate, DateTime handledExpireDate, string handledContainerCode, string handledLot, string handledPackingCode, string reason)
{
var detail = GetDetail(id);
detail.HandledFromLocationCode = handledLocationCode;
detail.HandledFromLocationErpCode = handledLocationErpCode;
detail.HandledFromLocationArea = handledFromLocationArea;
detail.HandledFromWarehouseCode = handledWarehouseCode;
detail.HandledFromLocationGroup = handledFromLocationGroup;
detail.HandledQty = handledQty;
detail.HandledSupplierBatch = handledSupplierBatch;
detail.HandledArriveDate = handledArriveDate;
detail.HandledProduceDate = handledProduceDate;

8
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/PurchaseReturnJobs/PurchaseReturnJobManager.cs

@ -35,13 +35,19 @@ public class PurchaseReturnJobManager : SfsJobManagerBase<PurchaseReturnJob, Pur
foreach (var detail in input.Details)
{
var details = entity.Details.First(p => p.Id == detail.Id);
await entity.SetDetail(
detail.Id,
detail.HandledFromLocationCode,
detail.HandledFromLocationErpCode,
detail.HandledFromWarehouseCode,
detail.HandledFromLocationArea,
detail.HandledFromLocationGroup,
detail.HandledQty,
detail.HandledSupplierBatch, detail.HandledArriveDate, detail.HandledProduceDate, detail.HandledExpireDate,
detail.HandledSupplierBatch,
detail.HandledArriveDate,
detail.HandledProduceDate,
detail.HandledExpireDate,
detail.HandledContainerCode,
detail.HandledLot,
detail.HandledPackingCode,

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/DeliverJobAutoMapperProfile.cs

@ -18,6 +18,7 @@ public partial class StoreEventAutoMapperProfile : Profile
.ForMember(x => x.JobNumber, y => y.MapFrom(d => d.Number))
.ForMember(x => x.ActiveDate, y => y.MapFrom(d => DateTime.Now))
.ForMember(x => x.Worker, y => y.MapFrom(d => d.CompleteUserName))
.Ignore(x=>x.CountPrint)
;
CreateMap<DeliverJobDetail, DeliverNoteDetail>()

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/DeliverRequestMapperProfile.cs

@ -72,6 +72,7 @@ public partial class StoreEventAutoMapperProfile : Profile
CreateMap<DeliverRequest, DeliverNoteEditInput>()
.ForMember(x => x.DeliverRequestNumber, y => y.MapFrom(d => d.Number)).Ignore(x => x.JobNumber)
.Ignore(x=>x.CountPrint)
.Ignore(x => x.Details);
CreateMap<BalanceDTO, DeliverNoteDetailInput>()

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Requests/PurchaseReturnRequestAutoMapperProfile.cs

@ -15,7 +15,7 @@ public partial class StoreEventAutoMapperProfile : Profile
CreateMap<PurchaseReturnRequest, PurchaseReturnJobEditInput>()
.ForMember(x => x.PurchaseReturnRequestNumber, y => y.MapFrom(d => d.Number))
.Ignore(x => x.WarehouseCode)
.Ignore(x=>x.WarehouseCode)
.Ignore(x => x.IsAutoComplete)
.Ignore(x => x.JobType)
.Ignore(x => x.JobDescription)

63
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/PurchaseReturnRequestEventHandler.cs

@ -13,25 +13,57 @@ public class PurchaseReturnRequestEventHandler
: StoreEventHandlerBase
, ILocalEventHandler<SfsHandledEntityEventData<PurchaseReturnRequest>>
, ILocalEventHandler<SfsAbortedEntityEventData<PurchaseReturnRequest>>
, ILocalEventHandler<SfsCreatedEntityEventData<PurchaseReturnRequest>>
, ILocalEventHandler<SfsCreatedEntityEventData<List<PurchaseReturnRequest>>>
{
private readonly IPurchaseReturnJobAppService _purchaseReturnJobAppService;
private readonly IPurchaseReturnRequestManager _purchaseReturnRequestManager;
public PurchaseReturnRequestEventHandler(
IPurchaseReturnJobAppService purchaseReturnJobAppService
)
IPurchaseReturnJobAppService purchaseReturnJobAppService,
IPurchaseReturnRequestManager purchaseReturnRequestManager)
{
_purchaseReturnJobAppService = purchaseReturnJobAppService;
_purchaseReturnRequestManager = purchaseReturnRequestManager;
}
public virtual async Task HandleEventAsync(SfsHandledEntityEventData<PurchaseReturnRequest> eventData)
{
var request = eventData.Entity;
var jobCreateInputs = await BuildPurchaseReturnJobDetailAsync(request).ConfigureAwait(false);
/// <summary>
/// 创建后
/// </summary>
/// <param name="eventData"></param>
/// <returns></returns>
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<PurchaseReturnRequest> eventData)
{
var entity = eventData.Entity;
if (entity.AutoSubmit)
{
await _purchaseReturnRequestManager.SubmitAsync(entity).ConfigureAwait(false);
}
}
await _purchaseReturnJobAppService.CreateManyAsync(jobCreateInputs).ConfigureAwait(false);
/// <summary>
/// 批量创建后
/// </summary>
/// <param name="eventData"></param>
/// <returns></returns>
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<List<PurchaseReturnRequest>> eventData)
{
var entitys = eventData.Entity;
foreach (var entity in entitys)
{
if (entity.AutoSubmit)
{
await _purchaseReturnRequestManager.SubmitAsync(entity).ConfigureAwait(false);
}
}
}
/// <summary>
/// 审批后
/// </summary>
/// <param name="eventData"></param>
/// <returns></returns>
public virtual async Task HandleEventAsync(SfsAbortedEntityEventData<PurchaseReturnRequest> eventData)
{
var request = eventData.Entity;
@ -39,6 +71,20 @@ public class PurchaseReturnRequestEventHandler
await _purchaseReturnJobAppService.CancelByPurchaseReturnRequestAsync(request.Number).ConfigureAwait(false);
}
/// <summary>
/// 执行后
/// </summary>
/// <param name="eventData"></param>
/// <returns></returns>
public virtual async Task HandleEventAsync(SfsHandledEntityEventData<PurchaseReturnRequest> eventData)
{
var request = eventData.Entity;
var jobCreateInputs = await BuildPurchaseReturnJobDetailAsync(request).ConfigureAwait(false);
await _purchaseReturnJobAppService.CreateManyAsync(jobCreateInputs).ConfigureAwait(false);
}
#region 私有
private async Task<List<PurchaseReturnJobEditInput>> BuildPurchaseReturnJobDetailAsync(PurchaseReturnRequest request)
@ -50,11 +96,11 @@ public class PurchaseReturnRequestEventHandler
foreach (var item in groupBy)
{
var location = await LocationAclService.GetByCodeAsync(item.Key).ConfigureAwait(false);
if (location != null)
{
//初始化
var job = ObjectMapper.Map<PurchaseReturnRequest, PurchaseReturnJobEditInput>(request);
job.WarehouseCode = location.WarehouseCode;
job.JobType = EnumJobType.PurchaseReturnJob;
job.JobStatus = EnumJobStatus.Open;
@ -79,4 +125,5 @@ public class PurchaseReturnRequestEventHandler
}
#endregion
}

Loading…
Cancel
Save