From af08db0b1fb86034f0ce8007b58a18acdadd6096 Mon Sep 17 00:00:00 2001 From: zhouhongjun <565221961@qq.com> Date: Fri, 19 Apr 2024 16:16:50 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=B3=A8=E5=A1=91=E5=8F=91=E6=96=99?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Stores/InjectionRequestController.cs | 5 +- .../ProductionLineAppService.cs | 3 +- .../InjectionIssueRequestAppService.cs | 23 +++++-- .../InjectionIssueRequestEventHandler.cs | 62 +++++++++++++------ 4 files changed, 66 insertions(+), 27 deletions(-) diff --git a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/InjectionRequestController.cs b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/InjectionRequestController.cs index 4a67b9616..9c2c3045b 100644 --- a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/InjectionRequestController.cs +++ b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/InjectionRequestController.cs @@ -32,9 +32,10 @@ public class InjectionIssueRequestController : AbpController /// /// [HttpPost("")] - public virtual async Task CreateAsync(InjectionIssueRequestEditInput input) + public virtual async Task> CreateAsync(InjectionIssueRequestEditInput input) { - _ = await _injectionRequestAppService.CreateAsync(input).ConfigureAwait(false); + var result = await _injectionRequestAppService.CreateAsync(input).ConfigureAwait(false); + return Ok(result); } /// diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLines/ProductionLineAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLines/ProductionLineAppService.cs index 188bfb5f4..3bb63cb76 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLines/ProductionLineAppService.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLines/ProductionLineAppService.cs @@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Volo.Abp; using Volo.Abp.Caching; +using Volo.Abp.Domain.Repositories; using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Domain; using Win_in.Sfs.Basedata.Domain.Shared; @@ -48,7 +49,7 @@ public class ProductionLineAppService [HttpPost("get-by-location")] public virtual async Task GetByLocationCodeAsync(string locationCode) { - var entity = await _repository.FindAsync(p => p.LocationCode == locationCode).ConfigureAwait(false); + var entity = await _repository.FirstOrDefaultAsync(p => p.LocationCode == locationCode).ConfigureAwait(false); if (entity == null) { throw new UserFriendlyException($"【{locationCode}】库位不存在"); diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/InjectionIssueRequests/InjectionIssueRequestAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/InjectionIssueRequests/InjectionIssueRequestAppService.cs index 8a87550c5..b998f6bbc 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/InjectionIssueRequests/InjectionIssueRequestAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/IssuelRequests/InjectionIssueRequests/InjectionIssueRequestAppService.cs @@ -42,6 +42,7 @@ public class InjectionIssueRequestAppService : SfsStoreRequestAppServiceBase0) + { + detailInput.Uom = itemContainerDto[0].BasicUom; + detailInput.Qty = itemContainerDto[0].Qty; + detailInput.StdPackQty = itemBasicDto.StdPackQty; + } + else + { + detailInput.Uom = itemBasicDto.BasicUom; + detailInput.StdPackQty = itemBasicDto.StdPackQty; + detailInput.Qty = itemBasicDto.StdPackQty; + } + detailInput.Status = EnumStatus.Open; //因为是刚创建的 所以发料数一定是0 diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/InjectionIssueRequestEventHandler.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/InjectionIssueRequestEventHandler.cs index deb859cb5..29927219a 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/InjectionIssueRequestEventHandler.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/InjectionIssueRequestEventHandler.cs @@ -249,6 +249,11 @@ public class InjectionIssueRequestEventHandler var productionLineItemDto = productionLineItemDtos.FirstOrDefault(p => p.ItemCode == injectionRequestDetail.ItemCode); + if (productionLineItemDto == null) + { + throw new UserFriendlyException( + $"物品代码【{injectionRequestDetail.ItemCode}】在生产线【{productionLineDto.Code}】中没有对应的【生产线物品关系】"); + } var input = new RecommendBalanceRequestInput { ItemCode = injectionRequestDetail.ItemCode, @@ -268,20 +273,10 @@ public class InjectionIssueRequestEventHandler var detail = await BuildInjectionIssueJobDetailWithQtyTypeAsync(injectionRequestDetail, recommend, toLocationGroupCode) - .ConfigureAwait(false); - if (injectionRequest.UseOnTheWayLocation) - { - //获取在途库 - var locationDto = await _locationAppService.GetFirstByTypeAsync(EnumLocationType.TRANSPORT) - .ConfigureAwait(false); - - detail.OnTheWayLocationCode = locationDto.Code; - } + .ConfigureAwait(false); jobDetails.Add(detail); - injectionRequestDetail.IssuedQty += recommend.Qty; - - //await _injectionRequestManager.UpdateDetailsAsync(injectionRequest).ConfigureAwait(false); + } } @@ -298,36 +293,63 @@ public class InjectionIssueRequestEventHandler private async Task BuildInjectionIssueJobDetailWithQtyTypeAsync( InjectionIssueRequestDetail injectionRequestDetail, BalanceDTO balance, string toLocationGroupCode) { - //ProductionLineDTO prodLine = await _productionLineAppService.GetByLocationGroupCodeAsync(toLocationGroupCode).ConfigureAwait(false); - - var detail = ObjectMapper.Map(balance); + var detail = new InjectionIssueJobDetailInput(); detail.RequestLocationCode = injectionRequestDetail.ToLocationCode; + detail.RequestLocationGroup=injectionRequestDetail.ToLocationGroup; + detail.RequestLocationArea = injectionRequestDetail.ToLocationArea; + detail.RequestLocationErpCode = injectionRequestDetail.ToLocationErpCode; + detail.RequestWarehouseCode=injectionRequestDetail.ToWarehouseCode; + detail.PositionCode = injectionRequestDetail.PositionCode; detail.RecommendType = injectionRequestDetail.RecommendType; + detail.ProdLine = injectionRequestDetail.ToLocationCode; + + detail.ItemCode = injectionRequestDetail.ItemCode; + detail.ItemName=injectionRequestDetail.ItemName; + detail.ItemDesc1=injectionRequestDetail.ItemDesc1; + detail.ItemDesc2 = injectionRequestDetail.ItemDesc2; + detail.StdPackQty = injectionRequestDetail.StdPackQty; + detail.RequestQty= injectionRequestDetail.Qty; + + detail.Status = EnumInventoryStatus.OK; + detail.Uom = balance.Uom; detail.RecommendFromPackingCode = balance.PackingCode; detail.RecommendFromContainerCode = balance.ContainerCode; + detail.RecommendFromLot = balance.Lot; + + detail.RecommendFromQty = balance.Qty; + detail.RecommendFromSupplierBatch = balance.SupplierBatch; detail.RecommendFromProduceDate = balance.ProduceDate; detail.RecommendFromExpireDate = balance.ExpireDate; - detail.RecommendFromLot = balance.Lot; detail.RecommendFromProduceDate = balance.ProduceDate; detail.RecommendFromArriveDate = balance.ArriveDate; + detail.RecommendFromLocationArea = balance.LocationArea; detail.RecommendFromLocationCode = balance.LocationCode; detail.RecommendFromLocationErpCode = balance.LocationErpCode; detail.RecommendFromLocationGroup = balance.LocationGroup; detail.RecommendFromWarehouseCode = balance.WarehouseCode; - detail.RecommendFromQty = balance.Qty; - detail.Uom = balance.Uom; + + detail.RecommendToPackingCode = balance.PackingCode; + detail.RecommendToContainerCode = balance.ContainerCode; + detail.RecommendToLot = balance.Lot; + + detail.RecommendToQty = balance.Qty; + + detail.RecommendToSupplierBatch = balance.SupplierBatch; + detail.RecommendToProduceDate = balance.ProduceDate; + detail.RecommendToExpireDate = balance.ExpireDate; + detail.RecommendToProduceDate = balance.ProduceDate; + detail.RecommendToArriveDate = balance.ArriveDate; detail.RecommendToLocationCode = injectionRequestDetail.ToLocationCode; detail.RecommendToLocationErpCode = injectionRequestDetail.ToLocationErpCode; detail.RecommendToLocationArea = injectionRequestDetail.ToLocationArea; detail.RecommendToWarehouseCode = injectionRequestDetail.ToWarehouseCode; + detail.RecommendToLocationGroup = injectionRequestDetail.ToLocationGroup; - //detail.ProdLine = prodLine == null ? toLocationGroupCode : prodLine.Code; - detail.ProdLine = toLocationGroupCode; await Task.CompletedTask.ConfigureAwait(false); return detail; } From 960f5348128cd5ffb44bfa23ed801b76035759f6 Mon Sep 17 00:00:00 2001 From: "boxu.zheng" Date: Fri, 19 Apr 2024 17:03:59 +0800 Subject: [PATCH 2/3] =?UTF-8?q?zheng=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Boms/BomAppService.cs | 88 ++++++--------- .../IJisProductReceiptNoteAppService.cs | 7 +- .../DTOs/KittingPackagingNoteDTO.cs | 61 +++++++++++ .../KittingPackagingNoteDependentDetailDTO.cs | 58 ++++++++++ .../DTOs/KittingPackagingNoteDetailDTO.cs | 58 ++++++++++ .../IKittingPackagingNoteAppService.cs | 10 ++ .../Inputs/KittingPackagingNoteCheckInput.cs | 6 ++ .../KittingPackagingNoteCreateRequestInput.cs | 101 ++++++++++++++++++ .../Inputs/KittingPackagingNoteDetailInput.cs | 58 ++++++++++ .../Inputs/KittingPackagingNoteEditInput.cs | 82 ++++++++++++++ .../Inputs/KittingPackagingNoteImportInput.cs | 32 ++++++ .../KittingPackagingNotePermissions.cs | 21 ++++ .../JisProductReceiptNoteAppService.cs | 11 +- .../KittingPackagingNoteAppService.cs | 34 ++++++ .../KittingPackagingNoteAutoMapperProfile.cs | 15 +++ .../IKittingPackagingNoteManager.cs | 11 ++ .../IKittingPackagingNoteRepository.cs | 6 ++ .../KittingPackagingNote.cs | 31 ++++++ .../KittingPackagingNoteChassisDetail.cs | 51 +++++++++ .../KittingPackagingNoteDetail.cs | 40 +++++++ .../KittingPackagingNoteManager.cs | 26 +++++ ...ingNoteDbContextModelCreatingExtensions.cs | 77 +++++++++++++ .../KittingPackagingNoteEfCoreRepository.cs | 11 ++ 23 files changed, 839 insertions(+), 56 deletions(-) create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDTO.cs create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDependentDetailDTO.cs create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDetailDTO.cs create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/IKittingPackagingNoteAppService.cs create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteCheckInput.cs create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteCreateRequestInput.cs create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteDetailInput.cs create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteEditInput.cs create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteImportInput.cs create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/KittingPackagingNotePermissions.cs create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/KittingPackagingNotes/KittingPackagingNoteAppService.cs create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/KittingPackagingNotes/KittingPackagingNoteAutoMapperProfile.cs create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/IKittingPackagingNoteManager.cs create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/IKittingPackagingNoteRepository.cs create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNote.cs create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteChassisDetail.cs create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteDetail.cs create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteManager.cs create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/KittingPackagingNotes/KittingPackagingNoteDbContextModelCreatingExtensions.cs create mode 100644 be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/KittingPackagingNotes/KittingPackagingNoteEfCoreRepository.cs diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Boms/BomAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Boms/BomAppService.cs index 41e51c39a..b4744eabb 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Boms/BomAppService.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Boms/BomAppService.cs @@ -2,10 +2,8 @@ using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Threading.Tasks; -using DocumentFormat.OpenXml.Spreadsheet; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; -using Microsoft.EntityFrameworkCore; using Volo.Abp.Caching; using Volo.Abp.Domain.Repositories; using Win_in.Sfs.Basedata.Application.Contracts; @@ -25,31 +23,21 @@ public class BomAppService : private new readonly IBomRepository _repository; private readonly IBomManager _bomManager; - List _bomList=new List(); + private List _bomList = new(); public BomAppService(IBomRepository repository , IBomManager bomManager , IDistributedCache cache - ) : base(repository, cache) + ) : base(repository, cache) { _repository = repository; _bomManager = bomManager; base.CreatePolicyName = BomPermissions.Create; base.UpdatePolicyName = BomPermissions.Update; base.DeletePolicyName = BomPermissions.Delete; - } - - - - - - - - - #region Get [HttpGet("get-by-productitemcode")] @@ -57,7 +45,7 @@ public class BomAppService : public virtual async Task> GetListAsync(string productItemCode, string mfgOp) { var entities = await _repository.GetListAsync(p => p.Product == productItemCode - // && p.MFGOp == mfgOp + // && p.MFGOp == mfgOp ).ConfigureAwait(false); return ObjectMapper.Map, List>(entities); } @@ -65,7 +53,8 @@ public class BomAppService : [HttpGet("list/for-preparation-plan")] public virtual async Task> GetPlanListAsync(string productItemCode, string mfgOp) { - var entities = await _bomManager.GetListWithPhantomItemAsync(productItemCode, mfgOp, Clock.Now, true).ConfigureAwait(false); + var entities = await _bomManager.GetListWithPhantomItemAsync(productItemCode, mfgOp, Clock.Now, true) + .ConfigureAwait(false); return ObjectMapper.Map, List>(entities); } @@ -73,20 +62,23 @@ public class BomAppService : [HttpGet("list/for-backflush")] public virtual async Task> GetBackFlushListAsync(string productItemCode, string mfgOp) { - var entities = await _bomManager.GetListWithPhantomItemAsync(productItemCode, mfgOp, Clock.Now, false).ConfigureAwait(false); + var entities = await _bomManager.GetListWithPhantomItemAsync(productItemCode, mfgOp, Clock.Now, false) + .ConfigureAwait(false); return ObjectMapper.Map, List>(entities); } [HttpGet("get-by-productitemcode-sbs")] - public virtual async Task> GetBomStepByStepAsync(string productItemCode, DateTime validTime, bool isStepByStep = true) + public virtual async Task> GetBomStepByStepAsync(string productItemCode, DateTime validTime, + bool isStepByStep = true) { - var entities = await _bomManager.GetRecursiveListAsync(productItemCode, validTime, isStepByStep).ConfigureAwait(false); + var entities = await _bomManager.GetRecursiveListAsync(productItemCode, validTime, isStepByStep) + .ConfigureAwait(false); return ObjectMapper.Map, List>(entities); } /// - /// 所有子物料号 + /// 所有子物料号 /// /// /// @@ -97,7 +89,7 @@ public class BomAppService : } /// - /// 所有父物料号 + /// 所有父物料号 /// /// /// @@ -106,8 +98,9 @@ public class BomAppService : { return await _bomManager.GetListOfComponentAsync(component).ConfigureAwait(false); } + /// - /// 获取bomtree + /// 获取bomtree /// /// /// @@ -120,8 +113,9 @@ public class BomAppService : return dtos; } + /// - /// 获取所有子物料关系 + /// 获取所有子物料关系 /// /// /// @@ -141,11 +135,12 @@ public class BomAppService : foreach (var dto in dtos) { var entities = (await _bomManager.GetListOfProductAsync(dto.Component).ConfigureAwait(false)) - .FindAll(t => t.Component != dto.Component); + .FindAll(t => t.Component != dto.Component); if (entities.Count > 0) { - dto.ComponentDTOs = await GetChildBomsAsync(ObjectMapper.Map, List>(entities)).ConfigureAwait(false); + dto.ComponentDTOs = await GetChildBomsAsync(ObjectMapper.Map, List>(entities)) + .ConfigureAwait(false); } } @@ -162,7 +157,6 @@ public class BomAppService : entity.ComponentQty = input.ComponentQty; await _repository.UpsertAsync(entity).ConfigureAwait(false); - return; } [HttpPost("upsert-interface")] @@ -173,18 +167,18 @@ public class BomAppService : entity.ComponentQty = input.ComponentQty; await _repository.UpsertAsyncByInterface(entity); - return; } - [HttpPost("add-upsert-lsit")] public virtual async Task AddOrUpsertListAsync(List inputs) { - List entitys = new List(); + var entitys = new List(); foreach (var input in inputs) { - var oldBom = await _repository.FirstOrDefaultAsync(t => t.Product == input.Product && t.Component == input.Component).ConfigureAwait(false); + var oldBom = await _repository + .FirstOrDefaultAsync(t => t.Product == input.Product && t.Component == input.Component) + .ConfigureAwait(false); if (oldBom == null) { @@ -202,18 +196,20 @@ public class BomAppService : entitys.Add(oldBom); } } + await _repository.BulkMergeAsync(entitys).ConfigureAwait(false); - return; } - protected override async Task ValidateImportModelAsync(BomImportInput importInput, List validationRresult) + protected override async Task ValidateImportModelAsync(BomImportInput importInput, + List validationRresult) { - await base.CheckProductAsync(importInput.Product, validationRresult).ConfigureAwait(false); - await base.CheckComponentAndComponentQtyAsync(importInput.Component, importInput.ComponentQty, validationRresult).ConfigureAwait(false); + await CheckProductAsync(importInput.Product, validationRresult).ConfigureAwait(false); + await CheckComponentAndComponentQtyAsync(importInput.Component, importInput.ComponentQty, validationRresult) + .ConfigureAwait(false); } /// - /// 根据总成号、总成数量取所有子物料及其汇总数量 + /// 根据总成号、总成数量取所有子物料及其汇总数量 /// /// 总成号 /// 总成数量 @@ -223,31 +219,17 @@ public class BomAppService : { var entities = await _bomManager.GetMaterialTotalQtyAsync(productCode, productNum).ConfigureAwait(false); return ObjectMapper.Map, List>(entities); - } [HttpPost("get_bom_sublist")] - - public async Task> GetSubcomponentsRecursiveList(List p_lst, EnumBomSelectedType p_type + public async Task> GetSubcomponentsRecursiveList(List p_lst, + EnumBomSelectedType p_type ) { - var entities=ObjectMapper.Map, List>(p_lst); - var list=await _bomManager.GetSubcomponentsRecursiveList(entities, p_type).ConfigureAwait(false); + var entities = ObjectMapper.Map, List>(p_lst); + var list = await _bomManager.GetSubcomponentsRecursiveList(entities, p_type).ConfigureAwait(false); var sublist = ObjectMapper.Map, List>(list); return sublist; - } - - - - - - - } - - - - - diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/JisProductReceiptNotes/IJisProductReceiptNoteAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/JisProductReceiptNotes/IJisProductReceiptNoteAppService.cs index 6f9114073..25bd7b142 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/JisProductReceiptNotes/IJisProductReceiptNoteAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/JisProductReceiptNotes/IJisProductReceiptNoteAppService.cs @@ -2,7 +2,12 @@ using System.Threading.Tasks; namespace Win_in.Sfs.Wms.Store.Application.Contracts; -public interface IJisProductReceiptNoteAppService : ISfsStoreMasterReadOnlyAppServiceBase +public interface IJisProductReceiptNoteAppService : + ISfsStoreMasterReadOnlyAppServiceBase< + JisProductReceiptNoteDTO, + SfsStoreRequestInputBase, + JisProductReceiptNoteDetailDTO, + SfsStoreRequestInputBase> { Task CreateAsync(JisProductReceiptNoteEditInput input); } diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDTO.cs new file mode 100644 index 000000000..8e89587cb --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDTO.cs @@ -0,0 +1,61 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using Win_in.Sfs.Shared.Domain; +using Win_in.Sfs.Shared.Domain.Entities; +using Win_in.Sfs.Shared.Domain.Shared; +using Win_in.Sfs.Wms.Store.Domain; + +namespace Win_in.Sfs.Wms.Store.Application.Contracts; + +[Display(Name = "盘点任务")] +public class KittingPackagingNoteDTO : SfsJobDTOBase +{ + + /// + /// 生产计划号 + /// + [Display(Name = "盘点计划号")] + [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] + public string CountPlanNumber { get; set; } + + /// + /// 盘点阶段 + /// + [Display(Name = "盘点阶段")] + public EnumCountStage CountStage { get; set; } + + /// + /// 盘点方式 + /// + [Display(Name = "盘点方式")] + public EnumCountMethod CountMethod { get; set; } + + /// + /// 类型 + /// + [Display(Name = "盘点类型")] + public EnumCountType Type { get; set; } + + /// + /// 描述 + /// + [Display(Name = "描述")] + public string Description { get; set; } + + /// + /// 物料代码 + /// + [Display(Name = "物料代码")] + public string ItemCode { get; set; } + + /// + /// 库位代码 + /// + [Display(Name = "库位代码")] + public string LocationCode { get; set; } + + /// + /// 任务从表明细(记录每次扫得明细) + /// + public List DepDetails { get; set; } +} diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDependentDetailDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDependentDetailDTO.cs new file mode 100644 index 000000000..1f89a3ba2 --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDependentDetailDTO.cs @@ -0,0 +1,58 @@ +using System; +using System.ComponentModel.DataAnnotations; +using Win_in.Sfs.Shared.Domain; + +namespace Win_in.Sfs.Wms.Store.Application.Contracts; + +public class KittingPackagingNoteDependentDetailDTO : SfsJobDetailDTOBase, IHasCountResult +{ + + /// + /// 盘点标签 + /// + [Display(Name = "盘点标签")] + [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] + public string CountLabel { get; set; } + + /// + /// 计量单位 + /// + [Display(Name = "计量单位")] + public string Uom { get; set; } + + /// + /// 库存数量 + /// + [Display(Name = "库存数量")] + public decimal InventoryQty { get; set; } + + /// + /// 库存库位 + /// + [Display(Name = "库存库位")] + public string InventoryLocationCode { get; set; } + + /// + /// 盘点数量 + /// + [Display(Name = "盘点数量")] + public decimal CountQty { get; set; } + + /// + /// 盘点时间 + /// + [Display(Name = "盘点时间")] + public DateTime? CountTime { get; set; } + + /// + /// 盘点操作员 + /// + [Display(Name = "盘点操作员")] + public string CountOperator { get; set; } + + /// + /// 盘点描述 + /// + [Display(Name = "盘点描述")] + public string CountDescription { get; set; } +} diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDetailDTO.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDetailDTO.cs new file mode 100644 index 000000000..3e9edb5cc --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/DTOs/KittingPackagingNoteDetailDTO.cs @@ -0,0 +1,58 @@ +using System; +using System.ComponentModel.DataAnnotations; +using Win_in.Sfs.Shared.Domain; + +namespace Win_in.Sfs.Wms.Store.Application.Contracts; + +public class KittingPackagingNoteDetailDTO : SfsJobDetailDTOBase, IHasCountResult +{ + + /// + /// 盘点标签 + /// + [Display(Name = "盘点标签")] + [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] + public string CountLabel { get; set; } + + /// + /// 计量单位 + /// + [Display(Name = "计量单位")] + public string Uom { get; set; } + + /// + /// 库存数量 + /// + [Display(Name = "库存数量")] + public decimal InventoryQty { get; set; } + + /// + /// 库存库位 + /// + [Display(Name = "库存库位")] + public string InventoryLocationCode { get; set; } + + /// + /// 盘点数量 + /// + [Display(Name = "盘点数量")] + public decimal CountQty { get; set; } + + /// + /// 盘点时间 + /// + [Display(Name = "盘点时间")] + public DateTime? CountTime { get; set; } + + /// + /// 盘点操作员 + /// + [Display(Name = "盘点操作员")] + public string CountOperator { get; set; } + + /// + /// 盘点描述 + /// + [Display(Name = "盘点描述")] + public string CountDescription { get; set; } +} diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/IKittingPackagingNoteAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/IKittingPackagingNoteAppService.cs new file mode 100644 index 000000000..9ad863aec --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/IKittingPackagingNoteAppService.cs @@ -0,0 +1,10 @@ +namespace Win_in.Sfs.Wms.Store.Application.Contracts; + +public interface IKittingPackagingNoteAppService : + ISfsStoreMasterReadOnlyAppServiceBase< + KittingPackagingNoteDTO, + SfsStoreRequestInputBase, + KittingPackagingNoteDetailDTO, + SfsStoreRequestInputBase> +{ +} diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteCheckInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteCheckInput.cs new file mode 100644 index 000000000..13e414fd7 --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteCheckInput.cs @@ -0,0 +1,6 @@ +namespace Win_in.Sfs.Wms.Store.Application.Contracts; + +public class KittingPackagingNoteCheckInput : SfsJobCheckInputBase +{ + +} diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteCreateRequestInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteCreateRequestInput.cs new file mode 100644 index 000000000..d5eececd8 --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteCreateRequestInput.cs @@ -0,0 +1,101 @@ +using System.Collections.Generic; +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; + +/// +/// 查询条件 DTO +/// +public class KittingPackagingNoteCreateRequestInput +{ + /// + /// 盘点方式 + /// + [Display(Name = "盘点方式")] + public EnumCountMethod CountMethod { get; set; } + + /// + /// 描述 + /// + [Display(Name = "描述")] + [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] + public string Description { get; set; } + + /// + /// 盘点执行形式 + /// + [Display(Name = "盘点执行形式")] + public CountPlanRequestType RequestType { get; set; } + + /// + /// 类型 + /// + [Display(Name = "盘点类型")] + public EnumCountType Type { get; set; } + + /// + /// 零件条件集合 + /// + [Display(Name = "零件条件集合")] + public List PartCondition { get; set; } = new(); + + /// + /// 库位条件集合 + /// + [Display(Name = "库位条件集合")] + public List LocCondition { get; set; } = new(); + + /// + /// 状态 + /// + [Display(Name = "状态")] + public List StatusList { get; set; } + + /// + /// 操作员 + /// + [Display(Name = "操作员")] + //[Required(ErrorMessage = "{0}是必填项")] + [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] + public string Worker { get; set; } + + /// + /// 仓库 + /// + [Display(Name = "仓库")] + //[Required(ErrorMessage = "{0}是必填项")] + [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] + public string WarehouseCode { get; set; } + + /// + /// 备注 + /// + [Display(Name = "备注")] + public string Remark { get; set; } + + /// + /// 盘点阶段 + /// + [Display(Name = "盘点阶段")] + public EnumCountStage CountStage { get; set; } = EnumCountStage.Circulate; + + /// + /// 盘点的零件集合 + /// + [Display(Name = "盘点的零件集合")] + public string JsonItemCodes { get; set; } + + /// + /// 盘点的库位集合 + /// + [Display(Name = "盘点的库位集合")] + public string JsonLocationCodes { get; set; } + + /// + /// 盘点的库存状态集合 + /// + [Display(Name = "盘点的库存状态集合")] + public string JsonInventoryStatus { get; set; } +} diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteDetailInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteDetailInput.cs new file mode 100644 index 000000000..a02d61277 --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteDetailInput.cs @@ -0,0 +1,58 @@ +using System; +using System.ComponentModel.DataAnnotations; +using Win_in.Sfs.Shared.Domain; + +namespace Win_in.Sfs.Wms.Store.Application.Contracts; + +public class KittingPackagingNoteDetailInput : SfsJobDetailInputBase, IHasCountResult +{ + + /// + /// 盘点标签 + /// + [Display(Name = "盘点标签")] + [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] + public string CountLabel { get; set; } + + /// + /// 计量单位 + /// + [Display(Name = "计量单位")] + public string Uom { get; set; } + + /// + /// 库存数量 + /// + [Display(Name = "库存数量")] + public decimal InventoryQty { get; set; } + + /// + /// 库存库位 + /// + [Display(Name = "库存库位")] + public string InventoryLocationCode { get; set; } + + /// + /// 盘点数量 + /// + [Display(Name = "盘点数量")] + public decimal CountQty { get; set; } + + /// + /// 盘点时间 + /// + [Display(Name = "盘点时间")] + public DateTime? CountTime { get; set; } + + /// + /// 盘点操作员 + /// + [Display(Name = "盘点操作员")] + public string CountOperator { get; set; } + + /// + /// 盘点描述 + /// + [Display(Name = "盘点描述")] + public string CountDescription { get; set; } +} diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteEditInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteEditInput.cs new file mode 100644 index 000000000..233be52d8 --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteEditInput.cs @@ -0,0 +1,82 @@ +using System.Collections.Generic; +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; + +public class KittingPackagingNoteEditInput : SfsJobCreateUpdateInputBase, ISfsJobCreateInput +{ + #region Base + /// + /// 盘点方式 + /// + [Display(Name = "盘点方式")] + public EnumCountMethod CountMethod { get; set; } + /// + /// 类型 + /// + [Display(Name = "盘点类型")] + + public EnumCountType Type { get; set; } + + /// + /// 描述 + /// + [Display(Name = "描述")] + + public string Description { get; set; } + + /// + /// 物料代码 + /// + [Display(Name = "物料代码")] + public string ItemCode { get; set; } + + /// + /// 库位代码 + /// + [Display(Name = "库位代码")] + public string LocationCode { get; set; } + #endregion + + #region Create + /// + /// 上游任务编号 + /// + [Display(Name = "上游任务编号")] + [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] + public string UpStreamJobNumber { get; set; } + + /// + /// 盘点计划号 + /// + [Display(Name = "盘点计划号")] + [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] + public string CountPlanNumber { get; set; } + + /// + /// 盘点阶段 + /// + [Display(Name = "盘点阶段")] + public EnumCountStage CountStage { get; set; } + + /// + /// 任务类型 + /// + [Display(Name = "任务类型")] + public EnumJobType JobType { get; set; } + + /// + /// 是否自动完成 + /// + [Display(Name = "是否自动完成")] + public bool IsAutoComplete { get; set; } + + /// + /// 任务明细 + /// + [Display(Name = "任务明细")] + public List Details { get; set; } + #endregion +} diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteImportInput.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteImportInput.cs new file mode 100644 index 000000000..793c3611e --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/Inputs/KittingPackagingNoteImportInput.cs @@ -0,0 +1,32 @@ +using System.ComponentModel.DataAnnotations; + +namespace Win_in.Sfs.Wms.Store.Application.Contracts; + +public class KittingPackagingNoteImportInput : SfsStoreImportInputBase +{ + + /// + /// 盘点任务单号 + /// + [Display(Name = "盘点任务单号")] + public string CountJobNumber { get; set; } + + /// + /// 盘点计划单号 + /// + [Display(Name = "盘点计划单号")] + public string CountPlanNumber { get; set; } + + /// + /// 调整类型 + /// + [Display(Name = "调整类型")] + public string Type { get; set; } + + /// + /// 是否已经调整 + /// + [Display(Name = "是否已经调整")] + [Required(ErrorMessage = "{0}是必填项")] + public bool IsAdjusted { get; set; } = false; +} diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/KittingPackagingNotePermissions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/KittingPackagingNotePermissions.cs new file mode 100644 index 000000000..422bd3ca2 --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/KittingPackagingNotes/KittingPackagingNotePermissions.cs @@ -0,0 +1,21 @@ +using Volo.Abp.Authorization.Permissions; +using Win_in.Sfs.Wms.Store.Domain; + +namespace Win_in.Sfs.Wms.Store.Application.Contracts; + +public static class KittingPackagingNotePermissions +{ + + public const string Default = StorePermissions.GroupName + "." + nameof(KittingPackagingNote); + public const string Create = Default + "." + StorePermissions.CreateStr; + public const string Update = Default + "." + StorePermissions.UpdateStr; + public const string Delete = Default + "." + StorePermissions.DeleteStr; + + public static void AddKittingPackagingNotePermission(this PermissionGroupDefinition permissionGroup) + { + var countJobPermission = permissionGroup.AddPermission(Default, StorePermissionDefinitionProvider.L(nameof(KittingPackagingNote))); + countJobPermission.AddChild(Create, StorePermissionDefinitionProvider.L(StorePermissions.CreateStr)); + countJobPermission.AddChild(Update, StorePermissionDefinitionProvider.L(StorePermissions.UpdateStr)); + countJobPermission.AddChild(Delete, StorePermissionDefinitionProvider.L(StorePermissions.DeleteStr)); + } +} diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/JisProductReceiptNotes/JisProductReceiptNoteAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/JisProductReceiptNotes/JisProductReceiptNoteAppService.cs index 864362e7a..aa49659cc 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/JisProductReceiptNotes/JisProductReceiptNoteAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/JisProductReceiptNotes/JisProductReceiptNoteAppService.cs @@ -10,8 +10,15 @@ namespace Win_in.Sfs.Wms.Store.Application; [Authorize] [Route($"{StoreConsts.RootPath}jis-product-receipt-note")] public class JisProductReceiptNoteAppService : - SfsStoreWithDetailsAppServiceBase, + SfsStoreWithDetailsAppServiceBase< + JisProductReceiptNote, + JisProductReceiptNoteDTO, + SfsStoreRequestInputBase, + JisProductReceiptNoteEditInput, + JisProductReceiptNoteDetail, + JisProductReceiptNoteDetailDTO, + SfsStoreRequestInputBase, + JisProductReceiptNoteImportInput>, IJisProductReceiptNoteAppService { diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/KittingPackagingNotes/KittingPackagingNoteAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/KittingPackagingNotes/KittingPackagingNoteAppService.cs new file mode 100644 index 000000000..a59670213 --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/KittingPackagingNotes/KittingPackagingNoteAppService.cs @@ -0,0 +1,34 @@ +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Win_in.Sfs.Wms.Store.Application.Contracts; +using Win_in.Sfs.Wms.Store.Domain; +using Win_in.Sfs.Wms.Store.Domain.Shared; + +namespace Win_in.Sfs.Wms.Store.Application; + +/// +/// 盘点接口 +/// +[Authorize] +[Route($"{StoreConsts.RootPath}KittingPackagingNote")] +public class KittingPackagingNoteAppService + : SfsStoreWithDetailsAppServiceBase< + KittingPackagingNote, + KittingPackagingNoteDTO, + SfsStoreRequestInputBase, + KittingPackagingNoteEditInput, + KittingPackagingNoteDetail, + KittingPackagingNoteDetailDTO, + SfsStoreRequestInputBase, + KittingPackagingNoteImportInput>, IKittingPackagingNoteAppService +{ + private readonly IKittingPackagingNoteManager _kittingPackagingNoteManager; + + public KittingPackagingNoteAppService( + IKittingPackagingNoteRepository repository, + IJisProductReceiptNoteManager KittingPackagingNoteManager, + IKittingPackagingNoteManager kittingPackagingNoteManager) : base(repository) + { + _kittingPackagingNoteManager = kittingPackagingNoteManager; + } +} diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/KittingPackagingNotes/KittingPackagingNoteAutoMapperProfile.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/KittingPackagingNotes/KittingPackagingNoteAutoMapperProfile.cs new file mode 100644 index 000000000..c7b01d559 --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/KittingPackagingNotes/KittingPackagingNoteAutoMapperProfile.cs @@ -0,0 +1,15 @@ +using AutoMapper; +using Volo.Abp.AutoMapper; +using Win_in.Sfs.Wms.Store.Application.Contracts; +using Win_in.Sfs.Wms.Store.Domain; + +namespace Win_in.Sfs.Wms.Store.Application; + +public partial class StoreApplicationAutoMapperProfile : Profile +{ + private void KittingPackagingNoteAutoMapperProfile() + { + CreateMap() + .ReverseMap(); + } +} diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/IKittingPackagingNoteManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/IKittingPackagingNoteManager.cs new file mode 100644 index 000000000..b439f482a --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/IKittingPackagingNoteManager.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Linq.Expressions; +using System.Threading.Tasks; +using Win_in.Sfs.Shared.Domain.Shared; + +namespace Win_in.Sfs.Wms.Store.Domain; + +public interface IKittingPackagingNoteManager : ISfsStoreManager +{ +} diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/IKittingPackagingNoteRepository.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/IKittingPackagingNoteRepository.cs new file mode 100644 index 000000000..0ba04487d --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/IKittingPackagingNoteRepository.cs @@ -0,0 +1,6 @@ +namespace Win_in.Sfs.Wms.Store.Domain; + +public interface IKittingPackagingNoteRepository : ISfsStoreRepositoryBase +{ + +} diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNote.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNote.cs new file mode 100644 index 000000000..ba220dc50 --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNote.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using Win_in.Sfs.Shared.Domain.Entities; + +namespace Win_in.Sfs.Wms.Store.Domain; + +/// +/// kitting打包记录 +/// +[Display(Name = "kitting打包记录")] +public class KittingPackagingNote : SfsStoreAggregateRootBase +{ + /// + /// kitting代码 + /// + [Display(Name = "Kitting代码")] + public string KittingCode { get; set; } + + /// + /// 任务明细 + /// + [IgnoreUpdate] + public override List Details { get; set; } = new(); + + /// + /// 任务从表明细(记录每次扫得明细) + /// + [IgnoreUpdate] + public List DepDetails { get; set; } = new(); +} diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteChassisDetail.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteChassisDetail.cs new file mode 100644 index 000000000..2f2a0bdf7 --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteChassisDetail.cs @@ -0,0 +1,51 @@ +using System; +using System.ComponentModel.DataAnnotations; +using Win_in.Sfs.Shared.Domain; + +namespace Win_in.Sfs.Wms.Store.Domain; + +public class KittingPackagingNoteChassisDetail : SfsJobDetailEntityBase, IHasCountResult, IHasInventoryQty +{ + + /// + /// 盘点标签 + /// + public string CountLabel { get; set; } + + /// + /// 库存数量 + /// + public decimal InventoryQty { get; set; } + + /// + /// 计量单位 + /// + [Display(Name = "计量单位")] + public string Uom { get; set; } + + /// + /// 库存库位 + /// + public string InventoryLocationCode { get; set; } + + /// + /// 盘点数量(每次扫得数量) + /// + public decimal CountQty { get; set; } + + /// + /// 盘点时间 + /// + public DateTime? CountTime { get; set; } + + /// + /// 盘点操作员 + /// + public string CountOperator { get; set; } + + /// + /// 盘点描述 + /// + public string CountDescription { get; set; } +} + diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteDetail.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteDetail.cs new file mode 100644 index 000000000..d71bf4ebf --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteDetail.cs @@ -0,0 +1,40 @@ +using System.ComponentModel.DataAnnotations; +using Win_in.Sfs.Shared.Domain; +using Win_in.Sfs.Shared.Domain.Entities; + +namespace Win_in.Sfs.Wms.Store.Domain; + +public class KittingPackagingNoteDetail : SfsDetailEntityBase +{ + /// + /// 物品代码 + /// + [Display(Name = "物品代码")] + [Required(ErrorMessage = "{0}是必填项")] + [IgnoreUpdate] + public string ItemCode { get; set; } + + /// + /// 物品名称 + /// + [Display(Name = "物品名称")] + public string ItemName { get; set; } + + /// + /// 物品描述1 + /// + [Display(Name = "物品描述1")] + public string ItemDesc1 { get; set; } + + /// + /// 物品描述2 + /// + [Display(Name = "物品描述2")] + public string ItemDesc2 { get; set; } + + /// + /// 数量 + /// + [Display(Name = "数量")] + public decimal Qty { get; set; } +} diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteManager.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteManager.cs new file mode 100644 index 000000000..7d4782c6c --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteManager.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Linq.Expressions; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Users; +using Volo.Abp.Validation; +using Win_in.Sfs.Shared.Domain; +using Win_in.Sfs.Shared.Domain.Shared; +using Win_in.Sfs.Wms.Inventory.Application.Contracts; + +namespace Win_in.Sfs.Wms.Store.Domain; + +public class KittingPackagingNoteManager : SfsStoreManagerBase, + IKittingPackagingNoteManager +{ + public KittingPackagingNoteManager( + IKittingPackagingNoteRepository repository + ) : base(repository) + + { + + } +} diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/KittingPackagingNotes/KittingPackagingNoteDbContextModelCreatingExtensions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/KittingPackagingNotes/KittingPackagingNoteDbContextModelCreatingExtensions.cs new file mode 100644 index 000000000..dc17b7d52 --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/KittingPackagingNotes/KittingPackagingNoteDbContextModelCreatingExtensions.cs @@ -0,0 +1,77 @@ +using Microsoft.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore.Modeling; +using Win_in.Sfs.Shared.Domain.Shared; +using Win_in.Sfs.Shared.EntityFrameworkCore; +using Win_in.Sfs.Wms.Store.Domain; + +namespace Win_in.Sfs.Wms.Store.EntityFrameworkCore; + +public static class KittingPackagingNoteDbContextModelCreatingExtensions +{ + public static void ConfigureKittingPackagingNote(this ModelBuilder builder, StoreModelBuilderConfigurationOptions options) + { + builder.Entity(b => + { + //Configure table & schema name + b.ToTable(StoreDbProperties.JobDbTablePrefix + nameof(KittingPackagingNote), options.Schema); + //Configure ABP properties + b.ConfigureByConvention(); + //Configure Sfs base properties + b.ConfigureSfsBase(); + //Properties + b.Property(q => q.KittingCode).HasMaxLength(SfsPropertyConst.CodeLength); + //Relations + b.HasMany(q => q.Details).WithOne().HasForeignKey(d => d.MasterID).IsRequired(); + b.HasMany(q => q.DepDetails).WithOne().HasForeignKey(d => d.MasterID).IsRequired(); + //Indexes + b.HasIndex(q => new { q.Number }).IsUnique(); + }); + + builder.Entity(b => + { + //Configure table & schema name + b.ToTable(StoreDbProperties.JobDbTablePrefix + nameof(KittingPackagingNoteDetail), options.Schema); + //Configure ABP properties + b.ConfigureByConvention(); + //Configure Sfs base properties + b.ConfigureSfsBase(); + //Configure Job base properties + b.ConfigureSfsStoreDetailBase(); + //Properties + b.Property(q => q.CountLabel).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength); + b.Property(q => q.InventoryLocationCode).HasMaxLength(SfsPropertyConst.CodeLength); + b.Property(q => q.CountOperator).HasMaxLength(SfsPropertyConst.CodeLength); + b.Property(q => q.CountDescription).HasMaxLength(SfsPropertyConst.CodeLength); + + //Relations + //None + + //Indexes + //b.HasIndex(q => new { q.PackingCode }).IsUnique(); + }); + + + builder.Entity(b => + { + //Configure table & schema name + b.ToTable(StoreDbProperties.JobDbTablePrefix + nameof(KittingPackagingNoteChassisDetail), options.Schema); + //Configure ABP properties + b.ConfigureByConvention(); + //Configure Sfs base properties + b.ConfigureSfsBase(); + //Configure Job base properties + b.ConfigureJobDetail(); + //Properties + b.Property(q => q.CountLabel).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength); + b.Property(q => q.InventoryLocationCode).HasMaxLength(SfsPropertyConst.CodeLength); + b.Property(q => q.CountOperator).HasMaxLength(SfsPropertyConst.CodeLength); + b.Property(q => q.CountDescription).HasMaxLength(SfsPropertyConst.CodeLength); + + //Relations + //None + + //Indexes + //b.HasIndex(q => new { q.PackingCode }).IsUnique(); + }); + } +} diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/KittingPackagingNotes/KittingPackagingNoteEfCoreRepository.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/KittingPackagingNotes/KittingPackagingNoteEfCoreRepository.cs new file mode 100644 index 000000000..9a22020c0 --- /dev/null +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/KittingPackagingNotes/KittingPackagingNoteEfCoreRepository.cs @@ -0,0 +1,11 @@ +using Volo.Abp.EntityFrameworkCore; +using Win_in.Sfs.Wms.Store.Domain; + +namespace Win_in.Sfs.Wms.Store.EntityFrameworkCore; + +public class KittingPackagingNoteEfCoreRepository : SfsJobEfCoreRepositoryBase, IKittingPackagingNoteRepository +{ + public KittingPackagingNoteEfCoreRepository(IDbContextProvider dbContextProvider) : base(dbContextProvider) + { + } +} From 374fb561f7601c1f80cdc830a398db67407d9b20 Mon Sep 17 00:00:00 2001 From: "boxu.zheng" Date: Fri, 19 Apr 2024 17:12:53 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=9C=AA=E5=AE=8C=E6=88=90=20KittingPackin?= =?UTF-8?q?gNote?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../KittingPackagingNotes/KittingPackagingNoteDetail.cs | 2 +- ...ittingPackagingNoteDbContextModelCreatingExtensions.cs | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteDetail.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteDetail.cs index d71bf4ebf..a195a60a5 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteDetail.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/KittingPackagingNotes/KittingPackagingNoteDetail.cs @@ -4,7 +4,7 @@ using Win_in.Sfs.Shared.Domain.Entities; namespace Win_in.Sfs.Wms.Store.Domain; -public class KittingPackagingNoteDetail : SfsDetailEntityBase +public class KittingPackagingNoteDetail : SfsStoreDetailEntityBase { /// /// 物品代码 diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/KittingPackagingNotes/KittingPackagingNoteDbContextModelCreatingExtensions.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/KittingPackagingNotes/KittingPackagingNoteDbContextModelCreatingExtensions.cs index dc17b7d52..77c0950d8 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/KittingPackagingNotes/KittingPackagingNoteDbContextModelCreatingExtensions.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.EntityFrameworkCore/Notes/KittingPackagingNotes/KittingPackagingNoteDbContextModelCreatingExtensions.cs @@ -38,10 +38,10 @@ public static class KittingPackagingNoteDbContextModelCreatingExtensions //Configure Job base properties b.ConfigureSfsStoreDetailBase(); //Properties - b.Property(q => q.CountLabel).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength); - b.Property(q => q.InventoryLocationCode).HasMaxLength(SfsPropertyConst.CodeLength); - b.Property(q => q.CountOperator).HasMaxLength(SfsPropertyConst.CodeLength); - b.Property(q => q.CountDescription).HasMaxLength(SfsPropertyConst.CodeLength); + //b.Property(q => q.CountLabel).IsRequired().HasMaxLength(SfsPropertyConst.CodeLength); + //b.Property(q => q.InventoryLocationCode).HasMaxLength(SfsPropertyConst.CodeLength); + //b.Property(q => q.CountOperator).HasMaxLength(SfsPropertyConst.CodeLength); + //b.Property(q => q.CountDescription).HasMaxLength(SfsPropertyConst.CodeLength); //Relations //None