Пример #1
0
        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 }));
        }
Пример #2
0
 /// <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;
 }
Пример #3
0
		public int GetStatusCount(EnumJobStatus status)
		{
			int returnValue;
			if(!this.StatusCountList.TryGetValue(status, out returnValue))
			{
				returnValue = 0;
			}
			return returnValue;
		}
Пример #4
0
        public int GetStatusCount(EnumJobStatus status)
        {
            int returnValue;

            if (!this.StatusCountList.TryGetValue(status, out returnValue))
            {
                returnValue = 0;
            }
            return(returnValue);
        }
Пример #5
0
        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));
        }
Пример #6
0
        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");
            }
        }
Пример #7
0
        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;
            }
        }
Пример #8
0
        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("运行中");
            }
        }
Пример #9
0
		public void UpdateJobDataStatus(JobData item, EnumJobStatus status)
		{
			item.Status = status;
			this.DocumentSession.SaveChanges();
		}
Пример #10
0
		public static IQueryable<JobData> ByStatus(this IQueryable<JobData> query, EnumJobStatus status)
		{
			return query.Where(i=>i.Status == status);
		}
Пример #11
0
 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);
		}
Пример #14
0
 public void UpdateJobDataStatus(JobData item, EnumJobStatus status)
 {
     item.Status = status;
     this.DocumentSession.SaveChanges();
 }