/// <summary> /// 数据转置 /// </summary> private static void TransferData(object obj) { IVTestDataTransferThreadWrapper wrapper = obj as IVTestDataTransferThreadWrapper; if (wrapper == null) { return; } TransferData(wrapper); }
/// <summary> /// 数据转置 /// </summary> private static void TransferData(IVTestDataTransferThreadWrapper wrapper) { while (wrapper.Loop) { IVTestConfigElement cfg = wrapper.IVTestConfig; IVTestDeviceType tpye = cfg.Type; DateTime dtStartTime = DateTime.Now; string accConString = string.Empty; string msg = string.Empty; try { //通过获取的设备类型进行上传方式的 switch (tpye) { case IVTestDeviceType.Pasan: case IVTestDeviceType.Results: case IVTestDeviceType.SunData: if (!string.IsNullOrEmpty(cfg.Path)) { accConString = string.Format("Provider={0};Data Source={1}", cfg.AccessProvider, cfg.Path); int count = ExecuteDataTransfer(accConString, cfg); DateTime dtEndTime = DateTime.Now; if (count > 0) { msg = string.Format("IVTestDataTransfer--开始时间:{0};结束时间:{1};耗用时间:{2}秒;转置数据数量:{3}。{4}", dtStartTime, dtEndTime, (dtEndTime - dtStartTime).TotalSeconds, count, cfg.Path); LoggingService.Info(msg); } } else { msg = string.Format("IVTestDataTransfer--开始时间:{0};获取ACCESS数据库文件失败。", dtStartTime); LoggingService.Info(msg); } break; case IVTestDeviceType.PasanPostGre: if (!string.IsNullOrEmpty(cfg.DatabaseAddress) && !string.IsNullOrEmpty(cfg.DatabaseName) && !string.IsNullOrEmpty(cfg.DatabasePort) && !string.IsNullOrEmpty(cfg.DatabaseLoginName) && !string.IsNullOrEmpty(cfg.DatabaseLoginPassword)) { accConString = string.Format("Server={0};Port={1};UserId={2};Password={3};Database={4};", cfg.DatabaseAddress, cfg.DatabasePort, cfg.DatabaseLoginName, cfg.DatabaseLoginPassword, cfg.DatabaseName); int count = ExecuteDataTransfer(accConString, cfg); DateTime dtEndTime = DateTime.Now; if (count > 0) { msg = string.Format("IVTestDataTransfer--开始时间:{0};结束时间:{1};耗用时间:{2}秒;转置数据数量:{3}。{4}", dtStartTime, dtEndTime, (dtEndTime - dtStartTime).TotalSeconds, count, cfg.Path); LoggingService.Info(msg); } } else { msg = string.Format("IVTestDataTransfer--开始时间:{0};连接数据库配置信息异常。", dtStartTime); LoggingService.Info(msg); } break; default: break; } } catch (Exception ex) { LoggingService.Error(string.Format("IVTestDataTransfer--Error:{0}", ex.Message)); } if (wrapper.Loop) { Thread.Sleep(cfg.Millisecond); } } wrapper.AutoResetEvent.Set(); }
/// <summary> /// 执行命令。 /// </summary> public override void Run() { IVTestConfigElement cfg = null; string type = PropertyService.Get(PROPERTY_FIELDS.IVTEST_DATA_TYPE).Trim(); string device = PropertyService.Get(PROPERTY_FIELDS.IVTEST_DATA_DEVICE).Trim(); if (!string.IsNullOrEmpty(type) & !string.IsNullOrEmpty(device)) { IVTestDeviceType dvType = (IVTestDeviceType)Enum.Parse(typeof(IVTestDeviceType), type, true); switch (type) { case "1": case "2": case "3": string path = PropertyService.Get(PROPERTY_FIELDS.IVTEST_DATA_PATH).Trim(); if (!string.IsNullOrEmpty(path)) { cfg = new IVTestConfigElement(device, path, dvType); //重新启动IV测试数据转置线程。 if (ThreadWrapper.Loop) { ThreadWrapper.Stop(); } ThreadWrapper.Start(cfg); } break; case "4": string databaseAddress = PropertyService.Get(PROPERTY_FIELDS.IVTEST_DATA_DB_ADDRESS).Trim(); string databaseName = PropertyService.Get(PROPERTY_FIELDS.IVTEST_DATA_DB_NAME).Trim(); string databasePort = PropertyService.Get(PROPERTY_FIELDS.IVTEST_DATA_DB_PORT).Trim(); string databaseLoginName = PropertyService.Get(PROPERTY_FIELDS.IVTEST_DATA_DB_LGNAME).Trim(); string databaseLoginPassword = PropertyService.Get(PROPERTY_FIELDS.IVTEST_DATA_DB_LGPW).Trim(); if (!string.IsNullOrEmpty(databaseAddress) && !string.IsNullOrEmpty(databaseName) && !string.IsNullOrEmpty(databasePort) && !string.IsNullOrEmpty(databaseLoginName) && !string.IsNullOrEmpty(databaseLoginPassword) ) { cfg = new IVTestConfigElement(device, databaseAddress, databaseName, databasePort, databaseLoginName, databaseLoginPassword, dvType); //重新启动IV测试数据转置线程。 if (ThreadWrapper.Loop) { ThreadWrapper.Stop(); } ThreadWrapper.Start(cfg); } break; default: break; } } else { if (_wrapper != null) { _wrapper.Stop(); _wrapper.Dispose(); _wrapper = null; } } }