From af6cc8cb47ea9a5b52a730d7b7a6c54ee1b68c11 Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期三, 12 二月 2025 22:43:36 +0800
Subject: [PATCH] 11

---
 StandardPda/MES.Service/util/LinqThreadSafeExtensions.cs     |   23 +++++++++++++++++++++++
 StandardPda/MES.Service/service/BasicData/MesRohInManager.cs |    3 ++-
 2 files changed, 25 insertions(+), 1 deletions(-)

diff --git a/StandardPda/MES.Service/service/BasicData/MesRohInManager.cs b/StandardPda/MES.Service/service/BasicData/MesRohInManager.cs
index 67e8fab..4781880 100644
--- a/StandardPda/MES.Service/service/BasicData/MesRohInManager.cs
+++ b/StandardPda/MES.Service/service/BasicData/MesRohInManager.cs
@@ -1,6 +1,7 @@
 锘縰sing MES.Service.DB;
 using MES.Service.Dto.webApi;
 using MES.Service.Modes;
+using MES.Service.util;
 using SqlSugar;
 
 namespace MES.Service.service.BasicData;
@@ -152,7 +153,7 @@
     private List<MesRohInData> GetMesRohInDatas(
         List<ErpRohinData> erpRohinDatas, string type)
     {
-        return erpRohinDatas.Select(s =>
+        return erpRohinDatas.DistinctByConcurrent(x => x.id).Select(s =>
         {
             var entity = new MesRohInData
             {
diff --git a/StandardPda/MES.Service/util/LinqThreadSafeExtensions.cs b/StandardPda/MES.Service/util/LinqThreadSafeExtensions.cs
new file mode 100644
index 0000000..022bb36
--- /dev/null
+++ b/StandardPda/MES.Service/util/LinqThreadSafeExtensions.cs
@@ -0,0 +1,23 @@
+锘縰sing System.Collections.Concurrent;
+
+namespace MES.Service.util;
+
+public static class LinqThreadSafeExtensions
+{
+    // 绾跨▼瀹夊叏鐗堟湰锛堝熀浜嶤oncurrentDictionary锛�
+    public static Func<T, bool> DistinctByKey<T, TKey>(
+        Func<T, TKey> keySelector)
+    {
+        var seen = new ConcurrentDictionary<TKey, bool>();
+        return item => seen.TryAdd(keySelector(item), true);
+    }
+
+    // 鎵╁睍鏂规硶鐗堟湰锛堟帹鑽愶級
+    public static IEnumerable<T> DistinctByConcurrent<T, TKey>(
+        this IEnumerable<T> source,
+        Func<T, TKey> keySelector)
+    {
+        var seen = new ConcurrentDictionary<TKey, bool>();
+        return source.Where(item => seen.TryAdd(keySelector(item), true));
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3