diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Orders/PurchaseOrders/PurchaseOrderAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Orders/PurchaseOrders/PurchaseOrderAppService.cs index c66e42ebc..af8b2d953 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Orders/PurchaseOrders/PurchaseOrderAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Orders/PurchaseOrders/PurchaseOrderAppService.cs @@ -7,6 +7,7 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using Volo.Abp; +using Volo.Abp.Domain.Entities; using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain.Shared; @@ -53,32 +54,90 @@ public class PurchaseOrderAppService : protected override async Task> ImportProcessingEntityAsync( Dictionary dictionary) { - var addList = dictionary.Where(p => p.Value == EntityState.Added).Select(p => p.Key); + var ImportData = dictionary.Select(p => p.Key); - foreach (var purchaseOrder in addList) + var supplierDtos = new List(); + #region 校验供应商 + + var allSupplierCode = ImportData.Select(p => p.SupplierCode).ToList();//所有供应商编号 + supplierDtos = await CheckSupplierCodeAsync(allSupplierCode).ConfigureAwait(false); + + #endregion + + var itemBasicDtos = new List(); + #region 校验物品 + + var allTempItemCode = ImportData.Select(p => p.Details.Select(p => p.ItemCode).ToList()).ToList(); + var allItemCode = new List(); + allTempItemCode.ForEach(p => { allItemCode.AddRange(p); }); + itemBasicDtos = await CheckItemCodeAsync(allItemCode).ConfigureAwait(false); + + #endregion + + foreach (var purchaseOrder in ImportData) { purchaseOrder.CreatorId = CurrentUser.Id; purchaseOrder.Worker = CurrentUser.GetName(); - var supplierDto = - await _supplierAppService.GetByCodeAsync(purchaseOrder.SupplierCode).ConfigureAwait(false); + var supplierDto = supplierDtos.First(p => p.Code == purchaseOrder.SupplierCode); purchaseOrder.SupplierCode = supplierDto.Code; purchaseOrder.SupplierAddress = supplierDto.Address; purchaseOrder.SupplierName = supplierDto.Name; foreach (var detail in purchaseOrder.Details) { - var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(detail.ItemCode).ConfigureAwait(false); + var itemBasicDto = itemBasicDtos.First(p => p.Code == detail.ItemCode); detail.ItemName = itemBasicDto.Name; detail.ItemDesc1 = itemBasicDto.Desc1; detail.ItemDesc2 = itemBasicDto.Desc2; + detail.StdPackQty=itemBasicDto.StdPackQty; } } return dictionary; } + #region 校验 + + /// + /// 校验所有供应商是否存在 + /// + /// + private async Task> CheckSupplierCodeAsync(List supplierCodes) + { + supplierCodes = supplierCodes.Distinct().ToList(); + var result = await _supplierAppService.GetByCodesAsync(supplierCodes).ConfigureAwait(false); + + foreach (var supplierCode in supplierCodes) + { + if (result.All(p => p.Code != supplierCode)) + { + throw new UserFriendlyException($"供应商代码【{supplierCode}】不存在"); + } + } + + return result; + } + + private async Task> CheckItemCodeAsync(List itemCodes) + { + itemCodes = itemCodes.Distinct().ToList(); + var result = await _itemBasicAppService.GetByCodesAsync(itemCodes).ConfigureAwait(false); + + foreach (var itemCode in itemCodes) + { + if (result.All(p => p.Code != itemCode)) + { + throw new UserFriendlyException($"供应商代码【{itemCode}】不存在"); + } + } + + return result; + } + + #endregion + #endregion /// @@ -237,12 +296,12 @@ public class PurchaseOrderAppService : [HttpGet("get-list-by-supplier-code-and-item-code")] public virtual async Task> GetListBySupplierCodeAsync(string supplierCode, string itemCode) { - var entitys = await _repository.GetListAsync(p => p.Details.Any(y => y.ItemCode == itemCode) && p.SupplierCode == supplierCode).ConfigureAwait(false); + var entitys = await _repository + .GetListAsync(p => p.Details.Any(y => y.ItemCode == itemCode) && p.SupplierCode == supplierCode) + .ConfigureAwait(false); var dtos = ObjectMapper.Map, List>(entitys); return dtos; } - - } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Bases/StoreDataExchangeEventHandlerBase.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Bases/StoreDataExchangeEventHandlerBase.cs index c0675f55b..c57663924 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Bases/StoreDataExchangeEventHandlerBase.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Bases/StoreDataExchangeEventHandlerBase.cs @@ -24,8 +24,11 @@ public abstract class StoreDataExchangeEventHandlerBase : StoreEventHandlerBa protected async Task GetActiveDateAsync() { - var activeDate = await InterfaceCalendarAppService.GetActiveDateAsync(Clock.Now).ConfigureAwait(false); - return activeDate; + //todo 报错 + //var activeDate = await InterfaceCalendarAppService.GetActiveDateAsync(Clock.Now).ConfigureAwait(false); + //return activeDate; + + return DateTime.Now; } protected async Task> BuildExchangeDataAsync(string sourceSystem, diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/BackFlushNoteEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/BackFlushNoteEventHandler.cs index 67737017d..00d45ab6a 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/BackFlushNoteEventHandler.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Transactions/BackFlushNoteEventHandler.cs @@ -68,6 +68,11 @@ public class BackFlushNoteEventHandler transaction.DocNumber = backFlushNote.Number; transaction.JobNumber = backFlushNote.JobNumber; transaction.Status = detail.Status; + transaction.LocationArea = detail.LocationArea; + transaction.LocationGroup=detail.LocationGroup; + transaction.LocationCode=detail.LocationCode; + transaction.LocationErpCode=detail.LocationErpCode; + transaction.WarehouseCode=detail.WarehouseCode; transactions.Add(transaction); }