/// <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); } } }
/// <summary> /// 添加配置项 /// </summary> /// <param name="dateType"></param> /// <param name="dataType"></param> /// <param name="item"></param> /// <returns></returns> public static bool AddItem(DateType dateType, DataType dataType, T8ConfigItemEntity item) { if (item == null) { return(false); } T8ConfigItemContainer t8ConfigItemContainer; if (T8Config.T8ItemContainerDic.TryGetValue(dateType, out t8ConfigItemContainer)) { if (dataType == DataType.SaleData) { t8ConfigItemContainer.T8ConfigItemSale = item; } else { t8ConfigItemContainer.T8ConfigITemOnShelf = item; } if (_T8ItemContainerDic.TryAdd(dateType, t8ConfigItemContainer)) { T8Config.T8ItemContainerDic = _T8ItemContainerDic; if (SerializableHelper <T8ConfigEntity> .BinarySerializeFile(_T8ConfigFilePath, T8Config)) { _T8ConfigItemDic = new ConcurrentDictionary <string, T8ConfigItemEntity>(); return(true); } else { //T8ConfigItemContainer newitemContainer; //_T8ItemContainerDic.TryRemove(dateType, out newitem); return(false); } } } return(false); }
//public UserCreateTask(T8ConfigItemEntity t8ConfigItem, T8ConfigEntity t8ConfigEntity) : base(t8ConfigItem, t8ConfigEntity) //{ //} public override void InitData(T8ConfigItemEntity t8ConfigItem, T8ConfigEntity t8ConfigEntity) { base._T8ConfigEntity = t8ConfigEntity; base._T8ConfigItemEntity = t8ConfigItem; }
/// <summary> /// 设置初始化数据 /// </summary> /// <param name="t8ConfigItem"></param> /// <param name="t8ConfigEntity"></param> public abstract void InitData(T8ConfigItemEntity t8ConfigItem, T8ConfigEntity t8ConfigEntity);
/// <summary> /// 构建T8任务 /// </summary> private void BuildServiceTask(T8ConfigItemEntity t8ConfigItem, CancellationToken ct) { try { ct.ThrowIfCancellationRequested(); ACreateTask createTaskService = AutoFacContainer.ResolveNamed <ACreateTask>(typeof(ServiceCreateTask).Name); T8TaskEntity t8Task = createTaskService.CreateTask(); if (t8Task != null) { //获取文件名 AFileName aFileNameService = AutoFacContainer.ResolveNamed <AFileName>(typeof(GeneralFileName).Name); t8Task.T8FileEntity.GeneralFileInfo = new T8FileInfoEntity { FileName = aFileNameService.FileName(t8Task.T8FileEntity), FilePath = aFileNameService.FileFullName(t8Task.T8FileEntity) }; T8TaskEntity taskEntityQueueItem; if (Completed_TaskQueue.TryGetValue(t8Task.GenerateTaskQueueKey, out taskEntityQueueItem)) { return; } if (Processing_TaskQueue.TryGetValue(t8Task.GenerateTaskQueueKey, out taskEntityQueueItem)) { return; } if (Error_TaskQueue.TryGetValue(t8Task.GenerateTaskQueueKey, out taskEntityQueueItem)) { return; } //添加到执行中队列 if (!Common.AddTaskToQueue(Processing_TaskQueue, t8Task, TaskQueueType.Processing)) { LogUtil.WriteLog($"任务队列[{t8Task.TaskTitle}]添加失败"); Common.SetTaskErrorStatus(t8Task, "添加Processing_TaskQueue失败"); Common.AddTaskToQueue(Error_TaskQueue, t8Task, TaskQueueType.Error); return; } //构造数据文件产品并执行 DbFileProductDirector director = new DbFileProductDirector(); ADbFileProductBuilder productBuilder = new DbFileProductBuilder(); director.ConstructProduct(productBuilder); DbFileProduct product = productBuilder.GetDbFileProduct(); product.Execute(t8Task, cts.Token); //任务结束 1从Processing_TaskQueue队列移走 2任务完成,移入Completed_TaskQueue队列 3任务失败,移入 if (Common.RemoveTaskFromQueue(Processing_TaskQueue, t8Task, TaskQueueType.Processing)) { if (t8Task.T8TaskStatus == T8TaskStatus.Complete) { Common.AddTaskToQueue(Completed_TaskQueue, t8Task, TaskQueueType.Completed); LogUtil.WriteLog($"T8任务[{t8Task.TaskTitle}]执行完成,转移到Completed_TaskQueue队列"); } else { Common.AddTaskToQueue(Error_TaskQueue, t8Task, TaskQueueType.Error); LogUtil.WriteLog($"T8任务[{t8Task.TaskTitle}]执行失败,转移到Error_TaskQueue队列,等待下次重试"); } } } else { LogUtil.WriteLog("创建任务实体失败"); } } catch (Exception ex) { LogUtil.WriteLog(ex); } }
public void CreateConfig(bool isNewCreate) { if (isNewCreate) { T8ConfigEntity t8ConfigEntity = T8ConfigHelper.T8Config; t8ConfigEntity.PosType = PosType.自定义; t8ConfigEntity.DbFileType = DbFileType.SQLite; t8ConfigEntity.T8ItemContainerDic = new ConcurrentDictionary <DateType, T8ConfigItemContainer>(); t8ConfigEntity.FtpInfo = new FtpInfoEntity { ServerAddress = "ftp://openbook.cn", UserName = "******", UserPassword = "******", ServerDirectory = "upload" }; t8ConfigEntity.DataBaseInfo = new DataBaseInfoEntity { DataBaseTitle = "Sql Server数据库", ServerName = "192.168.0.14", DataBaseName = "T8DataTest", UserName = "******", UserPassword = "******", DataBaseType = DatabaseType.SqlServer }; T8ConfigItemEntity t8ConfigItem = new T8ConfigItemEntity { DateType = DateType.Month, DataType = DataType.SaleData, SqlString = "select ISBN AS '书号',Title '书名',PublishName '出版社',Price '定价',KindName '分类',SalesCount '销量',Author '作者',SalesDateTime '销售时间',StoreID '仓号' FROM T8_BookInfo where SalesDateTime >= @StartTime and SalesDateTime <= @EndTime ", }; T8ConfigItemEntity t8ConfigItemOnSale = new T8ConfigItemEntity { DateType = DateType.Month, DataType = DataType.OnShelfData, SqlString = "select ISBN AS '书号',Title '书名',PublishName '出版社',Price '定价',KindName '分类',SalesCount '销量',Author '作者',SalesDateTime '销售时间',StoreID '仓号' FROM T8_BookInfo where SalesDateTime >= @StartTime and SalesDateTime <= @EndTime ", }; T8ConfigItemContainer container = new T8ConfigItemContainer(); container.T8ConfigItemSale = t8ConfigItem; container.T8ConfigITemOnShelf = t8ConfigItemOnSale; t8ConfigEntity.T8ItemContainerDic.TryAdd(DateType.Month, container); t8ConfigItem = new T8ConfigItemEntity { DateType = DateType.Week, DataType = DataType.SaleData, SqlString = "select ISBN AS '书号',Title '书名',PublishName '出版社',Price '定价',KindName '分类',SalesCount '销量',Author '作者',SalesDateTime '销售时间',StoreID '仓号' FROM T8_BookInfo where SalesDateTime >= @StartTime and SalesDateTime <= @EndTime ", }; t8ConfigItemOnSale = new T8ConfigItemEntity { DateType = DateType.Week, DataType = DataType.OnShelfData, SqlString = "select ISBN AS '书号',Title '书名',PublishName '出版社',Price '定价',KindName '分类',SalesCount '销量',Author '作者',SalesDateTime '销售时间',StoreID '仓号' FROM T8_BookInfo where SalesDateTime >= @StartTime and SalesDateTime <= @EndTime ", }; container = new T8ConfigItemContainer(); container.T8ConfigItemSale = t8ConfigItem; container.T8ConfigITemOnShelf = t8ConfigItemOnSale; t8ConfigEntity.T8ItemContainerDic.TryAdd(DateType.Week, container); T8ConfigHelper.AddT8Config(t8ConfigEntity); } }