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