From 68f104b36c255e40114088b66439136c9d4d396a Mon Sep 17 00:00:00 2001
From: chenhaozhe <cgz@hz-kingdee.com>
Date: 星期五, 13 三月 2026 13:44:18 +0800
Subject: [PATCH] 消息推送 解决 重复发送消息的问题
---
WebAPI/Service/GeTuiService.cs | 90 +++++++++++++++++++++++++++++----------------
1 files changed, 58 insertions(+), 32 deletions(-)
diff --git a/WebAPI/Service/GeTuiService.cs b/WebAPI/Service/GeTuiService.cs
index 4dab471..5a3a75d 100644
--- a/WebAPI/Service/GeTuiService.cs
+++ b/WebAPI/Service/GeTuiService.cs
@@ -42,9 +42,22 @@
{
JObject NameMsgKVP = new JObject();
ds = oCN.RunProcReturn($@"
- select * from h_v_OA_WorkLinkBillAllList where hmainid = {HInterID}
+ select
+ CASE WHEN a.HBillStatus <= 1 THEN '鍒涘缓' WHEN a.HBillStatus = 2 THEN '宸插鏍�' WHEN a.HBillStatus = 3 THEN '宸插叧闂�'
+ WHEN a.HBillStatus = 4 THEN '宸蹭綔搴�' WHEN a.HBillStatus = 9 THEN '宸插畬鎴�' ELSE '' END AS 鍗曟嵁鐘舵��,
+ a.HBillNo AS 鍗曟嵁鍙�, a.HBillType AS 鍗曟嵁绫诲瀷, CONVERT(varchar(10), a.HDate, 120) AS 鏃ユ湡, a.HRemark AS 琛ㄥご澶囨敞,
+ a.HDeptID,
+ a.HSendMan AS 鍙戦�佷汉, a.HReceiveMan AS 鎺ユ敹浜�,
+ a.HCopyMan AS 鎵�鏈夋妱閫佷汉, a.HHasten AS 鍌績娆℃暟, a.HLevel AS 绱ф�ョ▼搴�,
+ a.HContext AS 涓婚, a.HDescription AS 鍐呭, a.HSendType AS 鍙戦�佺被鍨�, a.HEvaluateStatusID,
+ a.HCommDate AS 寤鸿瀹屾垚鏃ユ湡,
+ a.HRelationInterID AS 鍏宠仈鍗曟嵁鍐呯爜, a.HRelationEntryID AS 鍏宠仈鍗曟嵁瀛愬唴鐮�, a.HRelationBillType AS 鍏宠仈鍗曟嵁绫诲瀷,
+ a.HRelationBillNo AS 鍏宠仈鍗曟嵁鍙�, a.HMaker AS 鍒跺崟浜�, a.HMakeDate AS 鍒跺崟鏃ユ湡, a.HChecker AS 瀹℃牳浜�,
+ a.HCheckDate AS 瀹℃牳鏃ユ湡, a.HUpDater AS 淇敼浜�, a.HUpDateDate AS 淇敼鏃ユ湡, a.HCloseMan AS 鍏抽棴浜�,
+ a.HCloseDate AS 鍏抽棴鏃ユ湡, a.HDeleteMan AS 浣滃簾浜�, a.HDeleteDate AS 浣滃簾鏃ユ湡, a.HBillType
+ from OA_WorkLinkBillMain a where HInterID = {HInterID}
select * from Gy_UserClientIdRelation
- ", "h_v_OA_WorkLinkBillAllList");
+ ", "OA_WorkLinkBillMain");
NotificationTemplate template = null;
ConcurrentDictionary<string, List<string>> userClientIDDictionary = new ConcurrentDictionary<string, List<string>>();
// 灏嗙敤鎴疯澶囧叧鑱旇〃 鏀堕泦涓� Map
@@ -76,26 +89,36 @@
{
if (oSystemParameter.omodel.WMS_CampanyName == "鍗庤垷")
{
- // 鎺ㄩ�佺粰鎺ユ敹浜� 鍜� 鎶勯�佷汉
- foreach (DataRow row in ds.Tables[0].Rows)
- {
- List<string> clientIDList = new List<string>();
- if (userClientIDDictionary.ContainsKey(row["鎺ユ敹浜�"].ToString()))
- {
- clientIDList = userClientIDDictionary[row["鎺ユ敹浜�"].ToString()];
- }
- else if (userClientIDDictionary.ContainsKey(row["鎶勯�佹帴鏀朵汉"].ToString()))
- {
- clientIDList = userClientIDDictionary[row["鎶勯�佹帴鏀朵汉"].ToString()];
- }
+ // 鑾峰彇鎺ユ敹浜哄拰鎶勯�佷汉鏁扮粍
+ string HReceiveMan = ds.Tables[0].Rows[0]["鎺ユ敹浜�"].ToString();
+ string[] HCopyManList = ds.Tables[0].Rows[0]["鎶勯�佷汉"].ToString().Split(',');
+ // 鎺ㄩ�佺粰鎺ユ敹浜� 鍜� 鎶勯�佷汉
+ List<string> clientIDList = new List<string>();
+ if (userClientIDDictionary.ContainsKey(HReceiveMan))
+ {
+ clientIDList.AddRange(userClientIDDictionary[HReceiveMan]);
+ }
- foreach(string clientID in clientIDList)
+ foreach(string HCopyMan in HCopyManList)
+ {
+ // 鎺ユ敹浜� 鍜� 鎶勯�佷汉鐩稿悓鏃�, 涓嶉噸澶嶅彂閫�
+ if(HCopyMan == HReceiveMan)
{
- pushSuccess = PushMessageToSingle(template, clientID);
-
+ continue;
}
- }
+ if (userClientIDDictionary.ContainsKey(HCopyMan))
+ {
+ clientIDList.AddRange(userClientIDDictionary[HCopyMan]);
+ }
+ }
+
+ foreach(string clientID in clientIDList)
+ {
+ pushSuccess = PushMessageToSingle(template, clientID);
+
+ }
+
}
else
{
@@ -108,26 +131,29 @@
}
}else // 鍗曠嫭鎺ㄩ��
{
+ // 鑾峰彇鎺ユ敹浜哄拰鎶勯�佷汉鏁扮粍
+ string HReceiveMan = ds.Tables[0].Rows[0]["鎺ユ敹浜�"].ToString();
+ string[] HCopyManList = ds.Tables[0].Rows[0]["鎶勯�佷汉"].ToString().Split(',');
// 鎺ㄩ�佺粰鎺ユ敹浜� 鍜� 鎶勯�佷汉
- foreach (DataRow row in ds.Tables[0].Rows)
+
+ List<string> clientIDList = new List<string>();
+ if (userClientIDDictionary.ContainsKey(HReceiveMan))
{
- List<string> clientIDList = new List<string>();
- if (userClientIDDictionary.ContainsKey(row["鎺ユ敹浜�"].ToString()))
+ clientIDList.AddRange(userClientIDDictionary[HReceiveMan]);
+ }
+
+ foreach (string HCopyMan in HCopyManList)
+ {
+ if (userClientIDDictionary.ContainsKey(HCopyMan))
{
- clientIDList = userClientIDDictionary[row["鎺ユ敹浜�"].ToString()];
+ clientIDList.AddRange(userClientIDDictionary[HCopyMan]);
}
- else if (userClientIDDictionary.ContainsKey(row["鎶勯�佹帴鏀朵汉"].ToString()))
+ }
- {
- clientIDList = userClientIDDictionary[row["鎶勯�佹帴鏀朵汉"].ToString()];
- }
+ foreach (string clientID in clientIDList)
+ {
+ pushSuccess = PushMessageToSingle(template, clientID);
-
- foreach (string clientID in clientIDList)
- {
- pushSuccess = PushMessageToSingle(template, clientID);
-
- }
}
}
--
Gitblit v1.9.1