TaskAssignment.cs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. using Microsoft.AspNetCore.SignalR;
  2. using OASystem.API.OAMethodLib.Hubs;
  3. using OASystem.Domain.Entities.Groups;
  4. using OASystem.Domain.Entities.PersonnelModule;
  5. using OASystem.Infrastructure.Repositories.PersonnelModule;
  6. using ILogger = Microsoft.Extensions.Logging.ILogger;
  7. namespace OASystem.API.OAMethodLib.Quartz.Business
  8. {
  9. /// <summary>
  10. /// 任务指派
  11. /// 定时任务
  12. /// </summary>
  13. public static class TaskAssignment
  14. {
  15. private readonly static TaskAllocationRepository _taskAllocationRep = AutofacIocManager.Instance.GetService<TaskAllocationRepository>();
  16. private readonly static ILogger _logger;
  17. private readonly static IHubContext<ChatHub> _hubContext;
  18. /// <summary>
  19. /// 定时任务更改状态
  20. /// 每天下午六点定时更新
  21. /// </summary>
  22. public static async void PostTaskUpdateStatus()
  23. {
  24. var data = await _taskAllocationRep._sqlSugar
  25. .Queryable<Pm_TaskAllocation>()
  26. .Where(it => it.IsDel == 0 &&
  27. !string.IsNullOrEmpty(it.PredictEndTime) &&
  28. Convert.ToDateTime(it.PredictEndTime) >= DateTime.Now
  29. )
  30. .ToListAsync();
  31. if (data.Count > 0)
  32. {
  33. //处理要变更状态的员工
  34. List<int> primaryIds = new List<int>();
  35. primaryIds = data.Select(it => it.Id).ToList();
  36. var subData = await _taskAllocationRep._sqlSugar
  37. .Queryable<Pm_TaskRelevanceUser>()
  38. .Where(it => it.IsDel == 0 &&
  39. primaryIds.Contains(it.TAId) &&
  40. it.TaskStatus <= (int)TaskEnum.UnderWay
  41. )
  42. .ToListAsync();
  43. foreach (var item in subData)
  44. {
  45. item.OverTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm-ss");
  46. item.TaskStatus = (int)TaskEnum.UnFinished;
  47. item.Cause = string.Format(@"任务没有提交完成或者超时,由系统设置任务未完成");
  48. }
  49. if (subData.Count > 0)
  50. {
  51. var updateStatus = await _taskAllocationRep._sqlSugar
  52. .Updateable(subData)
  53. .WhereColumns(it => it.Id)
  54. .ExecuteCommandAsync();
  55. }
  56. }
  57. }
  58. /// <summary>
  59. /// 任务消息推送
  60. /// 每天下午2点定时推送
  61. /// </summary>
  62. public static async void PostTaskNewsFeed()
  63. {
  64. #region 消息处理
  65. //var data = _taskAllocationRep._sqlSugar
  66. // .Queryable<Pm_TaskAllocation>()
  67. // .Where(it => it.IsDel == 0 &&
  68. // !string.IsNullOrEmpty(it.PredictEndTime) &&
  69. // Convert.ToDateTime(it.PredictEndTime).ToString("yyyy-MM-dd").Equals(DateTime.Now.ToString("yyyy-MM-dd"))
  70. // )
  71. // .ToList();
  72. //if (data.Count > 0)
  73. //{
  74. // //处理要任务提醒的员工
  75. // List<int> primaryIds = new List<int>();
  76. // primaryIds = data.Select(it => it.Id).ToList();
  77. // var subData = _taskAllocationRep._sqlSugar
  78. // .Queryable<Pm_TaskRelevanceUser>()
  79. // .Where(it => it.IsDel == 0 &&
  80. // primaryIds.Contains(it.TAId) &&
  81. // it.TaskStatus <= (int)TaskEnum.UnderWay
  82. // )
  83. // .ToList();
  84. // _taskAllocationRep._sqlSugar.BeginTran();
  85. // var depDatas = _taskAllocationRep._sqlSugar.Queryable<Sys_Department>().Where(it => it.IsDel == 0).ToList();
  86. // var groupDatas = _taskAllocationRep._sqlSugar.Queryable<Grp_DelegationInfo>().Where(it => it.IsDel == 0).ToList();
  87. // var userDatas = _taskAllocationRep._sqlSugar.Queryable<Sys_Users>().Where(it => it.IsDel == 0).ToList();
  88. // foreach (var item in data)
  89. // {
  90. // string depName = string.Empty;
  91. // string groupName = string.Empty;
  92. // var depData = depDatas.Where(it => it.Id == item.DepId).FirstOrDefault();
  93. // if (depData != null) { depName = depData.DepName; }
  94. // if (item.DiId == -1) { groupName = "其他"; }
  95. // else
  96. // {
  97. // var groupData = groupDatas.Where(it => it.Id == item.DiId).FirstOrDefault();
  98. // if (groupData != null) { groupName = groupData.TeamName; }
  99. // }
  100. // var subData1 = subData.Where(it => it.TAId == item.Id).ToList();
  101. // foreach (var subItem in subData1)
  102. // {
  103. // string realityStartTime = string.Empty;
  104. // string userName = string.Empty;
  105. // if (!string.IsNullOrEmpty(subItem.BeginTime))
  106. // {
  107. // realityStartTime = subItem.BeginTime;
  108. // }
  109. // else
  110. // {
  111. // if (subItem.TaskStatus == -1) realityStartTime = "未开始";
  112. // else if (subItem.TaskStatus == 0) realityStartTime = "已知晓";
  113. // }
  114. // var userData = userDatas.Where(it => it.Id == subItem.UserId).FirstOrDefault();
  115. // if (userData != null) { userName = userData.CnName; }
  116. // string msgContent = string.Format(@"任务归属:{0}<br/>
  117. // 归属团组:{1}<br/>
  118. // 预计起止时间:{2} 至 {3}<br/>
  119. // 实际开始时间:{4}<br/>
  120. // 任务优先级:{5}<br/>
  121. // 任务参与者:{6}<br/>
  122. // 任务内容:{7}", depName, groupName, item.PredictBeginTime, item.PredictEndTime,
  123. // realityStartTime, item.TaskPriority, userName, item.TaskContent);
  124. // Sys_Message _Message = new Sys_Message()
  125. // {
  126. // Type = MessgeTypeEnum.TaskProgressUpdate,
  127. // Title = item.TaskName,
  128. // IssuerId = 4, //管理员
  129. // Content = msgContent,
  130. // ReleaseTime = DateTime.Now,
  131. // CreateUserId = 4,
  132. // CreateTime = DateTime.Now,
  133. // DeleteTime = "1990-01-01 00:00:00.000",
  134. // DiId = item.DiId,
  135. // };
  136. // var msgAddId = _taskAllocationRep._sqlSugar.Insertable<Sys_Message>(_Message).ExecuteReturnIdentity();
  137. // if (msgAddId < 0)
  138. // {
  139. // _taskAllocationRep._sqlSugar.RollbackTran();
  140. // _logger.LogError("任务通知消息推送失败!");
  141. // return;
  142. // }
  143. // Sys_MessageReadAuth _MessageReadAuth = new Sys_MessageReadAuth()
  144. // {
  145. // MsgId = msgAddId,
  146. // ReadableUId = subItem.UserId,
  147. // IsRead = 0,
  148. // ReadTime = Convert.ToDateTime("1990-01-01 00:00:00.000"),
  149. // CreateUserId = 4,
  150. // CreateTime = DateTime.Now,
  151. // DeleteTime = "1990-01-01 00:00:00.000"
  152. // };
  153. // var msgAuthAddId = _taskAllocationRep._sqlSugar.Insertable<Sys_MessageReadAuth>(_MessageReadAuth).ExecuteReturnIdentity();
  154. // if (msgAuthAddId < 0)
  155. // {
  156. // _taskAllocationRep._sqlSugar.RollbackTran();
  157. // _logger.LogError("任务通知消息推送失败!");
  158. // return;
  159. // }
  160. // }
  161. // }
  162. // _taskAllocationRep._sqlSugar.CommitTran();
  163. //}
  164. #endregion
  165. //查询需要提示的消息 Singlr
  166. string sql = string.Format(@"Select smra.Id,su.CnName As Issuer,sm.ReleaseTime,sm.Title,
  167. sm.Content,smra.ReadableUId,smra.IsRead,smra.CreateTime
  168. From Sys_Message sm
  169. Left Join Sys_MessageReadAuth smra On sm.Id = smra.MsgId
  170. Left Join Sys_Users su On sm.IssuerId = su.Id
  171. Where sm.IsDel = 0 And sm.Type = 6 And smra.IsRead = 0
  172. Order By smra.ReadableUId,smra.CreateTime Desc");
  173. var datas = _taskAllocationRep._sqlSugar.SqlQueryable<MessageReadAuthPushView>(sql).ToList();
  174. await _hubContext.Clients.All.SendAsync("ReceiveMessage","系统通知","${da}");
  175. }
  176. }
  177. }