From 3bc2db862f3e09eb96fb54202fdda361b5aafdcd Mon Sep 17 00:00:00 2001 From: mahao Date: Tue, 26 Sep 2023 11:06:08 +0800 Subject: [PATCH 1/2] =?UTF-8?q?[172]=E7=9B=B4=E4=BE=9BHBPO=E7=BB=93?= =?UTF-8?q?=E7=AE=97=E5=AF=BC=E5=85=A5=E5=8F=98=E6=9B=B4=EF=BC=8C=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E6=8C=89=E7=9B=AE=E6=A0=87=E5=BA=93=E4=BD=8D=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E5=8C=BA=E5=88=86CN1=E4=B8=8ECN5=EF=BC=8CCC004=3D?= =?UTF-8?q?=E4=BA=A6=E5=BA=84=3DCN1;CC172=3D=E9=A1=BA=E4=B9=89=3DCN5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Entities/BQ/Dtos/PUB_SA_DTO.cs | 6 +- .../Entities/BQ/INVOICE_SERVICE.cs | 23 +++++-- .../Entities/BQ/PUB_SA_SERVICE.cs | 65 +++++++++++++++---- 3 files changed, 73 insertions(+), 21 deletions(-) diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/PUB_SA_DTO.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/PUB_SA_DTO.cs index a45bb22d..da6f8436 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/PUB_SA_DTO.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application.Contracts/Entities/BQ/Dtos/PUB_SA_DTO.cs @@ -162,9 +162,11 @@ namespace Win.Sfs.SettleAccount.Entities.BQ.Dtos /// /// 地点 /// - [Display(Name = "地点")] - [ImporterHeader(Name = "地点")] + [Display(Name = "目标库位")] + [ImporterHeader(Name = "目标库位")] [Required(ErrorMessage = "{0}不能为空")] + [ValueMapping("CC004", "CN1")] + [ValueMapping("CC172", "CN5")] public string Place { get; set; } } diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/INVOICE_SERVICE.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/INVOICE_SERVICE.cs index 4fe6af24..89ecf60d 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/INVOICE_SERVICE.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/INVOICE_SERVICE.cs @@ -48,6 +48,7 @@ using Win.Sfs.Shared.RepositoryBase; using static Dm.parser.LVal; using static LinqToDB.Sql; using Win.Sfs.Shared.Filter; +using Polly; namespace Win.Sfs.SettleAccount.Entities.BQ { @@ -208,7 +209,17 @@ namespace Win.Sfs.SettleAccount.Entities.BQ invoiceGrps.ForEach(t => t.State = SettleBillState.已提交QAD); await _exChangeCenterDbContext.SaveChangesAsync().ConfigureAwait(false); - await _settleAccountDbContext.SaveChangesAsync().ConfigureAwait(false); + + var retryPolicyAsync = Policy.Handle().WaitAndRetryAsync(new[] { + TimeSpan.FromSeconds(1), + TimeSpan.FromSeconds(5), + TimeSpan.FromSeconds(5), + TimeSpan.FromSeconds(5) + }, (exception, timeSpan, retryCount, context) => + { + Console.WriteLine($"执行失败,第 {retryCount} 次重试"); + }); + await retryPolicyAsync.ExecuteAsync(async () => await _settleAccountDbContext.SaveChangesAsync().ConfigureAwait(false)).ConfigureAwait(false); } await Task.CompletedTask.ConfigureAwait(false); @@ -355,13 +366,13 @@ namespace Win.Sfs.SettleAccount.Entities.BQ INVOICE_GRP_DETAIL_DTO entity = new INVOICE_GRP_DETAIL_DTO(); var condition = input.Filters.FirstOrDefault(p => p.Column == "invbillNum"); - if( condition==null ) - { - input.Filters.Add(new FilterCondition("InvoiceState", "1", EnumFilterAction.Equal, EnumFilterLogic.And)); + if (condition == null) + { + input.Filters.Add(new FilterCondition("InvoiceState", "1", EnumFilterAction.Equal, EnumFilterLogic.And)); } var invs = await _repository.GetListByFilterAsync(input.Filters, input.Sorting, int.MaxValue, input.SkipCount).ConfigureAwait(false); - + var m = await _mRepository.GetListByFilterAsync(input.Filters, input.Sorting, int.MaxValue, input.SkipCount).ConfigureAwait(false); var mdtos = ObjectMapper.Map, List>(m); @@ -617,7 +628,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ } - + diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_SA_SERVICE.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_SA_SERVICE.cs index 2a6a2bfe..c641c170 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_SA_SERVICE.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/PUB_SA_SERVICE.cs @@ -135,7 +135,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ version = pubSaImportRequestDto.Version; businessType = pubSaImportRequestDto.BusinessType; site = pubSaImportRequestDto.Site; - switch (pubSaImportRequestDto.BusinessType) + switch (businessType) { case EnumBusinessType.ZhiGongJianBBAC: result = await ImportZhiGongJianBBACAsync(pubSaImportRequestDto.Files).ConfigureAwait(false); @@ -301,7 +301,29 @@ namespace Win.Sfs.SettleAccount.Entities.BQ importPubSaDetails = HandleSaDetails(importPubSaDetails); #region 数据校验 - var checkList = await CheckAsync(importPubSaDetails).ConfigureAwait(false); + var place = importPubSaDetails.FirstOrDefault().Place; + if (place != "CN1" && place != "CN5") + { + return new JsonResult(new { Code = 400, Message = $"目标库位值【{place}】无效" }); + } + //数据校验 + var checkList = new List(); + //结算分组号 + var pubSaGroupNums = importPubSaDetails.Select(t => t.GroupNum).Distinct(); + //已存在的结算分组号 + var havPubSaGroupNums = (await _pubSaDetailRepository.GetListAsync(t => t.Place == place && pubSaGroupNums.Contains(t.GroupNum)).ConfigureAwait(false)).Select(t => t.GroupNum).Distinct(); + if (havPubSaGroupNums.Any() == true) + { + foreach (var item in havPubSaGroupNums) + { + checkList.Add(new ErrorExportDto(string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, $"结算分组号{item}已存在", string.Empty)); + } + } + + if (!checkList.Any()) + { + checkList.AddRange(await CheckMaterialRelationshipAsync(importPubSaDetails).ConfigureAwait(false)); + } if (checkList.Count > 0) { string fileName = await ExportErrorReportAsync(checkList).ConfigureAwait(false); @@ -404,23 +426,40 @@ namespace Win.Sfs.SettleAccount.Entities.BQ if (!checkList.Any()) { //验证客户对应厂内零件号是否存在 - //导入的零件号集合 - var importPubSaLUs = pubSaDetails.Select(t => t.LU).Distinct(); - var materialRelationshipEntitys = await _materialRelationshipRepository.GetListAsync(t => t.BusinessType == businessType && importPubSaLUs.Contains(t.SettleMaterialCode)).ConfigureAwait(false); - var materialRelationshipEntitySettleMaterialCodes = materialRelationshipEntitys.Select(t => t.SettleMaterialCode).Distinct(); - - //不存在的客户零件号(差集) - var noExistSettleMaterialCodes = importPubSaLUs.Except(materialRelationshipEntitySettleMaterialCodes); - noExistSettleMaterialCodes.ForEach(t => - { - checkList.Add(new ErrorExportDto(string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, $"客户零件号【{t}】对应厂内零件号系统中不存在", string.Empty)); - }); + checkList.AddRange(await CheckMaterialRelationshipAsync(pubSaDetails).ConfigureAwait(false)); } return checkList; #endregion } + /// + /// 数据校验 + /// + /// + /// 验证客户-厂内零件号关系是否已存在 + /// + private async Task> CheckMaterialRelationshipAsync(List pubSaDetails) + { + #region 数据校验 + //数据校验 + var checkList = new List(); + //验证客户对应厂内零件号是否存在 + //导入的零件号集合 + var importPubSaLUs = pubSaDetails.Select(t => t.LU).Distinct(); + var materialRelationshipEntitys = await _materialRelationshipRepository.GetListAsync(t => t.BusinessType == businessType && importPubSaLUs.Contains(t.SettleMaterialCode)).ConfigureAwait(false); + var materialRelationshipEntitySettleMaterialCodes = materialRelationshipEntitys.Select(t => t.SettleMaterialCode).Distinct(); + + //不存在的客户零件号(差集) + var noExistSettleMaterialCodes = importPubSaLUs.Except(materialRelationshipEntitySettleMaterialCodes); + noExistSettleMaterialCodes.ForEach(t => + { + checkList.Add(new ErrorExportDto(string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, $"客户零件号【{t}】对应厂内零件号系统中不存在", string.Empty)); + }); + return checkList; + #endregion + } + /// /// 处理结算数据 /// From 8771833d5216c64b476515923432ded9d84df9be Mon Sep 17 00:00:00 2001 From: mahao Date: Tue, 26 Sep 2023 11:14:44 +0800 Subject: [PATCH 2/2] =?UTF-8?q?[CI=20SKIP]=20=E5=B7=B2=E6=89=A3=E5=87=8F?= =?UTF-8?q?=E5=8F=91=E7=A5=A8=E6=8F=90=E4=BA=A4=E5=88=B0QAD=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=B7=BB=E5=8A=A0=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Entities/BQ/INVOICE_SERVICE.cs | 24 +++++-------------- 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/INVOICE_SERVICE.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/INVOICE_SERVICE.cs index e783a4e1..6e2abfac 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/INVOICE_SERVICE.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/INVOICE_SERVICE.cs @@ -118,12 +118,12 @@ namespace Win.Sfs.SettleAccount.Entities.BQ /// 提交到QAD /// /// - /// 已扣减发票提交到QAD - /// 查询状态为已扣减的数据 - /// 判断ParentInvbillNum是否有数据 - /// 有数据查询出对应发票数据状态为已提交QAD(置换成负数据)需要提交到QAD - /// 已扣减的数据提交到QAD - /// 成功提交后修改状态为已提交QAD + /// * 已扣减发票提交到QAD + /// * 查询状态为已扣减的数据 + /// * 判断ParentInvbillNum是否有数据 + /// * 有数据查询出对应发票数据状态为已提交QAD(置换成负数据)需要提交到QAD + /// * 已扣减的数据提交到QAD + /// * 成功提交后修改状态为已提交QAD /// [HttpPost] public virtual async Task SubmitToQad(List invbillNums) @@ -587,11 +587,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ .GroupBy(p => new { p.LU, p.SettleGroupNum }) .Select(p => new JIT_UNSETTLED_DETAIL_DTO { LU = p.Key.LU, GroupNum = p.Key.SettleGroupNum, Qty = p.Sum(itm => itm.Qty.Value) }); entity.JIT_UNSETTLED_DETAIL = unsettledList.ToList().OrderBy(p => p.GroupNum).ThenBy(p => p.LU).ToList(); - - entity.INVOICE_MAP_GROUP =mdtos; - - - } if (first.BusinessType == EnumBusinessType.JisHBPO || first.BusinessType == EnumBusinessType.JisBBAC || first.BusinessType == EnumBusinessType.ZhiGongJianHBPO) { @@ -755,13 +750,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ { _excel.Append(jitunsettle, "未结零件汇总"); } - if (m != null) - { - _excel.Append(m, "发票结算分组对应"); - } - - - } //jis业务,发票分组对应关系,未结数据,调整数据 if (first.BusinessType == EnumBusinessType.JisBBAC || first.BusinessType == EnumBusinessType.JisHBPO || first.BusinessType == EnumBusinessType.ZhiGongJianHBPO)