123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- using Microsoft.AspNetCore.SignalR;
- using OASystem.API.OAMethodLib.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
- {
- /// <summary>
- /// 任务指派
- /// 定时任务
- /// </summary>
- public static class TaskAssignment
- {
- private readonly static TaskAllocationRepository _taskAllocationRep = AutofacIocManager.Instance.GetService<TaskAllocationRepository>();
- private readonly static ILogger _logger;
- private readonly static IHubContext<ChatHub> _hubContext;
- /// <summary>
- /// 定时任务更改状态
- /// 每天下午六点定时更新
- /// </summary>
- public static async void PostTaskUpdateStatus()
- {
- var data = await _taskAllocationRep._sqlSugar
- .Queryable<Pm_TaskAllocation>()
- .Where(it => it.IsDel == 0 &&
- !string.IsNullOrEmpty(it.PredictEndTime) &&
- Convert.ToDateTime(it.PredictEndTime) >= DateTime.Now
- )
- .ToListAsync();
- if (data.Count > 0)
- {
- //处理要变更状态的员工
- List<int> primaryIds = new List<int>();
- primaryIds = data.Select(it => it.Id).ToList();
- var subData = await _taskAllocationRep._sqlSugar
- .Queryable<Pm_TaskRelevanceUser>()
- .Where(it => it.IsDel == 0 &&
- primaryIds.Contains(it.TAId) &&
- it.TaskStatus <= (int)TaskEnum.UnderWay
- )
- .ToListAsync();
- foreach (var item in subData)
- {
- item.OverTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm-ss");
- item.TaskStatus = (int)TaskEnum.UnFinished;
- item.Cause = string.Format(@"任务没有提交完成或者超时,由系统设置任务未完成");
- }
- if (subData.Count > 0)
- {
- var updateStatus = await _taskAllocationRep._sqlSugar
- .Updateable(subData)
- .WhereColumns(it => it.Id)
- .ExecuteCommandAsync();
- }
- }
- }
- /// <summary>
- /// 任务消息推送
- /// 每天下午2点定时推送
- /// </summary>
- public static async void PostTaskNewsFeed()
- {
- #region 消息处理
-
- //var data = _taskAllocationRep._sqlSugar
- // .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 = _taskAllocationRep._sqlSugar
- // .Queryable<Pm_TaskRelevanceUser>()
- // .Where(it => it.IsDel == 0 &&
- // primaryIds.Contains(it.TAId) &&
- // it.TaskStatus <= (int)TaskEnum.UnderWay
- // )
- // .ToList();
- // _taskAllocationRep._sqlSugar.BeginTran();
- // var depDatas = _taskAllocationRep._sqlSugar.Queryable<Sys_Department>().Where(it => it.IsDel == 0).ToList();
- // var groupDatas = _taskAllocationRep._sqlSugar.Queryable<Grp_DelegationInfo>().Where(it => it.IsDel == 0).ToList();
- // var userDatas = _taskAllocationRep._sqlSugar.Queryable<Sys_Users>().Where(it => it.IsDel == 0).ToList();
- // 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 == -1) realityStartTime = "未开始";
- // else if (subItem.TaskStatus == 0) realityStartTime = "已知晓";
- // }
- // var userData = userDatas.Where(it => it.Id == subItem.UserId).FirstOrDefault();
- // if (userData != null) { userName = userData.CnName; }
- // string msgContent = string.Format(@"任务归属:{0}<br/>
- // 归属团组:{1}<br/>
- // 预计起止时间:{2} 至 {3}<br/>
- // 实际开始时间:{4}<br/>
- // 任务优先级:{5}<br/>
- // 任务参与者:{6}<br/>
- // 任务内容:{7}", depName, groupName, item.PredictBeginTime, item.PredictEndTime,
- // realityStartTime, item.TaskPriority, userName, item.TaskContent);
- // Sys_Message _Message = new Sys_Message()
- // {
- // Type = MessgeTypeEnum.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 = _taskAllocationRep._sqlSugar.Insertable<Sys_Message>(_Message).ExecuteReturnIdentity();
- // if (msgAddId < 0)
- // {
- // _taskAllocationRep._sqlSugar.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 = _taskAllocationRep._sqlSugar.Insertable<Sys_MessageReadAuth>(_MessageReadAuth).ExecuteReturnIdentity();
- // if (msgAuthAddId < 0)
- // {
- // _taskAllocationRep._sqlSugar.RollbackTran();
- // _logger.LogError("任务通知消息推送失败!");
- // return;
- // }
- // }
- // }
- // _taskAllocationRep._sqlSugar.CommitTran();
- //}
- #endregion
- //查询需要提示的消息 Singlr
- string sql = string.Format(@"Select smra.Id,su.CnName As Issuer,sm.ReleaseTime,sm.Title,
- sm.Content,smra.ReadableUId,smra.IsRead,smra.CreateTime
- From Sys_Message sm
- Left Join Sys_MessageReadAuth smra On sm.Id = smra.MsgId
- Left Join Sys_Users su On sm.IssuerId = su.Id
- Where sm.IsDel = 0 And sm.Type = 6 And smra.IsRead = 0
- Order By smra.ReadableUId,smra.CreateTime Desc");
- var datas = _taskAllocationRep._sqlSugar.SqlQueryable<MessageReadAuthPushView>(sql).ToList();
- await _hubContext.Clients.All.SendAsync("ReceiveMessage","系统通知","${da}");
- }
- }
- }
|