From 3e07bc0f9b5cc9ecd37c4bd56fa08cc9fde53767 Mon Sep 17 00:00:00 2001 From: lvzb <35200379@qq.com> Date: Mon, 20 May 2024 15:03:32 +0800 Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Stores/PurchaseReturnRequestController.cs | 1 + .../ProductionLines/DTOs/ProductionLineDTO.cs | 10 ++-- .../Inputs/ProductionLineEditInput.cs | 4 +- .../Inputs/ProductionLineImportInput.cs | 13 +++-- .../ProductionLineItemAppService.cs | 47 +++++++++++++++++++ .../ProductionLineAppService.cs | 43 +++++++++++++++++ .../ProductionLineAutoMapperProfile.cs | 1 + .../ProductionLines/ProductionLine.cs | 4 +- .../Enums/Store/EnumPositionCodeType.cs | 42 ++++++++++++----- 9 files changed, 142 insertions(+), 23 deletions(-) diff --git a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/PurchaseReturnRequestController.cs b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/PurchaseReturnRequestController.cs index 80c2ed4a6..37c874192 100644 --- a/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/PurchaseReturnRequestController.cs +++ b/be/Hosts/WmsPda.Host/Win_in.Sfs.Wms.Pda.Host/Controllers/Stores/PurchaseReturnRequestController.cs @@ -41,6 +41,7 @@ public class PurchaseReturnRequestController : AbpController { var list = group.ToList(); var entity = ObjectMapper.Map(list[0]); + entity.ReturnTime = DateTime.Now; await SetRequestAutoPropertiesAsync(entity).ConfigureAwait(false); entity.Details = new List(); foreach (var item in list) diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ProductionLines/DTOs/ProductionLineDTO.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ProductionLines/DTOs/ProductionLineDTO.cs index d8ce4f29a..d8586f1d1 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ProductionLines/DTOs/ProductionLineDTO.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ProductionLines/DTOs/ProductionLineDTO.cs @@ -20,13 +20,17 @@ public class ProductionLineDTO : SfsBaseDataDTOBase, IHasCode, IHasName public string Code { get; set; } /// - /// 库位 + /// 生产库位代码 /// - [Display(Name = "库位代码")] + [Display(Name = "生产库位代码")] [Key] [IgnoreUpdate] public string LocationCode { get; set; } - + /// + /// 描述 + /// + [Display(Name = "库位描述")] + public string LocationDescription { get; set; } /// /// 名称 /// diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ProductionLines/Inputs/ProductionLineEditInput.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ProductionLines/Inputs/ProductionLineEditInput.cs index 9d03a0e12..4d4bf0612 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ProductionLines/Inputs/ProductionLineEditInput.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ProductionLines/Inputs/ProductionLineEditInput.cs @@ -18,9 +18,9 @@ public class ProductionLineEditInput : SfsBaseDataCreateOrUpdateInputBase public string Code { get; set; } /// - /// 库位 + /// 生产库位代码 /// - [Display(Name = "库位代码")] + [Display(Name = "生产库位代码")] [Key] [IgnoreUpdate] public string LocationCode { get; set; } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ProductionLines/Inputs/ProductionLineImportInput.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ProductionLines/Inputs/ProductionLineImportInput.cs index 8442c0626..e3903342e 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ProductionLines/Inputs/ProductionLineImportInput.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/ProductionLines/Inputs/ProductionLineImportInput.cs @@ -1,4 +1,5 @@ using System.ComponentModel.DataAnnotations; +using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain.Entities; using Win_in.Sfs.Shared.Domain.Shared; @@ -15,21 +16,24 @@ public class ProductionLineImportInput : SfsBaseDataImportInputBase /// [Display(Name = "生产线代码")] [Key] - [IgnoreUpdate] + [Required(ErrorMessage = "{0}是必填项")] + [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] public string Code { get; set; } /// - /// 库位 + /// 生产库位代码 /// - [Display(Name = "库位代码")] + [Display(Name = "生产库位代码")] [Key] - [IgnoreUpdate] + [Required(ErrorMessage = "{0}是必填项")] public string LocationCode { get; set; } /// /// 名称 /// [Display(Name = "名称")] + [Required(ErrorMessage = "{0}是必填项")] + [StringLength(SfsEfCorePropertyConst.CodeLength, ErrorMessage = "{0}最多输入{1}个字符")] public string Name { get; set; } /// @@ -42,5 +46,6 @@ public class ProductionLineImportInput : SfsBaseDataImportInputBase /// 生产线类型 /// [Display(Name = "生产线类型")] + [Required(ErrorMessage = "{0}是必填项")] public EnumProductionLineType ProductionLineType { get; set; } } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLineItems/ProductionLineItemAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLineItems/ProductionLineItemAppService.cs index a7f1bbd1f..ff783d133 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLineItems/ProductionLineItemAppService.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLineItems/ProductionLineItemAppService.cs @@ -3,16 +3,21 @@ using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text.Json; using System.Threading.Tasks; +using DocumentFormat.OpenXml.Office2010.ExcelAc; using DocumentFormat.OpenXml.Office2016.Drawing.ChartDrawing; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; using Volo.Abp; using Volo.Abp.Caching; using Volo.Abp.ObjectMapping; using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Domain; using Win_in.Sfs.Basedata.Domain.Shared; +using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain.Shared; +using Win_in.Sfs.Shared.Domain.Shared.Enums.Store; +using static Win_in.Sfs.Basedata.Domain.BasedataSettings; namespace Win_in.Sfs.Basedata.Application; @@ -41,16 +46,58 @@ public class ProductionLineItemAppService : var entity = ObjectMapper.Map(input); await _repository.UpdateAsync(entity).ConfigureAwait(false); } + /// + /// 用来重写 导入数据时可以加工数据 + /// + /// + /// + protected override async Task> ImportProcessingEntityAsync(Dictionary dictionary) + { + var addList = dictionary.Where(p => p.Value == EntityState.Added).Select(p => p.Key); + + foreach (var list in addList) + { + if (!string.IsNullOrEmpty(list.RawLocationCodeListJson)) + { + var rawlocationcodelist = list.RawLocationCodeListJson.Split(","); + list.RawLocationCodeListJson = JsonSerializer.Serialize(rawlocationcodelist); + } + if (!string.IsNullOrEmpty(list.ProductLocationCodeListJson)) + { + var productlocationcodelist = list.ProductLocationCodeListJson.Split(","); + list.ProductLocationCodeListJson = JsonSerializer.Serialize(productlocationcodelist); + } + if (!string.IsNullOrEmpty(list.WipLocationCodeListJson)) + { + var wiplocationcodelist = list.WipLocationCodeListJson.Split(","); + list.WipLocationCodeListJson = JsonSerializer.Serialize(wiplocationcodelist); + } + } + return dictionary; + } protected override async Task ValidateImportModelAsync(ProductionLineItemImportInput importInput, List validationRresult) { await base.ValidateImportModelAsync(importInput, validationRresult).ConfigureAwait(false); await CheckItemBasicItemCodeAsync(importInput.ItemCode, validationRresult).ConfigureAwait(false); await CheckProductionLineProdLineCodeAsync(importInput.ProdLineCode, validationRresult).ConfigureAwait(false); + CheckProductionLineProdLineCodeJsonAsync(importInput.RawLocationCodeListJson, validationRresult); + CheckProductionLineProdLineCodeJsonAsync(importInput.ProductLocationCodeListJson, validationRresult); + CheckProductionLineProdLineCodeJsonAsync(importInput.WipLocationCodeListJson, validationRresult); } + private void CheckProductionLineProdLineCodeJsonAsync(string locationCodeList, List validationRresult) + { + if(!string.IsNullOrEmpty(locationCodeList)) + { + if (!locationCodeList.Contains(',')) + { + validationRresult.Add(new ValidationResult($"维护的库位{locationCodeList}不包含,号", new string[] { "库位" })); + } + } + } [HttpPost("get-by-product")] public virtual async Task> GetByProductLineCodeAsync(string productLineCode) { 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 047b95686..504aef6c8 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 @@ -1,14 +1,19 @@ +using System; using System.Collections.Generic; +using System.Linq.Expressions; +using System.Threading; using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Volo.Abp; +using Volo.Abp.Application.Dtos; using Volo.Abp.Caching; using Volo.Abp.Domain.Repositories; using Volo.Abp.ObjectMapping; using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Basedata.Domain; using Win_in.Sfs.Basedata.Domain.Shared; +using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain.Shared; namespace Win_in.Sfs.Basedata.Application; @@ -26,11 +31,14 @@ public class ProductionLineAppService private readonly IWorkGroupAppService _workGroupAppService; + private readonly ILocationAppService _locationAppService; + public ProductionLineAppService( IProductionLineRepository repository , IDistributedCache cache , IProductionLineManager manager , IWorkGroupAppService workGroupAppService + , ILocationAppService locationAppService ) : base(repository, cache) { _repository = repository; @@ -40,6 +48,7 @@ public class ProductionLineAppService base.DeletePolicyName = ProductionLinePermissions.Delete; _workGroupAppService = workGroupAppService; + _locationAppService=locationAppService; } [HttpPost("upsert")] @@ -78,4 +87,38 @@ public class ProductionLineAppService return ObjectMapper.Map, List>(entitList); } + + + /// + /// 按条件获取分页列表 + /// request sample + /// { + /// "maxResultCount": 1000, + /// "skipCount": 0, + /// "sorting": "", + /// "condition": { "filters": []} + /// } + /// + /// RequestInput + /// 是否包含明细 + /// + /// + [HttpPost("list")] + public override async Task> GetPagedListByFilterAsync(SfsBaseDataRequestInputBase sfsRequestInput, bool includeDetails = false, + CancellationToken cancellationToken = default) + { + Expression> expression = sfsRequestInput.Condition.Filters?.Count > 0 + ? sfsRequestInput.Condition.Filters.ToLambda() + : p => true; + + var list = await GetPagedListAsync(expression, sfsRequestInput.SkipCount, sfsRequestInput.MaxResultCount, sfsRequestInput.Sorting, includeDetails, cancellationToken).ConfigureAwait(false); + foreach (var item in list.Items) + { + var location=await _locationAppService.GetByCodeAsync(item.Code).ConfigureAwait(false); + item.LocationDescription = location?.Name; + } + + return list; + } + } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLines/ProductionLineAutoMapperProfile.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLines/ProductionLineAutoMapperProfile.cs index 47d08b6a6..706a7983a 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLines/ProductionLineAutoMapperProfile.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ProductionLines/ProductionLineAutoMapperProfile.cs @@ -10,6 +10,7 @@ public partial class BasedataApplicationAutoMapperProfile : Profile private void ProductionLineAutoMapperProfile() { CreateMap() + .Ignore(x => x.LocationDescription) .ReverseMap(); CreateMap() diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/ProductionLines/ProductionLine.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/ProductionLines/ProductionLine.cs index d9f509414..a81a08dd3 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/ProductionLines/ProductionLine.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/ProductionLines/ProductionLine.cs @@ -19,9 +19,9 @@ public class ProductionLine : SfsBaseDataAggregateRootBase, IHasCode, IHasName public string Code { get; set; } /// - /// 库位 + /// 生产库位代码 /// - [Display(Name = "库位代码")] + [Display(Name = "生产库位代码")] [IgnoreUpdate] public string LocationCode { get; set; } diff --git a/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumPositionCodeType.cs b/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumPositionCodeType.cs index 6e4110404..1c77a18a1 100644 --- a/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumPositionCodeType.cs +++ b/be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumPositionCodeType.cs @@ -12,25 +12,43 @@ namespace Win_in.Sfs.Shared.Domain.Shared; /// public enum EnumPositionCodeType { + //20240520静雯让修改 /// - /// 注塑区 + /// 原料 /// - [Display(Name = "注塑区")] - InjectionIssue = 1, + [Display(Name = "原料")] + RAW = 1, /// - /// 喷涂区 + /// 半成品 /// - [Display(Name = "喷涂区")] - CoatingIssue = 2, - /// - /// 装配区 - /// - [Display(Name = "装配区")] - AssembleIssue = 3, + [Display(Name = "半成品")] + SEMI = 2, + /// /// kitting区 /// [Display(Name = "Kitting区")] - KITTING = 4 + KITTING = 3 + ///// + ///// 注塑区 + ///// + //[Display(Name = "注塑区")] + //InjectionIssue = 1, + + ///// + ///// 喷涂区 + ///// + //[Display(Name = "喷涂区")] + //CoatingIssue = 2, + ///// + ///// 装配区 + ///// + //[Display(Name = "装配区")] + //AssembleIssue = 3, + ///// + ///// kitting区 + ///// + //[Display(Name = "Kitting区")] + //KITTING = 4 }