Browse Source

bom结构分解

dev_DY_CC
赵新宇 1 year ago
parent
commit
0c7abdfcf7
  1. 5
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Boms/BomAppService.cs
  2. 24
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain.Shared/Enum/EnumBomSelectedType.cs
  3. 21
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Boms/BomComponent.cs
  4. 132
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Boms/BomManager.cs
  5. 1
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Win_in.Sfs.Basedata.Domain.csproj
  6. 2
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentDbContextModelCreatingExtensions.cs
  7. 7
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/Balances/BalanceAppService.cs
  8. 27
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/MesNotes/MesNoteAppService.cs
  9. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/ProductionReturnNotes/ProductionReturnNoteAppService.cs
  10. 22
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ProductionReturnRequests/ProductionReturnRequestAppService.cs
  11. 23
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/MesNoteEventHandler.cs
  12. 5
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/ProductionReturnNoteEventHandler.cs

5
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Boms/BomAppService.cs

@ -199,3 +199,8 @@ public class BomAppService :
} }

24
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain.Shared/Enum/EnumBomSelectedType.cs

@ -0,0 +1,24 @@
using System.ComponentModel.DataAnnotations;
namespace Win_in.Sfs.Basedata.Domain.Shared;
public enum EnumBomSelectedType
{
/// <summary>
/// 树状
/// </summary>
[Display(Name = "树装")]
Tree = 0,
/// <summary>
/// 一维
/// </summary>
[Display(Name = "一维")]
Dimension = 1,
/// <summary>
/// 最终子节点
/// </summary>
[Display(Name = "最终子节点")]
Last = 2,
}

21
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Boms/BomComponent.cs

@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Win_in.Sfs.Basedata.Boms;
public class BomComponent
{
public string Root { get; set; }
public string Component { get; set; }
public string ComponentUom { get; set; }
public decimal ComponentQty { get; set; }
public string ParentComponent { get; set; }
public decimal SumQty { get; set; }
public int Level { get; set; }
public List<BomComponent> SubComponents { get; set; }
}

132
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Boms/BomManager.cs

@ -4,9 +4,13 @@ using System.Linq;
using System.Linq.Expressions; using System.Linq.Expressions;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using NetTopologySuite.Geometries;
using Omu.ValueInjecter;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Domain.Repositories; using Volo.Abp.Domain.Repositories;
using Volo.Abp.Domain.Services; using Volo.Abp.Domain.Services;
using Win_in.Sfs.Basedata.Boms;
using Win_in.Sfs.Basedata.Domain.Shared;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
@ -213,4 +217,132 @@ public class BomManager : DomainService, IBomManager
} }
return lst; return lst;
} }
/// <summary>
/// Bom操作
/// </summary>
/// <param name="p_component"></param>
/// <param name="p_type"></param>
/// <returns></returns>
private async Task<List<Bom>> GetSubcomponentsRecursiveLast(BomComponent p_component, EnumBomSelectedType p_type
)
{
List<BomComponent> lastList = new List<BomComponent>();
List<BomComponent> dimensionList=new List<BomComponent>();
var treeList=await GetSubcomponentsRecursive(p_component, 1, p_component.ComponentQty, p_component.Component,
(rs) => lastList.Add(rs)
,
(rs1)=>{
dimensionList.Add(rs1);
}).ConfigureAwait(false);
List<Bom> lastBomList = new List<Bom>();
List<Bom> dimensionBomList = new List<Bom>();
List<Bom> treeBomList = new List<Bom>();
foreach (var itm in dimensionList)
{
Bom bom = new Bom();
bom.InjectFrom(itm);
dimensionBomList.Add(bom);
}
foreach (var itm in lastList)
{
Bom bom = new Bom();
bom.InjectFrom(itm);
lastBomList.Add(bom);
}
foreach (var itm in treeList)
{
Bom bom = new Bom();
bom.InjectFrom(itm);
treeBomList.Add(bom);
}
List<Bom> returnList=new List<Bom>();
switch (p_type)
{
case EnumBomSelectedType.Last:
returnList.AddRange(lastBomList);
break;
case EnumBomSelectedType.Tree:
returnList.AddRange(treeBomList);
break;
case EnumBomSelectedType.Dimension:
returnList.AddRange(dimensionBomList);
break;
}
return returnList;
}
/// <summary>
/// 层级、拆解、一维结构、树状结构
/// </summary>
/// <param name="p_component">上级组件(初始时为根元素)</param>
/// <param name="level">层级一般为1</param>
/// <param name="sumQty">累计数量</param>
/// <param name="root">根</param>
/// <param name="p_actionLast">拆解到最终零件时</param>
/// <param name="p_actionDimension">树型转成一维表用</param>
/// <returns></returns>
private async Task<List<BomComponent>> GetSubcomponentsRecursive(BomComponent p_component, int level, decimal sumQty, string root, Action<BomComponent> p_actionLast,
Action<BomComponent> p_actionDimension
)
{
List<BomComponent> subComponents = new List<BomComponent>();
// 假设 GetComponentsByProduct 方法可获取某个物料号下的所有子零件
List<BomComponent> directSubComponents =await GetComponentsByProduct(p_component.Component).ConfigureAwait(false);
if (!directSubComponents.Any() && level != 1)//不是根元素
{
p_actionLast(p_component);
}
foreach (var component in directSubComponents)
{
component.Root = root;
component.SumQty = sumQty * component.ComponentQty;
component.ParentComponent = p_component.Component;
component.Level = level;
component.SubComponents =await GetSubcomponentsRecursive(component, level + 1, sumQty * component.ComponentQty, component.Root, p_actionLast, p_actionDimension).ConfigureAwait(false);
p_actionDimension(component);
subComponents.Add(component);
}
return subComponents;
}
private async Task<List<BomComponent>> GetComponentsByProduct(string product)
{
var list= await _repository.GetListAsync(p => p.Product == product).ConfigureAwait(false);
List<BomComponent> components = new List<BomComponent>();
foreach (var component in list)
{
BomComponent bomComponent = new BomComponent();
bomComponent.InjectFrom(component);
components.Add(bomComponent);
}
// 其他物料号的子零件信息类似添加
return components;
}
} }

1
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Win_in.Sfs.Basedata.Domain.csproj

@ -8,6 +8,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="ValueInjecter" Version="3.2.0" />
<PackageReference Include="Volo.Abp.Ddd.Domain" Version="5.3.5" /> <PackageReference Include="Volo.Abp.Ddd.Domain" Version="5.3.5" />
<ProjectReference Include="..\..\..\Shared\src\Win_in.Sfs.Shared.Domain\Win_in.Sfs.Shared.Domain.csproj" /> <ProjectReference Include="..\..\..\Shared\src\Win_in.Sfs.Shared.Domain\Win_in.Sfs.Shared.Domain.csproj" />
<ProjectReference Include="..\Win_in.Sfs.Basedata.Domain.Shared\Win_in.Sfs.Basedata.Domain.Shared.csproj" /> <ProjectReference Include="..\Win_in.Sfs.Basedata.Domain.Shared\Win_in.Sfs.Basedata.Domain.Shared.csproj" />

2
be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/Equipments/EquipmentDbContextModelCreatingExtensions.cs

@ -21,6 +21,8 @@ public static class EquipmentDbContextModelCreatingExtensions
//Properties //Properties
b.Property(q => q.Code).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength).IsRequired(true); b.Property(q => q.Code).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength).IsRequired(true);
b.Property(q => q.Model).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.Model).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.Model).HasMaxLength(SfsPropertyConst.CodeLength);
b.Property(q => q.LocCode).HasMaxLength(SfsPropertyConst.CodeLength); b.Property(q => q.LocCode).HasMaxLength(SfsPropertyConst.CodeLength);

7
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/Balances/BalanceAppService.cs

@ -50,7 +50,7 @@ public class BalanceAppService
ILocationAclService locationAclService, ILocationAclService locationAclService,
IItemBasicAclService itemBasicAclService, IItemBasicAclService itemBasicAclService,
IItemBasicAppService itemBasicAppService, IItemBasicAppService itemBasicAppService,
IStdCostPriceSheetAppService stdCostPriceSheetAppService) : base(repository) IStdCostPriceSheetAppService stdCostPriceSheetAppService) : base(repository)
{ {
_repository = repository; _repository = repository;
_transferLogManager = transferLogManager; _transferLogManager = transferLogManager;
@ -654,24 +654,19 @@ public class BalanceAppService
{ {
input.Condition.Filters.Add(new Filter("ContainerCode", listInput.containerCode)); input.Condition.Filters.Add(new Filter("ContainerCode", listInput.containerCode));
} }
if (listInput.locationTypes != null && listInput.locationTypes.Any()) if (listInput.locationTypes != null && listInput.locationTypes.Any())
{ {
var locationCodes = (await _locationAclService.GetListByTypesAsync(listInput.locationTypes).ConfigureAwait(false)).Select(t => t.Code).ToList(); var locationCodes = (await _locationAclService.GetListByTypesAsync(listInput.locationTypes).ConfigureAwait(false)).Select(t => t.Code).ToList();
if (locationCodes.Any()) if (locationCodes.Any())
{ {
input.Condition.Filters.Add(new Filter("LocationCode", JsonSerializer.Serialize(locationCodes), "In")); input.Condition.Filters.Add(new Filter("LocationCode", JsonSerializer.Serialize(locationCodes), "In"));
} }
} }
if (listInput.inventoryStatuses != null && listInput.inventoryStatuses.Any()) if (listInput.inventoryStatuses != null && listInput.inventoryStatuses.Any())
{ {
input.Condition.Filters.Add(new Filter("Status", JsonSerializer.Serialize(listInput.inventoryStatuses), "In")); input.Condition.Filters.Add(new Filter("Status", JsonSerializer.Serialize(listInput.inventoryStatuses), "In"));
} }
var balanceDTOs = await GetPagedListByFilterAsync(input, false).ConfigureAwait(false); var balanceDTOs = await GetPagedListByFilterAsync(input, false).ConfigureAwait(false);
return balanceDTOs; return balanceDTOs;
} }

27
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/MesNotes/MesNoteAppService.cs

@ -17,9 +17,11 @@ namespace Win_in.Sfs.Wms.Store.Application;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using IdentityModel; using IdentityModel;
using Omu.ValueInjecter;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Entities;
using Volo.Abp.ObjectMapping; using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Domain;
using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Event; using Win_in.Sfs.Shared.Event;
@ -33,11 +35,14 @@ public class MesNoteAppService :
IMesNoteAppService IMesNoteAppService
{ {
private readonly ILocationAppService _locationAppService; private readonly ILocationAppService _locationAppService;
private readonly IItemBasicAppService _itemBasicAppService; private readonly IBomAppService _bomAppService;
private readonly IItemBasicAppService _itemBasicAppService;
private readonly IBalanceAppService _balanceAppService; private readonly IBalanceAppService _balanceAppService;
public MesNoteAppService( public MesNoteAppService(
IBomAppService bomAppService,
IMesNoteRepository repository, ILocationAppService locationAppService, IItemBasicAppService itemBasicAppService,IBalanceAppService balanceAppService) : base(repository) IMesNoteRepository repository, ILocationAppService locationAppService, IItemBasicAppService itemBasicAppService,IBalanceAppService balanceAppService) : base(repository)
{ {
_bomAppService = bomAppService;
_locationAppService = locationAppService; _locationAppService = locationAppService;
_itemBasicAppService = itemBasicAppService; _itemBasicAppService = itemBasicAppService;
_balanceAppService = balanceAppService; _balanceAppService = balanceAppService;
@ -51,22 +56,17 @@ public class MesNoteAppService :
var number = string.IsNullOrEmpty(entity.Number) ? await GenerateNumberAsync(nameof(MesNote), entity.ActiveDate).ConfigureAwait(false) : entity.Number; var number = string.IsNullOrEmpty(entity.Number) ? await GenerateNumberAsync(nameof(MesNote), entity.ActiveDate).ConfigureAwait(false) : entity.Number;
entity.SetIdAndNumberWithDetails(GuidGenerator, number); entity.SetIdAndNumberWithDetails(GuidGenerator, number);
SfsInventoryRequestInputBase pm = new SfsInventoryRequestInputBase();
// pm.Condition.Filters.Add(new Filter() { Column="", Action= });
// _balanceAppService.GetBalancePagedListByFilterAsync();
foreach (var detail in entity.Details) foreach (var detail in entity.Details)
{ {
var fromLocation=await _locationAppService.GetByCodeAsync(detail.FromLocationCode).ConfigureAwait(false); var fromLocation=await _locationAppService.GetByCodeAsync(detail.FromLocationCode).ConfigureAwait(false);
var toLocation =await _locationAppService.GetByCodeAsync(detail.ToLocationCode).ConfigureAwait(false); var toLocation =await _locationAppService.GetByCodeAsync(detail.ToLocationCode).ConfigureAwait(false);
var itemBasicDto =await _itemBasicAppService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false); var itemBasicDto =await _itemBasicAppService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
if (fromLocation == null) if (fromLocation == null)
{ {
throw new UserFriendlyException($"库位为空"); throw new UserFriendlyException($"库位为空");
} }
detail.SetIdAndNumber(GuidGenerator, entity.Id, entity.Number); detail.SetIdAndNumber(GuidGenerator, entity.Id, entity.Number);
detail.FromLocationArea = fromLocation.AreaCode; detail.FromLocationArea = fromLocation.AreaCode;
@ -82,14 +82,12 @@ public class MesNoteAppService :
detail.StdPackQty = itemBasicDto.StdPackQty; detail.StdPackQty = itemBasicDto.StdPackQty;
#region 添加校验 #region 添加校验
//RecommendBalanceRequestInput rInput = new RecommendBalanceRequestInput(); //RecommendBalanceRequestInput rInput = new RecommendBalanceRequestInput();
//rInput.ItemCode = detail.ItemCode; //rInput.ItemCode = detail.ItemCode;
//rInput.Locations = new List<string>() { detail.FromLocationCode }; //rInput.Locations = new List<string>() { detail.FromLocationCode };
//rInput.Qty = detail.Qty; //rInput.Qty = detail.Qty;
//rInput.Statuses = new List<EnumInventoryStatus> { EnumInventoryStatus.OK }; //rInput.Statuses = new List<EnumInventoryStatus> { EnumInventoryStatus.OK };
//var balanceLst = await _balanceAppService.GetRecommendBalancesByLocationsAsync(rInput).ConfigureAwait(false); //var balanceLst = await _balanceAppService.GetRecommendBalancesByLocationsAsync(rInput).ConfigureAwait(false);
//var first = balanceLst.FirstOrDefault(); //var first = balanceLst.FirstOrDefault();
//if (first != null) //if (first != null)
@ -103,6 +101,7 @@ public class MesNoteAppService :
//{ //{
// throw new UserFriendlyException($"库存数量不足"); // throw new UserFriendlyException($"库存数量不足");
//} //}
#endregion #endregion
} }
@ -129,4 +128,8 @@ public class MesNoteAppService :
return await GetPagedListAsync(expression, requestInput.SkipCount, requestInput.MaxResultCount, return await GetPagedListAsync(expression, requestInput.SkipCount, requestInput.MaxResultCount,
requestInput.Sorting, includeDetails, cancellationToken).ConfigureAwait(false); requestInput.Sorting, includeDetails, cancellationToken).ConfigureAwait(false);
} }
} }

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/ProductionReturnNotes/ProductionReturnNoteAppService.cs

@ -37,9 +37,7 @@ public class ProductionReturnNoteAppService :
public override async Task<ProductionReturnNoteDTO> CreateAsync(ProductionReturnNoteEditInput input) public override async Task<ProductionReturnNoteDTO> CreateAsync(ProductionReturnNoteEditInput input)
{ {
var entity = ObjectMapper.Map<ProductionReturnNoteEditInput, ProductionReturnNote>(input); var entity = ObjectMapper.Map<ProductionReturnNoteEditInput, ProductionReturnNote>(input);
await _ProductionReturnNoteManager.CreateAsync(entity).ConfigureAwait(false); await _ProductionReturnNoteManager.CreateAsync(entity).ConfigureAwait(false);
var dto = ObjectMapper.Map<ProductionReturnNote, ProductionReturnNoteDTO>(entity); var dto = ObjectMapper.Map<ProductionReturnNote, ProductionReturnNoteDTO>(entity);
return dto; return dto;
} }

22
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ProductionReturnRequests/ProductionReturnRequestAppService.cs

@ -32,6 +32,10 @@ public class ProductionReturnRequestAppService :
private readonly IPurchaseOrderAppService _purchaseOrderApp; private readonly IPurchaseOrderAppService _purchaseOrderApp;
private readonly IItemBasicAppService _itemBasicAppService; private readonly IItemBasicAppService _itemBasicAppService;
private readonly ILocationAppService _locationAppService; private readonly ILocationAppService _locationAppService;
private readonly IBalanceAppService _balanceAppservice;
public ProductionReturnRequestAppService( public ProductionReturnRequestAppService(
IProductionReturnRequestRepository repository, IProductionReturnRequestRepository repository,
@ -39,7 +43,11 @@ public class ProductionReturnRequestAppService :
IItemStoreRelationAppService itemStoreRelationApp, IItemStoreRelationAppService itemStoreRelationApp,
IPurchaseOrderAppService purchaseOrderApp, IPurchaseOrderAppService purchaseOrderApp,
IItemBasicAppService itemBasicAppService, IItemBasicAppService itemBasicAppService,
ILocationAppService locationAppService) ILocationAppService locationAppService,
IBalanceAppService _balanceAppservice
)
: base(repository, productionRequestReturnManager) : base(repository, productionRequestReturnManager)
{ {
_productionReturnRequestManager = productionRequestReturnManager; _productionReturnRequestManager = productionRequestReturnManager;
@ -58,6 +66,18 @@ public class ProductionReturnRequestAppService :
//[Authorize(ProductionReturnRequestPermissions.Create)] //[Authorize(ProductionReturnRequestPermissions.Create)]
public override async Task<ProductionReturnRequestDTO> CreateAsync(ProductionReturnRequestEditInput input) public override async Task<ProductionReturnRequestDTO> CreateAsync(ProductionReturnRequestEditInput input)
{ {
//SfsInventoryRequestInputBase sfsRequestInput = new SfsInventoryRequestInputBase();
//sfsRequestInput.Condition
var entity = ObjectMapper.Map<ProductionReturnRequestEditInput, ProductionReturnRequest>(input); var entity = ObjectMapper.Map<ProductionReturnRequestEditInput, ProductionReturnRequest>(input);
await _productionReturnRequestManager.CreateAsync(entity).ConfigureAwait(false); await _productionReturnRequestManager.CreateAsync(entity).ConfigureAwait(false);

23
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/MesNoteEventHandler.cs

@ -40,18 +40,24 @@ public class MesNoteEventHandler
private async Task AddTransactionsAsync(List<MesNote> MesNotes) private async Task AddTransactionsAsync(List<MesNote> MesNotes)
{ {
//如果WMS管理报废库,生成库存转移 //if (await SettingManager.IsTrueAsync(StoreSettings.Common.EnableScrapLocation).ConfigureAwait(false))
if (await SettingManager.IsTrueAsync(StoreSettings.Common.EnableScrapLocation).ConfigureAwait(false)) //{
{ // var transferLogs = new List<TransferLogEditInput>();
// foreach (var MesNote in MesNotes)
// {
// transferLogs.AddRange(BuildTransferLogs(MesNote));
// }
// await TransferLogAppService.AddManyAsync(transferLogs).ConfigureAwait(false);
//}
//else
//{
var transferLogs = new List<TransferLogEditInput>(); var transferLogs = new List<TransferLogEditInput>();
foreach (var MesNote in MesNotes) foreach (var MesNote in MesNotes)
{ {
transferLogs.AddRange(BuildTransferLogs(MesNote)); transferLogs.AddRange(BuildTransferLogs(MesNote));
} }
await TransferLogAppService.AddManyAsync(transferLogs).ConfigureAwait(false); await TransferLogAppService.AddManyAsync(transferLogs).ConfigureAwait(false);
}
else
{
var transactions = new List<TransactionEditInput>(); var transactions = new List<TransactionEditInput>();
foreach (var MesNote in MesNotes) foreach (var MesNote in MesNotes)
{ {
@ -59,7 +65,7 @@ public class MesNoteEventHandler
} }
await TransactionAppService.AddManyAsync(transactions).ConfigureAwait(false); await TransactionAppService.AddManyAsync(transactions).ConfigureAwait(false);
} //}
} }
private List<TransferLogEditInput> BuildTransferLogs(MesNote MesNote) private List<TransferLogEditInput> BuildTransferLogs(MesNote MesNote)
@ -68,13 +74,11 @@ public class MesNoteEventHandler
foreach (var detail in MesNote.Details.Where(detail => detail.Qty != 0)) foreach (var detail in MesNote.Details.Where(detail => detail.Qty != 0))
{ {
var transferLog = ObjectMapper.Map<MesNoteDetail, TransferLogEditInput>(detail); var transferLog = ObjectMapper.Map<MesNoteDetail, TransferLogEditInput>(detail);
transferLog.TransType = TransType; transferLog.TransType = TransType;
transferLog.TransSubType = Enum.Parse<EnumTransSubType>(MesNote.Type); transferLog.TransSubType = Enum.Parse<EnumTransSubType>(MesNote.Type);
transferLog.Worker = MesNote.Worker; transferLog.Worker = MesNote.Worker;
transferLog.DocNumber = MesNote.Number; transferLog.DocNumber = MesNote.Number;
transferLog.JobNumber = MesNote.JobNumber; transferLog.JobNumber = MesNote.JobNumber;
transferLogs.Add(transferLog); transferLogs.Add(transferLog);
} }
@ -88,7 +92,6 @@ public class MesNoteEventHandler
foreach (var detail in deliverNote.Details) foreach (var detail in deliverNote.Details)
{ {
var transaction = ObjectMapper.Map<MesNoteDetail, TransactionEditInput>(detail); var transaction = ObjectMapper.Map<MesNoteDetail, TransactionEditInput>(detail);
transaction.TransType = TransType; transaction.TransType = TransType;
transaction.TransInOut = EnumTransInOut.Out; transaction.TransInOut = EnumTransInOut.Out;
transaction.Worker = deliverNote.Worker; transaction.Worker = deliverNote.Worker;

5
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/ProductionReturnNoteEventHandler.cs

@ -16,6 +16,10 @@ public class ProductionReturnNoteEventHandler
: StoreInventoryEventHandlerBase : StoreInventoryEventHandlerBase
, ILocalEventHandler<SfsCreatedEntityEventData<ProductionReturnNote>> , ILocalEventHandler<SfsCreatedEntityEventData<ProductionReturnNote>>
, ILocalEventHandler<SfsCreatedEntityEventData<List<ProductionReturnNote>>> , ILocalEventHandler<SfsCreatedEntityEventData<List<ProductionReturnNote>>>
{ {
private const EnumTransType TransType = EnumTransType.ProductionReturn; private const EnumTransType TransType = EnumTransType.ProductionReturn;
@ -57,7 +61,6 @@ public class ProductionReturnNoteEventHandler
private async Task AddTransactionsAsync(List<ProductionReturnNote> ProductionReturnNotes) private async Task AddTransactionsAsync(List<ProductionReturnNote> ProductionReturnNotes)
{ {
var inboundTransactions = new List<TransferLogEditInput>(); var inboundTransactions = new List<TransferLogEditInput>();
//如果要做库存事务汇总,可以修改此处 //如果要做库存事务汇总,可以修改此处

Loading…
Cancel
Save