From 312a1d1f6c53cfa789181b1c9c5fa74e4167f57d Mon Sep 17 00:00:00 2001
From: cnf <3200815559@qq.com>
Date: 星期五, 15 八月 2025 15:40:58 +0800
Subject: [PATCH] Merge branch 'master' of http://git.gs-mes.com:8080/r/~kyy/LW_MesService

---
 WebApi/GS.QC/Service/MesQaMjManager.cs |   86 +++++++++++++++++++++++++++++++++++++++---
 1 files changed, 79 insertions(+), 7 deletions(-)

diff --git a/WebApi/GS.QC/Service/MesQaMjManager.cs b/WebApi/GS.QC/Service/MesQaMjManager.cs
index 2de656b..2449da8 100644
--- a/WebApi/GS.QC/Service/MesQaMjManager.cs
+++ b/WebApi/GS.QC/Service/MesQaMjManager.cs
@@ -127,13 +127,25 @@
         }
         try
         {
-            //闃插憜鏄笉鏄睘浜庡悓涓�缁勭粐
-            string supOrg = "", itemOrg = "";
-            supOrg = Gs.Toolbox.DbHelperSQL.GetSingle("select top 1 FSubsidiary from MES_SUPPLIER a where a.id="+model.SuppId.ToString()).ToString();
-            itemOrg = Gs.Toolbox.DbHelperSQL.GetSingle("select top 1 FSubsidiary from MES_ITEMS a where a.id=" + model.ItemId.ToString()).ToString();
-            if (supOrg != itemOrg) {
-                return ReturnDto<string>.QuickReturn("",
-              ReturnCode.Default, "渚涘簲鍟嗗拰鐗╂枡涓嶅湪鍚屼竴缁勭粐涓嬶紝璇烽噸鏂伴�夋嫨锛�");
+            // ===== 鏂板锛氱畝鍖栫殑鍏嶆缁存姢鏍¢獙閫昏緫 =====
+            var validationResult = ValidateItemMaintenance(model);
+            if (!validationResult.IsSuccess)
+            {
+                return ReturnDto<string>.QuickReturn("", ReturnCode.Default, validationResult.Message);
+            }
+
+            // ===== 淇敼锛氱粍缁囦竴鑷存�ф牎楠岋紙浠呭湪鏈変緵搴斿晢鏃惰繘琛岋級 =====
+            // 褰撴病鏈夌淮鎶や緵搴斿晢鏃讹紙鍏ㄥ厤妫�锛夛紝璺宠繃缁勭粐鏍¢獙
+            if (!string.IsNullOrEmpty(model.SuppId))
+            {
+                string supOrg = "", itemOrg = "";
+                supOrg = Gs.Toolbox.DbHelperSQL.GetSingle("select top 1 FSubsidiary from MES_SUPPLIER a where a.id=" + model.SuppId.ToString()).ToString();
+                itemOrg = Gs.Toolbox.DbHelperSQL.GetSingle("select top 1 FSubsidiary from MES_ITEMS a where a.id=" + model.ItemId.ToString()).ToString();
+                if (supOrg != itemOrg)
+                {
+                    return ReturnDto<string>.QuickReturn("",
+                  ReturnCode.Default, "渚涘簲鍟嗗拰鐗╂枡涓嶅湪鍚屼竴缁勭粐涓嬶紝璇烽噸鏂伴�夋嫨锛�");
+                }
             }
             Db.Ado.BeginTran();
             if (!UtilityHelper.CheckGuid(model.Guid))
@@ -224,4 +236,64 @@
             .Count();
         return cont;
     }
+
+    /// <summary>
+    /// ===== 鏂板鏂规硶锛氱畝鍖栫殑鍏嶆缁存姢鏍¢獙閫昏緫 =====
+    /// 涓氬姟瑙勫垯锛堜簰鏂ュ師鍒欙級锛�
+    /// 1. 鍏ㄥ厤妫�妯″紡锛氱墿鏂欎笉缁存姢渚涘簲鍟嗭紙SuppId涓虹┖锛夛紝琛ㄧず瀵规墍鏈変緵搴斿晢鍏嶆
+    /// 2. 鎸囧畾鍏嶆妯″紡锛氱墿鏂欑淮鎶ょ壒瀹氫緵搴斿晢锛岃〃绀轰粎瀵规寚瀹氫緵搴斿晢鍏嶆
+    /// 3. 涓ょ妯″紡涓嶈兘鍏卞瓨锛屼竴鏃﹂�夋嫨浜嗕竴绉嶆ā寮忥紝灏变笉鑳藉垏鎹㈠埌鍙︿竴绉嶆ā寮�
+    /// 4. 鍚岀墿鏂�+鍚屼緵搴斿晢鐨勮褰曚笉鍏佽閲嶅
+    /// </summary>
+    /// <param name="model">瑕佷繚瀛樼殑鍏嶆璁板綍</param>
+    /// <returns>鏍¢獙缁撴灉</returns>
+    private (bool IsSuccess, string Message) ValidateItemMaintenance(MesQaMj model)
+    {
+        // 鏌ヨ褰撳墠鐗╂枡鐨勬墍鏈夊厤妫�璁板綍
+        var query = Db.Queryable<MesQaMj>()
+            .Where(x => x.ItemId == model.ItemId);
+
+        // 濡傛灉鏄紪杈戞搷浣滐紝鎺掗櫎褰撳墠璁板綍閬垮厤璇垽
+        if (UtilityHelper.CheckGuid(model.Guid))
+        {
+            query = query.Where(x => x.Guid != model.Guid);
+        }
+
+        var existingRecords = query.ToList();
+        bool isCurrentGlobalMode = string.IsNullOrEmpty(model.SuppId); // 褰撳墠瑕佷繚瀛樼殑鏄惁涓哄叏鍏嶆妯″紡
+
+        // 妫�鏌ョ幇鏈夎褰曠殑妯″紡
+        var hasGlobalRecord = existingRecords.Any(x => string.IsNullOrEmpty(x.SuppId));      // 鏄惁宸叉湁鍏ㄥ厤妫�璁板綍
+        var hasSpecificRecord = existingRecords.Any(x => !string.IsNullOrEmpty(x.SuppId));  // 鏄惁宸叉湁鎸囧畾渚涘簲鍟嗗厤妫�璁板綍
+
+        if (isCurrentGlobalMode)
+        {
+            // 瑕佷繚瀛樺叏鍏嶆妯″紡
+            if (hasGlobalRecord)
+            {
+                return (false, "璇ョ墿鏂欏凡瀛樺湪鍏ㄥ厤妫�璁板綍锛屼笉鑳介噸澶嶆坊鍔狅紒");
+            }
+            if (hasSpecificRecord)
+            {
+                return (false, "璇ョ墿鏂欏凡缁存姢浜嗘寚瀹氫緵搴斿晢鍏嶆锛屼笉鑳藉啀璁剧疆鍏ㄥ厤妫�妯″紡锛佽缁х画缁存姢鍏蜂綋渚涘簲鍟嗐��");
+            }
+        }
+        else
+        {
+            // 瑕佷繚瀛樻寚瀹氫緵搴斿晢鍏嶆妯″紡
+            if (hasGlobalRecord)
+            {
+                return (false, "璇ョ墿鏂欏凡璁剧疆涓哄叏鍏嶆妯″紡锛屼笉鑳藉啀娣诲姞鎸囧畾渚涘簲鍟嗗厤妫�璁板綍锛�");
+            }
+            
+            // 妫�鏌ユ槸鍚︿笌鐜版湁鐨勬寚瀹氫緵搴斿晢璁板綍閲嶅
+            var hasDuplicateSupplier = existingRecords.Any(x => x.SuppId == model.SuppId);
+            if (hasDuplicateSupplier)
+            {
+                return (false, "璇ョ墿鏂欎笌璇ヤ緵搴斿晢鐨勫厤妫�璁板綍宸插瓨鍦紝涓嶈兘閲嶅娣诲姞锛�");
+            }
+        }
+
+        return (true, ""); // 鏍¢獙閫氳繃
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3