From 0548f722fb3dbd520c044de71f7a656dd7d52952 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=B8=A4=E6=97=AD=5BIrelia=5D?= <366601522@qq.com> Date: Wed, 12 Apr 2023 23:36:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...FrameworkCore.SqlServer.LabelDbContext.sql | 1 + .../MessageApplicationAutoMapperProfile.cs | 7 +- .../MessageTypeSubscribeAutoMapperProfile.cs | 4 +- .../MessageTypeAutoMapperProfile.cs | 4 +- .../UserNotifyMessageAutoMapperProfile.cs | 4 +- .../DTOs/ProductReceiptRequestDTO.cs | 3 +- .../Inputs/ProductReceiptRequestEditInput.cs | 2 +- .../ProductReceiptRequestAppService.cs | 106 ++++++++++++------ .../ProductReceiptRequest.cs | 3 +- 9 files changed, 88 insertions(+), 46 deletions(-) diff --git a/be/Hosts/Core.Host/Win_in.Sfs.Core.Host/scripts/db.Microsoft.EntityFrameworkCore.SqlServer.LabelDbContext.sql b/be/Hosts/Core.Host/Win_in.Sfs.Core.Host/scripts/db.Microsoft.EntityFrameworkCore.SqlServer.LabelDbContext.sql index 62cc74b72..77c90ba24 100644 --- a/be/Hosts/Core.Host/Win_in.Sfs.Core.Host/scripts/db.Microsoft.EntityFrameworkCore.SqlServer.LabelDbContext.sql +++ b/be/Hosts/Core.Host/Win_in.Sfs.Core.Host/scripts/db.Microsoft.EntityFrameworkCore.SqlServer.LabelDbContext.sql @@ -49,6 +49,7 @@ CREATE TABLE [Label_InventoryLabel] ( [SupplierSimpleName] nvarchar(max) NULL, [SupplierItemCode] nvarchar(max) NULL, [SupplierItemName] nvarchar(max) NULL, + [PlanArriveDate] datetime2 NOT NULL, [ExtraProperties] nvarchar(max) NULL, [ConcurrencyStamp] nvarchar(40) NULL, [CreationTime] datetime2 NOT NULL, diff --git a/be/Modules/Message/src/Win_in.Sfs.Message.Application/MessageApplicationAutoMapperProfile.cs b/be/Modules/Message/src/Win_in.Sfs.Message.Application/MessageApplicationAutoMapperProfile.cs index 2d5b76e71..284277277 100644 --- a/be/Modules/Message/src/Win_in.Sfs.Message.Application/MessageApplicationAutoMapperProfile.cs +++ b/be/Modules/Message/src/Win_in.Sfs.Message.Application/MessageApplicationAutoMapperProfile.cs @@ -2,7 +2,7 @@ using AutoMapper; namespace Win_in.Sfs.Message.Application; -public class MessageApplicationAutoMapperProfile : Profile +public partial class MessageApplicationAutoMapperProfile : Profile { public MessageApplicationAutoMapperProfile() { @@ -10,7 +10,8 @@ public class MessageApplicationAutoMapperProfile : Profile * Alternatively, you can split your mapping configurations * into multiple profile classes for a better organization. */ - new MessageTypeAutoMapperProfile().MessageTypeAutoMapperProfileConfig(); - new NotifyMessageAutoMapperProfile().NotifyMessageAutoMapperProfileConfig(); + UserNotifyAutoMapperProfile(); + MessageTypeAutoMapperProfile(); + MessageTypeSubscribesAutoMapperProfile(); } } diff --git a/be/Modules/Message/src/Win_in.Sfs.Message.Application/MessageTypeSubscribes/MessageTypeSubscribeAutoMapperProfile.cs b/be/Modules/Message/src/Win_in.Sfs.Message.Application/MessageTypeSubscribes/MessageTypeSubscribeAutoMapperProfile.cs index 6946cb987..d8776f6ae 100644 --- a/be/Modules/Message/src/Win_in.Sfs.Message.Application/MessageTypeSubscribes/MessageTypeSubscribeAutoMapperProfile.cs +++ b/be/Modules/Message/src/Win_in.Sfs.Message.Application/MessageTypeSubscribes/MessageTypeSubscribeAutoMapperProfile.cs @@ -5,9 +5,9 @@ using Win_in.Sfs.Message.Domain; namespace Win_in.Sfs.Message.Application; -public class MessageTypeSubscribeAutoMapperProfile : Profile +public partial class MessageApplicationAutoMapperProfile : Profile { - public MessageTypeSubscribeAutoMapperProfile() + public void MessageTypeSubscribesAutoMapperProfile() { CreateMap() .IgnoreAuditedObjectProperties() diff --git a/be/Modules/Message/src/Win_in.Sfs.Message.Application/MessageTypes/MessageTypeAutoMapperProfile.cs b/be/Modules/Message/src/Win_in.Sfs.Message.Application/MessageTypes/MessageTypeAutoMapperProfile.cs index f0f24b3d9..d602c2108 100644 --- a/be/Modules/Message/src/Win_in.Sfs.Message.Application/MessageTypes/MessageTypeAutoMapperProfile.cs +++ b/be/Modules/Message/src/Win_in.Sfs.Message.Application/MessageTypes/MessageTypeAutoMapperProfile.cs @@ -5,9 +5,9 @@ using Win_in.Sfs.Message.Domain; namespace Win_in.Sfs.Message.Application; -public class MessageTypeAutoMapperProfile : Profile +public partial class MessageApplicationAutoMapperProfile : Profile { - public void MessageTypeAutoMapperProfileConfig() + public void MessageTypeAutoMapperProfile() { CreateMap() .IgnoreAuditedObjectProperties() diff --git a/be/Modules/Message/src/Win_in.Sfs.Message.Application/UserNotifyMessages/UserNotifyMessageAutoMapperProfile.cs b/be/Modules/Message/src/Win_in.Sfs.Message.Application/UserNotifyMessages/UserNotifyMessageAutoMapperProfile.cs index 6695cb221..c86fc455e 100644 --- a/be/Modules/Message/src/Win_in.Sfs.Message.Application/UserNotifyMessages/UserNotifyMessageAutoMapperProfile.cs +++ b/be/Modules/Message/src/Win_in.Sfs.Message.Application/UserNotifyMessages/UserNotifyMessageAutoMapperProfile.cs @@ -6,9 +6,9 @@ using Win_in.Sfs.Message.Domain; namespace Win_in.Sfs.Message.Application; -public class UserNotifyMessageAutoMapperProfile : Profile +public partial class MessageApplicationAutoMapperProfile : Profile { - public UserNotifyMessageAutoMapperProfile() + public void UserNotifyAutoMapperProfile() { CreateMap() .IgnoreAuditedObjectProperties() diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ProductReceiptRequests/DTOs/ProductReceiptRequestDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ProductReceiptRequests/DTOs/ProductReceiptRequestDTO.cs index 62ad7ba0b..265f55e52 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ProductReceiptRequests/DTOs/ProductReceiptRequestDTO.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ProductReceiptRequests/DTOs/ProductReceiptRequestDTO.cs @@ -1,6 +1,7 @@ using System; using System.ComponentModel.DataAnnotations; using Win_in.Sfs.Shared.Domain; +using Win_in.Sfs.Shared.Domain.Shared; namespace Win_in.Sfs.Wms.Store.Application.Contracts; @@ -54,6 +55,6 @@ public class ProductReceiptRequestDTO : SfsStoreRequestDTOBase [Display(Name = "类型")] - public string Type { get; set; } + public EnumProductReceiptType Type { get; set; } } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ProductReceiptRequests/Inputs/ProductReceiptRequestEditInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ProductReceiptRequests/Inputs/ProductReceiptRequestEditInput.cs index f4dd44438..09f948138 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ProductReceiptRequests/Inputs/ProductReceiptRequestEditInput.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/ProductReceiptRequests/Inputs/ProductReceiptRequestEditInput.cs @@ -70,7 +70,7 @@ public class ProductReceiptRequestEditInput : SfsStoreRequestCreateOrUpdateInput /// 类型 /// [Display(Name = "类型")] - public string Type { get; set; } + public string EnumProductReceiptType { get; set; } /// /// 明细列表 diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ProductReceiptRequests/ProductReceiptRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ProductReceiptRequests/ProductReceiptRequestAppService.cs index c1aee21d2..46e1e6d0a 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ProductReceiptRequests/ProductReceiptRequestAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/ProductReceiptRequests/ProductReceiptRequestAppService.cs @@ -5,7 +5,6 @@ using System.Linq; using System.Linq.Expressions; using System.Threading; using System.Threading.Tasks; - using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Volo.Abp; @@ -25,9 +24,10 @@ namespace Win_in.Sfs.Wms.Store.Application; /// [Authorize] [Route($"{StoreConsts.RootPath}product-receipt-request")] - public class ProductReceiptRequestAppService : - SfsStoreRequestAppServiceBase + SfsStoreRequestAppServiceBase { private readonly IProductReceiptRequestManager _productReceiptRequestManager; @@ -39,14 +39,50 @@ public class ProductReceiptRequestAppService : , IAreaAppService areaApp ) : base(repository, productReceiptRequestManager) { - - this._areaApp = areaApp; + _areaApp = areaApp; _productReceiptRequestManager = productReceiptRequestManager; base.CreatePolicyName = ProductReceiptRequestPermissions.Create; base.UpdatePolicyName = ProductReceiptRequestPermissions.Update; base.DeletePolicyName = ProductReceiptRequestPermissions.Delete; } + #region 东阳 + + /// + /// 设置事务类型 + /// + /// + /// + private async Task SetRequestAutoPropertiesAsync(ProductReceiptRequest entity) + { + var enumTransSubType=EnumTransSubType.None; + switch (entity.Type) + { + case EnumProductReceiptType.ProductReceipt_Manual: + enumTransSubType = EnumTransSubType.ProductReceipt_Manual; + break; + case EnumProductReceiptType.ProductReceipt_WIP: + enumTransSubType = EnumTransSubType.ProductReceipt_WIP; + break; + default: + throw new UserFriendlyException("缴库类型错误"); + } + + var tranType = await TransactionTypeAclService + .GetByTransTypeAsync(EnumTransType.ProductReceipt, enumTransSubType) + .ConfigureAwait(false); + + Check.NotNull(tranType, "事务类型", "事务类型不存在"); + + entity.AutoCompleteJob = tranType.AutoCompleteJob; + entity.AutoSubmit = tranType.AutoSubmitRequest; + entity.AutoAgree = tranType.AutoAgreeRequest; + entity.AutoHandle = tranType.AutoHandleRequest; + entity.DirectCreateNote = tranType.DirectCreateNote; + } + + #endregion + /// /// 新增实体 /// @@ -56,7 +92,6 @@ public class ProductReceiptRequestAppService : //[Authorize(ProductReceiptRequestPermissions.Create)] public override async Task CreateAsync(ProductReceiptRequestEditInput input) { - var entity = ObjectMapper.Map(input); await _productReceiptRequestManager.CreateAsync(entity).ConfigureAwait(false); @@ -79,35 +114,37 @@ public class ProductReceiptRequestAppService : bool includeDetails = false, CancellationToken cancellationToken = default) { - Expression> expression = p => p.Type == type; + Expression> expression = p => p.Type.ToString() == type; if (requestInput.Condition.Filters?.Count > 0) { expression = expression.And(requestInput.Condition.Filters.ToLambda()); } return await GetPagedListAsync(expression, requestInput.SkipCount, requestInput.MaxResultCount, - requestInput.Sorting, includeDetails, cancellationToken).ConfigureAwait(false); + requestInput.Sorting, includeDetails, cancellationToken).ConfigureAwait(false); } [HttpPost("export-by-type")] public virtual async Task ExportByTypeAsync(SfsExportRequestInput requestInput, string type) { - - Expression> expression = p => p.Type == type; + Expression> expression = p => p.Type.ToString() == type; if (requestInput.Condition.Filters?.Count > 0) { expression = expression.And(requestInput.Condition.Filters.ToLambda()); } - var entities = await _repository.GetPagedListAsync(expression, requestInput.SkipCount, requestInput.MaxResultCount, requestInput.Sorting, true).ConfigureAwait(false); + var entities = await _repository + .GetPagedListAsync(expression, requestInput.SkipCount, requestInput.MaxResultCount, requestInput.Sorting, + true).ConfigureAwait(false); var list = ObjectMapper.Map, List>(entities); return ExportImportService.Export(list, true, "Details"); } - #region Import + #region 校验 - protected virtual async Task CheckImportInputBusinessAsync(ProductReceiptRequestImportInput importInput, EnumImportMethod importMethod, List validationRresult) + protected virtual async Task CheckImportInputBusinessAsync(ProductReceiptRequestImportInput importInput, + EnumImportMethod importMethod, List validationRresult) { //await base.CheckImportInputBusinessAsync(importInput, importMethod); @@ -124,7 +161,8 @@ public class ProductReceiptRequestAppService : //CheckTransactionType(EnumTransInOut.In, transactionType.InInventoryStatuses.FirstOrDefault(), transactionType, itemBasic, location); } - protected async Task CheckItemBasicAsync(ProductReceiptRequestImportInput importInput, List validationRresult) + protected async Task CheckItemBasicAsync(ProductReceiptRequestImportInput importInput, + List validationRresult) { var item = await ItemBasicAclService.GetByCodeAsync(importInput.ItemCode).ConfigureAwait(false); @@ -132,25 +170,30 @@ public class ProductReceiptRequestAppService : { validationRresult.Add("物品代码", $"物品代码{importInput.ItemCode}不存在"); } + //可以缴入负数 if (importInput.Qty == 0) { validationRresult.Add("数量", $"数量不能等于0"); } + return item; } - protected async Task CheckLocationAsync(ProductReceiptRequestImportInput importInput, List validationRresult) + protected async Task CheckLocationAsync(ProductReceiptRequestImportInput importInput, + List validationRresult) { var location = await LocationAclService.GetByCodeAsync(importInput.LocationCode).ConfigureAwait(false); if (location == null) { validationRresult.Add("调入库位", $"调入库位{importInput.LocationCode}不存在"); } + return location; } - protected async Task CheckAreaAsync(ProductReceiptRequestImportInput importInput, List validationRresult) + protected async Task CheckAreaAsync(ProductReceiptRequestImportInput importInput, + List validationRresult) { var location = await _areaApp.GetByCodeAsync(importInput.RawArea).ConfigureAwait(false); if (location == null) @@ -161,15 +204,18 @@ public class ProductReceiptRequestAppService : protected async Task CheckTransactionTypeAsync(List validationRresult) { - var transactionType = await TransactionTypeAclService.GetByTransTypeAsync(EnumTransType.ProductReceipt, EnumTransSubType.None).ConfigureAwait(false); + var transactionType = await TransactionTypeAclService + .GetByTransTypeAsync(EnumTransType.ProductReceipt, EnumTransSubType.None).ConfigureAwait(false); if (transactionType == null) { validationRresult.Add("事务类型", $"{EnumTransType.ProductReceipt.GetDisplayName()}事务类型不存在"); } + return transactionType; } - protected virtual async Task ImportDataAsync(List entites, List deleteEntities) + protected virtual async Task ImportDataAsync(List entites, + List deleteEntities) { await _productReceiptRequestManager.ImportDataAsync(entites, deleteEntities).ConfigureAwait(false); } @@ -179,7 +225,9 @@ public class ProductReceiptRequestAppService : return p => p.Type; } - protected virtual async Task<(List entites, List deleteEntities)> BuildImportDataAsync(ImportResult importResult, EnumImportMethod importMethod = EnumImportMethod.Update, bool isAllowPartImport = false) + protected virtual async Task<(List entites, List deleteEntities)> + BuildImportDataAsync(ImportResult importResult, + EnumImportMethod importMethod = EnumImportMethod.Update, bool isAllowPartImport = false) { if (importResult.Data.Any(t => t.ReportStatus == EnumImportReportStatus.Failed)) { @@ -222,6 +270,7 @@ public class ProductReceiptRequestAppService : { entity.SetId(exist.Id); } + break; case EnumImportMethod.Replace: if (exist != null) @@ -235,7 +284,8 @@ public class ProductReceiptRequestAppService : foreach (var inputDetail in inputDetails) { - var detail = ObjectMapper.Map(inputDetail); + var detail = + ObjectMapper.Map(inputDetail); detail.SetIdAndNumber(GuidGenerator, entity.Id, entity.Number); @@ -250,7 +300,8 @@ public class ProductReceiptRequestAppService : return (entites, deleteEntites); } - private async Task SetDetailPropertiesAsync(ProductReceiptRequestDetail detail, ProductReceiptRequestImportInput input) + private async Task SetDetailPropertiesAsync(ProductReceiptRequestDetail detail, + ProductReceiptRequestImportInput input) { var itemBasic = await ItemBasicAclService.GetByCodeAsync(input.ItemCode).ConfigureAwait(false); @@ -279,18 +330,5 @@ public class ProductReceiptRequestAppService : await SetRequestAutoPropertiesAsync(entity).ConfigureAwait(false); } - private async Task SetRequestAutoPropertiesAsync(ProductReceiptRequest entity) - { - var tranType = await TransactionTypeAclService.GetByTransTypeAsync(EnumTransType.ProductReceipt, Enum.Parse(entity.Type)).ConfigureAwait(false); - - Check.NotNull(tranType, "事务类型", "事务类型不存在"); - - entity.AutoCompleteJob = tranType.AutoCompleteJob; - entity.AutoSubmit = tranType.AutoSubmitRequest; - entity.AutoAgree = tranType.AutoAgreeRequest; - entity.AutoHandle = tranType.AutoHandleRequest; - entity.DirectCreateNote = tranType.DirectCreateNote; - } - #endregion } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/ProductReceiptRequests/ProductReceiptRequest.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/ProductReceiptRequests/ProductReceiptRequest.cs index e81b58839..7d9b25646 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/ProductReceiptRequests/ProductReceiptRequest.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/ProductReceiptRequests/ProductReceiptRequest.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using Win_in.Sfs.Shared.Domain.Entities; +using Win_in.Sfs.Shared.Domain.Shared; namespace Win_in.Sfs.Wms.Store.Domain; @@ -43,7 +44,7 @@ public class ProductReceiptRequest : SfsStoreRequestAggregateRootBase [IgnoreUpdate] - public string Type { get; set; } + public EnumProductReceiptType Type { get; set; } /// /// 明细列表