using Infrastructure; using Newtonsoft.Json.Linq; using Newtonsoft.Json; using Quartz; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using DocumentFormat.OpenXml.Drawing.Diagrams; using OpenAuth.Repository.Domain; using OpenAuth.App.Interface; namespace OpenAuth.App.BaseApp.Jobs { public class TaskTimeoutJob : IJob { private ImMsgApp _immsgApp; private OpenJobApp _openJobApp; private IAuth _auth; public TaskTimeoutJob(ImMsgApp immsgApp, OpenJobApp openJobApp, IAuth auth) { _immsgApp = immsgApp; _openJobApp = openJobApp; _auth = auth; } public async Task Execute(IJobExecutionContext context) { var jobId = context.MergedJobDataMap.GetString(Define.JOBMAPKEY); //todo:这里可以加入自己的自动任务逻辑 try { var job = _openJobApp.Get(jobId); //if (job != null) //{ // var parms = (JObject)JsonConvert.DeserializeObject(job.JobCallParams); // string taskid = parms["TaskId"].ToString(); // //更新任务状态 // var taskInfo = _wfTaskApp.GetEntity(taskid); // if (taskInfo != null && (taskInfo.State == 3 || taskInfo.State == 4)) // { // _openJobApp.DeleteEntity(job); // } // else // { // taskInfo.IsOutTime = 1; // _wfTaskApp.Update(taskInfo); // //创建消息接收用户集合 // List userlist = new List(); // userlist.Add(taskInfo.UserId); // var users = _wfTaskApp.GetUsers(taskid); // userlist = userlist.Union(users).ToList(); // //创建消息发送内容 // string msg = $"任务{taskInfo.ProcessTitle}{taskInfo.UnitName}已超时,请及时办理"; // //更新Job信息,停止job,运行次数+1 // _openJobApp.RecordRun(jobId); // _openJobApp.ChangeJobStatus1(new App.Request.ChangeJobStatusReq { Id = jobId, Status = 0 }); // //发送消息 // await _immsgApp.SendMsg("ChaoShi", userlist, msg, "4", taskInfo.Token); // } //} } catch { return; } await Task.CompletedTask; } } }