using System; using System.Collections.Generic; using System.Linq; using System.Text.Json; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Shared.Domain.Shared; using Win_in.Sfs.Wms.DataExchange.Domain; using Win_in.Sfs.Wms.DataExchange.WMS.MesNote; using Win_in.Sfs.Wms.Store.Application.Contracts; using Volo.Abp.ObjectMapping; using Win_in.Sfs.Wms.DataExchange.WMS.MesNote; namespace Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent.Incoming; public class FrozenConverter : IIncomingConverter { private readonly IIncomingFromExternalManager _incomingFromExternalManager; private readonly IIncomingToWmsManager _incomingToWmsManager; private readonly IObjectMapper _objectMapper; private readonly IItemBasicAppService _itemBasicAppService; private readonly ILocationAppService _locationAppService; private readonly ILogger _logger; public FrozenConverter( IIncomingToWmsManager incomingToWmsManager , IObjectMapper objectMapper , IItemBasicAppService itemBasicAppService , ILogger logger, ILocationAppService locationAppService, IIncomingFromExternalManager incomingFromExternalManager) { _incomingToWmsManager = incomingToWmsManager; _objectMapper = objectMapper; _itemBasicAppService = itemBasicAppService; _logger = logger; _locationAppService = locationAppService; _incomingFromExternalManager = incomingFromExternalManager; } public virtual async Task ConvertAsync(List incomingFromExternalList) { if (!incomingFromExternalList.Any()) { _logger.LogInformation("no Frozens"); return; } //按Number合并MesNote单据 var transferNoteList = await BuildIncomingToWmsOfMesNoteAsync(incomingFromExternalList).ConfigureAwait(false); await _incomingToWmsManager.CreateManyAsync(transferNoteList).ConfigureAwait(false); //归档 await _incomingFromExternalManager.ArchiveManyAsync(incomingFromExternalList).ConfigureAwait(false); } private async Task> BuildIncomingToWmsOfMesNoteAsync(List incomingDataList) { var incomingToWmsList = new List(); foreach (var incomingData in incomingDataList) { var incomingToWms = new IncomingToWms() { DataType = incomingData.DataType, DataAction = incomingData.DataAction, SourceSystem = incomingData.SourceSystem, DataIdentityCode = incomingData.SourceDataGroupCode, }; incomingToWms.SetEffectiveDate(incomingData.EffectiveDate); var exchangeMesNote = JsonSerializer.Deserialize(incomingData.DestinationDataContent); var wmsMesNoteDetail = _objectMapper.Map(exchangeMesNote.Detail); var wmsMesNote = _objectMapper.Map(exchangeMesNote); wmsMesNote.Details = new List(); var item = await _itemBasicAppService.GetByCodeAsync(wmsMesNoteDetail.ItemCode).ConfigureAwait(false); try { wmsMesNoteDetail.FromPackingCode = ""; wmsMesNoteDetail.ToPackingCode = ""; wmsMesNoteDetail.FromLot = ""; wmsMesNoteDetail.ToLot = ""; wmsMesNoteDetail.FromWarehouseCode = ""; wmsMesNoteDetail.ToWarehouseCode = ""; //if (transferNote.Remark.Contains("质量补移库"))//质量补 //{ // wmsMesNoteDetail.FromPackingCode = "RFE"; //质量补排序批次 // wmsMesNoteDetail.FromLot = "RFE";//质量补箱标签 // wmsMesNoteDetail.ToPackingCode = "RFE"; //质量补排序批次 // wmsMesNoteDetail.ToLot = "RFE";//质量补箱标签 //} if (item != null) { wmsMesNoteDetail.ItemName = item.Name; wmsMesNoteDetail.ItemDesc1 = !string.IsNullOrEmpty(item.Desc1) ? item.Desc1 : ""; wmsMesNoteDetail.ItemDesc2 = !string.IsNullOrEmpty(item.Desc2) ? item.Desc2 : ""; wmsMesNoteDetail.Uom = !string.IsNullOrEmpty(item.BasicUom) ? item.BasicUom : ""; wmsMesNoteDetail.StdPackQty = item.StdPackQty; } //if (tolocation != null) //{ // wmsMesNoteDetail.ToLocationCode = tolocation.Code; // wmsMesNoteDetail.ToLocationArea = tolocation.AreaCode; // wmsMesNoteDetail.ToLocationGroup = tolocation.LocationGroupCode; // wmsMesNoteDetail.ToWarehouseCode = tolocation.WarehouseCode; // if (tolocation.Type == EnumLocationType.CUST) // { // wmsMesNote.Type = EnumTransSubType.Mes_Customer.ToString();//客户储位调拨 // } //} //if (fromlocation != null) //{ // wmsMesNoteDetail.FromLocationCode = fromlocation.Code; // wmsMesNoteDetail.FromLocationArea = fromlocation.AreaCode; // wmsMesNoteDetail.FromLocationGroup = fromlocation.LocationGroupCode; // wmsMesNoteDetail.FromWarehouseCode = fromlocation.WarehouseCode; //} } catch (Exception) { wmsMesNoteDetail.ItemName = ""; wmsMesNoteDetail.ItemDesc1 = ""; wmsMesNoteDetail.ItemDesc2 = ""; wmsMesNoteDetail.Uom = ""; } wmsMesNote.Details.Add(wmsMesNoteDetail); incomingToWms.DataContent = JsonSerializer.Serialize(wmsMesNote); incomingToWmsList.Add(incomingToWms); } return incomingToWmsList; } }