From afb14500c6e9462c1c06f8cc06f03b3c7063eca4 Mon Sep 17 00:00:00 2001 From: zhouhongjun <565221961@qq.com> Date: Wed, 6 Mar 2024 14:01:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9E=9A=E4=B8=BE=E7=A9=BA=E5=80=BC=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Stores/IssueNoteController.cs | 8 +-- .../PositionCode/PositionCodeAppService.cs | 9 +++ ...ionCodeDbContextModelCreatingExtensions.cs | 2 + .../IssueJobs/Inputs/IssueJobDetailInput.cs | 2 +- .../DTOs/ProductRecycleJobDTO.cs | 9 +++ .../DTOs/ProductRecycleJobDetailDTO.cs | 9 +++ .../IProductRecycleJobAppService.cs | 10 ++++ ...ons.cs => ProductRecycleJobPermissions.cs} | 2 +- .../IssueNotes/Inputs/IssueNoteDetailInput.cs | 2 +- .../StorePermissionDefinitionProvider.cs | 1 + .../Inputs/MaterialRequestDetailInput.cs | 2 +- ...Sfs.Wms.Store.Application.Contracts.csproj | 1 - .../MaterialRequestAppService.cs | 8 +-- .../Jobs/IssueJobs/IssueJobDetail.cs | 2 +- .../ProductRecycleJobManager.cs | 59 +++++++++++++++++-- .../Notes/IssueNotes/IssueNoteDetail.cs | 2 +- .../MaterialRequests/MaterialRequestDetail.cs | 2 +- ...ssueJobDbContextModelCreatingExtensions.cs | 3 +- 18 files changed, 112 insertions(+), 21 deletions(-) create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ProductRecycleJobs/DTOs/ProductRecycleJobDTO.cs create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ProductRecycleJobs/DTOs/ProductRecycleJobDetailDTO.cs create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ProductRecycleJobs/IProductRecycleJobAppService.cs rename be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ProductRecycleJobs/{ProductRecyclePermissions.cs => ProductRecycleJobPermissions.cs} (95%) diff --git a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/IssueNoteController.cs b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/IssueNoteController.cs index f8ac25b4b..bad5c92d0 100644 --- a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/IssueNoteController.cs +++ b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/IssueNoteController.cs @@ -41,19 +41,19 @@ public class IssueNoteController : AbpController p.ToPackingCode = string.Empty; if(p.PositionCode.Contains('W')) { - p.RecommendType = EnumRecommendType.W; + p.RecommendType = "W"; } else if(p.PositionCode.Contains('Q')) { - p.RecommendType = EnumRecommendType.Q; + p.RecommendType = "Q"; } else if (p.PositionCode.Contains('K')) { - p.RecommendType = EnumRecommendType.K; + p.RecommendType = "K"; } else { - p.RecommendType = EnumRecommendType.None; + p.RecommendType = "None"; } }); diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCode/PositionCodeAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCode/PositionCodeAppService.cs index 48117759c..29bd0b204 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCode/PositionCodeAppService.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PositionCode/PositionCodeAppService.cs @@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using Volo.Abp; using Volo.Abp.Caching; +using Volo.Abp.Domain.Repositories; using Volo.Abp.Uow; using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Domain; @@ -22,6 +23,7 @@ public class PositionCodeAppService , IPositionCodeAppService { private readonly IPositionCodeManager _manager; + private new readonly IPositionCodeRepository _repository; public PositionCodeAppService(IPositionCodeRepository repository, IDistributedCache cache, IPositionCodeManager manager) : base(repository, cache) { @@ -29,6 +31,7 @@ public class PositionCodeAppService base.UpdatePolicyName = CategoryPermissions.Update; base.DeletePolicyName = CategoryPermissions.Delete; _manager = manager; + _repository = repository; } @@ -42,6 +45,12 @@ public class PositionCodeAppService throw new UserFriendlyException($"{input.Code} 已存在"); } + var itemEntity = await _repository.FirstOrDefaultAsync(p => p.PartCode == input.PartCode).ConfigureAwait(false); + if(itemEntity != null) + { + throw new UserFriendlyException($"{input.PartCode} 物品已存在"); + } + var itemBasic = await ItemBasicAppService.GetByCodeAsync(input.PartCode).ConfigureAwait(false); Check.NotNull(itemBasic, "物品代码", $"物品 {input.PartCode} 不存在"); input.PartName = itemBasic.Name; diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/PositionCode/PositionCodeDbContextModelCreatingExtensions.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/PositionCode/PositionCodeDbContextModelCreatingExtensions.cs index b679f5f79..33f7bd550 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/PositionCode/PositionCodeDbContextModelCreatingExtensions.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.EntityFrameworkCore/PositionCode/PositionCodeDbContextModelCreatingExtensions.cs @@ -33,6 +33,8 @@ public static class PositionCodeDbContextModelCreatingExtensions //Indexes b.HasIndex(q => new { q.Code,q.PartCode,q.LocationCode }).IsUnique(); + b.HasIndex(q => new { q.Code }).IsUnique(); + b.HasIndex(q => new { q.PartCode }).IsUnique(); }); } } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/Inputs/IssueJobDetailInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/Inputs/IssueJobDetailInput.cs index b059524c9..022a32dc5 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/Inputs/IssueJobDetailInput.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/Inputs/IssueJobDetailInput.cs @@ -130,5 +130,5 @@ public class IssueJobDetailInput : SfsJobRecommendFromDetailInputBase, IHasToLoc /// /// 推荐类型 /// - public EnumRecommendType RecommendType { get; set; } + public string RecommendType { get; set; } } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ProductRecycleJobs/DTOs/ProductRecycleJobDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ProductRecycleJobs/DTOs/ProductRecycleJobDTO.cs new file mode 100644 index 000000000..c0a16a64c --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ProductRecycleJobs/DTOs/ProductRecycleJobDTO.cs @@ -0,0 +1,9 @@ +using System.ComponentModel.DataAnnotations; +using Win_in.Sfs.Shared.Domain; + +namespace Win_in.Sfs.Wms.Store.Application.Contracts; + +public class ProductRecycleJobDTO +{ + +} diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ProductRecycleJobs/DTOs/ProductRecycleJobDetailDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ProductRecycleJobs/DTOs/ProductRecycleJobDetailDTO.cs new file mode 100644 index 000000000..7edbbb44b --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ProductRecycleJobs/DTOs/ProductRecycleJobDetailDTO.cs @@ -0,0 +1,9 @@ +using System.ComponentModel.DataAnnotations; +using Win_in.Sfs.Shared.Domain; + +namespace Win_in.Sfs.Wms.Store.Application.Contracts; + +public class ProductRecycleJobDetailDTO +{ + +} diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ProductRecycleJobs/IProductRecycleJobAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ProductRecycleJobs/IProductRecycleJobAppService.cs new file mode 100644 index 000000000..c5f53458a --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ProductRecycleJobs/IProductRecycleJobAppService.cs @@ -0,0 +1,10 @@ +using System.Threading.Tasks; + +namespace Win_in.Sfs.Wms.Store.Application.Contracts; + +public interface IProductRecycleJobAppService + : ISfsJobAppServiceBase + +{ + +} diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ProductRecycleJobs/ProductRecyclePermissions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ProductRecycleJobs/ProductRecycleJobPermissions.cs similarity index 95% rename from be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ProductRecycleJobs/ProductRecyclePermissions.cs rename to be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ProductRecycleJobs/ProductRecycleJobPermissions.cs index ca438e6ff..545314ba2 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ProductRecycleJobs/ProductRecyclePermissions.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/ProductRecycleJobs/ProductRecycleJobPermissions.cs @@ -3,7 +3,7 @@ using Win_in.Sfs.Wms.Store.Domain; namespace Win_in.Sfs.Wms.Store.Application.Contracts; -public static class ProductRecyclePermissions +public static class ProductRecycleJobPermissions { public const string Default = StorePermissions.GroupName + "." + nameof(ProductRecycleJob); public const string Create = Default + "." + StorePermissions.CreateStr; diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/Inputs/IssueNoteDetailInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/Inputs/IssueNoteDetailInput.cs index 0d8769392..226f02145 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/Inputs/IssueNoteDetailInput.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/Inputs/IssueNoteDetailInput.cs @@ -48,6 +48,6 @@ public class IssueNoteDetailInput : SfsStoreRecommendFromDetailWithFromToInputBa /// /// 推荐类型 /// - public EnumRecommendType RecommendType { get; set; } + public string RecommendType { get; set; } } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Permissions/StorePermissionDefinitionProvider.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Permissions/StorePermissionDefinitionProvider.cs index 92bbc9d6d..f0ef3dfc6 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Permissions/StorePermissionDefinitionProvider.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Permissions/StorePermissionDefinitionProvider.cs @@ -91,6 +91,7 @@ public class StorePermissionDefinitionProvider : PermissionDefinitionProvider storeGroup.AddDeliverJobPermission(); storeGroup.AddPurchaseReturnJobPermission(); storeGroup.AddProductReceiveJobPermission(); + storeGroup.AddProductRecycleJobPermission(); storeGroup.AddCheckJobPermission(); storeGroup.AddCountJobPermission(); storeGroup.AddJisDeliverJobPermission(); diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/Inputs/MaterialRequestDetailInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/Inputs/MaterialRequestDetailInput.cs index 058c47f49..b58996f7a 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/Inputs/MaterialRequestDetailInput.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Requests/MaterialRequests/Inputs/MaterialRequestDetailInput.cs @@ -79,7 +79,7 @@ public class MaterialRequestDetailInput : SfsStoreDetailWithQtyInputBase /// /// 推荐类型 /// - public EnumRecommendType RecommendType { get; set; } + public string RecommendType { get; set; } } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Win_in.Sfs.Wms.Store.Application.Contracts.csproj b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Win_in.Sfs.Wms.Store.Application.Contracts.csproj index 7430f5c7e..819319a8f 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Win_in.Sfs.Wms.Store.Application.Contracts.csproj +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Win_in.Sfs.Wms.Store.Application.Contracts.csproj @@ -42,7 +42,6 @@ - diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/MaterialRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/MaterialRequestAppService.cs index 64d689dbc..decb16295 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/MaterialRequestAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/MaterialRequests/MaterialRequestAppService.cs @@ -216,19 +216,19 @@ public class MaterialRequestAppService : SfsStoreRequestAppServiceBase /// 推荐类型 /// - public EnumRecommendType RecommendType { get; set; } + public string RecommendType { get; set; } } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/ProductRecycleJobs/ProductRecycleJobManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/ProductRecycleJobs/ProductRecycleJobManager.cs index f6f8db851..f27a29a7c 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/ProductRecycleJobs/ProductRecycleJobManager.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/ProductRecycleJobs/ProductRecycleJobManager.cs @@ -1,10 +1,61 @@ -using System; +using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; using System.Linq; -using System.Text; +using System.Linq.Expressions; using System.Threading.Tasks; +using Volo.Abp.Domain.Repositories; +using Volo.Abp.Users; +using Volo.Abp.Validation; +using Win_in.Sfs.Shared.Domain.Shared; -namespace Win_in.Sfs.Wms.Store.Jobs.ProductRecycleJobs; -internal class ProductRecycleJobManager +namespace Win_in.Sfs.Wms.Store.Domain; + +public class ProductRecycleJobManager : SfsJobManagerBase, IProductRecycleJobManager { + + public ProductRecycleJobManager( + IProductRecycleJobRepository repository + ) : base(repository) + { + } + + public override void CheckDetails(ProductRecycleJob entity, AbpValidationResult result) + { + var details = entity.Details; + foreach (var detail in details) + { + if (detail.HandledToLocationCode == null) + { + result.Errors.Add(new ValidationResult($"{detail.HandledToLocationCode} 不能为空")); + } + + } + } + + public override async Task> GetWorkingListByPackingAsync(string packingCode) + { + return await Repository.GetListAsync( + c => c.Details.Any(p => p.RecommendPackingCode == packingCode) + && c.JobStatus != EnumJobStatus.Closed + && c.JobStatus != EnumJobStatus.Cancelled + , true).ConfigureAwait(false); + + } + + public override async Task> GetWorkingListByContainerAsync(string containerCode) + { + return await Repository.GetListAsync( + c => c.Details.Any(p => p.RecommendContainerCode == containerCode) + && c.JobStatus != EnumJobStatus.Closed + && c.JobStatus != EnumJobStatus.Cancelled + , true).ConfigureAwait(false); + + } + + public async Task GetAsync(Expression> expression) + { + return await Repository.FindAsync(expression).ConfigureAwait(false); + } + } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/IssueNoteDetail.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/IssueNoteDetail.cs index bd3fad75b..de7699dc9 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/IssueNoteDetail.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/IssueNoteDetail.cs @@ -39,5 +39,5 @@ public class IssueNoteDetail : SfsStoreRecommendFromDetailWithFromToEntityBase /// /// 推荐类型 /// - public EnumRecommendType RecommendType { get; set; } + public string RecommendType { get; set; } } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/MaterialRequestDetail.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/MaterialRequestDetail.cs index 19420cba8..ce4890d59 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/MaterialRequestDetail.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Requests/MaterialRequests/MaterialRequestDetail.cs @@ -99,6 +99,6 @@ public class MaterialRequestDetail : SfsStoreDetailWithQtyEntityBase, IHasToLoca /// /// 推荐类型 /// - public EnumRecommendType RecommendType { get; set; } + public string RecommendType { get; set; } } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/IssueJobDbContextModelCreatingExtensions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/IssueJobDbContextModelCreatingExtensions.cs index f13b3c4ac..3923b6b1a 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/IssueJobDbContextModelCreatingExtensions.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Jobs/IssueJobs/IssueJobDbContextModelCreatingExtensions.cs @@ -56,7 +56,8 @@ public static class IssueJobDbContextModelCreatingExtensions b.Property(q => q.TruncType).HasMaxLength(SfsPropertyConst.NameLength).HasConversion(); b.Property(q => q.PlannedSplitRule).HasMaxLength(SfsPropertyConst.NameLength).HasConversion(); b.Property(q => q.OnTheWayLocationCode).HasMaxLength(SfsPropertyConst.CodeLength); - b.Property(q => q.RecommendType).HasMaxLength(SfsPropertyConst.NameLength).HasConversion(); + b.Property(q => q.PositionCode).HasMaxLength(SfsPropertyConst.CodeLength).IsRequired(false); + b.Property(q => q.RecommendType).HasMaxLength(SfsPropertyConst.CodeLength).IsRequired(false); //Relations //None