diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesOutConverter.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesOutConverter.cs index 0315cb17c..941cc6cb4 100644 --- a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesOutConverter.cs +++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesOutConverter.cs @@ -11,6 +11,7 @@ using Volo.Abp.ObjectMapping; 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.Domain.Shared; using Win_in.Sfs.Wms.DataExchange.WMS.ProductReceiptNote; using Win_in.Sfs.Wms.Store.Application.Contracts; using Win_in.Sfs.Wms.Store.Domain; @@ -63,7 +64,7 @@ public class MesOutConverter : IIncomingConverter { List types = new List { EnumLocationType.FG, EnumLocationType.WIP }; var incomingToWmsList = new List(); - var groups = incomingDataList.GroupBy(p => p.SourceDataGroupCode); + var groups = incomingDataList.GroupBy(p => new { p.SourceDataGroupCode, p.TableType });//按照库位和是为为返喷分组 foreach (var group in groups) { var first = group.First(); @@ -87,16 +88,20 @@ public class MesOutConverter : IIncomingConverter ProductReceiptNoteSumDetailExchangeDto sumdetail = new ProductReceiptNoteSumDetailExchangeDto(); var productReceiptNote = JsonSerializer.Deserialize(incomingFromExternal.DestinationDataContent); var wmsProductReceiptNoteDetail = _objectMapper.Map(productReceiptNote.Detail); - var oldNoteDetail = wmsProductReceiptNote.Details.FirstOrDefault(r => r.ItemCode == wmsProductReceiptNoteDetail.ItemCode && r.LocationErpCode == wmsProductReceiptNoteDetail.LocationErpCode); + + var oldNoteDetail = wmsProductReceiptNote.Details.FirstOrDefault(r => r.ItemCode == wmsProductReceiptNoteDetail.ItemCode && r.LocationErpCode == wmsProductReceiptNoteDetail.LocationErpCode && (first.TableType != EnumExchangeTableType.MainTable ? true : r.ReturnQty != 0)); + sumdetail.itemCode = wmsProductReceiptNoteDetail.ItemCode; sumdetail.locationCode = wmsProductReceiptNoteDetail.LocationErpCode; sumdetail.Qty = wmsProductReceiptNoteDetail.Qty; + sumdetail.BadQty = wmsProductReceiptNoteDetail.ReturnQty; sumdetail.Memo = wmsProductReceiptNoteDetail.Remark; sumdetail.MesGuid = incomingFromExternal.SourceDataId; sumDetails.Add(sumdetail); if (oldNoteDetail != null) { oldNoteDetail.Qty = oldNoteDetail.Qty + wmsProductReceiptNoteDetail.Qty; + oldNoteDetail.ReturnQty = oldNoteDetail.ReturnQty + wmsProductReceiptNoteDetail.ReturnQty; } else { diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesOutReader.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesOutReader.cs index 10845124b..f0171be9c 100644 --- a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesOutReader.cs +++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/MesOutReader.cs @@ -36,7 +36,7 @@ public class MesOutReader : IReader { //从MES读取待处理MesOut var toBeProcessedMwsOuts = await _mesOutManager.GetToBeProcessedListAsync().ConfigureAwait(false); - toBeProcessedMwsOuts = toBeProcessedMwsOuts.OrderBy(r=>r.Mesout_dt).Take(3000).ToList(); + toBeProcessedMwsOuts = toBeProcessedMwsOuts.OrderBy(r => r.Mesout_dt).Take(3000).ToList(); if (!toBeProcessedMwsOuts.Any()) { _logger.LogInformation("no productreceipts"); @@ -46,8 +46,8 @@ public class MesOutReader : IReader if (mesoutnbr.Count > 0) { toBeProcessedMwsOuts = toBeProcessedMwsOuts.Where(r => !mesoutnbr.Contains(r.Mesout_ref_nbr)).ToList(); - var toBeProcessedEroMwsOuts = toBeProcessedMwsOuts.Where(r => mesoutnbr.Contains(r.Mesout_ref_nbr)).ToList(); - + var toBeProcessedEroMwsOuts = toBeProcessedMwsOuts.Where(r => mesoutnbr.Contains(r.Mesout_ref_nbr)).ToList(); + await _mesOutManager.UpdateProcesseErrordListAsync(toBeProcessedEroMwsOuts).ConfigureAwait(false); } //MesOut逐一转换为ProductReceiptNote @@ -55,7 +55,7 @@ public class MesOutReader : IReader await _incomingFromExternalManager.CreateManyAsync(incomingDataList).ConfigureAwait(false); //更新MES数据状态 await _mesOutManager.UpdateProcessedListAsync(toBeProcessedMwsOuts).ConfigureAwait(false); - + return incomingDataList; } @@ -119,6 +119,11 @@ public class MesOutReader : IReader DestinationSystem = EnumSystemType.WMS.ToString(), }; + //返喷数不为零用tabletype标志出来,用于后续汇总 + if (mesOut.Mesout_bad != 0) + { + incomingData.TableType = EnumExchangeTableType.MainTable; + } return incomingData; } @@ -136,7 +141,7 @@ public class MesOutReader : IReader Qty = mesOut.Mesout_move, LocationErpCode = mesOut.Mesout_loc, Remark = mesOut.memo, - ReturnQty=mesOut.Mesout_bad + ReturnQty = mesOut.Mesout_bad }; productReceiptNote.Detail = productReceiptNoteDetail; return productReceiptNote; diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/ProductReceiptNote/ProductReceiptNoteSumDetailExchangeDto.cs b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/ProductReceiptNote/ProductReceiptNoteSumDetailExchangeDto.cs index b2ba2bb95..d9a1e8cc4 100644 --- a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/ProductReceiptNote/ProductReceiptNoteSumDetailExchangeDto.cs +++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Application.Contracts/WMS/ProductReceiptNote/ProductReceiptNoteSumDetailExchangeDto.cs @@ -43,5 +43,10 @@ public class ProductReceiptNoteSumDetailExchangeDto /// [Display(Name = "数量")] public decimal Qty { get; set; } + /// + /// 返喷数量 + /// + [Display(Name = "返喷数量")] + public decimal BadQty { get; set; } }