/// <summary>
        /// 重载基类算法,查看队列服务是否正常
        /// </summary>
        /// <returns></returns>
        internal override string GenerateData()
        {
            var mqAddress  = JobParamsDoc.Text("MQAddress");
            var mqPassWord = JobParamsDoc.Text("MQAuthorization");

            //http://192.168.185.173:15672/api/queues
            Core.HttpHelper http = new Core.HttpHelper();
            HttpItem        item = new HttpItem()
            {
                URL       = mqAddress,
                Accept    = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
                UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
            };

            item.Header.Add("Authorization", "Basic YW50YXBvczphbnRhcG9z");
            var result = http.GetHtml(item);

            if (result.StatusCode != System.Net.HttpStatusCode.OK)
            {
                var messageInfo = new PushMessageInfo()
                {
                    content        = "RabbitMQ服务停止预警",
                    approvalUserId = this.JobParamsDoc.Text("approvalUserId"),
                    errorMessage   = $"{mqAddress}rabbitMQ队列服务出错",
                    customerCode   = SysAppConfig.CustomerCode,
                    logType        = "1"
                };
                return(messageInfo.ToJson());
            }
            return(string.Empty);
        }
        /// <summary>
        /// 重载基类算法,注意如果重复读取可能发生数据重复发送邮件
        /// </summary>
        /// <returns></returns>
        internal override string GenerateData()
        {
            var rabbitQueueMessageType = JobParamsDoc.Text("MQMessageType");
            var rabbitMQVirtualHost    = JobParamsDoc.Text("MQVirtualHost");
            var RetryCount             = JobParamsDoc.Text("RetryCount");
            var tableName = $"{rabbitQueueMessageType}_{rabbitMQVirtualHost}_{DateTime.Now.ToString("yyyy-MM")}";

            var week           = DateTime.Now.DayOfWeek;
            var retryTimeQuery = Query.And(Query.NE("DeQueueStage", 1), Query.GTE("EnQueueStage", 3)); //重试入队多次
            var query          = Query.Or(retryTimeQuery, Query.Exists("errorMsgs", true));            //有错误消息
            var limit          = 20;
            //获取当前登录状态
            var recordCount    = dataOp.FindCount(tableName, query);
            var topRecoredList = dataOp.FindLimitFieldsByQuery(tableName, query, new MongoDB.Driver.SortByDocument()
            {
            }, 0, limit, new string[] { "messageID", "errorMsgs", "MessageRouter", "MessageBody", "EnQueueStage" }).ToList();

            //2015.4.13 新增错误日志发送到125.77.255.2:8023端口进行存储,后续迁移
            if (!topRecoredList.Any())
            {
                return(string.Empty);
            }
            JobLogger.Info($"队列执行错误个数:{recordCount}");
            var errorMessage = new StringBuilder();

            errorMessage.AppendLine($"{DateTime.Now.ToString("yyyy-MM")}捕获到队列执行异常数据${recordCount}条.前{limit}内容如下:\n\r");
            topRecoredList.ForEach(doc =>
            {
                errorMessage.AppendLine($"{doc.ToJson()}");
            });
            var approvalUserId = this.JobParamsDoc.Text("approvalUserId");

            var messageInfo = new PushMessageInfo()
            {
                content        = $"小票上传重试错误预警,失败条数:{recordCount}",
                approvalUserId = approvalUserId,
                errorMessage   = errorMessage.ToString(),
                customerCode   = SysAppConfig.CustomerCode,
                logType        = "1"
            };

            return(messageInfo.ToJson());
        }
        /// <summary>
        /// 从数据库中调用EUR_DEADLOCK_DETAIL
        /// TimePoint  statement_parameter_k statement_k statement_parameter [statement] waitresource_k waitresource
        /// isolationlevel_k isolationlevel waittime_k waittime
        ///clientapp_k clientapp hostname_k hostname
        /// </summary>
        /// <returns></returns>
        internal override string GenerateData()
        {
            //获取异常数据的接口地址通过pos站点数据
            var posUrl = JobParamsDoc.Text("PosUrl");
            var result = GetHtml(posUrl);

            if (result.StatusCode == System.Net.HttpStatusCode.OK)
            {
                try
                {
                    var resultDoc = MongoDB.Bson.Serialization.BsonSerializer.Deserialize <BsonDocument>(result.Html);
                    if (!resultDoc.ContainsColumn("data") || string.IsNullOrEmpty(resultDoc.Text("data")))
                    {
                        return(string.Empty);
                    }
                    var detailDetailInfo = string.Empty;
                    var deadLockList     = MongoDB.Bson.Serialization.BsonSerializer.Deserialize <List <BsonDocument> >(resultDoc.Text("data"));
                    if (deadLockList.Count() > 0)
                    {
                        //返回解析后的内容字符串
                        detailDetailInfo  = GetDetailFromJson(deadLockList);
                        detailDetailInfo += "详情请通过exec EUR_DEADLOCK_DETAIL 进行查询";
                        var messageInfo = new PushMessageInfo()
                        {
                            content        = "数据库死锁预警",
                            approvalUserId = this.JobParamsDoc.Text("approvalUserId"),
                            errorMessage   = detailDetailInfo,
                            customerCode   = SysAppConfig.CustomerCode,
                            logType        = "1"
                        };
                        return(messageInfo.ToJson());
                    }
                } catch (Exception ex)
                {
                }
            }
            return(string.Empty);
        }
        /// <summary>
        /// 重载基类算 定时发送邮件
        /// </summary>
        /// <returns></returns>
        internal override string GenerateData()
        {
            var errorMessage = new StringBuilder();
            var RetryCount   = JobParamsDoc.Text("RetryCount");
            var tableName    = "SystemMessagePushQueue";
            var _MongoOp     = MongoOpCollection.GetMongoOp(CusAppConfig.MasterDataBaseConnectionString);
            var _dataop      = new Yinhe.ProcessingCenter.DataOperation(_MongoOp);
            var query        = Query.And(Query.NE("sendStatus", "1"));//有错误消息
            var limit        = 20;
            //获取当前登录状态
            var topRecoredList = _dataop.FindLimitFieldsByQuery(tableName, query, new MongoDB.Driver.SortByDocument()
            {
            }, 0, limit, new string[] { "title", "content", "arrivedUserIds", "sendDate" }).ToList();
            var sendUserIds    = topRecoredList.Select(c => (BsonValue)c.Text("arrivedUserIds"));
            var sendUserList   = _dataop.FindAll("SysUser").SetFields("emailAddr", "userId").ToList();
            var titileDistinct = new List <int>();
            var smtp           = SmtpHelper.loadSmtpInfo();
            var resultJson     = string.Empty;

            //对重复的titile内容进行过滤减少展示
            foreach (var messageInfo in topRecoredList)
            {
                var sendDate = messageInfo.Text("sendDate");
                ///时间过滤控制
                if (!string.IsNullOrEmpty(sendDate))
                {
                    //时间生成
                    var curDate = DateTime.Now;

                    if (sendDate.Contains("yyyy"))
                    {
                        sendDate = sendDate.Replace("yyyy", curDate.Year.ToString());
                    }
                    if (sendDate.Contains("MM"))
                    {
                        sendDate = sendDate.Replace("MM", curDate.Month.ToString());
                    }
                    if (sendDate.Contains("dd"))
                    {
                        sendDate = sendDate.Replace("dd", curDate.Day.ToString());
                    }
                    if (sendDate.Contains("hh"))
                    {
                        sendDate = sendDate.Replace("hh", curDate.Hour.ToString());
                    }
                    if (sendDate.Contains("mm"))
                    {
                        sendDate = sendDate.Replace("mm", curDate.Minute.ToString());
                    }
                    if (sendDate.Contains("ss"))
                    {
                        sendDate = sendDate.Replace("ss", curDate.Second.ToString());
                    }
                    DateTime messSendDate;
                    if (DateTime.TryParse(sendDate, out messSendDate))
                    {
                        //整小时发送,修正为匹配分钟,15分钟内
                        if (curDate.Year == messSendDate.Year && curDate.Month == messSendDate.Month && curDate.Day == messSendDate.Day && curDate.Hour == messSendDate.Hour && Math.Abs(curDate.Minute - messSendDate.Minute) <= 30)
                        {
                        }
                        else //时间不匹配需要进行重新轮询时间
                        {
                            continue;
                        }
                    }
                }
                var title   = messageInfo.Text("title");
                var hasCode = title.GetHashCode();

                var content    = messageInfo.Text("content");
                var hitUserIds = messageInfo.Text("arrivedUserIds");
                if (string.IsNullOrEmpty(hitUserIds))
                {
                    hitUserIds = "1";                                                  //发给管理员
                }
                var arrivedUserIds = hitUserIds.SplitParam(new string[] { ",", "|" }); //获取发送人的邮箱


                var hitUsers = sendUserList.Where(c => arrivedUserIds.Any(d => d == c.Text("userId"))).ToList();
                if (hitUsers == null)
                {
                    continue;
                }

                //邮件地址隔开
                var mailAddressArr = new List <string>();
                hitUsers.ForEach(c => {
                    mailAddressArr.AddRange(c.Text("emailAddr").SplitParam(new string[] { ",", "|" }));
                });
                try
                {
                    title = title.Replace("\r", " ");
                    title = title.Replace("\n", " ");
                    var mailMessage = SmtpHelper.buildMailMessage(mailAddressArr.Distinct().ToList(), content, title);
                    smtp.SendAsync(mailMessage, null);
                    DBChangeQueue.Instance.EnQueue(new Yinhe.ProcessingCenter.DataRule.StorageData()
                    {
                        Document = new BsonDocument().Add("sendStatus", "1"),
                        Name     = tableName,
                        Query    = Query.EQ("_id", ObjectId.Parse(messageInfo.Text("_id"))),
                        Type     = Yinhe.ProcessingCenter.DataRule.StorageType.Update
                    });
                }
                catch (Exception ex)
                {
                    errorMessage.AppendFormat("发送邮件错误:{0},请查看调度器服务配置", ex.Message);
                }
                //防止重复发送
                if (!titileDistinct.Contains(title.GetHashCode()))
                {
                    titileDistinct.Add(hasCode);
                }
                else
                {
                    continue;
                }
            }
            if (DBChangeQueue.Instance.Count > 0)
            {
                StartDbChangeHelper.StartDbChangeProcessQuick(_MongoOp);
            }
            if (!string.IsNullOrEmpty(errorMessage.ToString()))
            {
                var remoteMessageInfo = new Yinhe.ProcessingCenter.PushMessageInfo()
                {
                    content        = "邮件发送预警",
                    approvalUserId = this.JobParamsDoc.Text("approvalUserId"),
                    errorMessage   = errorMessage.ToString(),
                    customerCode   = Yinhe.ProcessingCenter.SysAppConfig.CustomerCode,
                    logType        = "1"
                };
                return(remoteMessageInfo.ToJson());
            }

            return(errorMessage.ToString());
        }