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