From ccdc52ce62a04a67ada78e0d4517dfb002ab36c9 Mon Sep 17 00:00:00 2001 From: jiahao Date: Mon, 25 Sep 2023 11:47:19 +0800 Subject: [PATCH] debug add log --- .../Quartz/Jobs/ArchiveElectricMeterDayJob.cs | 64 ++++++++++--------- .../Implement/ProcEletricMeterService.cs | 48 ++++++++++---- 2 files changed, 68 insertions(+), 44 deletions(-) diff --git a/BackendWorkerService/Quartz/Jobs/ArchiveElectricMeterDayJob.cs b/BackendWorkerService/Quartz/Jobs/ArchiveElectricMeterDayJob.cs index 4b40988..26fabdf 100644 --- a/BackendWorkerService/Quartz/Jobs/ArchiveElectricMeterDayJob.cs +++ b/BackendWorkerService/Quartz/Jobs/ArchiveElectricMeterDayJob.cs @@ -85,11 +85,11 @@ namespace BackendWorkerService.Quartz.Jobs var electricMeters = await backgroundServiceRepository.GetAllAsync("device", sWhere_E4); var waterMeters = await backgroundServiceRepository.GetAllAsync("device", sWhere_W1); - var device_test = electricMeters.Where(e => e.Device_number == "NTPC_G6_EE_E4_B1F_CB3_WHT_N1").First(); - if (device_test != null) - { - logger.LogInformation($@"s1 devie_number = NTPC_G6_EE_E4_B1F_CB3_WHT_N1 archive_lastActionDate={device_test.archive_lastActionDate} archive_lastDate={device_test.archive_lastDate}"); - } + //var device_test = electricMeters.Where(e => e.Device_number == "NTPC_G6_EE_E4_B1F_CB3_WHT_N1").First(); + //if (device_test != null) + //{ + // logger.LogInformation($@"s1 devie_number = NTPC_G6_EE_E4_B1F_CB3_WHT_N1 archive_lastActionDate={device_test.archive_lastActionDate} archive_lastDate={device_test.archive_lastDate}"); + //} #endregion 找出所有電錶設備 #region 找出所有電錶系統的點位 @@ -106,6 +106,10 @@ namespace BackendWorkerService.Quartz.Jobs { if (electricMeter.device_building_tag == point.device_building_tag) { + if (electricMeter.Device_number == "NTPC_G6_EE_E4_B1F_CB3_WHT_N1") + { + logger.LogInformation($@"putin value NTPC_G6_EE_E4_B1F_CB3_WHT_N1 ={electricMeter.archive_lastDate} archive_lastActionDate={electricMeter.archive_lastActionDate}"); + } DeviceNumberPoint deviceNumberPoint = new DeviceNumberPoint(); deviceNumberPoint.DeviceNumber = electricMeter.Device_number; deviceNumberPoint.Point = point.points; @@ -128,7 +132,7 @@ namespace BackendWorkerService.Quartz.Jobs deviceNumberPoint.DeviceNumber = waterMeter.Device_number; deviceNumberPoint.Point = point.points; deviceNumberPoint.FullDeviceNumberPoint = string.Format("{0}_{1}", waterMeter.Device_number, point.points); - + deviceNumberPoint.archive_lastDate = waterMeter.archive_lastDate; waterDeviceNumberPoints.Add(deviceNumberPoint); } } @@ -170,17 +174,19 @@ namespace BackendWorkerService.Quartz.Jobs { //foreach (var electricMeter in electricMeters) //{ - // startDay = DateTime.Parse(electricMeter.archive_lastDate.ToString("yyyy-MM-dd"));// 起始日 - //endDay = DateTime.Parse(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")); // 結束日 - //foreach (DateTime day in procEletricMeterService.EachDay(startDay, endDay)) - //{ - // logger.LogInformation(@$"【EachDay】{electricMeter.Device_number} startDay=", startDay + " endDay=" + endDay); - // if (electricMeter.Device_number == "NTPC_G6_EE_E4_B1F_CB3_WHT_N1") - // { - // logger.LogInformation($@"EachDay devie_number = NTPC_G6_EE_E4_B1F_CB3_WHT_N1 startDay={startDay} endDay={endDay}"); - // } - // 每日資料製作 - await day_proc(procEletricMeterService, saveToMSDB, archiveResponse, electricDeviceNumberPoints, waterDeviceNumberPoints, obixApiConfig, encoded, startDay, endDay, dbDateName); + // startDay = DateTime.Parse(electricMeter.archive_lastDate.ToString("yyyy-MM-dd"));// 起始日 + //endDay = DateTime.Parse(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")); // 結束日 + //foreach (DateTime day in procEletricMeterService.EachDay(startDay, endDay)) + //{ + // logger.LogInformation(@$"【EachDay】{electricMeter.Device_number} startDay=", startDay + " endDay=" + endDay); + // if (electricMeter.Device_number == "NTPC_G6_EE_E4_B1F_CB3_WHT_N1") + // { + // logger.LogInformation($@"EachDay devie_number = NTPC_G6_EE_E4_B1F_CB3_WHT_N1 startDay={startDay} endDay={endDay}"); + // } + logger.LogInformation($@"before day_proc electricDeviceNumberPoints.Count() ={electricDeviceNumberPoints.Count()} "); + + // 每日資料製作 + await day_proc(procEletricMeterService, saveToMSDB, archiveResponse, electricDeviceNumberPoints, waterDeviceNumberPoints, obixApiConfig, encoded, startDay, endDay, dbDateName); //} //} @@ -1141,7 +1147,7 @@ namespace BackendWorkerService.Quartz.Jobs procEletricMeterService.obixData_collect(xmlDocument, waterDeviceNumberPoints, obixApiConfig, encoded, waterArchiveDayRawDatas); stopWatch.Stop(); - logger.LogInformation("【ArchiveElectricMeterDayJob】【天歸檔】【效能檢驗】[取得資料花費時間]{0} 毫秒", stopWatch.ElapsedMilliseconds); + logger.LogInformation(@$"【ArchiveElectricMeterDayJob】【天歸檔】【效能檢驗】[取得資料花費時間]{stopWatch.ElapsedMilliseconds } 毫秒 資料筆數=" + electericArchiveDayRawDatas.Count() ); if (electericArchiveDayRawDatas.Count() > 0) { @@ -1156,9 +1162,7 @@ namespace BackendWorkerService.Quartz.Jobs is_complete = @is_complete, repeat_times = @repeat_times, fail_reason = @fail_reason, - updated_at = @updated_at, - archive_lastDate = @updated_at, - archive_lastActionDate = @updated_at + updated_at = @updated_at WHERE device_number = @device_number AND point = @point AND start_timestamp = @start_timestamp; @@ -1176,9 +1180,7 @@ namespace BackendWorkerService.Quartz.Jobs sum_rawdata, is_complete, repeat_times, - fail_reason, - archive_lastDate, - archive_lastActionDate) + fail_reason, updated_at) SELECT @device_number, @point, @@ -1192,11 +1194,10 @@ namespace BackendWorkerService.Quartz.Jobs @sum_rawdata, @is_complete, @repeat_times, - @fail_reason, - @updated_at, - @updated_at, + @fail_reason, + @updated_at WHERE ROW_COUNT() = 0;"; - + // update device set archive_lastDate = @updated_at, archive_lastActionDate = @updated_at where device_number = @device_number; var mySql = $@"BEGIN TRANSACTION; IF OBJECT_ID(N'dbo.archive_electric_meter_day_{dbDateName}', N'U') is null BEGIN @@ -1285,12 +1286,15 @@ namespace BackendWorkerService.Quartz.Jobs END COMMIT TRANSACTION;"; - + + // logger.LogInformation($@"putint value NTPC_G6_EE_E4_B1F_CB3_WHT_N1 ={electricMeter.archive_lastDate} archive_lastActionDate={electricMeter.archive_lastActionDate}"); + + logger.LogInformation("run sql electericArchiveDayRawDatas.Count() = " + electericArchiveDayRawDatas.Count()); await backgroundServiceRepository.ExecuteSql(sql, electericArchiveDayRawDatas); if (!string.IsNullOrEmpty(saveToMSDB) && saveToMSDB == "1") { await backgroundServiceMsSqlRepository.ExecuteSql(mySql, electericArchiveDayRawDatas); - } + } } if (waterArchiveDayRawDatas.Count() > 0) { diff --git a/BackendWorkerService/Services/Implement/ProcEletricMeterService.cs b/BackendWorkerService/Services/Implement/ProcEletricMeterService.cs index 54e59f9..0488f86 100644 --- a/BackendWorkerService/Services/Implement/ProcEletricMeterService.cs +++ b/BackendWorkerService/Services/Implement/ProcEletricMeterService.cs @@ -960,14 +960,21 @@ namespace BackendWorkerService.Services.Implement { #region 水電錶 save to DB start - + logger.LogInformation($@"s0 DeviceNumberPoints.Count() = {DeviceNumberPoints.Count().ToString()}"); foreach (var deviceNumberPoint in DeviceNumberPoints) - { - - if (deviceNumberPoint.archive_lastDate.ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd")) break; //如果是今天 就不要用歸檔了 + { + if (deviceNumberPoint.DeviceNumber == "NTPC_G6_EE_E4_B1F_CB3_WHT_N1") + { + logger.LogInformation($@"s1 devie_number = NTPC_G6_EE_E4_B1F_CB3_WHT_N1 archive_lastDate={deviceNumberPoint.archive_lastDate}"); + } + if (deviceNumberPoint.archive_lastDate.ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd")) + { + logger.LogInformation($@" foreach (var deviceNumberPoint in DeviceNumberPoints) 判斷為今天 不用跑 deviceNumberPoint.archive_lastDate = {deviceNumberPoint.archive_lastDate} "); // ----------- log + continue; //如果是今天 就不要用歸檔了 + } var startDay = string.Format("{0}T00:00:00.000+08:00", deviceNumberPoint.archive_lastDate.ToString("yyyy-MM-dd").Replace(" ", "T")); - var endDay = ""; + var endDay = System.DateTime.Now.ToString("yyyy-MM-dd"); //var endTimestamp = string.Format("{0}+08:00", error_day.End_timestamp.Replace(" ", "T")); //if (DateTime.Parse(startTimestamp).ToString("yyyy-MM-dd") == DateTime.Parse(endTimestamp).ToString("yyyy-MM-dd")) //{ @@ -976,18 +983,24 @@ namespace BackendWorkerService.Services.Implement //} //else //{ //不同天為新格式 採用 Start_timestamp - endDay = string.Format("{0}T00:00:10.000+08:00", DateTime.Parse(endDay).AddDays(1).ToString("yyyy-MM-dd").Replace(" ", "T")); + // endDay = string.Format("{0}T00:00:10.000+08:00", DateTime.Parse(endDay).AddDays(1).ToString("yyyy-MM-dd").Replace(" ", "T")); //} logger.LogInformation($@"before startDay = {startDay} endDay={endDay}"); // ----------- log #region foreach (DateTime day in EachDay(startDay, endDay)) { - if (day.ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd")) break; //如果是今天 就不要用歸檔了 + if (day.ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd")) + { + //logger.LogInformation($@"s2 foreach (DateTime day in EachDay(startDay, endDay)) 判斷為今天 不用跑 day = {day} "); // ----------- log + continue; //如果是今天 就不要用歸檔了 + } + + //logger.LogInformation(@$"obix query for {deviceNumberPoint.DeviceNumber} day = {day.ToString("yyyy-MM-dd")}"); var sDay = string.Format("{0}T00:00:00.000+08:00", day.ToString("yyyy-MM-dd").Replace(" ", "T")); var eDay = string.Format("{0}T00:00:10.000+08:00", day.AddDays(1).ToString("yyyy-MM-dd").Replace(" ", "T")); - logger.LogInformation($@"after sDay = {sDay} eDay={eDay}"); // ----------- log + string historyQueryFilter = $@" @@ -995,17 +1008,22 @@ namespace BackendWorkerService.Services.Implement "; string device_number = deviceNumberPoint.FullDeviceNumberPoint.Replace("$3", ""); + + logger.LogInformation($@" {device_number} after sDay = {sDay} eDay={eDay}"); // ----------- log + var station = backgroundServiceRepository.GetOneAsync($@"select parent_path from import_niagara_item_history where device_building_tag = '{device_number.Split("_")[1].Replace("$3", "")}' and device_system_tag = '{device_number.Split("_")[2]}' and device_name_tag = '{device_number.Split("_")[3]}' and device_floor_tag = '{device_number.Split("_")[4]}' and device_master_tag = '{device_number.Split("_")[5]}' and device_last_name_tag = '{device_number.Split("_")[6]}' and device_serial_tag = '{device_number.Split("_")[7]}' and device_point_name = '{device_number.Split("_")[8]}'").Result; + HttpWebRequest archiveRequest = (HttpWebRequest)WebRequest.Create($"{obixApiConfig.ApiBase}obix/histories/{station}/{deviceNumberPoint.FullDeviceNumberPoint.Replace("$3", "")}/~historyRollup/"); //HttpWebRequest archiveDayRequest = (HttpWebRequest)WebRequest.Create($"{obixApiConfig.ApiBase}obix/histories/{station}/H_E1_B1F_MVCB_MVCBH_V1/~historyRollup/"); archiveRequest.Method = "POST"; archiveRequest.Headers.Add("Authorization", "Basic " + encoded); archiveRequest.PreAuthenticate = true; + logger.LogInformation($@" {device_number} after station = {station}"); // ----------- log byte[] byteArray = Encoding.UTF8.GetBytes(historyQueryFilter); using (Stream reqStream = archiveRequest.GetRequestStream()) @@ -1021,15 +1039,15 @@ namespace BackendWorkerService.Services.Implement xmlDocument.LoadXml(archiveResponseContent); var archiveJson = JsonConvert.SerializeXmlNode(xmlDocument); var archiveJsonResult = (JObject)JsonConvert.DeserializeObject(archiveJson); - //if (device_number == "NTPC_D8_EE_E4_RF_Total_WHT_N1") - //{ - // logger.LogError("obixData_collect - NTPC_D8_EE_E4_RF_Total_WHT_N1 s=" + startTimestamp.Replace("T", " ").Substring(0, 19) + " e = " + endTimestamp.Replace("T", " ").Substring(0, 19) + " json = " + archiveJsonResult); - //} + if (device_number == "NTPC_G6_EE_E4_B1F_CB3_WHT_N1") + { + logger.LogError("obixData_collect - NTPC_G6_EE_E4_B1F_CB3_WHT_N1 json = " + archiveJsonResult); + } if (archiveJsonResult.ContainsKey("err")) //抓取錯誤 { //logger.LogError("【ArchiveElectricMeterDayJob】【天歸檔】【取得資料失敗】"); - //logger.LogError("【ArchiveElectricMeterDayJob】【天歸檔】【取得資料失敗】[錯誤內容]:{0}", archiveDayJsonResult); - + //logger.LogError("【ArchiveElectricMeterDayJob】【天歸檔】【取得資料失敗】[錯誤內容]:{0}", archiveDayJsonResult); archiveJsonResult + logger.LogError("【ArchiveElectricMeterDayJob】【天歸檔】【取得資料失敗】[錯誤內容]:{0}", archiveJsonResult); Dictionary archiveDayRawData = new Dictionary(); archiveDayRawData.Add("@device_number", deviceNumberPoint.DeviceNumber); archiveDayRawData.Add("@point", deviceNumberPoint.Point); @@ -1051,9 +1069,11 @@ namespace BackendWorkerService.Services.Implement if (archiveJsonResult.ContainsKey("obj")) //表示可以讀取到內容 { + logger.LogError("【ArchiveElectricMeterDayJob】【天歸檔】【OK】{0}", archiveJsonResult); var ArrangeRawDatas = ArrangeRawData(deviceNumberPoint, archiveJsonResult); if (ArrangeRawDatas != null && ArrangeRawDatas.Count() > 0) { + logger.LogInformation(@$"obix result {deviceNumberPoint.DeviceNumber} day = {day.ToString("yyyy-MM-dd")} ArrangeRawDatas.count() = {ArrangeRawDatas.Count().ToString()}"); resultArchiveDayRawDatas.AddRange(ArrangeRawDatas); } }