/// <summary> /// 添加测试数据 /// </summary> /// <param name="total"></param> /// <param name="consoleLog"></param> public void AddTestData(bool consoleLog = false, int total = 10000000) { Watch.Start(); string[] keyword_0 = { "CH0000000018", "CH0000000005", "CH0000000007", "CH0000000077", "CH0000000077", "CH0000000077", "CH0000000077", "CH0000000018", "CH0000000008", "CH0000000018", }; string[] keyword_1 = { "CHOK", "CHOK", "CHOK", "CHCT", "CHPW", "CHED", "CHPD", "CHOK", "CHOK", "CHOK", }; string[] text_0 = { "<CH0000000018,CHOK,10,3,0000,0000,0000,0,0000,0000,0000,0,0000,0000,0000,3,0000,0000,0000,0,0000,0000,0000,3,0000,0000,0000,3,0000,0000,0000,0,0000,0000,0000,0,0000,0000,0000,0,0000,0000,0000>", "<CH0000000005,CHOK,10,5,0000,0000,0000,5,0000,0000,0000,5,0000,0000,0000,5,0000,0000,0000,5,0000,0000,0000,1,0059,0061,1800,5,0000,0000,0000,5,0000,0000,0000,5,0000,0000,0000,5,0000,0000,0000>", "<CH0000000007,CHOK,10,0,0000,0000,0000,0,0000,0000,0000,0,0000,0000,0000,5,0000,0000,0000,0,0000,0000,0000,5,0000,0000,0000,5,0000,0000,0000,0,0000,0000,0000,5,0000,0000,0000,5,0000,0000,0000>", "<CH0000000077,CHCT,05,0,000000000000>", "<CH0000000077,CHPW,05,1,0020,0020,0600>", "<CH0000000077,CHED,05,02,0000,0000,00000,000000000000>", "<CH0000000077,CHPD,06,88885645>", "<CH0000000018,CHOK,10,1,0124,0120,0360,0,0000,0000,0000,0,0000,0000,0000,3,0000,0000,0000,5,0000,0000,0000,3,0000,0000,0000,3,0000,0000,0000,3,0000,0000,0000,1,0350,0346,0450,5,0000,0000,0000>", "<CH0000000008,CHOK,10,5,0000,0000,0000,5,0000,0000,0000,5,0000,0000,0000,5,0000,0000,0000,5,0000,0000,0000,5,0000,0000,0000,5,0000,0000,0000,5,0000,0000,0000,5,0000,0000,0000,5,0000,0000,0000>", "<CH0000000018,CHOK,10,1,0129,0124,0360,0,0000,0000,0000,0,0000,0000,0000,3,0000,0000,0000,5,0000,0000,0000,3,0000,0000,0000,3,0000,0000,0000,3,0000,0000,0000,1,0354,0353,0450,5,0000,0000,0000>", }; string[] text_1 = { "设备编号为:CH0000000018的设备心跳包情况如下:01号插座状态:已停止充电_充电时限到;负载功率为:0当前功率为:0;充电时长为:0;02号插座状态:正常启动后未充电;负载功率为:0当前功率为:0;充电时长为:0;03号插座状态:正常启动后未充电;负载功率为:0当前功率为:0;充电时长为:0;04号插座状态:已停止充电_充电时限到;负载功率为:0当前功率为:0;充电时长为:0;05号插座状态:正常启动后未充电;负载功率为:0当前功率为:0;充电时长为:0;06号插座状态:已停止充电_充电时限到;负载功率为:0当前功率为:0;充电时长为:0;07号插座状态:已停止充电_充电时限到;负载功率为:0当前功率为:0;充电时长为:0;08号插座状态:正常启动后未充电;负载功率为:0当前功率为:0;充电时长为:0;09号插座状态:正常启动后未充电;负载功率为:0当前功率为:0;充电时长为:0;10号插座状态:正常启动后未充电;负载功率为:0当前功率为:0;充电时长为:0;", "设备编号为:CH0000000005的设备心跳包情况如下:01号插座状态:已停止充电_充电后一分钟内一直无功率或非常小_即充电已充满或保险丝断;负载功率为:0当前功率为:0;充电时长为:0;02号插座状态:已停止充电_充电后一分钟内一直无功率或非常小_即充电已充满或保险丝断;负载功率为:0当前功率为:0;充电时长为:0;03号插座状态:已停止充电_充电后一分钟内一直无功率或非常小_即充电已充满或保险丝断;负载功率为:0当前功率为:0;充电时长为:0;04号插座状态:已停止充电_充电后一分钟内一直无功率或非常小_即充电已充满或保险丝断;负载功率为:0当前功率为:0;充电时长为:0;05号插座状态:已停止充电_充电后一分钟内一直无功率或非常小_即充电已充满或保险丝断;负载功率为:0当前功率为:0;充电时长为:0;06号插座状态:正在充电;负载功率为:59当前功率为:61;充电时长为:1800;07号插座状态:已停止充电_充电后一分钟内一直无功率或非常小_即充电已充满或保险丝断;负载功率为:0当前功率为:0;充电时长为:0;08号插座状态:已停止充电_充电后一分钟内一直无功率或非常小_即充电已充满或保险丝断;负载功率为:0当前功率为:0;充电时长为:0;09号插座状态:已停止充电_充电后一分钟内一直无功率或非常小_即充电已充满或保险丝断;负载功率为:0当前功率为:0;充电时长为:0;10号插座状态:已停止充电_充电后一分钟内一直无功率或非常小_即充电已充满或保险丝断;负载功率为:0当前功率为:0;充电时长为:0;", "设备编号为:CH0000000007的设备心跳包情况如下:01号插座状态:正常启动后未充电;负载功率为:0当前功率为:0;充电时长为:0;02号插座状态:正常启动后未充电;负载功率为:0当前功率为:0;充电时长为:0;03号插座状态:正常启动后未充电;负载功率为:0当前功率为:0;充电时长为:0;04号插座状态:已停止充电_充电后一分钟内一直无功率或非常小_即充电已充满或保险丝断;负载功率为:0当前功率为:0;充电时长为:0;05号插座状态:正常启动后未充电;负载功率为:0当前功率为:0;充电时长为:0;06号插座状态:已停止充电_充电后一分钟内一直无功率或非常小_即充电已充满或保险丝断;负载功率为:0当前功率为:0;充电时长为:0;07号插座状态:已停止充电_充电后一分钟内一直无功率或非常小_即充电已充满或保险丝断;负载功率为:0当前功率为:0;充电时长为:0;08号插座状态:正常启动后未充电;负载功率为:0当前功率为:0;充电时长为:0;09号插座状态:已停止充电_充电后一分钟内一直无功率或非常小_即充电已充满或保险丝断;负载功率为:0当前功率为:0;充电时长为:0;10号插座状态:已停止充电_充电后一分钟内一直无功率或非常小_即充电已充满或保险丝断;负载功率为:0当前功率为:0;充电时长为:0;", "设备编号为:CH0000000077的设备充电情况如下:05号插座充电状态:设置成功,订单编号:000000000000", "<CH0000000077,CHPW,05,1,0020,0020,0600>", "设备编号为:CH0000000077的设备充电结束,订单编号:000000000000,充电情况如下:05号插座充电口状态:已停止充电_用户后台设置主动停止充电,负载功率0,充电时长:0,扣费金额:0", "<CH0000000077,CHPD,06,88885645>", "设备编号为:CH0000000018的设备心跳包情况如下:01号插座状态:正在充电;负载功率为:124当前功率为:120;充电时长为:360;02号插座状态:正常启动后未充电;负载功率为:0当前功率为:0;充电时长为:0;03号插座状态:正常启动后未充电;负载功率为:0当前功率为:0;充电时长为:0;04号插座状态:已停止充电_充电时限到;负载功率为:0当前功率为:0;充电时长为:0;05号插座状态:已停止充电_充电后一分钟内一直无功率或非常小_即充电已充满或保险丝断;负载功率为:0当前功率为:0;充电时长为:0;06号插座状态:已停止充电_充电时限到;负载功率为:0当前功率为:0;充电时长为:0;07号插座状态:已停止充电_充电时限到;负载功率为:0当前功率为:0;充电时长为:0;08号插座状态:已停止充电_充电时限到;负载功率为:0当前功率为:0;充电时长为:0;09号插座状态:正在充电;负载功率为:350当前功率为:346;充电时长为:450;10号插座状态:已停止充电_充电后一分钟内一直无功率或非常小_即充电已充满或保险丝断;负载功率为:0当前功率为:0;充电时长为:0;", "设备编号为:CH0000000008的设备心跳包情况如下:01号插座状态:已停止充电_充电后一分钟内一直无功率或非常小_即充电已充满或保险丝断;负载功率为:0当前功率为:0;充电时长为:0;02号插座状态:已停止充电_充电后一分钟内一直无功率或非常小_即充电已充满或保险丝断;负载功率为:0当前功率为:0;充电时长为:0;03号插座状态:已停止充电_充电后一分钟内一直无功率或非常小_即充电已充满或保险丝断;负载功率为:0当前功率为:0;充电时长为:0;04号插座状态:已停止充电_充电后一分钟内一直无功率或非常小_即充电已充满或保险丝断;负载功率为:0当前功率为:0;充电时长为:0;05号插座状态:已停止充电_充电后一分钟内一直无功率或非常小_即充电已充满或保险丝断;负载功率为:0当前功率为:0;充电时长为:0;06号插座状态:已停止充电_充电后一分钟内一直无功率或非常小_即充电已充满或保险丝断;负载功率为:0当前功率为:0;充电时长为:0;07号插座状态:已停止充电_充电后一分钟内一直无功率或非常小_即充电已充满或保险丝断;负载功率为:0当前功率为:0;充电时长为:0;08号插座状态:已停止充电_充电后一分钟内一直无功率或非常小_即充电已充满或保险丝断;负载功率为:0当前功率为:0;充电时长为:0;09号插座状态:已停止充电_充电后一分钟内一直无功率或非常小_即充电已充满或保险丝断;负载功率为:0当前功率为:0;充电时长为:0;10号插座状态:已停止充电_充电后一分钟内一直无功率或非常小_即充电已充满或保险丝断;负载功率为:0当前功率为:0;充电时长为:0;", "设备编号为:CH0000000018的设备心跳包情况如下:01号插座状态:正在充电;负载功率为:129当前功率为:124;充电时长为:360;02号插座状态:正常启动后未充电;负载功率为:0当前功率为:0;充电时长为:0;03号插座状态:正常启动后未充电;负载功率为:0当前功率为:0;充电时长为:0;04号插座状态:已停止充电_充电时限到;负载功率为:0当前功率为:0;充电时长为:0;05号插座状态:已停止充电_充电后一分钟内一直无功率或非常小_即充电已充满或保险丝断;负载功率为:0当前功率为:0;充电时长为:0;06号插座状态:已停止充电_充电时限到;负载功率为:0当前功率为:0;充电时长为:0;07号插座状态:已停止充电_充电时限到;负载功率为:0当前功率为:0;充电时长为:0;08号插座状态:已停止充电_充电时限到;负载功率为:0当前功率为:0;充电时长为:0;09号插座状态:正在充电;负载功率为:354当前功率为:353;充电时长为:450;10号插座状态:已停止充电_充电后一分钟内一直无功率或非常小_即充电已充满或保险丝断;负载功率为:0当前功率为:0;充电时长为:0;", }; ProgressBar progressBar = null; var CPUUsage = CPUHelper.CPUUsageInfo().ToList(); int CPULowUsageCount = CPUUsage.Count(u => u < 30); if (CPULowUsageCount == 0) { CPULowUsageCount = 1; } if (consoleLog) { Console.WriteLine($"总计插入{total}条数据..."); progressBar = new ProgressBar(CPULowUsageCount, 100, ProgressBar.ProgressBarType.Multicolor); } var bulk = new int[CPULowUsageCount, 3]; var avg = total / CPULowUsageCount; if (avg % 100 > 0) { avg = avg / 100 * 100; } Task[] tasks = new Task[CPULowUsageCount]; for (int i = 0; i < CPULowUsageCount; i++) { var curr_i = i; bulk[curr_i, 0] = avg; bulk[curr_i, 2] = 0; if (curr_i == CPULowUsageCount - 1) { bulk[curr_i, 0] += total - avg * CPULowUsageCount; } bulk[curr_i, 1] = bulk[curr_i, 0]; tasks[i] = Task.Run(() => { while (bulk[curr_i, 1] != 0) { int curr = bulk[curr_i, 1] > 1000 ? 1000 : bulk[curr_i, 1]; int state = random.Next(0, keyword_0.Length - 1); List <ElasticsearchTestModel> models = new List <ElasticsearchTestModel>(); for (int j = 0; j < curr; j++) { models.Add(new ElasticsearchTestModel() { Id = SnowflakeId.NewSnowflakeId().Id, CreatedTime = DateTime.Now, Type = random.Next(int.MinValue, int.MaxValue), Score = random.NextDouble(), Distance = Convert.ToDecimal(random.NextDouble()), Kewword_0 = keyword_0[state], Kewword_1 = keyword_1[state], Text_0 = text_0[state], Text_1 = text_1[state] }); } bulk[curr_i, 1] -= curr; bulk[curr_i, 2] += curr; ESHelper.AddBulk(models, true); if (consoleLog) { progressBar.Normal((decimal)bulk[curr_i, 2] / bulk[curr_i, 0] * 100, $"{ bulk[curr_i, 2]}条", curr_i); } } IsOver(); }); } Task.WaitAll(tasks); void IsOver() { lock (Watch) { for (int e = 0; e < bulk.Length / 3; e++) { if (bulk[e, 1] != 0) { break; } if (e == bulk.Length / 3 - 1) { Watch.Stop(); Console.WriteLine($"耗时:{Watch.ElapsedMilliseconds} ms"); } } } } }
//classes injected using dependancy injection public VoiceRecognitionHandler(FileSystemHelper fileSystemHelper, VoiceRecognitionHelper voiceRecognitionHelper, CPUHelper cpuHelper) { _fileSystemHelper = fileSystemHelper; _voiceRecognitionHelper = voiceRecognitionHelper; _cpuHelper = cpuHelper; }