Browse Source

修改 bug

集成Redis
郑勃旭 2 years ago
parent
commit
0fbd2e80d2
  1. 12
      be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/JobController.cs
  2. 19
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/Balances/BalanceManager.cs
  3. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/TransferRequests/Inputs/TransferRequestImportInput.cs
  4. 25
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/ScrapNotes/ScrapNoteAppService.cs
  5. 4
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ScrapRequests/ScrapRequestAppService.cs
  6. 117
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/TransferRequests/TransferRequestAppService.cs
  7. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs
  8. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/WipWarehouseAdjustRequests/WipWarehouseAdjustRequestAppService.cs
  9. 6
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/ExchangeDatas/EnumExchangeDataType.cs
  10. 8
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Notes/TransferNoteAutoMapperProfile.cs
  11. 57
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/DataExchanges/ItemTransformNoteEventHandler.cs
  12. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/DataExchanges/ScrapNoteEventHandler.cs
  13. 48
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/DataExchanges/TransferNoteEventHandler.cs
  14. 56
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/DataExchanges/WipWarehouseAdjustNoteEventHandler.cs
  15. 7
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/IHasLocationDtoExtensions.cs

12
be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Jobs/JobController.cs

@ -71,7 +71,7 @@ public class JobController : AbpController
/// </summary>
/// <returns></returns>
[HttpGet("")]
public virtual async Task<ListResultDto<JobCountDto>> CountAsync()
public virtual async Task<ListResultDto<JobCountDto>> CountAsync(bool isToday)
{
var wlgCodes = await _userWorkGroupAppService.GetCodsOfCurrentUserAsync().ConfigureAwait(false);
var jsonCodes = JsonSerializer.Serialize(wlgCodes);
@ -146,7 +146,7 @@ public class JobController : AbpController
}).ConfigureAwait(false);
list.Add(new JobCountDto { JobType = EnumJobType.ProductReceiveJob, Count = productReceiveJobs });
var purchaseReceiptJobs = await _purchaseReceiptJobAppService.GetCountByFilterAsync(new SfsJobRequestInputBase
var purchaseReceiptJobRequest = new SfsJobRequestInputBase
{
Condition = new Condition
{
@ -156,8 +156,12 @@ public class JobController : AbpController
new(nameof(PurchaseReceiptJobDTO.JobStatus),jsonStatus,"In")
}
}
}).ConfigureAwait(false);
list.Add(new JobCountDto { JobType = EnumJobType.PurchaseReceiptJob, Count = purchaseReceiptJobs });
};
if (isToday)//只看当日
{
purchaseReceiptJobRequest.Condition.Filters.Add(new Filter(nameof(PurchaseReceiptJobDTO.PlanArriveDate), Clock.Now.ToString("yyyy-MM-dd"), ">=", "And"));
purchaseReceiptJobRequest.Condition.Filters.Add(new Filter(nameof(PurchaseReceiptJobDTO.PlanArriveDate), Clock.Now.AddDays(1).ToString("yyyy-MM-dd"), "<=", "And"));
}
var purchaseReturnJobs = await _purchaseReturnJobAppService.GetCountByFilterAsync(new SfsJobRequestInputBase
{

19
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/Balances/BalanceManager.cs

@ -105,6 +105,15 @@ public class BalanceManager : DomainService, IBalanceManager
}
else
{
if (existBalance.IsActive == false)
{
throw new UserFriendlyException($"库位在{existBalance.LocationCode}," +
$"物品编号为{existBalance.ItemCode}," +
$"箱码为{existBalance.PackingCode}," +
$"批次为{existBalance.Lot}," +
$"状态为{existBalance.Status.GetDisplayName()}" +
$"的库存是不可用状态");
}
//如果单件管理的库存已存在,报错
transaction.CheckSingleUnitHasExist();
existBalance.IncreaseQty(transaction.Qty);
@ -202,6 +211,16 @@ public class BalanceManager : DomainService, IBalanceManager
}
else
{
if (existBalance.IsActive == false)
{
throw new UserFriendlyException($"库位在{existBalance.LocationCode}," +
$"物品编号为{existBalance.ItemCode}," +
$"箱码为{existBalance.PackingCode}," +
$"批次为{existBalance.Lot}," +
$"状态为{existBalance.Status}" +
$"的库存是不可用状态");
}
existBalance.IncreaseQty(transaction.Qty);
switch (existBalance.Qty)
{

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/TransferRequests/Inputs/TransferRequestImportInput.cs

@ -14,6 +14,8 @@ public class TransferRequestImportInput : SfsStoreImportInputBase
[Required(ErrorMessage = "{0}是必填项")]
[ImporterHeader(Name = "调拨类型")]
[ExporterHeader(DisplayName = "调拨类型")]
[ValueMapping("区域间调拨(储位调拨)", EnumTransSubType.Transfer_Area)]
[ValueMapping("线边调拨(线边仓调拨)", EnumTransSubType.Transfer_WIP)]
[ValueMapping("客户库位调拨(客户储位调拨)", EnumTransSubType.Transfer_Customer)]
public string Type { get; set; }

25
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/ScrapNotes/ScrapNoteAppService.cs

@ -7,6 +7,7 @@ using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.Application.Dtos;
using Volo.Abp.EventBus;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Domain.Shared;
@ -27,9 +28,14 @@ public class ScrapNoteAppService :
ScrapNoteDetail, ScrapNoteDetailDTO, SfsStoreRequestInputBase, ScrapNoteImportInput>,
IScrapNoteAppService
{
private readonly ILocationAppService _locationAppService;
private readonly IItemBasicAppService _itemBasicAppService;
public ScrapNoteAppService(
IScrapNoteRepository repository) : base(repository)
IScrapNoteRepository repository, ILocationAppService locationAppService, IItemBasicAppService itemBasicAppService) : base(repository)
{
_locationAppService = locationAppService;
_itemBasicAppService = itemBasicAppService;
}
[HttpPost("")]
@ -42,7 +48,24 @@ public class ScrapNoteAppService :
foreach (var detail in entity.Details)
{
var fromLocation=await _locationAppService.GetByCodeAsync(detail.FromLocationCode).ConfigureAwait(false);
var toLocation =await _locationAppService.GetByCodeAsync(detail.ToLocationCode).ConfigureAwait(false);
var itemBasicDto =await _itemBasicAppService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false);
detail.SetIdAndNumber(GuidGenerator, entity.Id, entity.Number);
detail.FromLocationArea = fromLocation.AreaCode;
detail.FromLocationErpCode = fromLocation.ErpLocationCode;
detail.FromLocationGroup = fromLocation.LocationGroupCode;
detail.FromWarehouseCode = fromLocation.WarehouseCode;
detail.ToLocationArea = toLocation.AreaCode;
detail.ToLocationErpCode = toLocation.ErpLocationCode;
detail.ToLocationGroup = toLocation.LocationGroupCode;
detail.ToWarehouseCode = toLocation.WarehouseCode;
detail.ToStatus = detail.FromStatus;
detail.Uom = itemBasicDto.BasicUom;
detail.StdPackQty = itemBasicDto.StdPackQty;
}
entity = await _repository.InsertAsync(entity).ConfigureAwait(false);

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

@ -70,20 +70,22 @@ public class ScrapRequestAppService : SfsStoreRequestAppServiceBase
scrapRequest.Type = scrapRequest.Type;
EnumTransSubType enumTransSubType = 0;
if (scrapRequest.Type == "原料报废")
{
enumTransSubType = EnumTransSubType.Scrap_Manual;
scrapRequest.Type = EnumTransSubType.Scrap_Manual.ToString();
}
if (scrapRequest.Type== "线边报废")
{
enumTransSubType = EnumTransSubType.Scrap_WIP;
scrapRequest.Type = EnumTransSubType.Scrap_WIP.ToString();
}
if (scrapRequest.Type == "完工报废")
{
enumTransSubType = EnumTransSubType.Scrap_Product;
scrapRequest.Type= EnumTransSubType.Scrap_Product.ToString();
}
await SetEntityPropertiesAsync(scrapRequest, enumTransSubType).ConfigureAwait(false);

117
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/TransferRequests/TransferRequestAppService.cs

@ -64,54 +64,87 @@ public class TransferRequestAppService : SfsStoreRequestAppServiceBase
foreach (var transferRequest in addList)
{
if (transferRequest.Type == EnumTransSubType.Transfer_Customer.GetDisplayName()) //客户储位调拨
EnumTransSubType enumTransSubType = EnumTransSubType.None;
//储位
if (transferRequest.Type == EnumTransSubType.Transfer_Area.GetDisplayName())
{
transferRequest.Type = EnumTransSubType.Transfer_Area.ToString(); //重点 需要转换
enumTransSubType = EnumTransSubType.Transfer_Area;
transferRequest.UseOnTheWayLocation = false;
}
//储位内
if (transferRequest.Type == EnumTransSubType.Transfer_Inside.GetDisplayName())
{
transferRequest.Type = EnumTransSubType.Transfer_Inside.ToString(); //重点 需要转换
enumTransSubType = EnumTransSubType.Transfer_Inside;
transferRequest.UseOnTheWayLocation = false;
}
//库间
if (transferRequest.Type == EnumTransSubType.Transfer_Warehouse.GetDisplayName())
{
transferRequest.Type = EnumTransSubType.Transfer_Warehouse.ToString(); //重点 需要转换
enumTransSubType = EnumTransSubType.Transfer_Warehouse;
transferRequest.UseOnTheWayLocation = true;
}
//客户储位
if (transferRequest.Type == EnumTransSubType.Transfer_Customer.GetDisplayName())
{
transferRequest.Type = EnumTransSubType.Transfer_Customer.ToString(); //重点 需要转换
enumTransSubType = EnumTransSubType.Transfer_Customer;
transferRequest.UseOnTheWayLocation = true;
}
//线边调拨
if (transferRequest.Type == EnumTransSubType.Transfer_WIP.GetDisplayName())
{
transferRequest.Type = EnumTransSubType.Transfer_WIP.ToString(); //重点 需要转换
enumTransSubType = EnumTransSubType.Transfer_WIP;
transferRequest.UseOnTheWayLocation = true;
}
foreach (var detail in transferRequest.Details)
{
var balanceDto = await _balanceAppService.GetByItemLocationAndPackingAsync(detail.FromPackingCode,
detail.ItemCode, detail.FromLocationCode).ConfigureAwait(false);
var toLocationDto = await _locationAppService.GetByCodeAsync(detail.ToLocationCode)
.ConfigureAwait(false);
detail.ItemCode = balanceDto.ItemCode;
detail.ArriveDate = balanceDto.ArriveDate;
detail.ItemDesc1 = balanceDto.ItemDesc1;
detail.ItemDesc2 = balanceDto.ItemDesc2;
detail.ItemName = balanceDto.ItemName;
detail.ProduceDate = balanceDto.ProduceDate;
detail.Qty = balanceDto.Qty;
detail.Uom = balanceDto.Uom;
detail.ExpireDate = balanceDto.ExpireDate;
detail.StdPackQty = balanceDto.StdPackQty;
detail.SupplierBatch = balanceDto.SupplierBatch;
detail.FromLocationArea = balanceDto.LocationArea;
detail.FromContainerCode = balanceDto.ContainerCode;
detail.FromLocationErpCode = balanceDto.LocationErpCode;
detail.FromLocationGroup = balanceDto.LocationGroup;
detail.FromPackingCode = balanceDto.PackingCode;
detail.FromLocationArea = balanceDto.LocationArea;
detail.FromStatus = balanceDto.Status;
detail.FromWarehouseCode = balanceDto.WarehouseCode;
detail.FromLot = balanceDto.Lot;
detail.ToLocationArea = toLocationDto.AreaCode;
detail.ToLocationErpCode = toLocationDto.LocationGroupCode;
detail.ToLocationGroup = toLocationDto.LocationGroupCode;
detail.ToWarehouseCode = toLocationDto.WarehouseCode;
detail.ToContainerCode = balanceDto.ContainerCode;
detail.ToPackingCode = balanceDto.PackingCode;
detail.ToLocationArea = balanceDto.LocationArea;
detail.ToStatus = balanceDto.Status;
detail.ToLot = balanceDto.Lot;
}
await SetEntityPropertiesAsync(transferRequest, EnumTransSubType.Transfer_Customer)
foreach (var detail in transferRequest.Details)
{
var balanceDto = await _balanceAppService.GetByItemLocationAndPackingAsync(detail.FromPackingCode,
detail.ItemCode, detail.FromLocationCode).ConfigureAwait(false);
var toLocationDto = await _locationAppService.GetByCodeAsync(detail.ToLocationCode)
.ConfigureAwait(false);
detail.ItemCode = balanceDto.ItemCode;
detail.ArriveDate = balanceDto.ArriveDate;
detail.ItemDesc1 = balanceDto.ItemDesc1;
detail.ItemDesc2 = balanceDto.ItemDesc2;
detail.ItemName = balanceDto.ItemName;
detail.ProduceDate = balanceDto.ProduceDate;
detail.Qty = detail.Qty;
detail.Uom = balanceDto.Uom;
detail.ExpireDate = balanceDto.ExpireDate;
detail.StdPackQty = balanceDto.StdPackQty;
detail.SupplierBatch = balanceDto.SupplierBatch;
detail.FromLocationArea = balanceDto.LocationArea;
detail.FromContainerCode = balanceDto.ContainerCode;
detail.FromLocationErpCode = balanceDto.LocationErpCode;
detail.FromLocationGroup = balanceDto.LocationGroup;
detail.FromPackingCode = balanceDto.PackingCode;
detail.FromLocationArea = balanceDto.LocationArea;
detail.FromStatus = balanceDto.Status;
detail.FromWarehouseCode = balanceDto.WarehouseCode;
detail.FromLot = balanceDto.Lot;
detail.ToLocationArea = toLocationDto.AreaCode;
detail.ToLocationErpCode = toLocationDto.LocationGroupCode;
detail.ToLocationGroup = toLocationDto.LocationGroupCode;
detail.ToWarehouseCode = toLocationDto.WarehouseCode;
detail.ToContainerCode = balanceDto.ContainerCode;
detail.ToPackingCode = balanceDto.PackingCode;
detail.ToLocationArea = balanceDto.LocationArea;
detail.ToStatus = balanceDto.Status;
detail.ToLot = balanceDto.Lot;
}
await SetEntityPropertiesAsync(transferRequest, enumTransSubType)
.ConfigureAwait(false);
}
return dictionary;

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs

@ -107,7 +107,7 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA
detail.Lot = balance.Lot;
detail.ContainerCode = balance.ContainerCode;
detail.PackingCode = balance.PackingCode;
detail.Qty = balance.Qty;
detail.Qty = detail.Qty;
detail.Status = balance.Status;
}

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/WipWarehouseAdjustRequests/WipWarehouseAdjustRequestAppService.cs

@ -134,6 +134,7 @@ public class WipWarehouseAdjustRequestAppService : SfsStoreRequestAppServiceBase
/// 新增实体
/// </summary>
/// <param name="input">CreateInput</param>
[HttpPost("")]
public override async Task<WipWarehouseAdjustRequestDTO> CreateAsync(WipWarehouseAdjustRequestEditInput input)
{
var entity = ObjectMapper.Map<WipWarehouseAdjustRequestEditInput, WipWarehouseAdjustRequest>(input);

6
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/ExchangeDatas/EnumExchangeDataType.cs

@ -25,4 +25,10 @@ public enum EnumExchangeDataType
RecycledMaterialReceipt = 23,
ProductRecycle = 24,
PurchaseOrder = 25,
//报废
Scrap = 26,
//线边调整
WipAdjust = 27,
//回收料调整
Item_Transform = 28
}

8
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Notes/TransferNoteAutoMapperProfile.cs

@ -29,6 +29,14 @@ public partial class StoreEventAutoMapperProfile : Profile
.Ignore(x => x.WarehouseCode)
;
CreateMap<TransferNoteDetail, TransferLogEditInput>()
.Ignore(x => x.ExtraProperties)
.Ignore(x => x.DocNumber)
.Ignore(x => x.JobNumber)
.Ignore(x => x.Worker)
.Ignore(x => x.TransType)
.Ignore(x => x.TransSubType)
;
}
}

57
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/DataExchanges/ItemTransformNoteEventHandler.cs

@ -0,0 +1,57 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.EventBus;
using Volo.Abp.Uow;
using Win_in.Sfs.Basedata.Application.Contracts;
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;
namespace Win_in.Sfs.Wms.Store.Event.DataExchanges
{
public class ItemTransformNoteEventHandler
: StoreDataExchangeEventHandlerBase<ItemTransformNote>
, ILocalEventHandler<SfsCreatedEntityEventData<ItemTransformNote>>
, ILocalEventHandler<SfsCreatedEntityEventData<List<ItemTransformNote>>>
{
private const EnumExchangeDataType ExchangeDataType = EnumExchangeDataType.Item_Transform;
private const EnumTransSubType TransSubType = EnumTransSubType.Item_Transform;
private readonly ILocationAppService _locationAppService;
public ItemTransformNoteEventHandler(ILocationAppService locationAppService)
{
_locationAppService = locationAppService;
}
[Volo.Abp.Uow.UnitOfWork]
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<ItemTransformNote> eventData)
{
var entity = eventData.Entity;
await AddExchangeDataAsync(entity);
}
[Volo.Abp.Uow.UnitOfWork]
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<List<ItemTransformNote>> eventData)
{
var entities = eventData.Entity;
await AddExchangeDataAsync(entities);
}
protected override async Task AddExchangeDataAsync(List<ItemTransformNote> entities)
{
var dtos = ObjectMapper.Map<List<ItemTransformNote>, List<ItemTransformNoteDTO>>(entities);
foreach (var dto in dtos)
{
dto.Type = TransSubType.ToString();
}
var exchangeData = await BuildExchangeDataAsync(StoreEventConsts.WMS, StoreEventConsts.ERP, ExchangeDataType, dtos);
await AddManyAsync(exchangeData);
}
}
}

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/DataExchanges/ScrapNoteEventHandler.cs

@ -47,7 +47,7 @@ public class ScrapNoteEventHandler
}
else
{
var exchangeData = await BuildExchangeDataAsync(StoreEventConsts.WMS, StoreEventConsts.ERP, EnumExchangeDataType.UnplannedIssue, dtos).ConfigureAwait(false);
var exchangeData = await BuildExchangeDataAsync(StoreEventConsts.WMS, StoreEventConsts.ERP, EnumExchangeDataType.Scrap, dtos).ConfigureAwait(false);
await AddManyAsync(exchangeData).ConfigureAwait(false);
}
}

48
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/DataExchanges/TransferNoteEventHandler.cs

@ -0,0 +1,48 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.EventBus;
using Volo.Abp.Uow;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Inventory.Domain.Acl.Location;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
using ILocationAclService = Win_in.Sfs.Wms.Store.Domain.Acl.Location.ILocationAclService;
namespace Win_in.Sfs.Wms.Store.Event.DataExchanges
{
public class TransferNoteEventHandler :
StoreDataExchangeEventHandlerBase<TransferNote>
, ILocalEventHandler<SfsCreatedEntityEventData<TransferNote>>
{
private readonly Domain.Acl.Location.ILocationAclService _locationAclService;
public TransferNoteEventHandler(ILocationAclService locationAclService)
{
_locationAclService = locationAclService;
}
[UnitOfWork]
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<TransferNote> eventData)
{
var entity = eventData.Entity;
await AddExchangeDataAsync(entity).ConfigureAwait(false);
}
protected override async Task AddExchangeDataAsync(List<TransferNote> entities)
{
var dtos = ObjectMapper.Map<List<TransferNote>, List<TransferNoteDTO>>(entities);
foreach (var detail in dtos.SelectMany(dto => dto.Details))
{
await detail.TrySetLocationAsync(_locationAclService).ConfigureAwait(false);
}
var exchangeData = await BuildExchangeDataAsync(StoreEventConsts.WMS, StoreEventConsts.ERP, EnumExchangeDataType.Transfer, dtos).ConfigureAwait(false);
await AddManyAsync(exchangeData).ConfigureAwait(false);
}
}
}

56
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/DataExchanges/WipWarehouseAdjustNoteEventHandler.cs

@ -0,0 +1,56 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.EventBus;
using Volo.Abp.Uow;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Domain.Acl.Location;
namespace Win_in.Sfs.Wms.Store.Event.DataExchanges
{
public class WipWarehouseAdjustNoteEventHandler
: StoreDataExchangeEventHandlerBase<WipWarehouseAdjustNote>
, ILocalEventHandler<SfsCreatedEntityEventData<WipWarehouseAdjustNote>>
, ILocalEventHandler<SfsCreatedEntityEventData<List<WipWarehouseAdjustNote>>>
{
private const EnumExchangeDataType ExchangeDataType = EnumExchangeDataType.WipAdjust;
private ILocationAclService _locationAclService;
public WipWarehouseAdjustNoteEventHandler(ILocationAclService locationAclService)
{
_locationAclService = locationAclService;
}
[Volo.Abp.Uow.UnitOfWork]
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<WipWarehouseAdjustNote> eventData)
{
var entity = eventData.Entity;
await AddExchangeDataAsync(entity);
}
[Volo.Abp.Uow.UnitOfWork]
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<List<WipWarehouseAdjustNote>> eventData)
{
var entities = eventData.Entity;
await AddExchangeDataAsync(entities);
}
protected override async Task AddExchangeDataAsync(List<WipWarehouseAdjustNote> entities)
{
var dtos = ObjectMapper.Map<List<WipWarehouseAdjustNote>, List<WipWarehouseAdjustNoteDTO>>(entities);
foreach (var detail in dtos.SelectMany(dto => dto.Details))
{
await detail.TrySetLocationAsync(_locationAclService).ConfigureAwait(false);
}
var exchangeData = await BuildExchangeDataAsync(StoreEventConsts.WMS, StoreEventConsts.ERP, ExchangeDataType, dtos).ConfigureAwait(false);
await AddManyAsync(exchangeData).ConfigureAwait(false);
}
}
}

7
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/IHasLocationDtoExtensions.cs

@ -16,6 +16,8 @@ public static class IHasLocationExtensions
{
hasLocation.LocationErpCode = location.ErpLocationCode;
hasLocation.WarehouseCode = location.WarehouseCode;
hasLocation.LocationArea = location.AreaCode;
hasLocation.LocationGroup = location.LocationGroupCode;
}
}
}
@ -28,6 +30,9 @@ public static class IHasLocationExtensions
if (location != null)
{
hasFromTolocation.FromLocationErpCode = location.ErpLocationCode;
hasFromTolocation.FromLocationGroup = location.LocationGroupCode;
hasFromTolocation.FromLocationArea = location.AreaCode;
if (string.IsNullOrEmpty(hasFromTolocation.FromWarehouseCode))
{
hasFromTolocation.FromWarehouseCode = location.WarehouseCode;
@ -40,6 +45,8 @@ public static class IHasLocationExtensions
var location = await locationAclService.GetByCodeAsync(hasFromTolocation.ToLocationCode).ConfigureAwait(false);
if (location != null)
{
hasFromTolocation.ToLocationArea = location.AreaCode;
hasFromTolocation.ToLocationGroup = location.LocationGroupCode;
hasFromTolocation.ToLocationErpCode = location.ErpLocationCode;
if (string.IsNullOrEmpty(hasFromTolocation.ToWarehouseCode))
{

Loading…
Cancel
Save