Browse Source

临时提交

dev_DY_CC
刘云峰 1 year ago
parent
commit
0b2b3943e3
  1. 139
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/TransferLibJobs/TransferLibJobManager.cs
  2. 30
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Notes/TransferLibNoteAutoMapperProfile.cs
  3. 206
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/TransferLibNoteEventHandler.cs

139
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/TransferLibJobs/TransferLibJobManager.cs

@ -47,6 +47,145 @@ public class TransferLibJobManager : SfsJobManagerBase<TransferLibJob, TransferL
public override async Task<TransferLibJob> CompleteAsync(TransferLibJob input, ICurrentUser user)
{
TransferLibJob entity = await Repository.FindAsync(input.Id).ConfigureAwait(false);
entity.RequestNumber = input.RequestNumber;
entity.JobNumber = input.JobNumber;
entity.Type = input.Type;
entity.UseOnTheWayLocation = input.UseOnTheWayLocation;
entity.ConfirmTime = input.ConfirmTime;
entity.CreationTime = input.CreationTime;
entity.CreatorId = input.CreatorId;
entity.LastModificationTime = input.LastModificationTime;
entity.LastModifierId = input.LastModifierId;
entity.Remark = input.Remark;
entity.Worker = input.Worker;
entity.Number = input.Number;
entity.UpStreamJobNumber = input.UpStreamJobNumber;
entity.JobDescription = input.JobDescription;
entity.JobType = input.JobType;
entity.JobStatus = input.JobStatus;
entity.Priority = input.Priority;
entity.PriorityIncrement = input.PriorityIncrement;
entity.WorkGroupCode = input.WorkGroupCode;
entity.IsAutoComplete = input.IsAutoComplete;
entity.AcceptUserId = input.AcceptUserId;
entity.AcceptUserName = input.AcceptUserName;
entity.AcceptTime = input.AcceptTime;
entity.CompleteUserId = input.CompleteUserId;
entity.CompleteUserName = input.CompleteUserName;
entity.CompleteTime = input.CompleteTime;
entity.WarehouseCode = input.WarehouseCode;
entity.Confirmed = input.Confirmed;
entity.CallBusinessType = input.CallBusinessType;
entity.CallJobNumber = input.CallJobNumber;
entity.CallRequestNumber = input.CallRequestNumber;
entity.CallServerName = input.CallServerName;
foreach (var entityDetail in entity.Details)
{
var inputDetail = input.Details.FirstOrDefault(itm => itm.Id == entityDetail.Id);
if (inputDetail != null)
{
entityDetail.OnTheWayLocationCode = inputDetail.OnTheWayLocationCode;
entityDetail.Reason = inputDetail.Reason;
entityDetail.JobStatus = inputDetail.JobStatus;
//entityDetail.CreationTime = inputDetail.CreationTime;
//entityDetail.CreatorId = inputDetail.CreatorId;
entityDetail.LastModificationTime = inputDetail.LastModificationTime;
entityDetail.LastModifierId = inputDetail.LastModifierId;
//entityDetail.MasterID = inputDetail.MasterID;
entityDetail.Number = inputDetail.Number;
entityDetail.Remark = inputDetail.Remark;
entityDetail.ItemName = inputDetail.ItemName;
entityDetail.ItemDesc1 = inputDetail.ItemDesc1;
entityDetail.ItemDesc2 = inputDetail.ItemDesc2;
entityDetail.ItemCode = inputDetail.ItemCode;
entityDetail.Uom = inputDetail.Uom;
entityDetail.StdPackQty = inputDetail.StdPackQty;
entityDetail.RequestLocationErpCode = inputDetail.RequestLocationErpCode;
entityDetail.HandledToArriveDate = inputDetail.HandledToArriveDate;
entityDetail.HandledToProduceDate = inputDetail.HandledToProduceDate;
entityDetail.HandledToExpireDate = inputDetail.HandledToExpireDate;
entityDetail.RequestLocationArea = inputDetail.RequestLocationArea;
entityDetail.RequestLocationCode = inputDetail.RequestLocationCode;
entityDetail.RecommendType = inputDetail.RecommendType;
entityDetail.RequestLocationGroup = inputDetail.RequestLocationGroup;
entityDetail.RequestWarehouseCode = inputDetail.RequestWarehouseCode;
entityDetail.Status = inputDetail.Status;
entityDetail.CallBusinessType = inputDetail.CallBusinessType;
entityDetail.CallJobNumber = inputDetail.CallJobNumber;
entityDetail.CallRequestNumber = inputDetail.CallRequestNumber;
entityDetail.CallServerName = inputDetail.CallServerName;
entityDetail.RecommendFromArriveDate = inputDetail.RecommendFromArriveDate;
entityDetail.RecommendFromContainerCode = inputDetail.RecommendFromContainerCode;
entityDetail.RecommendFromExpireDate = inputDetail.RecommendFromExpireDate;
entityDetail.RecommendFromLocationArea = inputDetail.RecommendFromLocationArea;
entityDetail.RecommendFromLocationCode = inputDetail.RecommendFromLocationCode;
entityDetail.RecommendFromLocationErpCode = inputDetail.RecommendFromLocationErpCode;
entityDetail.RecommendFromLocationGroup = inputDetail.RecommendFromLocationGroup;
entityDetail.RecommendFromLot = inputDetail.RecommendFromLot;
entityDetail.RecommendFromPackingCode = inputDetail.RecommendFromPackingCode;
entityDetail.RecommendFromProduceDate = inputDetail.RecommendFromProduceDate;
entityDetail.RecommendFromQty = inputDetail.RecommendFromQty;
entityDetail.RecommendFromSupplierBatch = inputDetail.RecommendFromSupplierBatch;
entityDetail.RecommendFromWarehouseCode = inputDetail.RecommendFromWarehouseCode;
entityDetail.RecommendToArriveDate = inputDetail.RecommendToArriveDate;
entityDetail.RecommendToContainerCode = inputDetail.RecommendToContainerCode;
entityDetail.RecommendToExpireDate = inputDetail.RecommendToExpireDate;
entityDetail.RecommendToLocationArea = inputDetail.RecommendToLocationArea;
entityDetail.RecommendToLocationCode = inputDetail.RecommendToLocationCode;
entityDetail.RecommendToLocationErpCode = inputDetail.RecommendToLocationErpCode;
entityDetail.RecommendToLocationGroup = inputDetail.RecommendToLocationGroup;
entityDetail.RecommendToLot = inputDetail.RecommendToLot;
entityDetail.RecommendToPackingCode = inputDetail.RecommendToPackingCode;
entityDetail.RecommendToProduceDate = inputDetail.RecommendToProduceDate;
entityDetail.RecommendToQty = inputDetail.RecommendToQty;
entityDetail.RecommendToSupplierBatch = inputDetail.RecommendToSupplierBatch;
entityDetail.RecommendToWarehouseCode = inputDetail.RecommendToWarehouseCode;
entityDetail.HandledFromArriveDate = inputDetail.HandledFromArriveDate;
entityDetail.HandledFromContainerCode = inputDetail.HandledFromContainerCode;
entityDetail.HandledFromExpireDate = inputDetail.HandledFromExpireDate;
entityDetail.HandledFromLocationArea = inputDetail.HandledFromLocationArea;
entityDetail.HandledFromLocationCode = inputDetail.HandledFromLocationCode;
entityDetail.HandledFromLocationErpCode = inputDetail.HandledFromLocationErpCode;
entityDetail.HandledFromLocationGroup = inputDetail.HandledFromLocationGroup;
entityDetail.HandledFromLot = inputDetail.HandledFromLot;
entityDetail.HandledFromPackingCode = inputDetail.HandledFromPackingCode;
entityDetail.HandledFromProduceDate = inputDetail.HandledFromProduceDate;
entityDetail.HandledFromQty = inputDetail.HandledFromQty;
entityDetail.HandledFromSupplierBatch = inputDetail.HandledFromSupplierBatch;
entityDetail.HandledFromWarehouseCode = inputDetail.HandledFromWarehouseCode;
entityDetail.HandledToContainerCode = inputDetail.HandledToContainerCode;
entityDetail.HandledToLocationArea = inputDetail.HandledToLocationArea;
entityDetail.HandledToLocationCode = inputDetail.HandledToLocationCode;
entityDetail.HandledToLocationErpCode = inputDetail.HandledToLocationErpCode;
entityDetail.HandledToLocationGroup = inputDetail.HandledToLocationGroup;
entityDetail.HandledToLot = inputDetail.HandledToLot;
entityDetail.HandledToPackingCode = inputDetail.HandledToPackingCode;
entityDetail.HandledToQty = inputDetail.HandledToQty;
entityDetail.HandledToSupplierBatch = inputDetail.HandledToSupplierBatch;
entityDetail.HandledToWarehouseCode = inputDetail.HandledToWarehouseCode;
entityDetail.IsItemCodeFrom = inputDetail.IsItemCodeFrom;
entityDetail.IsItemCodeTo = inputDetail.IsItemCodeTo;
entityDetail.IsLocationAreaFrom = inputDetail.IsLocationAreaFrom;
entityDetail.IsLocationAreaTo = inputDetail.IsLocationAreaTo;
entityDetail.IsLocationCodeFrom = inputDetail.IsLocationCodeFrom;
entityDetail.IsLocationCodeTo = inputDetail.IsLocationCodeTo;
entityDetail.IsLocationErpCodeFrom = inputDetail.IsLocationErpCodeFrom;
entityDetail.IsLocationErpCodeTo = inputDetail.IsLocationErpCodeTo;
entityDetail.IsLocationGroupFrom = inputDetail.IsLocationGroupFrom;
entityDetail.IsLocationGroupTo = inputDetail.IsLocationGroupTo;
entityDetail.IsLotFrom = inputDetail.IsLotFrom;
entityDetail.IsLotTo = inputDetail.IsLotTo;
entityDetail.IsPackingCodeFrom = inputDetail.IsPackingCodeFrom;
entityDetail.IsPackingCodeTo = inputDetail.IsPackingCodeTo;
entityDetail.IsQtyFrom = inputDetail.IsQtyFrom;
entityDetail.IsQtyTo = inputDetail.IsQtyTo;
entityDetail.IsStatusFrom = inputDetail.IsStatusFrom;
entityDetail.IsStatusTo = inputDetail.IsStatusTo;
entityDetail.PositionCode = inputDetail.PositionCode;
entityDetail.ProdLine = inputDetail.ProdLine;
entityDetail.RequestQty = inputDetail.RequestQty;
}
}
return await base.CompleteAsync(entity, user).ConfigureAwait(false);
}
}

30
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Notes/TransferLibNoteAutoMapperProfile.cs

@ -11,24 +11,34 @@ public partial class StoreEventAutoMapperProfile : Profile
{
private void TransferLibNoteAutoMapperProfile()
{
CreateMap<UnplannedIssueNoteDetail, TransactionEditInput>()
.MapNegativeQty()
.ForMember(dest => dest.DocNumber, opts => opts.MapFrom(src => src.Number))
CreateMap<TransferLibNoteDetail, TransactionEditInput>(MemberList.None)
.Ignore(x => x.ExtraProperties)
.Ignore(x => x.DocNumber)
.Ignore(x => x.JobNumber)
.Ignore(x => x.Worker)
.Ignore(x => x.ManageType)
.Ignore(x => x.TransType)
.Ignore(x => x.TransSubType)
.Ignore(x => x.PackingCode)
.Ignore(x => x.Lot)
.Ignore(x => x.Status)
.Ignore(x => x.TransInOut)
.Ignore(x => x.ExtraProperties)
.Ignore(x => x.LocationCode)
.Ignore(x => x.LocationGroup)
.Ignore(x => x.LocationErpCode)
.Ignore(x => x.LocationArea)
.Ignore(x => x.ContainerCode)
.Ignore(x => x.ManageType)
.Ignore(x => x.WarehouseCode)
;
CreateMap<TransferLibNoteDetail, TransferLogEditInput>(MemberList.None)
.Ignore(x => x.ExtraProperties)
.Ignore(x => x.DocNumber)
.Ignore(x => x.JobNumber)
.Ignore(x => x.Worker)
.Ignore(x => x.TransType)
.Ignore(x => x.TransSubType)
;
CreateMap<UnplannedIssueNote, UnplannedIssueNoteDTO>()
.ReverseMap();
CreateMap<UnplannedIssueNoteDetail, UnplannedIssueNoteDetailDTO>()
.ReverseMap();
}
}

206
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/TransferLibNoteEventHandler.cs

@ -0,0 +1,206 @@
using System;
using System.Collections.Generic;
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.Inventory.Application.Contracts;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Event.Transaction;
namespace Win_in.Sfs.Wms.Store.Event.Transactions;
public class TransferLibNoteEventHandler
: StoreInventoryEventHandlerBase
, ILocalEventHandler<SfsCreatedEntityEventData<TransferLibNote>>
, ILocalEventHandler<SfsConfirmedEntityEventData<TransferLibNote>>
, ILocalEventHandler<SfsCreatedEntityEventData<List<TransferLibNote>>>
{
private const EnumTransType TransType = EnumTransType.TransferLib;
private readonly ILocationAppService _locationAppService;
private readonly ITransferLogAppService _transferLogAppService;
public TransferLibNoteEventHandler(ILocationAppService locationAppService, ITransferLogAppService transferLogAppService)
{
_locationAppService = locationAppService;
_transferLogAppService = transferLogAppService;
}
/// <summary>
/// 创建 后
/// </summary>
/// <param name="eventData"></param>
/// <returns></returns>
[UnitOfWork]
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<TransferLibNote> eventData)
{
var entity = eventData.Entity;
var route = entity.UseOnTheWayLocation
? EnumTransferRoute.SourceToOnTheWay
: EnumTransferRoute.SourceToDestination;
var inputList = await BuildTransferLogsAsync(entity, route).ConfigureAwait(false);
await AddTransferLogsAsync(inputList).ConfigureAwait(false);
}
/// <summary>
/// 批量创建 后
/// </summary>
/// <param name="eventData"></param>
/// <returns></returns>
[UnitOfWork]
public virtual async Task HandleEventAsync(SfsCreatedEntityEventData<List<TransferLibNote>> eventData)
{
foreach (var entity in eventData.Entity)
{
var route = entity.UseOnTheWayLocation
? EnumTransferRoute.SourceToOnTheWay
: EnumTransferRoute.SourceToDestination;
var inputList = await BuildTransferLogsAsync(entity, route).ConfigureAwait(false);
await AddTransferLogsAsync(inputList).ConfigureAwait(false);
}
}
/// <summary>
/// 确认 后
/// </summary>
/// <param name="eventData"></param>
/// <returns></returns>
[UnitOfWork]
public virtual async Task HandleEventAsync(SfsConfirmedEntityEventData<TransferLibNote> eventData)
{
var entity = eventData.Entity;
var inputList = await BuildTransferLogsAsync(entity, EnumTransferRoute.OnTheWayToDestination).ConfigureAwait(false);
await AddTransferLogsAsync(inputList).ConfigureAwait(false);
}
private async Task AddTransferLogsAsync(List<TransferLogEditInput> inputList)
{
var transferLogs = new List<TransferLogEditInput>();
transferLogs.AddRange(inputList);
await _transferLogAppService.AddManyAsync(transferLogs).ConfigureAwait(false);
}
/// <summary>
/// 构建正常的input
/// </summary>
/// <param name="note"></param>
/// <param name="route"></param>
/// <returns></returns>
private async Task<List<TransferLogEditInput>> BuildTransferLogsAsync(TransferLibNote note, EnumTransferRoute route)
{
var transferLogs = new List<TransferLogEditInput>();
foreach (var detail in note.Details)
{
//var transferLog = ObjectMapper.Map<TransferLibNoteDetail, TransferLogEditInput>(detail);
//0416修改
TransferLogEditInput transferLog = new TransferLogEditInput();
//transferLog.TransferNumber = "";
transferLog.FromPackingCode = detail.HandledFromPackingCode;
transferLog.ToPackingCode = detail.HandledToPackingCode;
transferLog.ItemName = detail.ItemName;
transferLog.ItemDesc1 = detail.ItemDesc1;
transferLog.ItemDesc2 = detail.ItemDesc2;
transferLog.ItemCode = detail.ItemCode;
transferLog.Uom = detail.Uom;
transferLog.Qty = detail.HandledToQty;
transferLog.StdPackQty = detail.StdPackQty;
//transferLog.FromTransNumber = detail.FromTransNumber;
transferLog.SupplierBatch = detail.HandledToSupplierBatch;
transferLog.ArriveDate = detail.HandledToArriveDate;
transferLog.ProduceDate = detail.HandledToProduceDate;
transferLog.ExpireDate = detail.HandledToExpireDate;
transferLog.FromLot = detail.HandledFromLot;
transferLog.FromStatus = detail.Status;
transferLog.FromWarehouseCode = detail.HandledFromWarehouseCode;
transferLog.FromLocationCode = detail.HandledFromLocationCode;
transferLog.FromLocationArea = detail.HandledFromLocationArea;
transferLog.FromLocationGroup = detail.HandledFromLocationGroup;
transferLog.FromLocationErpCode = detail.HandledFromLocationErpCode;
transferLog.FromContainerCode = detail.HandledFromContainerCode;
//transferLog.ToTransNumber = detail.ToTransNumber;
transferLog.ToLot = detail.HandledToLot;
transferLog.ToStatus = detail.Status;
transferLog.ToWarehouseCode = detail.HandledToWarehouseCode;
transferLog.ToLocationCode = detail.HandledToLocationCode;
transferLog.ToLocationArea = detail.HandledToLocationArea;
transferLog.ToLocationGroup = detail.HandledToLocationGroup;
transferLog.ToLocationErpCode = detail.HandledToLocationErpCode;
transferLog.ToContainerCode = detail.HandledToContainerCode;
transferLog.TransType = EnumTransType.TransferLib;
transferLog.TransSubType = EnumTransSubType.None;
//transferLog.ActiveDate = detail.ActiveDate;
//transferLog.TransferTime = detail.TransferTime;
transferLog.Worker = note.Worker;
transferLog.JobNumber = note.JobNumber;
transferLog.DocNumber = note.Number;
transferLog.TenantId = detail.TenantId;
transferLog.Remark = detail.Remark;
var fromLocation = await _locationAppService.GetByCodeAsync(detail.HandledFromLocationCode).ConfigureAwait(false);
var toLocation = await _locationAppService.GetByCodeAsync(detail.HandledToLocationCode).ConfigureAwait(false);
var transferOnTheWay = await _locationAppService.GetFirstByTypeAsync(EnumLocationType.TRANSPORT).ConfigureAwait(false);
switch (route)
{
case EnumTransferRoute.SourceToOnTheWay:
transferLog.FromLocationCode = fromLocation.Code;
transferLog.FromLocationArea = fromLocation.AreaCode;
transferLog.FromLocationErpCode = fromLocation.ErpLocationCode;
transferLog.FromLocationGroup = fromLocation.LocationGroupCode;
transferLog.ToLocationCode = transferOnTheWay.Code;
transferLog.ToLocationArea = transferOnTheWay.AreaCode;
transferLog.ToLocationErpCode = transferOnTheWay.ErpLocationCode;
transferLog.ToLocationGroup = transferOnTheWay.LocationGroupCode;
break;
case EnumTransferRoute.OnTheWayToDestination:
transferLog.FromLocationCode = transferOnTheWay.Code;
transferLog.FromLocationArea = transferOnTheWay.AreaCode;
transferLog.FromLocationErpCode = transferOnTheWay.ErpLocationCode;
transferLog.FromLocationGroup = transferOnTheWay.LocationGroupCode;
transferLog.ToLocationCode = toLocation.Code;
transferLog.ToLocationArea = toLocation.AreaCode;
transferLog.ToLocationErpCode = toLocation.ErpLocationCode;
transferLog.ToLocationGroup = toLocation.LocationGroupCode;
break;
case EnumTransferRoute.SourceToDestination:
transferLog.FromLocationCode = fromLocation.Code;
transferLog.FromLocationArea = fromLocation.AreaCode;
transferLog.FromLocationErpCode = fromLocation.ErpLocationCode;
transferLog.FromLocationGroup = fromLocation.LocationGroupCode;
transferLog.ToLocationCode = toLocation.Code;
transferLog.ToLocationArea = toLocation.AreaCode;
transferLog.ToLocationErpCode = toLocation.ErpLocationCode;
transferLog.ToLocationGroup = toLocation.LocationGroupCode;
break;;
default:
throw new ArgumentOutOfRangeException(nameof(route), route, null);
}
transferLog.TransType = TransType;
transferLog.TransSubType = Enum.Parse<EnumTransSubType>(note.Type);
transferLog.Worker = note.Worker;
transferLog.DocNumber = note.Number;
transferLog.JobNumber = note.JobNumber;
transferLogs.Add(transferLog);
}
return transferLogs;
}
}
Loading…
Cancel
Save