From 6bfe506aa0839b3108d28f0d4ea6e8a4e67a2dcb Mon Sep 17 00:00:00 2001 From: liuyunfeng Date: Fri, 14 Mar 2025 14:30:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E8=BD=A6=E5=9E=8B=E5=AF=BC=E5=85=A5BO?= =?UTF-8?q?M=E5=8E=BB=E6=8E=89=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AssemblyCfgs/AssemblyCfgErpAppService.cs | 62 ++++++++++--------- 1 file changed, 34 insertions(+), 28 deletions(-) diff --git a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgBaseData/AssemblyCfgs/AssemblyCfgErpAppService.cs b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgBaseData/AssemblyCfgs/AssemblyCfgErpAppService.cs index 5b7d382..ce62bcb 100644 --- a/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgBaseData/AssemblyCfgs/AssemblyCfgErpAppService.cs +++ b/src/Modules/新版JIT或JIS系统服务端/src/WY.NewJit.Application/MsgBaseData/AssemblyCfgs/AssemblyCfgErpAppService.cs @@ -752,18 +752,18 @@ SELECT top 1 v.Id #endregion #region 插入数据 - List assemblyCfgGroups = new List(); - List deleteAssemblyCfgGroups = new List(); - List assemblyCfgErps = new List(); + List addAssemblyGroupLst = new List(); //要添加的总成组列表 + List deleteAssemblyGroupLst = new List(); //要删除(禁用)的总成组列表 + List addErpAssemblyLst = new List(); //要添加的ERP总成列表 var groups = srcLst.GroupBy(r => new { r.SpecExplain, r.ColorExplain }).ToList(); foreach (var group in groups) { - var olditem= await _assemblyCfgGroupRepository.FirstOrDefaultAsync(r=>r.IsDisable==false&&r.SpecExplain== group.Key.SpecExplain.Trim()&& r.ColorExplain == group.Key.ColorExplain.Trim()); - if (olditem != null) + var oldAssemblyGroup= await _assemblyCfgGroupRepository.FirstOrDefaultAsync(r=>r.IsDisable==false && r.SpecExplain== group.Key.SpecExplain.Trim() && r.ColorExplain == group.Key.ColorExplain.Trim()); + if (oldAssemblyGroup != null) { - olditem.IsDisable = true; - deleteAssemblyCfgGroups.Add(olditem); + oldAssemblyGroup.IsDisable = true; + deleteAssemblyGroupLst.Add(oldAssemblyGroup); } string groupCode = group.Key.SpecExplain + group.Key.ColorExplain; AssemblyCfgGroup assemblyCfgGroup = new AssemblyCfgGroup(GuidGenerator.Create() , groupCode,"",true); @@ -781,15 +781,15 @@ SELECT top 1 v.Id assemblyCfgErp.GroupId = assemblyCfgGroup.Id; assemblyCfgErp.SpecExplain = item.SpecExplain.Trim(); assemblyCfgErp.ColorExplain = item.ColorExplain.Trim(); - assemblyCfgErps.Add(assemblyCfgErp); + addErpAssemblyLst.Add(assemblyCfgErp); } - assemblyCfgGroups.Add(assemblyCfgGroup); + addAssemblyGroupLst.Add(assemblyCfgGroup); } //插入“导入记录表” - await _assemblyCfgGroupRepository.UpdateManyAsync(deleteAssemblyCfgGroups);//更新总成组 - await _assemblyCfgGroupRepository.InsertManyAsync(assemblyCfgGroups); - await _assemblyCfgErpRepository.InsertManyAsync(assemblyCfgErps); + await _assemblyCfgGroupRepository.UpdateManyAsync(deleteAssemblyGroupLst);//更新总成组 + await _assemblyCfgGroupRepository.InsertManyAsync(addAssemblyGroupLst); + await _assemblyCfgErpRepository.InsertManyAsync(addErpAssemblyLst); #endregion ret.Status = true; return ret; @@ -815,7 +815,7 @@ SELECT top 1 v.Id if (!string.IsNullOrEmpty(error)) return error; - #region 验证分组是否符合分组规 + #region 验证分组是否符合分组规定:必须是4个门板 var checkGroups = srcLst.GroupBy(r => new { r.SpecExplain, r.ColorExplain }).Select(r => new { SpecExplain = r.Key.SpecExplain, ColorExplain = r.Key.ColorExplain, Count = r.Count() }); var errorgroups = checkGroups.Where(r => r.Count != 4).ToList(); @@ -827,9 +827,9 @@ SELECT top 1 v.Id #endregion - #region 验证零件是否存在(门板) + #region 验证零件(门板)在物料表是否存在 + - var partdists = srcLst.Select(r => r.MaterialNum).Distinct(); foreach (var sapMaterial in partdists) { @@ -856,7 +856,7 @@ SELECT top 1 v.Id string[] arr = new string[4] { "1001", "1002", "1003", "1004" }; string arrStr = string.Join(',', arr); - var qry = from item in srcLst + var bomGroupLst = from item in srcLst group item by new { item.SpecExplain, item.ColorExplain } into g select new { @@ -864,30 +864,36 @@ SELECT top 1 v.Id ColorExplain = g.Key.ColorExplain, Details = g.Select(itm => itm.MaterialNum).ToList() }; - foreach (var item in qry) + foreach (var bomGroup in bomGroupLst) { - if (item.Details.Count != 4) + if (bomGroup.Details.Count != 4) { - strBuild.AppendLine($"规格说明{item.SpecExplain}、颜色说明{item.ColorExplain}包含的物料号不是4个"); + strBuild.AppendLine($"规格说明{bomGroup.SpecExplain}、颜色说明{bomGroup.ColorExplain}包含的物料号不是4个"); } //遍历物料号 List strLst = new List(); - foreach (string sapMaterialNum in item.Details) + foreach (string sapMaterialNum in bomGroup.Details) //遍历4个门板物料号 { var materialObj = material3Lst.FirstOrDefault(itm => itm.MaterialNum == sapMaterialNum); if (materialObj == null) { - strBuild.AppendLine($"规格说明{item.SpecExplain}:物料号{sapMaterialNum}在物料表不存在!"); + strBuild.AppendLine($"规格说明{bomGroup.SpecExplain}:物料号{sapMaterialNum}在物料表不存在!"); } else { - if (arr.Contains(materialObj.MaterialType2) == true) - { - strLst.Add(materialObj.MaterialType2); - } - else + if (materialObj.MaterialDescription.HasValue() + && materialObj.MaterialDescription.Length >=4 + && materialObj.MaterialDescription.Substring(0,4).ToUpper() == "E001") { - strBuild.AppendLine($"规格说明{item.SpecExplain}:物料号{sapMaterialNum}的MaterialType2不是【{arrStr}】其中之一!"); + if (arr.Contains(materialObj.MaterialType2) == true) + { + strLst.Add(materialObj.MaterialType2); + } + else + { + strBuild.AppendLine($"规格说明{bomGroup.SpecExplain}:物料号{sapMaterialNum}的MaterialType2不是【{arrStr}】其中之一!"); + } + } } } @@ -896,7 +902,7 @@ SELECT top 1 v.Id if (strLst.Count != strLst.Distinct().Count()) { string repeatLst = string.Join(',', strLst); - strBuild.AppendLine($"规格说明{item.SpecExplain}包含的配置号重复{repeatLst}"); + strBuild.AppendLine($"规格说明{bomGroup.SpecExplain}包含的配置号重复{repeatLst}"); } } }