public ActionResult JobDataDetails(int jobDefinitionId, int jobDataId, EnumJobStatus status) { var query = this.JobManager.GetJobDataQueue(jobDefinitionId); var item = query.Single(i => i.Id == jobDataId); this.JobManager.UpdateJobDataStatus(item, status); return(RedirectToAction("JobDataDetails", new { jobDefinitionId, jobDataId })); }
/// <summary> Внутреннее сообщение бота </summary> /// <param name="jobName">Имя джобы</param> /// <param name="jobStatus">Статус джобы</param> /// <param name="mainCaption">Основной заголовок</param> /// <param name="infoMessage">Дополнительное сообщение</param> public BotMessageJob([NotNull] string jobName, EnumJobStatus jobStatus, [NotNull] string mainCaption, [NotNull] string infoMessage) { this.JobMessageType = EnumBotMessageType.BuildJobExecution; this.JobName = jobName; this.JobStatus = jobStatus; this.Message = mainCaption; this.InfoMessage = infoMessage; }
public int GetStatusCount(EnumJobStatus status) { int returnValue; if(!this.StatusCountList.TryGetValue(status, out returnValue)) { returnValue = 0; } return returnValue; }
public int GetStatusCount(EnumJobStatus status) { int returnValue; if (!this.StatusCountList.TryGetValue(status, out returnValue)) { returnValue = 0; } return(returnValue); }
public ActionResult QueueStatusList(int jobDefinitionId, EnumJobStatus status, int?page) { var jobDefinition = this.JobManager.GetJobDefinition(jobDefinitionId); var query = this.JobManager.GetJobDataQueue(jobDefinition); query = query.ByStatus(status); var viewModel = new JobQueueDataListViewModel() { Status = status, JobDefinition = jobDefinition, JobDataList = query.ToList() }; return(View(viewModel)); }
public static string ToText(this EnumJobStatus value) { switch ((value)) { case EnumJobStatus.Prepared: return("任务待打印(任务产⽣生时默认状态)"); case EnumJobStatus.Done: return("任务成功完成"); case EnumJobStatus.TimeOut: return("任务超时失败"); case EnumJobStatus.Canceled: return("任务取消"); default: return("Unknow"); } }
public static void DoJob() { switch (JobStatus) { // 每一Job都需要进行登录 case EnumJobStatus.Nothing: SpyLogin.initme(char_id); SpyLogin.start(); SpyDB.WriteLog("计划任务", string.Format("任务角色登录,角色:{0},任务描述:{1},持续时间:{2}", char_name, JobDescribe, RunMiniute)); JobStatus = EnumJobStatus.Logging; StatusStartTime = DateTime.Now; OutJob.Restart(); break; case EnumJobStatus.Logging: if (SpyLogin.IsOK) { SpyDB.WriteLog("计划任务", string.Format("任务角色登录成功,角色:{0},任务描述:{1},持续时间:{2}", char_name, JobDescribe, JobTime.Elapsed.TotalMinutes)); Thread.Sleep(2000); //ObjectManager.MakeReady(); Logging.Write(string.Format("Pid : [{0}]", SpyLogin.WOW_P.Id)); ObjectManager.Initialize(SpyLogin.WOW_P.Id); if (!ObjectManager.Initialized) { Thread.Sleep(5000); ObjectManager.Initialize(SpyLogin.WOW_P.Id); } //Hook.DoHook(); Thread.Sleep(2000); OutJob.Reset(); JobStatus = EnumJobStatus.login_OK; } //if (string.Format("{0:yyyy-MM-dd HH:mm}", StatusStartTime.AddMinutes(RUN_OUT_MIN_LOGIN)).Equals(string.Format("{0:yyyy-MM-dd HH:mm}", DateTime.Now))) if (OutJob.Elapsed.TotalMinutes > RUN_OUT_MIN_LOGIN) { OutJob.Reset(); SpyDB.WriteLog("计划任务", string.Format("任务角色登录超时,角色:{0},任务描述:{1},持续时间:{2}", char_name, JobDescribe, JobTime.Elapsed.TotalMinutes)); JobStatus = EnumJobStatus.Work_OK; } break; // 判断job的内容,启动相应的程序 case EnumJobStatus.login_OK: switch (DoWhat) { case "ZBJG": if (SpyZBJG.initme()) SpyZBJG.start(); break; case "AH": if (SpyAH.initme()) SpyAH.start(); break; case "FJKS": if (SpyMineAndMail.initme()) SpyMineAndMail.start(); break; case "CJ": if (SpyCJ.initme()) SpyCJ.start(); break; case "LJ": if (SpyLJZH.initme("LJ")) SpyLJZH.start(); break; case "MW": if (SpyLJZH.initme("MW")) SpyLJZH.start(); break; } SpyDB.WriteLog("计划任务", string.Format("任务开始工作,角色:{0},任务描述:{1},持续时间:{2}", char_name, JobDescribe, JobTime.Elapsed.TotalMinutes)); StatusStartTime = DateTime.Now; OutJob.Restart(); JobStatus = EnumJobStatus.Working; Thread.Sleep(2000); //暂停,再获取运行状态,保留充分的初始化时间 break; case EnumJobStatus.Working: switch (DoWhat) { case "ZBJG": //珠宝加工 //if (string.Format("{0:yyyy-MM-dd HH:mm}", StatusStartTime.AddMinutes(RUN_OUT_MIN_WORK)).Equals(string.Format("{0:yyyy-MM-dd HH:mm}", DateTime.Now))) if (SpyZBJG.WORKING) OutJob.Restart(); if (!SpyZBJG.WORKING && OutJob.Elapsed.TotalMinutes > RUN_OUT_MIN_WORK) { SpyDB.WriteLog("计划任务", string.Format("任务工作超时,角色:{0},任务描述:{1},持续时间:{2}", char_name, JobDescribe, JobTime.Elapsed.TotalMinutes)); JobStatus = EnumJobStatus.Work_OK; return; } if (SpyZBJG.RUNNING) return; break; case "AH": //AH拍卖 if (SpyAH.WORKING) OutJob.Restart(); //if (string.Format("{0:yyyy-MM-dd HH:mm}", StatusStartTime.AddMinutes(RUN_OUT_MIN_WORK)).Equals(string.Format("{0:yyyy-MM-dd HH:mm}", DateTime.Now))) if (!SpyAH.WORKING && OutJob.Elapsed.TotalMinutes > RUN_OUT_MIN_WORK) { SpyDB.WriteLog("计划任务", string.Format("任务工作超时,角色:{0},任务描述:{1},持续时间:{2}", char_name, JobDescribe, JobTime.Elapsed.TotalMinutes)); JobStatus = EnumJobStatus.Work_OK; return; } if (SpyAH.RUNNING) return; break; case "FJKS": //分解矿石 if (SpyMineAndMail.WORKING) OutJob.Restart(); if (!SpyMineAndMail.WORKING && OutJob.Elapsed.TotalMinutes > RUN_OUT_MIN_WORK) //if (string.Format("{0:yyyy-MM-dd HH:mm}", StatusStartTime.AddMinutes(RUN_OUT_MIN_WORK)).Equals(string.Format("{0:yyyy-MM-dd HH:mm}", DateTime.Now))) { SpyDB.WriteLog("计划任务", string.Format("任务工作超时,角色:{0},任务描述:{1},持续时间:{2}", char_name, JobDescribe, JobTime.Elapsed.TotalMinutes)); JobStatus = EnumJobStatus.Work_OK; return; } if (SpyMineAndMail.RUNNING) return; break; case "CJ": //采集 if (!LazyLib.FSM.Engine.Running) { SpyDB.WriteLog("计划任务", string.Format("出现状况,自动关闭外挂。角色:{0},任务描述:{1},持续时间:{2}", char_name, JobDescribe, JobTime.Elapsed.TotalMinutes)); JobStatus = EnumJobStatus.Work_OK; return; } if (SpyCJ.RUNNING) return; break; case "LJ": //炼金 case "MW": if (SpyLJZH.WORKING) OutJob.Restart(); if (!SpyLJZH.WORKING && OutJob.Elapsed.TotalMinutes > RUN_OUT_MIN_WORK) //if (string.Format("{0:yyyy-MM-dd HH:mm}", StatusStartTime.AddMinutes(RUN_OUT_MIN_WORK)).Equals(string.Format("{0:yyyy-MM-dd HH:mm}", DateTime.Now))) { SpyDB.WriteLog("计划任务", string.Format("任务工作超时,角色:{0},任务描述:{1},持续时间:{2}", char_name, JobDescribe, JobTime.Elapsed.TotalMinutes)); JobStatus = EnumJobStatus.Work_OK; return; } if (SpyLJZH.RUNNING) return; break; } SpyDB.WriteLog("计划任务", string.Format("任务结束工作,角色:{0},任务描述:{1},持续时间:{2}", char_name, JobDescribe, JobTime.Elapsed.TotalMinutes)); JobStatus = EnumJobStatus.Work_OK; break; case EnumJobStatus.Work_OK: Thread.Sleep(5000); LazyHelpers.StopAll("工作结束,Kill Process"); OutJob.Reset(); JobTime.Reset(); Thread.Sleep(10000); if (!string.IsNullOrWhiteSpace(ObjectManager.MyPlayer.Name)) { SpyDB.SaveCharGold(ObjectManager.MyPlayer.Name, ObjectManager.MyPlayer.CoinAge); } // 停止所有相关线程 switch (DoWhat) { case "ZBJG": SpyZBJG.stop(); break; case "AH": SpyAH.stop(); break; case "FJKS": SpyMineAndMail.stop(); break; case "CJ": //SpyCJ.st; break; case "LJ": SpyLJZH.stop(); break; case "MW": SpyLJZH.stop(); break; } SpyLogin.stop(); SpyLogin.WOW_P.Kill(); JobRunning = false; JobStatus = EnumJobStatus.Nothing; break; } }
public static void GoGo() { DataTable job = new DataTable(); JobRunning = false; while (true) { // 数据库中,找当天启动的程序 if (!JobRunning) { // 传入机器编号,找任务 job = SpyDB.GetJob(LazySettings.MachineID); if (job.Rows.Count > 0) { // 获取JOB的持续时间、角色ID、工作内容 foreach (DataRow dr in job.Rows) { char_id = dr["char_id"].ToString(); char_name = dr["char_name"].ToString(); DoWhat = dr["dowhat"].ToString(); switch (DoWhat) { case "ZBJG": JobDescribe = "珠宝加工"; break; case "AH": JobDescribe = "拍卖"; break; case "FJKS": JobDescribe = "矿石分解"; break; case "CJ": JobDescribe = "双采"; break; case "LJ": JobDescribe = "炼金转化"; break; case "MW": JobDescribe = "铭文"; break; } RunMiniute = Convert.ToInt32(dr["runtime"]); SpyDB.WriteLog("计划任务", string.Format("获得任务,角色:{0},任务描述:{1},计划时间:{2}", char_name, JobDescribe, RunMiniute)); } JobStartTime = System.DateTime.Now; JobTime.Restart(); JobRunning = true; JobStatus = EnumJobStatus.Nothing; } } if (JobRunning) { DoJob(); } // 当job内容是采矿的时候,判断停止时间是不是到了,到了就停止 if (JobRunning && DoWhat.Equals("CJ")) { if (string.Format("{0:yyyy-MM-dd HH:mm}", JobStartTime.AddMinutes(RunMiniute)).Equals(string.Format("{0:yyyy-MM-dd HH:mm}", DateTime.Now))) { //LazyHelpers.StopAll("时间到了,Kill Process"); //SpyLogin.WOW_P.Kill(); SpyDB.WriteLog("计划任务", string.Format("结束任务,角色:{0},任务描述:{1},持续时间:{2}", char_name, JobDescribe, JobTime.Elapsed.TotalMinutes)); //JobRunning = false; RunMiniute = 0; JobStatus = EnumJobStatus.Work_OK; } } // 针对非采矿类任务,不可能超过1小时 if (JobRunning && !DoWhat.Equals("CJ")) { if (JobTime.Elapsed.TotalMinutes > 60) { SpyDB.WriteLog("计划任务", string.Format("任务工作时间超长,角色:{0},任务描述:{1},持续时间:{2}", char_name, JobDescribe, JobTime.Elapsed.TotalMinutes)); RunMiniute = 0; JobStatus = EnumJobStatus.Work_OK; } } Thread.Sleep(500); //Logging.Write("运行中"); } }
public void UpdateJobDataStatus(JobData item, EnumJobStatus status) { item.Status = status; this.DocumentSession.SaveChanges(); }
public static IQueryable<JobData> ByStatus(this IQueryable<JobData> query, EnumJobStatus status) { return query.Where(i=>i.Status == status); }
public static IQueryable <JobData> ByStatus(this IQueryable <JobData> query, EnumJobStatus status) { return(query.Where(i => i.Status == status)); }
public ActionResult JobDataDetails(int jobDefinitionId, int jobDataId, EnumJobStatus status) { var query = this.JobManager.GetJobDataQueue(jobDefinitionId); var item = query.Single(i => i.Id == jobDataId); this.JobManager.UpdateJobDataStatus(item, status); return RedirectToAction("JobDataDetails", new { jobDefinitionId, jobDataId }); }
public ActionResult QueueStatusList(int jobDefinitionId, EnumJobStatus status, int? page) { var jobDefinition = this.JobManager.GetJobDefinition(jobDefinitionId); var query = this.JobManager.GetJobDataQueue(jobDefinition); query = query.ByStatus(status); var viewModel = new JobQueueDataListViewModel() { Status = status, JobDefinition = jobDefinition, JobDataList = query.ToList() }; return View(viewModel); }