コード例 #1
0
        public ActionResult <BaseResponse> JobList(JobListRequest request)
        {
            var filters = new List <Expression <Func <JobEntity, bool> > >();

            if (!string.IsNullOrWhiteSpace(request.Name))
            {
                filters.Add(x => x.Name.Contains(request.Name) || x.Id.Contains(request.Name));
            }

            if (request.Status >= 0)
            {
                filters.Add(x => x.Status == request.Status);
            }

            var result = _jobStore.QueryJobList(request.PageIndex, request.PageSize, filters, x => x.CreateTime, false, out int total);

            var pageData = new PageData <JobEntity>()
            {
                PageIndex  = request.PageIndex,
                PageSize   = request.PageSize,
                TotalCount = total,
                List       = result
            };

            return(BaseResponse <PageData <JobEntity> > .GetBaseResponse(pageData));
        }
コード例 #2
0
        /// <summary>
        /// List print jobs from google cloud
        /// reference: https://developers.google.com/cloud-print/docs/appInterfaces#jobs
        /// </summary>
        /// <param name="request">Parameters for /jobs interface</param>
        /// <param name="cancellationToken">Cancellation token</param>
        /// <returns>Response from google cloud</returns>
        public async Task <JobsResponse <JobListRequest> > ListJobAsync(JobListRequest request, CancellationToken cancellationToken = default(CancellationToken))
        {
            await UpdateTokenAsync(cancellationToken);

            return(await GoogleCloudPrintBaseUrl
                   .AppendPathSegment("jobs")
                   .WithOAuthBearerToken(_token.AccessToken)
                   .PostRequestAsync(request, cancellationToken)
                   .ReceiveJsonButThrowIfFails <JobsResponse <JobListRequest> >()
                   .ConfigureAwait(false));
        }
コード例 #3
0
        public void PrintJob(GoogleCloudPrintClient client)
        {
            // Create a request to list jobs of a printer
            var listRequest = new JobListRequest
            {
                PrinterId = "d08832da-03e4-a068-885b-46ea9750f3eb",
                Status    = "QUEUED"
            };

            // Submit request
            var response = client.ListJobAsync(listRequest).Result;
        }
コード例 #4
0
        public async Task <IActionResult> GetJobList([FromBody] JobListRequest request)
        {
            #region 筛选条件
            List <DbWhere <JobInfoEntity> > dbWheres = new List <DbWhere <JobInfoEntity> >();
            if (request.Id.HasValue && request.Id.Value > 0)
            {
                dbWheres.Add(new DbWhere <JobInfoEntity>(j => j.Id, request.Id.Value));
            }
            if (!string.IsNullOrWhiteSpace(request.Name))
            {
                dbWheres.Add(new DbWhere <JobInfoEntity>(j => j.Name, request.Name, OperateType.Like));
            }
            if (request.JobLevel.HasValue)
            {
                dbWheres.Add(new DbWhere <JobInfoEntity>(j => j.JobLevel, request.JobLevel.Value));
            }
            if (!string.IsNullOrWhiteSpace(request.AssemblyName))
            {
                dbWheres.Add(new DbWhere <JobInfoEntity>(j => j.AssemblyName, request.AssemblyName, OperateType.Like));
            }
            if (!string.IsNullOrWhiteSpace(request.ClassName))
            {
                dbWheres.Add(new DbWhere <JobInfoEntity>(j => j.ClassName, request.ClassName, OperateType.Like));
            }
            if (!string.IsNullOrWhiteSpace(request.CronExpression))
            {
                dbWheres.Add(new DbWhere <JobInfoEntity>(j => j.CronExpression, request.CronExpression, OperateType.Like));
            }
            if (request.LastFireTimeStart.HasValue)
            {
                dbWheres.Add(new DbWhere <JobInfoEntity>(j => j.LastFireTime, request.LastFireTimeStart.Value, OperateType.GreaterEqual));
            }
            if (request.LastFireTimeEnd.HasValue)
            {
                dbWheres.Add(new DbWhere <JobInfoEntity>(j => j.LastFireTime, request.LastFireTimeEnd.Value, OperateType.LessEqual));
            }
            if (request.NextFireTimeStart.HasValue)
            {
                dbWheres.Add(new DbWhere <JobInfoEntity>(j => j.NextFireTime, request.NextFireTimeStart.Value, OperateType.GreaterEqual));
            }
            if (request.NextFireTimeEnd.HasValue)
            {
                dbWheres.Add(new DbWhere <JobInfoEntity>(j => j.NextFireTime, request.NextFireTimeEnd.Value, OperateType.LessEqual));
            }
            if (request.State.HasValue)
            {
                dbWheres.Add(new DbWhere <JobInfoEntity>(j => j.State, request.State.Value));
            }
            if (request.Disabled.HasValue)
            {
                dbWheres.Add(new DbWhere <JobInfoEntity>(j => j.Disabled, request.Disabled.Value));
            }
            #endregion

            #region 排序和分页
            string orderByFields = "Id,Name,JobLevel,AssemblyName,CronExpression,LastFireTime,NextFireTime,FireCount,State,Disabled";//表格排序对应的字段
            string orderByColumn = orderByFields.Split(',')[request.Order[0].Column];
            bool   isAsc         = request.Order[0].Dir.Equals("asc", StringComparison.OrdinalIgnoreCase);
            int    pageIndex     = request.Start / request.Length;//从第0页开始
            #endregion

            #region 获取数据
            var(list, totals) = await _jobService.GetJobsAsync(pageIndex, request.Length, dbWheres, null, new DbOrderBy <JobInfoEntity>(orderByColumn, isAsc));

            #endregion

            #region 返回数据
            List <object[]> retTable = new List <object[]>();
            if (list != null && list.Any())
            {
                foreach (JobInfoEntity item in list)
                {
                    #region 填充一行
                    List <object> retRow = new List <object>();
                    retRow.Add(item.Id);
                    retRow.Add(item.Name);
                    switch (item.JobLevel)
                    {
                    case JobLevel.Business:
                        retRow.Add(item.JobLevel.GetDescription().GetSpanHtml("#00c5dc"));
                        break;

                    case JobLevel.Test:
                        retRow.Add(item.JobLevel.GetDescription().GetSpanHtml("#c4c5d6"));
                        break;

                    case JobLevel.System:
                        retRow.Add(item.JobLevel.GetDescription().GetSpanHtml("#FF0000"));
                        break;

                    default:
                        retRow.Add(item.JobLevel.GetDescription());
                        break;
                    }
                    retRow.Add($"{item.AssemblyName}<br/>{item.ClassName}");
                    retRow.Add(item.CronExpression);
                    retRow.Add(item.LastFireTime);
                    //retRow.Add(item.NextFireTime);
                    if (item.NextFireTime.HasValue && item.NextFireTime.Value < DateTime.Now)
                    {
                        retRow.Add(item.NextFireTime.Value.ToString().GetSpanHtml(SpanColor.Warning));
                    }
                    else
                    {
                        retRow.Add(item.NextFireTime);
                    }
                    retRow.Add(item.FireCount);
                    switch (item.State)
                    {
                    case JobState.Stopped:
                        retRow.Add(item.State.GetDescription().GetSpanHtml(SpanColor.Metal));
                        break;

                    case JobState.Running:
                        retRow.Add(item.State.GetDescription().GetSpanHtml(SpanColor.Success));
                        break;

                    case JobState.Starting:
                        retRow.Add(item.State.GetDescription().GetSpanHtml(SpanColor.Primary));
                        break;

                    case JobState.Stopping:
                        retRow.Add(item.State.GetDescription().GetSpanHtml(SpanColor.Warning));
                        break;

                    case JobState.Updating:
                        retRow.Add(item.State.GetDescription().GetSpanHtml(SpanColor.Info));
                        break;

                    case JobState.FireNow:
                        retRow.Add(item.State.GetDescription().GetSpanHtml(SpanColor.Focus));
                        break;

                    default:
                        retRow.Add(item.State.GetDescription());
                        break;
                    }
                    if (item.Disabled)
                    {
                        retRow.Add("禁用".GetSpanHtml("#a94442"));
                    }
                    else
                    {
                        retRow.Add("启用".GetSpanHtml("#3c763d"));
                    }

                    StringBuilder btnHtml = new StringBuilder();
                    btnHtml.AppendFormat("<a class='btn btn-xs btn-primary' href='javascript:;' onclick='TableAjax.ShowLogTable({0},this)'>日志</a>", item.Id);
                    btnHtml.AppendFormat("<a class='btn btn-xs btn-primary' href='javascript:;' onclick='TableAjax.ShowEditModal({0},this)'>编辑</a>", item.Id);
                    if (item.Disabled)
                    {
                        btnHtml.AppendFormat("<a class='btn btn-xs btn-primary' href='javascript:;' onclick='TableAjax.EnableJob({0},this)'>启用</a>", item.Id);
                    }
                    else
                    {
                        btnHtml.AppendFormat("<a class='btn btn-xs btn-primary' href='javascript:;' onclick='TableAjax.DisableJob({0},this)'></i>禁用</a>", item.Id);
                    }

                    if (!item.Disabled)
                    {
                        if (item.State == JobState.Stopped)
                        {
                            btnHtml.AppendFormat("<a class='btn btn-xs btn-primary' href='javascript:;' onclick='TableAjax.StartJob({0},this)'>启动</a>", item.Id);
                        }
                        else if (item.State == JobState.Running)
                        {
                            btnHtml.AppendFormat("<a class='btn btn-xs btn-primary' href='javascript:;' onclick='TableAjax.StopJob({0},this)'>停止</a>", item.Id);
                            btnHtml.AppendFormat("<a class='btn btn-xs btn-primary' href='javascript:;' onclick='TableAjax.FireNowJob({0},this)'>执行一次</a>", item.Id);
                        }
                    }
                    retRow.Add(btnHtml.ToString());
                    retTable.Add(retRow.ToArray());
                    #endregion
                }
            }
            return(Json(new TableResult(retTable, request.Draw, totals)));

            #endregion
        }