From 1e1b8c262ebe02e82f93c4344f9feb9624f77b52 Mon Sep 17 00:00:00 2001 From: zyf <1071160500@qq.com> Date: 星期二, 17 六月 2025 19:17:10 +0800 Subject: [PATCH] BOM接口优化逻辑 --- MES.Service/service/BOM/MesBomMasterManager.cs | 93 +++++++++++++++++++++++++++++++++++----------- 1 files changed, 70 insertions(+), 23 deletions(-) diff --git a/MES.Service/service/BOM/MesBomMasterManager.cs b/MES.Service/service/BOM/MesBomMasterManager.cs index 063d26d..cfa4cea 100644 --- a/MES.Service/service/BOM/MesBomMasterManager.cs +++ b/MES.Service/service/BOM/MesBomMasterManager.cs @@ -46,47 +46,94 @@ private bool UpdateData(SqlSugarScope db, MesBomMaster mesMesBom, List<MesBomDetail1> mesMesBomDatas1, List<MesBomDetail2> mesMesBomDatas2) { - var decimals1 = mesMesBomDatas1.Select(s => s.Erpid).ToArray(); - var decimals2 = mesMesBomDatas2.Select(s => s.Erpid).ToArray(); - var update = base.DeleteById(mesMesBom.Erpid); - var insertOrUpdate1 = db - .Deleteable<MesBomDetail1>().In(decimals1) - .ExecuteCommand() > 0; - var insertOrUpdate2 = db - .Deleteable<MesBomDetail2>().In(decimals2) - .ExecuteCommand() > 0; + + //鍒犻櫎鐩稿悓ERPID鐩稿悓BOM鏇存柊绫诲瀷鐨勫崟鎹� + var query = db.Queryable<MesBomMaster>() + .Where(s => s.Erpid == mesMesBom.Erpid); - if (update && insertOrUpdate1 && insertOrUpdate2) return true; - throw new NotImplementedException("鏇存柊澶辫触"); + if (mesMesBom.BomUpdateType != "1") + { + if (string.IsNullOrEmpty(mesMesBom.BomUpdateType)) + { + query = query.Where(s => string.IsNullOrEmpty(s.BomUpdateType)); + } + else + { + query = query.Where(s => s.BomUpdateType == mesMesBom.BomUpdateType); + } + + decimal? ID = query.Select(s => s.Id).First(); + + var update = base.DeleteById(ID); + + var insertOrUpdate1 = db.Deleteable<MesBomDetail1>() + .Where(s => s.Mid == ID) + .ExecuteCommand() > 0; + + var insertOrUpdate2 = true; + + if (mesMesBomDatas2.Count > 0) + { + insertOrUpdate2 = db.Deleteable<MesBomDetail2>() + .Where(s => s.Mid == ID) + .ExecuteCommand() > 0; ; + // deleted 涓� true 琛ㄧず鏈夎褰曡鍒犻櫎 + } + + if (update && insertOrUpdate1 && insertOrUpdate2) return true; + throw new NotImplementedException("鏇存柊澶辫触"); + } + return true; } // 鎻掑叆鎴栨洿鏂版暟鎹殑鏂规硶 private bool SaveOrUpdateData(SqlSugarScope db, MesBomMaster mesMesBom, List<MesBomDetail1> mesMesBomDatas1, List<MesBomDetail2> mesMesBomDatas2, string type) { - if (mesMesBom.Erpid != null) base.DeleteById(mesMesBom.Erpid); + //鐩稿悓ERPID涓嶅悓BOM鏇存柊绫诲瀷鐨勫崟鎹繚鐣� + var query = db.Queryable<MesBomMaster>() + .Where(s => s.Erpid == mesMesBom.Erpid); - if (mesMesBomDatas1.Count > 0) - db.Deleteable<MesBomDetail1>() - .Where(s => s.Erphid == mesMesBom.Erpid).ExecuteCommand(); + if (string.IsNullOrEmpty(mesMesBom.BomUpdateType)) + { + query = query.Where(s => string.IsNullOrEmpty(s.BomUpdateType)); + } + else + { + query = query.Where(s => s.BomUpdateType == mesMesBom.BomUpdateType); + } - if (mesMesBomDatas2.Count > 0) - db.Deleteable<MesBomDetail2>() - .Where(s => s.Erphid == mesMesBom.Erpid).ExecuteCommand(); + decimal? ID = query.Select(s => s.Id).First(); + + if (ID != null) + { + if (mesMesBom.Erpid != null) + db.Deleteable<MesBomMaster>() + .Where(s => s.Id == ID) + .ExecuteCommand(); + + if (mesMesBomDatas1.Count > 0) + db.Deleteable<MesBomDetail1>() + .Where(s => s.Mid == ID).ExecuteCommand(); + + if (mesMesBomDatas2.Count > 0) + db.Deleteable<MesBomDetail2>() + .Where(s => s.Mid == ID).ExecuteCommand(); + } + //var orUpdate = base.Insert(mesMesBom); //var baOrUpdate = MesBomDetail1Manager.InsertRange(mesMesBomDatas1); //if (orUpdate && baOrUpdate) return true; - var update_res = UseTransaction(db => { - - db.Insertable(mesMesBom).ExecuteCommand(); + //鑾峰彇涓昏〃鎻掑叆鍚庣殑涓婚敭 + var insertedId = db.Insertable(mesMesBom).ExecuteReturnIdentity(); for (int i = 0; i < mesMesBomDatas1.Count; i++) { var item = mesMesBomDatas1[i]; - //item.PID = id; + item.Mid = insertedId; db.Insertable(item).IgnoreColumns(true).ExecuteCommand(); } @@ -94,7 +141,7 @@ for (int i = 0; i < mesMesBomDatas2.Count; i++) { var item = mesMesBomDatas2[i]; - //item.PID = id; + item.Mid = insertedId; db.Insertable(item).IgnoreColumns(true).ExecuteCommand(); } -- Gitblit v1.9.3