| File was renamed from WebAPI/WebSocketServer.cs |
| | |
| | | JArray dataTableJArray = JArray.Parse(JsonConvert.SerializeObject(ds.Tables[0])); |
| | | foreach (JToken row in dataTableJArray) |
| | | { |
| | | // 提前获取并处理行数据(避免重复访问 row["列名"],且处理 null) |
| | | string receiver = row["接收人"]?.ToString() ?? string.Empty; // 为 null 时返回空字符串 |
| | | string ccUsers = row["所有抄送人"]?.ToString() ?? string.Empty; |
| | | string sendType = row["发送类型"]?.ToString() ?? string.Empty; |
| | | |
| | | // 跳过无效数据行(三列均为空时,无需处理) |
| | | // 跳过无效数据行 |
| | | if (string.IsNullOrEmpty(receiver) && string.IsNullOrEmpty(ccUsers) && string.IsNullOrEmpty(sendType)) |
| | | continue; |
| | | |
| | |
| | | { |
| | | // 封装 websocket 信息 |
| | | dictOne.Key.Send(new JObject{ |
| | | ["Type"]="Message", |
| | | ["Type"]="MessageNoRead", |
| | | ["Content"]= NameMsgKVP[dictOne.Value.ToString()].ToString() |
| | | }.ToString()); |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 单条数据推送公开语句 |
| | | public static void PushOne(int HInterID) |
| | | { |
| | | SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); |
| | | DataSet ds = new DataSet(); |
| | | try |
| | | { |
| | | JObject NameMsgKVP = new JObject(); |
| | | ds = oCN.RunProcReturn($"select * from h_v_OA_WorkLinkBillAllList where hmainid = {HInterID}", "h_v_OA_WorkLinkBillAllList"); |
| | | // 判断广播还是私发 ,统计数据 |
| | | JArray dataTableJArray = JArray.Parse(JsonConvert.SerializeObject(ds.Tables[0])); |
| | | foreach (JToken row in dataTableJArray) |
| | | { |
| | | string receiver = row["接收人"]?.ToString() ?? string.Empty; // 为 null 时返回空字符串 |
| | | string ccUsers = row["抄送接收人"]?.ToString() ?? string.Empty; |
| | | string sendType = row["发送类型"]?.ToString() ?? string.Empty; |
| | | |
| | | // 跳过无效数据行 |
| | | if (string.IsNullOrEmpty(receiver) && string.IsNullOrEmpty(ccUsers) && string.IsNullOrEmpty(sendType)) |
| | | continue; |
| | | |
| | | foreach (var dictOne in _NameConnectionDict) |
| | | { |
| | | string UName = dictOne.Value.Split('_')[1]; |
| | | // 将接收人 抄送人 获取 广播的消息添加到消息缓存 |
| | | if (string.Equals(row["接收人"].ToString(), UName) |
| | | || row["抄送接收人"].ToString().Contains(UName) |
| | | || string.Equals(row["发送类型"].ToString(), "公共")) |
| | | { |
| | | string dictOneVal = dictOne.Value.ToString(); |
| | | if (NameMsgKVP[dictOneVal] == null) |
| | | { |
| | | NameMsgKVP[dictOneVal] = new JArray(); |
| | | } |
| | | |
| | | var jArray = NameMsgKVP[dictOneVal] as JArray; |
| | | |
| | | jArray.Add(row); |
| | | } |
| | | } |
| | | } |
| | | // 根据用户ID分发到不同的客户端 |
| | | foreach (var dictOne in _NameConnectionDict) |
| | | { |
| | | if (NameMsgKVP[dictOne.Value.ToString()] != null) |
| | | { |
| | | // 封装 websocket 信息 |
| | | dictOne.Key.Send(new JObject |
| | | { |
| | | ["Type"] = "Message", |
| | | ["Content"] = NameMsgKVP[dictOne.Value.ToString()].ToString() |
| | | }.ToString()); |
| | | } |
| | | } |
| | | LogService.Write("消息推送完成..."); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogService.Write(ex.ToString()); |
| | | return; |
| | | } |
| | | } |
| | | } |
| | | } |