| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 | 
							- using Microsoft.AspNetCore.SignalR;
 
- using OASystem.API.OAMethodLib.Hub.HubClients;
 
- using OASystem.API.OAMethodLib.Hub.Hubs;
 
- using OASystem.API.OAMethodLib.SignalR.Hubs;
 
- using OASystem.Domain.Entities.Groups;
 
- using OASystem.Domain.Entities.PersonnelModule;
 
- using OASystem.Infrastructure.Repositories.PersonnelModule;
 
- using ILogger = Microsoft.Extensions.Logging.ILogger;
 
- namespace OASystem.API.OAMethodLib.Quartz.Business
 
- {
 
-     public static class TaskNotification
 
-     {
 
-         private readonly static ILogger _logger;
 
-         private readonly static TaskAllocationRepository _taskAllocationRep = AutofacIocManager.Instance.GetService<TaskAllocationRepository>();
 
-         private readonly static IHubContext<ChatHub, IChatClient> _hubContext = AutofacIocManager.Instance.GetService<IHubContext<ChatHub, IChatClient>>();
 
-         /// <summary>
 
-         /// 任务通知
 
-         /// </summary>
 
-         public static async void PostTaskMessageNotification() 
 
-         {
 
-             //_logger.LogInformation("调用任务消息推送 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "【在线人数】:" + JsonConvert.SerializeObject(UserStore.OnlineUser));
 
-             //在此处编写任务业务代码
 
-             #region 消息处理
 
-             var newDB = _taskAllocationRep._sqlSugar.CopyNew();
 
-             var data = newDB
 
-                                          .Queryable<Pm_TaskAllocation>()
 
-                                          .Where(it => it.IsDel == 0 &&
 
-                                                       !string.IsNullOrEmpty(it.PredictEndTime) &&
 
-                                                       Convert.ToDateTime(it.PredictEndTime).ToString("yyyy-MM-dd").Equals(DateTime.Now.ToString("yyyy-MM-dd"))
 
-                                                )
 
-                                          .ToList();
 
-             if (data.Count > 0)
 
-             {
 
-                 //处理要任务提醒的员工
 
-                 List<int> primaryIds = new List<int>();
 
-                 primaryIds = data.Select(it => it.Id).ToList();
 
-                 var subData = newDB
 
-                                                 .Queryable<Pm_TaskRelevanceUser>()
 
-                                                 .Where(it => it.IsDel == 0 &&
 
-                                                              primaryIds.Contains(it.TAId) &&
 
-                                                              (int)it.TaskStatus <= (int)TaskEnum.UnderWay
 
-                                                       )
 
-                                                 .ToList();
 
-                 var depDatas = newDB.Queryable<Sys_Department>().Where(it => it.IsDel == 0).ToList();
 
-                 var groupDatas = newDB.Queryable<Grp_DelegationInfo>().Where(it => it.IsDel == 0).ToList();
 
-                 var userDatas = newDB.Queryable<Sys_Users>().Where(it => it.IsDel == 0).ToList();
 
-                 List<int> userIds = new List<int>();
 
-                 newDB.BeginTran();
 
-                 foreach (var item in data)
 
-                 {
 
-                     string depName = string.Empty;
 
-                     string groupName = string.Empty;
 
-                     var depData = depDatas.Where(it => it.Id == item.DepId).FirstOrDefault();
 
-                     if (depData != null) { depName = depData.DepName; }
 
-                     if (item.DiId == -1) { groupName = "其他"; }
 
-                     else
 
-                     {
 
-                         var groupData = groupDatas.Where(it => it.Id == item.DiId).FirstOrDefault();
 
-                         if (groupData != null) { groupName = groupData.TeamName; }
 
-                     }
 
-                     var subData1 = subData.Where(it => it.TAId == item.Id).ToList();
 
-                     foreach (var subItem in subData1)
 
-                     {
 
-                         string realityStartTime = string.Empty;
 
-                         string userName = string.Empty;
 
-                         if (!string.IsNullOrEmpty(subItem.BeginTime))
 
-                         {
 
-                             realityStartTime = subItem.BeginTime;
 
-                         }
 
-                         else
 
-                         {
 
-                             if (subItem.TaskStatus == TaskerEnum.NotStarted) realityStartTime = "未开始";
 
-                             else if (subItem.TaskStatus == TaskerEnum.HaveKnown) realityStartTime = "已知晓";
 
-                         }
 
-                         var userData = userDatas.Where(it => it.Id == subItem.UserId).FirstOrDefault();
 
-                         if (userData != null) { userName = userData.CnName; }
 
-                         string msgContent = string.Format(@$"归属团组:{groupName}<br/>
 
-                                                             任务参与者:{userName}");
 
-                         Sys_Message _Message = new Sys_Message()
 
-                         {
 
-                             Type = MessageTypeEnum.TaskProgressUpdate,
 
-                             Title = item.TaskName,
 
-                             IssuerId = 4, //管理员
 
-                             Content = msgContent,
 
-                             ReleaseTime = DateTime.Now,
 
-                             CreateUserId = 4,
 
-                             CreateTime = DateTime.Now,
 
-                             DeleteTime = "1990-01-01 00:00:00.000",
 
-                             DiId = item.DiId,
 
-                         };
 
-                         var msgAddId = newDB.Insertable(_Message).ExecuteReturnIdentity();
 
-                         if (msgAddId < 0)
 
-                         {
 
-                             newDB.RollbackTran();
 
-                             _logger.LogError("任务通知消息推送失败!");
 
-                             return;
 
-                         }
 
-                         Sys_MessageReadAuth _MessageReadAuth = new Sys_MessageReadAuth()
 
-                         {
 
-                             MsgId = msgAddId,
 
-                             ReadableUId = subItem.UserId,
 
-                             IsRead = 0,
 
-                             ReadTime = Convert.ToDateTime("1990-01-01 00:00:00.000"),
 
-                             CreateUserId = 4,
 
-                             CreateTime = DateTime.Now,
 
-                             DeleteTime = "1990-01-01 00:00:00.000"
 
-                         };
 
-                         var msgAuthAddId = newDB.Insertable(_MessageReadAuth).ExecuteReturnIdentity();
 
-                         if (msgAuthAddId < 0)
 
-                         {
 
-                             _taskAllocationRep._sqlSugar.RollbackTran();
 
-                             _logger.LogError("任务通知消息推送失败!");
 
-                             return;
 
-                         }
 
-                         userIds.Add(subItem.UserId);
 
-                     }
 
-                 }
 
-                 newDB.CommitTran();
 
-                 //推送消息
 
-                await _hubContext.Clients.Clients(UserStore.OnlineUser.Where(it => userIds.Contains(it.UserId)).Select(it => it.ConnectionId).ToList()).ReceiveMessage("您有新的任务相关消息");
 
-                 _logger.LogInformation("任务消息推送成功 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "【在线人数】:" + JsonConvert.SerializeObject(UserStore.OnlineUser));
 
-             }
 
-             #endregion
 
-         }
 
-     }
 
- }
 
 
  |