/// <summary>
        /// 迭代T8配置项
        /// </summary>
        private void IteratonT8TaskItems()
        {
            int intervaltime = 1000 * 60 * 5;//迭代完毕间隔5分钟再重新迭代

            while (!cts.IsCancellationRequested)
            {
                foreach (KeyValuePair <string, T8ConfigItemEntity> item in T8ConfigItemDic)
                {
                    if (cts.IsCancellationRequested)
                    {
                        break;
                    }

                    T8ConfigItemEntity      t8ConfigItem   = item.Value;
                    TimingQueryTimeStragety timingStragety = new BuildInstanceObject().GetTimingQueryTimeStragety(t8ConfigItem.DateType);
                    DateTime TimingStartTime = timingStragety.GetStartTime(DateTime.Now);
                    DateTime TimingEndTime   = timingStragety.GetStartTime(DateTime.Now);

                    if (DateTime.Now >= TimingStartTime && DateTime.Now <= TimingEndTime)
                    {
                        Task.Factory.StartNew(() => BuildServiceTask(t8ConfigItem, cts.Token));
                    }
                }

                for (int i = 0; i < intervaltime; i++)
                {
                    if (cts.IsCancellationRequested)
                    {
                        break;
                    }
                    Thread.Sleep(1000);
                }
            }
        }
        public override void BuildUploadFile()
        {
            Action <T8TaskEntity> action = t8Task =>
            {
                try
                {
                    if (!File.Exists(t8Task.T8FileEntity.CompressFileInfo.FilePath))
                    {
                        throw new Exception($"开始上传FTP服务器,发现数据库文件:{t8Task.T8FileEntity.CompressFileInfo.FilePath}不存在");
                    }

                    GenerateFileNameStragety fileStragety   = new BuildInstanceObject().GetGenerateFileNameStragety(3);
                    T8FileInfoEntity         fileInfoEntity = new T8FileInfoEntity();
                    fileInfoEntity.FileGenerateTime = DateTime.Now;
                    fileInfoEntity.FileName         = fileStragety.FileName(t8Task.T8FileEntity);
                    fileInfoEntity.FilePath         = fileStragety.FileFullName(t8Task.T8FileEntity);

                    //FileHelper.ZipFile(t8Task.T8FileEntity.GeneralFileInfo.FilePath, fileInfoEntity.FilePath);
                    FtpHelper.UploadFile(t8Task.T8FileEntity.FtpInfo, fileInfoEntity);

                    t8Task.T8FileEntity.StepStatus = StepStatus.UploadFile;

                    LogUtil.WriteLog($"压缩数据库文件[{fileInfoEntity.FilePath}]完成");
                }
                catch (Exception ex)
                {
                    Common.SetTaskErrorStatus(t8Task, $"BuildUploadFile()[{ex.Message}]");
                    LogUtil.WriteLog(ex);
                    throw new Exception(ex.Message);
                }
            };

            product.AddPart(action);
        }
        public override void BuildDbFile()
        {
            Action <T8TaskEntity> action = t8Task =>
            {
                try
                {
                    t8Task.T8TaskStatus = T8TaskStatus.Executing;

                    //1得到数据库文件路径
                    GenerateFileNameStragety fileStragety   = new BuildInstanceObject().GetGenerateFileNameStragety(1);
                    T8FileInfoEntity         fileInfoEntity = new T8FileInfoEntity();
                    fileInfoEntity.FileName             = fileStragety.FileName(t8Task.T8FileEntity);
                    fileInfoEntity.FilePath             = fileStragety.FileName(t8Task.T8FileEntity);
                    fileInfoEntity.FileGenerateTime     = DateTime.Now;
                    t8Task.T8FileEntity.GeneralFileInfo = fileInfoEntity;


                    //2创建数据库文件并添加数据
                    IDatabase databaseService = DatabaseFactory.CreateDatabase(t8Task.T8FileEntity.DataBaseInfo);
                    databaseService.ExecuteDataToDBFile(t8Task.T8FileEntity.DbFileType, fileInfoEntity.FilePath, t8Task.T8FileEntity.SqlString, t8Task.T8FileEntity.SqlStartTime, t8Task.T8FileEntity.SqlEndTime);


                    t8Task.T8FileEntity.StepStatus = StepStatus.GenerateFile;
                    LogUtil.WriteLog($"数据库文件[{fileInfoEntity.FilePath}]创建并添加数据完成");
                }
                catch (Exception ex)
                {
                    Common.SetTaskErrorStatus(t8Task, $"BuildDbFile()[{ex.Message}]");
                    LogUtil.WriteLog(ex);
                    throw new Exception(ex.Message);
                }
            };

            product.AddPart(action);
        }
        public override void BackupDbFile()
        {
            //备份文件异常不影响程序功能,所以出现异常也会默认任务成功,只是在任务中做个备注
            Action <T8TaskEntity> action = t8Task =>
            {
                try
                {
                    if (!File.Exists(t8Task.T8FileEntity.CompressFileInfo.FilePath))
                    {
                        throw new FileNotFoundException($"上传文件:{t8Task.T8FileEntity.CompressFileInfo.FilePath}不存在");
                    }

                    GenerateFileNameStragety fileStragety   = new BuildInstanceObject().GetGenerateFileNameStragety(3);
                    T8FileInfoEntity         fileInfoEntity = new T8FileInfoEntity();
                    fileInfoEntity.FileGenerateTime        = DateTime.Now;
                    fileInfoEntity.FileName                = fileStragety.FileName(t8Task.T8FileEntity);
                    fileInfoEntity.FilePath                = fileStragety.FileFullName(t8Task.T8FileEntity);
                    t8Task.T8FileEntity.UploadBackFileInfo = fileInfoEntity;

                    bool isMoveSucess = FileHelper.MoveFile(t8Task.T8FileEntity.CompressFileInfo.FilePath, fileInfoEntity.FilePath);
                    if (!isMoveSucess)
                    {
                        throw new Exception($"压缩文件{t8Task.T8FileEntity.CompressFileInfo.FilePath}备份失败");
                    }

                    t8Task.T8FileEntity.StepStatus = StepStatus.BackupUploadFile;
                    t8Task.CompleteTime            = DateTime.Now;
                    t8Task.T8TaskStatus            = T8TaskStatus.Complete;
                }
                catch (Exception ex)
                {
                    t8Task.T8FileEntity.StepStatus = StepStatus.BackupUploadFile;


                    t8Task.CompleteTime = DateTime.Now;
                    t8Task.T8TaskStatus = T8TaskStatus.Complete;
                    t8Task.Content      = t8Task.Content + (!string.IsNullOrEmpty(t8Task.Content) ? $"\r\n{ex.Message}" : ex.Message);
                    LogUtil.WriteLog(ex.Message);
                }
            };

            product.AddPart(action);
        }