TaskNewsFeedJob.cs 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. using Microsoft.AspNetCore.SignalR;
  2. using OASystem.API.OAMethodLib.Hub.Hubs;
  3. using OASystem.API.OAMethodLib.Quartz.Business;
  4. using OASystem.Infrastructure.Repositories.PersonnelModule;
  5. using Quartz;
  6. namespace OASystem.API.OAMethodLib.Quartz.Jobs
  7. {
  8. /// <summary>
  9. /// 任务消息推送
  10. /// 每天下午两点推送
  11. /// </summary>
  12. public class TaskNewsFeedJob : IJob
  13. {
  14. private readonly ILogger<TaskNewsFeedJob> _logger;
  15. private readonly TaskAllocationRepository _taskAllocationRep = AutofacIocManager.Instance.GetService<TaskAllocationRepository>();
  16. public TaskNewsFeedJob(ILogger<TaskNewsFeedJob> logger, TaskAllocationRepository taskAllocationRep)
  17. {
  18. _logger = logger;
  19. _taskAllocationRep = taskAllocationRep;
  20. }
  21. /// <summary>
  22. /// 任务消息推送
  23. /// </summary>
  24. /// <param name="context"></param>
  25. /// <returns></returns>
  26. public async Task Execute(IJobExecutionContext context)
  27. {
  28. //_logger.LogInformation("调用任务消息推送 " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")+"【在线人数】:"+JsonConvert.SerializeObject(ServerHub.OnlineUser));
  29. //在此处编写任务业务代码
  30. #region 消息处理
  31. //var data = _taskAllocationRep._sqlSugar
  32. // .Queryable<Pm_TaskAllocation>()
  33. // .Where(it => it.IsDel == 0 &&
  34. // !string.IsNullOrEmpty(it.PredictEndTime) &&
  35. // Convert.ToDateTime(it.PredictEndTime).ToString("yyyy-MM-dd").Equals(DateTime.Now.ToString("yyyy-MM-dd"))
  36. // )
  37. // .ToList();
  38. //if (data.Count > 0)
  39. //{
  40. // //处理要任务提醒的员工
  41. // List<int> primaryIds = new List<int>();
  42. // primaryIds = data.Select(it => it.Id).ToList();
  43. // var subData = _taskAllocationRep._sqlSugar
  44. // .Queryable<Pm_TaskRelevanceUser>()
  45. // .Where(it => it.IsDel == 0 &&
  46. // primaryIds.Contains(it.TAId) &&
  47. // it.TaskStatus <= (int)TaskEnum.UnderWay
  48. // )
  49. // .ToList();
  50. // _taskAllocationRep._sqlSugar.BeginTran();
  51. // var depDatas = _taskAllocationRep._sqlSugar.Queryable<Sys_Department>().Where(it => it.IsDel == 0).ToList();
  52. // var groupDatas = _taskAllocationRep._sqlSugar.Queryable<Grp_DelegationInfo>().Where(it => it.IsDel == 0).ToList();
  53. // var userDatas = _taskAllocationRep._sqlSugar.Queryable<Sys_Users>().Where(it => it.IsDel == 0).ToList();
  54. // foreach (var item in data)
  55. // {
  56. // string depName = string.Empty;
  57. // string groupName = string.Empty;
  58. // var depData = depDatas.Where(it => it.Id == item.DepId).FirstOrDefault();
  59. // if (depData != null) { depName = depData.DepName; }
  60. // if (item.DiId == -1) { groupName = "其他"; }
  61. // else
  62. // {
  63. // var groupData = groupDatas.Where(it => it.Id == item.DiId).FirstOrDefault();
  64. // if (groupData != null) { groupName = groupData.TeamName; }
  65. // }
  66. // var subData1 = subData.Where(it => it.TAId == item.Id).ToList();
  67. // foreach (var subItem in subData1)
  68. // {
  69. // string realityStartTime = string.Empty;
  70. // string userName = string.Empty;
  71. // if (!string.IsNullOrEmpty(subItem.BeginTime))
  72. // {
  73. // realityStartTime = subItem.BeginTime;
  74. // }
  75. // else
  76. // {
  77. // if (subItem.TaskStatus == -1) realityStartTime = "未开始";
  78. // else if (subItem.TaskStatus == 0) realityStartTime = "已知晓";
  79. // }
  80. // var userData = userDatas.Where(it => it.Id == subItem.UserId).FirstOrDefault();
  81. // if (userData != null) { userName = userData.CnName; }
  82. // string msgContent = string.Format(@"任务归属:{0}<br/>
  83. // 归属团组:{1}<br/>
  84. // 预计起止时间:{2} 至 {3}<br/>
  85. // 实际开始时间:{4}<br/>
  86. // 任务优先级:{5}<br/>
  87. // 任务参与者:{6}<br/>
  88. // 任务内容:{7}", depName, groupName, item.PredictBeginTime, item.PredictEndTime,
  89. // realityStartTime, item.TaskPriority, userName, item.TaskContent);
  90. // Sys_Message _Message = new Sys_Message()
  91. // {
  92. // Type = MessgeTypeEnum.TaskProgressUpdate,
  93. // Title = item.TaskName,
  94. // IssuerId = 4, //管理员
  95. // Content = msgContent,
  96. // ReleaseTime = DateTime.Now,
  97. // CreateUserId = 4,
  98. // CreateTime = DateTime.Now,
  99. // DeleteTime = "1990-01-01 00:00:00.000",
  100. // DiId = item.DiId,
  101. // };
  102. // var msgAddId = _taskAllocationRep._sqlSugar.Insertable<Sys_Message>(_Message).ExecuteReturnIdentity();
  103. // if (msgAddId < 0)
  104. // {
  105. // _taskAllocationRep._sqlSugar.RollbackTran();
  106. // _logger.LogError("任务通知消息推送失败!");
  107. // return;
  108. // }
  109. // Sys_MessageReadAuth _MessageReadAuth = new Sys_MessageReadAuth()
  110. // {
  111. // MsgId = msgAddId,
  112. // ReadableUId = subItem.UserId,
  113. // IsRead = 0,
  114. // ReadTime = Convert.ToDateTime("1990-01-01 00:00:00.000"),
  115. // CreateUserId = 4,
  116. // CreateTime = DateTime.Now,
  117. // DeleteTime = "1990-01-01 00:00:00.000"
  118. // };
  119. // var msgAuthAddId = _taskAllocationRep._sqlSugar.Insertable<Sys_MessageReadAuth>(_MessageReadAuth).ExecuteReturnIdentity();
  120. // if (msgAuthAddId < 0)
  121. // {
  122. // _taskAllocationRep._sqlSugar.RollbackTran();
  123. // _logger.LogError("任务通知消息推送失败!");
  124. // return;
  125. // }
  126. // }
  127. // }
  128. // _taskAllocationRep._sqlSugar.CommitTran();
  129. //}
  130. #endregion
  131. string msg = string.Empty;
  132. //查询需要提示的消息 Singlr
  133. string sql = string.Format(@"Select smra.Id,su.CnName As Issuer,sm.ReleaseTime,sm.Title,
  134. sm.Content,smra.ReadableUId,smra.IsRead,smra.CreateTime
  135. From Sys_Message sm
  136. Left Join Sys_MessageReadAuth smra On sm.Id = smra.MsgId
  137. Left Join Sys_Users su On sm.IssuerId = su.Id
  138. Where sm.IsDel = 0 And sm.Type = 6 And smra.IsRead = 0
  139. Order By smra.ReadableUId,smra.CreateTime Desc");
  140. var datas = _taskAllocationRep._sqlSugar.SqlQueryable<MessageReadAuthPushView>(sql).ToList();
  141. msg = JsonConvert.SerializeObject(datas);
  142. //_hubContext.Clients.All.SendAsync("ReceiveMessage", "系统通知", $"最新消息{DateTime.Now}");
  143. //推送给所有连接ID的第一条数据
  144. //await _hubContext.Clients.Clients(ServerHub.OnlineUser.Select(q => q.ConnectionId).ToList()).SendAsync("SendMessageResponse", $"最新消息{DateTime.Now}");
  145. //return Task.CompletedTask;
  146. }
  147. }
  148. }