From 6afde1379dd11d12cf85a128ccf8eb3ea982bd0a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=83=91=E6=B8=A4=E6=97=AD=5BIrelia=5D?= <366601522@qq.com>
Date: Thu, 13 Apr 2023 01:16:18 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=E5=AE=8C=E5=B7=A5?=
=?UTF-8?q?=E7=BC=B4=E5=BA=93=20=E7=BA=BF=E8=BE=B9=E7=BC=B4=E5=BA=93?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...FrameworkCore.SqlServer.StoreDbContext.sql | 2 +-
.../Enums/Store/EnumProductReceiptType.cs | 4 +-
.../ProductReceiptRequestAppService.cs | 226 ++++++++++--------
.../ProductReceiptNoteManager.cs | 75 +++---
...RequestDbContextModelCreatingExtensions.cs | 2 +-
...RequestDbContextModelCreatingExtensions.cs | 1 -
.../Requests/InspectRequestEventHandler.cs | 4 +
.../ProductReceiptNoteEventHandler.cs | 18 +-
.../ProductReceiptRequestEventHandler.cs | 50 +++-
9 files changed, 243 insertions(+), 139 deletions(-)
rename be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/{ => Note}/ProductReceiptNoteEventHandler.cs (70%)
diff --git a/be/Hosts/Wms.Host/Win_in.Sfs.Wms.Store.HttpApi.Host/scripts/db.Microsoft.EntityFrameworkCore.SqlServer.StoreDbContext.sql b/be/Hosts/Wms.Host/Win_in.Sfs.Wms.Store.HttpApi.Host/scripts/db.Microsoft.EntityFrameworkCore.SqlServer.StoreDbContext.sql
index a817dc41d..8cbecdc09 100644
--- a/be/Hosts/Wms.Host/Win_in.Sfs.Wms.Store.HttpApi.Host/scripts/db.Microsoft.EntityFrameworkCore.SqlServer.StoreDbContext.sql
+++ b/be/Hosts/Wms.Host/Win_in.Sfs.Wms.Store.HttpApi.Host/scripts/db.Microsoft.EntityFrameworkCore.SqlServer.StoreDbContext.sql
@@ -1281,7 +1281,7 @@ CREATE TABLE [Store_ProductReceiptRequest] (
[Shift] nvarchar(64) NULL,
[Team] nvarchar(64) NULL,
[PlanDate] datetime2 NOT NULL,
- [Type] nvarchar(64) NULL,
+ [Type] nvarchar(64) NOT NULL,
[ExtraProperties] nvarchar(max) NULL,
[ConcurrencyStamp] nvarchar(40) NULL,
[CreationTime] datetime2 NOT NULL,
diff --git a/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumProductReceiptType.cs b/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumProductReceiptType.cs
index da81aec1e..b6c96841d 100644
--- a/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumProductReceiptType.cs
+++ b/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumProductReceiptType.cs
@@ -5,9 +5,9 @@ namespace Win_in.Sfs.Shared.Domain.Shared;
public enum EnumProductReceiptType
{
///
- /// 人工缴库
+ /// 人工缴库(完工缴库)
///
- [Display(Name = "人工缴库")]
+ [Display(Name = "人工缴库(完工缴库)")]
ProductReceipt_Manual = 2101,
///
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ProductReceiptRequests/ProductReceiptRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ProductReceiptRequests/ProductReceiptRequestAppService.cs
index 46e1e6d0a..5a388cefe 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ProductReceiptRequests/ProductReceiptRequestAppService.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ProductReceiptRequests/ProductReceiptRequestAppService.cs
@@ -5,10 +5,13 @@ using System.Linq;
using System.Linq.Expressions;
using System.Threading;
using System.Threading.Tasks;
+using DocumentFormat.OpenXml.Office.CustomUI;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
+using Volo.Abp.Domain.Entities;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Application.Contracts;
using Win_in.Sfs.Shared.Domain;
@@ -30,16 +33,20 @@ public class ProductReceiptRequestAppService :
SfsStoreRequestInputBase, ProductReceiptRequestImportInput>
{
private readonly IProductReceiptRequestManager _productReceiptRequestManager;
-
private readonly IAreaAppService _areaApp;
+ private readonly IItemBasicAppService _itemBasicAppService;
+ private readonly ILocationAppService _locationAppService;
public ProductReceiptRequestAppService(
IProductReceiptRequestRepository repository
, IProductReceiptRequestManager productReceiptRequestManager
- , IAreaAppService areaApp
- ) : base(repository, productReceiptRequestManager)
+ , IAreaAppService areaApp,
+ IItemBasicAppService itemBasicAppService,
+ ILocationAppService locationAppService) : base(repository, productReceiptRequestManager)
{
_areaApp = areaApp;
+ _itemBasicAppService = itemBasicAppService;
+ _locationAppService = locationAppService;
_productReceiptRequestManager = productReceiptRequestManager;
base.CreatePolicyName = ProductReceiptRequestPermissions.Create;
base.UpdatePolicyName = ProductReceiptRequestPermissions.Update;
@@ -48,6 +55,61 @@ public class ProductReceiptRequestAppService :
#region 东阳
+ ///
+ /// 用来重写 导入数据时可以加工数据
+ ///
+ ///
+ ///
+ protected override async Task> ImportProcessingEntityAsync(
+ Dictionary dictionary)
+ {
+ var addList = dictionary.Where(p => p.Value == EntityState.Added).Select(p => p.Key);
+
+ foreach (var productReceiptRequest in addList)
+ {
+ productReceiptRequest.Worker = CurrentUser.GetUserName();
+ productReceiptRequest.CreatorId = CurrentUser.Id;
+
+ await SetRequestAutoPropertiesAsync(productReceiptRequest).ConfigureAwait(false);
+ foreach (var detail in productReceiptRequest.Details)
+ {
+ await SetDetailPropertiesAsync(detail).ConfigureAwait(false);
+ }
+ }
+
+ return dictionary;
+ }
+
+ ///
+ /// 赋值详情
+ ///
+ ///
+ ///
+ ///
+ private async Task SetDetailPropertiesAsync(ProductReceiptRequestDetail detail)
+ {
+ var itemBasic = await _itemBasicAppService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
+
+ if (itemBasic != null)
+ {
+ detail.ItemName = itemBasic.Name;
+ detail.ItemDesc1 = itemBasic.Desc1;
+ detail.ItemDesc2 = itemBasic.Desc2;
+ detail.StdPackQty = itemBasic.StdPackQty;
+ detail.Uom = itemBasic.BasicUom;
+ }
+
+ var location = await _locationAppService.GetByCodeAsync(detail.LocationCode).ConfigureAwait(false);
+
+ if (location != null)
+ {
+ detail.LocationErpCode = location.ErpLocationCode;
+ detail.WarehouseCode = location.WarehouseCode;
+ detail.LocationArea = location.AreaCode;
+ detail.LocationGroup = location.LocationGroupCode;
+ }
+ }
+
///
/// 设置事务类型
///
@@ -55,7 +117,7 @@ public class ProductReceiptRequestAppService :
///
private async Task SetRequestAutoPropertiesAsync(ProductReceiptRequest entity)
{
- var enumTransSubType=EnumTransSubType.None;
+ var enumTransSubType = EnumTransSubType.None;
switch (entity.Type)
{
case EnumProductReceiptType.ProductReceipt_Manual:
@@ -214,121 +276,97 @@ public class ProductReceiptRequestAppService :
return transactionType;
}
- protected virtual async Task ImportDataAsync(List entites,
- List deleteEntities)
- {
- await _productReceiptRequestManager.ImportDataAsync(entites, deleteEntities).ConfigureAwait(false);
- }
-
protected override Func GetEntityExpression()
{
return p => p.Type;
}
- protected virtual async Task<(List entites, List deleteEntities)>
- BuildImportDataAsync(ImportResult importResult,
- EnumImportMethod importMethod = EnumImportMethod.Update, bool isAllowPartImport = false)
- {
- if (importResult.Data.Any(t => t.ReportStatus == EnumImportReportStatus.Failed))
- {
- if (!isAllowPartImport)
- {
- return (null, null);
- }
- }
+ #endregion
- var entites = new List();
+ //protected virtual async Task ImportDataAsync(List entites,
+ // List deleteEntities)
+ //{
+ // await _productReceiptRequestManager.ImportDataAsync(entites, deleteEntities).ConfigureAwait(false);
+ //}
+ //protected virtual async Task<(List entites, List deleteEntities)>
+ // BuildImportDataAsync(ImportResult importResult,
+ // EnumImportMethod importMethod = EnumImportMethod.Update, bool isAllowPartImport = false)
+ //{
+ // if (importResult.Data.Any(t => t.ReportStatus == EnumImportReportStatus.Failed))
+ // {
+ // if (!isAllowPartImport)
+ // {
+ // return (null, null);
+ // }
+ // }
- var details = new List();
+ // var entites = new List();
- var deleteEntites = new List();
+ // var details = new List();
- var entityExpression = GetEntityExpression();
+ // var deleteEntites = new List();
- var groupList = importResult.Data.ToList().GroupBy(entityExpression).Distinct().ToList();
+ // var entityExpression = GetEntityExpression();
- foreach (var group in groupList)
- {
- var input = group.FirstOrDefault();
+ // var groupList = importResult.Data.ToList().GroupBy(entityExpression).Distinct().ToList();
- var inputDetails = group.ToList();
+ // foreach (var group in groupList)
+ // {
+ // var input = group.FirstOrDefault();
- if (!inputDetails.Any(t => t.ReportStatus == EnumImportReportStatus.Failed))
- {
- var exist = await GetEntityAsync(input).ConfigureAwait(false);
+ // var inputDetails = group.ToList();
- var entity = ObjectMapper.Map(input);
+ // if (!inputDetails.Any(t => t.ReportStatus == EnumImportReportStatus.Failed))
+ // {
+ // var exist = await GetEntityAsync(input).ConfigureAwait(false);
- await SetEntityPropertiesAsync(entity, input).ConfigureAwait(false);
+ // var entity = ObjectMapper.Map(input);
- switch (importMethod)
- {
- case EnumImportMethod.Update:
- entity.SetId(exist != null ? exist.Id : GuidGenerator.Create());
+ // await SetEntityPropertiesAsync(entity, input).ConfigureAwait(false);
- if (exist != null)
- {
- entity.SetId(exist.Id);
- }
+ // switch (importMethod)
+ // {
+ // case EnumImportMethod.Update:
+ // entity.SetId(exist != null ? exist.Id : GuidGenerator.Create());
- break;
- case EnumImportMethod.Replace:
- if (exist != null)
- {
- deleteEntites.Add(exist);
- }
+ // if (exist != null)
+ // {
+ // entity.SetId(exist.Id);
+ // }
- entity.SetId(GuidGenerator.Create());
- break;
- }
+ // break;
+ // case EnumImportMethod.Replace:
+ // if (exist != null)
+ // {
+ // deleteEntites.Add(exist);
+ // }
- foreach (var inputDetail in inputDetails)
- {
- var detail =
- ObjectMapper.Map(inputDetail);
+ // entity.SetId(GuidGenerator.Create());
+ // break;
+ // }
- detail.SetIdAndNumber(GuidGenerator, entity.Id, entity.Number);
+ // foreach (var inputDetail in inputDetails)
+ // {
+ // var detail =
+ // ObjectMapper.Map(inputDetail);
- await SetDetailPropertiesAsync(detail, input).ConfigureAwait(false);
- entity.AddDetail(detail);
- }
+ // detail.SetIdAndNumber(GuidGenerator, entity.Id, entity.Number);
- entites.Add(entity);
- }
- }
+ // await SetDetailPropertiesAsync(detail, input).ConfigureAwait(false);
+ // entity.AddDetail(detail);
+ // }
- return (entites, deleteEntites);
- }
+ // entites.Add(entity);
+ // }
+ // }
- private async Task SetDetailPropertiesAsync(ProductReceiptRequestDetail detail,
- ProductReceiptRequestImportInput input)
- {
- var itemBasic = await ItemBasicAclService.GetByCodeAsync(input.ItemCode).ConfigureAwait(false);
+ // return (entites, deleteEntites);
+ //}
- if (itemBasic != null)
- {
- detail.ItemName = itemBasic.Name;
- detail.ItemDesc1 = itemBasic.Desc1;
- detail.ItemDesc2 = itemBasic.Desc2;
- detail.Qty = input.Qty;
- detail.StdPackQty = itemBasic.StdPackQty;
- }
-
- var location = await LocationAclService.GetByCodeAsync(input.LocationCode).ConfigureAwait(false);
+ //private async Task SetEntityPropertiesAsync(ProductReceiptRequest entity, ProductReceiptRequestImportInput input)
+ //{
+ // entity.Worker = CurrentUser.GetUserName();
- if (location != null)
- {
- detail.LocationErpCode = location.ErpLocationCode;
- detail.WarehouseCode = location.WarehouseCode;
- }
- }
-
- private async Task SetEntityPropertiesAsync(ProductReceiptRequest entity, ProductReceiptRequestImportInput input)
- {
- entity.Worker = CurrentUser.GetUserName();
-
- await SetRequestAutoPropertiesAsync(entity).ConfigureAwait(false);
- }
-
- #endregion
+ // await SetRequestAutoPropertiesAsync(entity).ConfigureAwait(false);
+ //}
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/ProductReceiptNotes/ProductReceiptNoteManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/ProductReceiptNotes/ProductReceiptNoteManager.cs
index be4733302..5b6caa107 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/ProductReceiptNotes/ProductReceiptNoteManager.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/ProductReceiptNotes/ProductReceiptNoteManager.cs
@@ -12,9 +12,12 @@ public class ProductReceiptNoteManager : SfsStoreManagerBase
private async Task BackFlushAsync(ProductReceiptNote productReceiptNote)
{
-
//生成【MES】回冲接口 TODO
#region 【判断】是否需要记录回冲记录 及下线结算接口
-
//【判断】是否需要记录回冲记录 TODO
- //【是】 完工收货时,创建回冲记录
+ //【是】 完工收货时,创建回冲记录
//var isBackFlush = await SettingManager.IsTrueAsync(StoreSettings.ProductionReceipt.AutoCreateBackFlush); ; //扣原材料
//var isOffLine = await _settingProvider.IsTrueAsync(StoreSettings.ProductionReceipt.AutoCreateOfflineSettlement); ; //下线结算
+
+
//是否需要下线结算
- //获取所有成品的零件号
- //一次性获得所有BOM信息避免每个明细都查询一遍;false 为bom不展开,便于测试
- var totalBomList = await GetBomListAsync(productReceiptNote).ConfigureAwait(false);
+ if (isBackFlush || isOffLine)
+ {
+ //获取所有成品的零件号
+ //一次性获得所有BOM信息避免每个明细都查询一遍;false 为bom不展开,便于测试
+ var totalBomList = await GetBomListAsync(productReceiptNote);
- //取不到bom信息要报错,不能进行下去
+ //取不到bom信息要报错,不能进行下去
- //根据回冲记录获取成品零件种类和数量,并获取相关要消耗的原材料库存
- var productSumList = productReceiptNote.Details.GroupBy(p => new { p.ItemCode, p.RawLocationCode, p.Qty })
- .Select(s => new BackFlushInventoryTotal
- {
- ItemCode = s.Key.ItemCode,
- RawLocationCode = s.Key.RawLocationCode,
- Qty = s.Key.Qty,
- TotalQty = s.Sum(n => n.Qty),
- }).ToList();
- //根据父级零件汇总的数量,获取BOM子表明细原材料的数量
- var subInventoryTotalList = new List();
+ //根据回冲记录获取成品零件种类和数量,并获取相关要消耗的原材料库存
+ var productSumList = productReceiptNote.Details.GroupBy(p => new { p.ItemCode, p.RawLocationCode, p.Qty })
+ .Select(s => new BackFlushInventoryTotal
+ {
+ ItemCode = s.Key.ItemCode,
+ RawLocationCode = s.Key.RawLocationCode,
+ Qty = s.Key.Qty,
+ TotalQty = s.Sum(n => n.Qty),
+ }).ToList();
- foreach (var productSumItem in productSumList)
- {
- var subBomList = totalBomList.Where(p => p.Product == productSumItem.ItemCode).ToList();
- //根据bom和父级零件总数获取子零件总数,然后将子零件总数汇总进 总零件数量
- await GetSubBackFlushInventoryList(productSumItem, subBomList, subInventoryTotalList).ConfigureAwait(false);
- }
+ //根据父级零件汇总的数量,获取BOM子表明细原材料的数量
+ var subInventoryTotalList = new List();
- await _backFlushNoteManager.CreateByProductReceiptNoteAsync(productReceiptNote, subInventoryTotalList)
- .ConfigureAwait(false);
+ foreach (var productSumItem in productSumList)
+ {
+ var subBomList = totalBomList.Where(p => p.Product == productSumItem.ItemCode).ToList();
- //【判断】是否需要下线结算
- if (subInventoryTotalList.Any(p => p.IsOffLine == true))
- {
- //【是】 创建【下线结算记录】
- await _offlineSettlementNoteManager
- .CreateByProductReceiptNoteAsync(productReceiptNote, subInventoryTotalList).ConfigureAwait(false);
+ //根据bom和父级零件总数获取子零件总数,然后将子零件总数汇总进 总零件数量
+ await GetSubBackFlushInventoryList(productSumItem, subBomList, subInventoryTotalList).ConfigureAwait(false);
+ }
+
+ if (isBackFlush)
+ {
+ await _backFlushNoteManager.CreateByProductReceiptNoteAsync(productReceiptNote, subInventoryTotalList).ConfigureAwait(false);
+ }
+ //【判断】是否需要下线结算
+ if (isOffLine && subInventoryTotalList.Any(p => p.IsOffLine == true))
+ {
+ //【是】 创建【下线结算记录】
+ await _offlineSettlementNoteManager.CreateByProductReceiptNoteAsync(productReceiptNote, subInventoryTotalList).ConfigureAwait(false);
+
+ }
}
#endregion
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/ProductReceiptRequests/ProductReceiptRequestDbContextModelCreatingExtensions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/ProductReceiptRequests/ProductReceiptRequestDbContextModelCreatingExtensions.cs
index 366dd9158..9e3184751 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/ProductReceiptRequests/ProductReceiptRequestDbContextModelCreatingExtensions.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/ProductReceiptRequests/ProductReceiptRequestDbContextModelCreatingExtensions.cs
@@ -23,8 +23,8 @@ public static class ProductReceiptRequestDbContextModelCreatingExtensions
b.Property(q => q.ProdLine).HasMaxLength(SfsPropertyConst.NameLength);
b.Property(q => q.Shift).HasMaxLength(SfsPropertyConst.NameLength);
b.Property(q => q.Team).HasMaxLength(SfsPropertyConst.NameLength);
- b.Property(q => q.Type).HasMaxLength(SfsPropertyConst.NameLength);
b.Property(q => q.PlanDate);
+ b.Property(q => q.Type).HasMaxLength(SfsPropertyConst.NameLength).HasConversion();
b.Property(q => q.RequestStatus).HasMaxLength(SfsPropertyConst.NameLength).HasConversion();
//Relations
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/PurchaseReceiptRequests/PurchaseReceiptRequestDbContextModelCreatingExtensions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/PurchaseReceiptRequests/PurchaseReceiptRequestDbContextModelCreatingExtensions.cs
index 8178b4c88..6ee78be44 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/PurchaseReceiptRequests/PurchaseReceiptRequestDbContextModelCreatingExtensions.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Requests/PurchaseReceiptRequests/PurchaseReceiptRequestDbContextModelCreatingExtensions.cs
@@ -24,7 +24,6 @@ public static class PurchaseReceiptRequestDbContextModelCreatingExtensions
b.Property(q => q.PlanArriveDate).IsRequired();
b.Property(q => q.Number).IsRequired();
b.Property(q => q.TimeWindow).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength);
-
b.Property(q => q.SupplierName).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.AsnNumber).HasMaxLength(SfsPropertyConst.NameLength);
b.Property(q => q.RpNumber).HasMaxLength(SfsPropertyConst.NameLength);
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/InspectRequestEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/InspectRequestEventHandler.cs
index 427044073..0855510ab 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/InspectRequestEventHandler.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/InspectRequestEventHandler.cs
@@ -1,6 +1,7 @@
using System;
using System.Threading.Tasks;
using Volo.Abp.EventBus;
+using Volo.Abp.Uow;
using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
@@ -28,6 +29,7 @@ public class InspectRequestEventHandler : StoreEventHandlerBase
///
///
///
+ [UnitOfWork]
public virtual async Task HandleEventAsync(SfsCancelledEntityEventData eventData)
{
var entity = eventData.Entity;
@@ -39,6 +41,7 @@ public class InspectRequestEventHandler : StoreEventHandlerBase
///
///
///
+ [UnitOfWork]
public virtual async Task HandleEventAsync(SfsAgreedEntityEventData eventData)
{
await Task.CompletedTask.ConfigureAwait(false);
@@ -50,6 +53,7 @@ public class InspectRequestEventHandler : StoreEventHandlerBase
///
///
///
+ [UnitOfWork]
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData eventData)
{
var entity = eventData.Entity;
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/ProductReceiptNoteEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/Note/ProductReceiptNoteEventHandler.cs
similarity index 70%
rename from be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/ProductReceiptNoteEventHandler.cs
rename to be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/Note/ProductReceiptNoteEventHandler.cs
index 27e909f60..a0af46225 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/ProductReceiptNoteEventHandler.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/Note/ProductReceiptNoteEventHandler.cs
@@ -18,15 +18,17 @@ public class ProductReceiptNoteEventHandler
{
private readonly IPutawayJobAppService _putawayJobAppService;
- private readonly IProductReceiptRequestAppService _productReceiptRequestApp;
+ //private readonly IProductReceiptRequestAppService _productReceiptRequestApp;
+ private readonly IProductReceiptRequestManager _productReceiptRequestManager;
public ProductReceiptNoteEventHandler(
IPutawayJobAppService putawayJobAppService
- , IProductReceiptRequestAppService productReceiptRequestApp
- )
+ //, IProductReceiptRequestAppService productReceiptRequestApp
+ , IProductReceiptRequestManager productReceiptRequestManager)
{
_putawayJobAppService = putawayJobAppService;
- _productReceiptRequestApp = productReceiptRequestApp;
+ //_productReceiptRequestApp = productReceiptRequestApp;
+ _productReceiptRequestManager = productReceiptRequestManager;
}
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData eventData)
@@ -41,7 +43,9 @@ public class ProductReceiptNoteEventHandler
if (!string.IsNullOrEmpty(entity.ProductReceiptRequestNumber))
{
- await _productReceiptRequestApp.CompleteByNumberAsync(entity.ProductReceiptRequestNumber).ConfigureAwait(false);
+ //await _productReceiptRequestApp.CompleteByNumberAsync(entity.ProductReceiptRequestNumber).ConfigureAwait(false);
+ var productReceiptRequest=await _productReceiptRequestManager.GetByNumberAsync(entity.ProductReceiptRequestNumber).ConfigureAwait(false);
+ await _productReceiptRequestManager.CompleteAsync(productReceiptRequest).ConfigureAwait(false);
}
}
@@ -64,7 +68,9 @@ public class ProductReceiptNoteEventHandler
{
if (!string.IsNullOrEmpty(entity.ProductReceiptRequestNumber))
{
- await _productReceiptRequestApp.CompleteByNumberAsync(entity.ProductReceiptRequestNumber).ConfigureAwait(false);
+ //await _productReceiptRequestApp.CompleteByNumberAsync(entity.ProductReceiptRequestNumber).ConfigureAwait(false);
+ var productReceiptRequest = await _productReceiptRequestManager.GetByNumberAsync(entity.ProductReceiptRequestNumber).ConfigureAwait(false);
+ await _productReceiptRequestManager.CompleteAsync(productReceiptRequest).ConfigureAwait(false);
}
}
}
diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/ProductReceiptRequestEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/ProductReceiptRequestEventHandler.cs
index 1bca59154..e59b18222 100644
--- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/ProductReceiptRequestEventHandler.cs
+++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/ProductReceiptRequestEventHandler.cs
@@ -19,22 +19,62 @@ public class ProductReceiptRequestEventHandler
: StoreEventHandlerBase
, ILocalEventHandler>
, ILocalEventHandler>
+ ,ILocalEventHandler>
+ , ILocalEventHandler>>
{
private readonly IProductReceiveJobAppService _productReceiveJobAppService;
private readonly IProductionLineAppService _productionLineAppService;
private readonly IProductReceiptNoteAppService _productReceiptNoteApp;
+ private readonly IProductReceiptRequestManager _productReceiptRequestManager;
public ProductReceiptRequestEventHandler(
IProductReceiveJobAppService productReceiveJobAppService
, IProductionLineAppService productionLineAppService
, IProductReceiptNoteAppService productReceiptNoteApp
- )
+ , IProductReceiptRequestManager productReceiptRequestManager)
{
_productReceiveJobAppService = productReceiveJobAppService;
_productionLineAppService = productionLineAppService;
this._productReceiptNoteApp = productReceiptNoteApp;
+ _productReceiptRequestManager = productReceiptRequestManager;
}
+ ///
+ /// 创建后
+ ///
+ /// Event data
+ [UnitOfWork]
+ public async Task HandleEventAsync(SfsCreatedEntityEventData eventData)
+ {
+ var entity = eventData.Entity;
+ if (entity.AutoSubmit)
+ {
+ await _productReceiptRequestManager.SubmitAsync(entity).ConfigureAwait(false);
+ }
+ }
+
+ ///
+ /// 批量创建后
+ ///
+ /// Event data
+ [UnitOfWork]
+ public async Task HandleEventAsync(SfsCreatedEntityEventData> eventData)
+ {
+ var entitys = eventData.Entity;
+ foreach (var entity in entitys)
+ {
+ if (entity.AutoSubmit)
+ {
+ await _productReceiptRequestManager.SubmitAsync(entity).ConfigureAwait(false);
+ }
+ }
+ }
+
+ ///
+ /// 审批后
+ ///
+ ///
+ ///
[UnitOfWork]
public virtual async Task HandleEventAsync(SfsHandledEntityEventData eventData)
{
@@ -53,6 +93,11 @@ public class ProductReceiptRequestEventHandler
}
}
+ ///
+ /// 取消后
+ ///
+ ///
+ ///
[UnitOfWork]
public virtual async Task HandleEventAsync(SfsCancelledEntityEventData eventData)
{
@@ -60,6 +105,7 @@ public class ProductReceiptRequestEventHandler
await _productReceiveJobAppService.CancelByProductionPlanAsync(entity.Number).ConfigureAwait(false);
}
+ #region 私有
private async Task> BuildProductReceiveJobsAsync(
ProductReceiptRequest productionPlan)
{
@@ -160,4 +206,6 @@ public class ProductReceiptRequestEventHandler
return note;
}
+
+ #endregion
}