[BackendWorkerService]修改水電月歸檔最後一天沒紀錄的問題
This commit is contained in:
		
							parent
							
								
									6c50bdb071
								
							
						
					
					
						commit
						0929c6f21a
					
				@ -189,7 +189,7 @@ namespace BackendWorkerService.Quartz.Jobs
 | 
				
			|||||||
                            // 每日資料製作
 | 
					                            // 每日資料製作
 | 
				
			||||||
                            await day_proc(procEletricMeterService, saveToMSDB, archiveResponse, electricDeviceNumberPoints, waterDeviceNumberPoints, obixApiConfig, encoded, startDay, endDay, dbDateName);
 | 
					                            await day_proc(procEletricMeterService, saveToMSDB, archiveResponse, electricDeviceNumberPoints, waterDeviceNumberPoints, obixApiConfig, encoded, startDay, endDay, dbDateName);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                //}
 | 
					                            //}
 | 
				
			||||||
                            //}
 | 
					                            //}
 | 
				
			||||||
                            await task_Detail.InsertWorkTime_End("ArchiveElectricMeterDayJob", "Day", "任務完成0927");
 | 
					                            await task_Detail.InsertWorkTime_End("ArchiveElectricMeterDayJob", "Day", "任務完成0927");
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
@ -799,6 +799,8 @@ namespace BackendWorkerService.Quartz.Jobs
 | 
				
			|||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                var sql = $@"
 | 
					                                var sql = $@"
 | 
				
			||||||
                                            UPDATE archive_electric_meter_month SET 
 | 
					                                            UPDATE archive_electric_meter_month SET 
 | 
				
			||||||
 | 
					                                                    start_timestamp = @start_timestamp,
 | 
				
			||||||
 | 
					                                                    end_timestamp = @end_timestamp,
 | 
				
			||||||
                                                    count_rawdata = @count_rawdata,
 | 
					                                                    count_rawdata = @count_rawdata,
 | 
				
			||||||
                                                    min_rawdata = round(@min_rawdata, 2),
 | 
					                                                    min_rawdata = round(@min_rawdata, 2),
 | 
				
			||||||
                                                    max_rawdata = round(@max_rawdata, 2),
 | 
					                                                    max_rawdata = round(@max_rawdata, 2),
 | 
				
			||||||
@ -846,6 +848,8 @@ namespace BackendWorkerService.Quartz.Jobs
 | 
				
			|||||||
                                var mySql = $@"BEGIN TRANSACTION;
 | 
					                                var mySql = $@"BEGIN TRANSACTION;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                            UPDATE archive_electric_meter_month SET 
 | 
					                                            UPDATE archive_electric_meter_month SET 
 | 
				
			||||||
 | 
					                                                    start_timestamp = @start_timestamp,
 | 
				
			||||||
 | 
					                                                    end_timestamp = @end_timestamp,
 | 
				
			||||||
                                                    count_rawdata = @count_rawdata,
 | 
					                                                    count_rawdata = @count_rawdata,
 | 
				
			||||||
                                                    min_rawdata = round(@min_rawdata, 2),
 | 
					                                                    min_rawdata = round(@min_rawdata, 2),
 | 
				
			||||||
                                                    max_rawdata = round(@max_rawdata, 2),
 | 
					                                                    max_rawdata = round(@max_rawdata, 2),
 | 
				
			||||||
@ -906,6 +910,8 @@ namespace BackendWorkerService.Quartz.Jobs
 | 
				
			|||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                var sql = $@"
 | 
					                                var sql = $@"
 | 
				
			||||||
                                            UPDATE archive_water_meter_month SET 
 | 
					                                            UPDATE archive_water_meter_month SET 
 | 
				
			||||||
 | 
					                                                    start_timestamp = @start_timestamp,
 | 
				
			||||||
 | 
					                                                    end_timestamp = @end_timestamp,
 | 
				
			||||||
                                                    count_rawdata = @count_rawdata,
 | 
					                                                    count_rawdata = @count_rawdata,
 | 
				
			||||||
                                                    min_rawdata = round(@min_rawdata, 2),
 | 
					                                                    min_rawdata = round(@min_rawdata, 2),
 | 
				
			||||||
                                                    max_rawdata = round(@max_rawdata, 2),
 | 
					                                                    max_rawdata = round(@max_rawdata, 2),
 | 
				
			||||||
@ -952,6 +958,8 @@ namespace BackendWorkerService.Quartz.Jobs
 | 
				
			|||||||
                                var mySql = $@"BEGIN TRANSACTION;
 | 
					                                var mySql = $@"BEGIN TRANSACTION;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                            UPDATE archive_water_meter_month SET 
 | 
					                                            UPDATE archive_water_meter_month SET 
 | 
				
			||||||
 | 
					                                                    start_timestamp = @start_timestamp,
 | 
				
			||||||
 | 
					                                                    end_timestamp = @end_timestamp,
 | 
				
			||||||
                                                    count_rawdata = @count_rawdata,
 | 
					                                                    count_rawdata = @count_rawdata,
 | 
				
			||||||
                                                    min_rawdata = round(@min_rawdata, 2),
 | 
					                                                    min_rawdata = round(@min_rawdata, 2),
 | 
				
			||||||
                                                    max_rawdata = round(@max_rawdata, 2),
 | 
					                                                    max_rawdata = round(@max_rawdata, 2),
 | 
				
			||||||
@ -1329,7 +1337,11 @@ namespace BackendWorkerService.Quartz.Jobs
 | 
				
			|||||||
                #endregion
 | 
					                #endregion
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (waterArchiveDayRawDatas.Count() > 0)
 | 
					            if (waterArchiveDayRawDatas.Count() > 0)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                foreach (var row in waterArchiveDayRawDatas)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
 | 
					                    row.TryGetValue("@start_timestamp", out var yyyymmData);
 | 
				
			||||||
 | 
					                    dbDateName = System.DateTime.Parse(yyyymmData.ToString()).ToString("yyyyMM");
 | 
				
			||||||
                    var sql = $@"  UPDATE archive_water_meter_day_{dbDateName} SET 
 | 
					                    var sql = $@"  UPDATE archive_water_meter_day_{dbDateName} SET 
 | 
				
			||||||
                                                    count_rawdata = @count_rawdata,
 | 
					                                                    count_rawdata = @count_rawdata,
 | 
				
			||||||
                                                    min_rawdata = round(@min_rawdata, 2),
 | 
					                                                    min_rawdata = round(@min_rawdata, 2),
 | 
				
			||||||
@ -1470,6 +1482,7 @@ namespace BackendWorkerService.Quartz.Jobs
 | 
				
			|||||||
                        await backgroundServiceMsSqlRepository.ExecuteSql(mySql, waterArchiveDayRawDatas);
 | 
					                        await backgroundServiceMsSqlRepository.ExecuteSql(mySql, waterArchiveDayRawDatas);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -23,6 +23,7 @@ using BackendWorkerService.Quartz.Jobs;
 | 
				
			|||||||
using Microsoft.Extensions.Logging;
 | 
					using Microsoft.Extensions.Logging;
 | 
				
			||||||
using Org.BouncyCastle.Asn1.Pkcs;
 | 
					using Org.BouncyCastle.Asn1.Pkcs;
 | 
				
			||||||
using NPOI.SS.Formula.Functions;
 | 
					using NPOI.SS.Formula.Functions;
 | 
				
			||||||
 | 
					using MySqlX.XDevAPI.Relational;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace BackendWorkerService.Services.Implement
 | 
					namespace BackendWorkerService.Services.Implement
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -995,7 +996,7 @@ namespace BackendWorkerService.Services.Implement
 | 
				
			|||||||
                    //logger.LogInformation(@$"obix query for {deviceNumberPoint.DeviceNumber}  day = {day.ToString("yyyy-MM-dd")}");
 | 
					                    //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 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"));
 | 
					                    var eDay = string.Format("{0}T00:01:00.000+08:00", day.AddDays(1).ToString("yyyy-MM-dd").Replace(" ", "T"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    string historyQueryFilter = $@"<obj is='obix: HistoryFilter'>
 | 
					                    string historyQueryFilter = $@"<obj is='obix: HistoryFilter'>
 | 
				
			||||||
@ -1019,7 +1020,7 @@ namespace BackendWorkerService.Services.Implement
 | 
				
			|||||||
                    archiveRequest.Headers.Add("Authorization", "Basic " + encoded);
 | 
					                    archiveRequest.Headers.Add("Authorization", "Basic " + encoded);
 | 
				
			||||||
                    archiveRequest.PreAuthenticate = true;
 | 
					                    archiveRequest.PreAuthenticate = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                   // logger.LogInformation($@"url= {$"{obixApiConfig.ApiBase}obix/histories/{station}/{deviceNumberPoint.FullDeviceNumberPoint.Replace("$3", "")}/~historyRollup/" + Environment.NewLine}  {device_number} station = {station} task= {startDay} ~ {endDay} action ={sDay} ~ {eDay}"); // ----------- log 
 | 
					                    // logger.LogInformation($@"url= {$"{obixApiConfig.ApiBase}obix/histories/{station}/{deviceNumberPoint.FullDeviceNumberPoint.Replace("$3", "")}/~historyRollup/" + Environment.NewLine}  {device_number} station = {station} task= {startDay} ~ {endDay} action ={sDay} ~ {eDay}"); // ----------- log 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    byte[] byteArray = Encoding.UTF8.GetBytes(historyQueryFilter);
 | 
					                    byte[] byteArray = Encoding.UTF8.GetBytes(historyQueryFilter);
 | 
				
			||||||
                    using (Stream reqStream = archiveRequest.GetRequestStream())
 | 
					                    using (Stream reqStream = archiveRequest.GetRequestStream())
 | 
				
			||||||
@ -1130,92 +1131,101 @@ namespace BackendWorkerService.Services.Implement
 | 
				
			|||||||
                #region 
 | 
					                #region 
 | 
				
			||||||
                //foreach (DateTime day in EachMonth(startDay , endDay))
 | 
					                //foreach (DateTime day in EachMonth(startDay , endDay))
 | 
				
			||||||
                //{
 | 
					                //{
 | 
				
			||||||
                    // 需要比原定日期增加 1天:因 Niagara 內部判斷為 < lastData, 並未包含結束當天 add by jiahao @2023-09-16
 | 
					                // 需要比原定日期增加 1天:因 Niagara 內部判斷為 < lastData, 並未包含結束當天 add by jiahao @2023-09-16
 | 
				
			||||||
                    //var dayInMonth = DateTime.DaysInMonth(day.Year, day.Month) +1;  、、(DateTime.Now - DateTime.Parse(startDay)).Days
 | 
					                //var dayInMonth = DateTime.DaysInMonth(day.Year, day.Month) +1;  、、(DateTime.Now - DateTime.Parse(startDay)).Days
 | 
				
			||||||
                    DateTime today = DateTime.Now;
 | 
					                DateTime today = DateTime.Now;
 | 
				
			||||||
                    var dayInMonth = (DateTime.Now - DateTime.Parse(today.ToString("yyyy-MM-") + "01")).Days + 1;
 | 
					
 | 
				
			||||||
 | 
					                var preDay = today.AddDays(-1); //取得前一天
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                var dayInMonth = DateTime.DaysInMonth(preDay.Year, preDay.Month);
 | 
				
			||||||
 | 
					                var FirstDay = new DateTime(preDay.Year, preDay.Month, 1);
 | 
				
			||||||
 | 
					                var LastDay = today;
 | 
				
			||||||
 | 
					                var startTimestamp = string.Format("{0}T00:00:00.000+08:00", FirstDay.ToString("yyyy-MM-dd"));
 | 
				
			||||||
 | 
					                var endTimestamp = string.Format("{0}T00:01:00.000+08:00", LastDay.ToString("yyyy-MM-dd")); 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                //var dayInMonth = (DateTime.Now - DateTime.Parse(today.ToString("yyyy-MM-") + "01")).Days + 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    var startTimestamp = string.Format("{0}T00:00:00.000+08:00", today.ToString("yyyy-MM-") + "01");
 | 
					                //var startTimestamp = string.Format("{0}T00:00:00.000+08:00", today.ToString("yyyy-MM-") + "01");
 | 
				
			||||||
                    //var endTimestamp = string.Format("{0}T23:59:59.000+08:00", LastDay.ToString("yyyy-MM-dd"));
 | 
					                ////var endTimestamp = string.Format("{0}T23:59:59.000+08:00", LastDay.ToString("yyyy-MM-dd"));
 | 
				
			||||||
                    //var endTimestamp = string.Format("{0}T00:00:10.000+08:00", day.AddMonths(1).ToString("yyyy-MM-") + "01"); // by jiahao @2023-09-26
 | 
					                ////var endTimestamp = string.Format("{0}T00:00:10.000+08:00", day.AddMonths(1).ToString("yyyy-MM-") + "01"); // by jiahao @2023-09-26
 | 
				
			||||||
                    var endTimestamp = string.Format("{0}T00:00:10.000+08:00", DateTime.Now.ToString("yyyy-MM-dd")); // by jiahao @2023-10-03
 | 
					                //var endTimestamp = string.Format("{0}T00:00:10.000+08:00", DateTime.Now.ToString("yyyy-MM-dd")); // by jiahao @2023-10-03
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    var historyQueryFilter = $@"<obj is='obix: HistoryFilter'>
 | 
					                var historyQueryFilter = $@"<obj is='obix: HistoryFilter'>
 | 
				
			||||||
                                                    <abstime name='start' val='{startTimestamp}' />
 | 
					                                                    <abstime name='start' val='{startTimestamp}' />
 | 
				
			||||||
                                                    <abstime name='end' val='{endTimestamp}' />
 | 
					                                                    <abstime name='end' val='{endTimestamp}' />
 | 
				
			||||||
                                                    <reltime name='interval' val = 'PT{dayInMonth.ToString()}D' />
 | 
					                                                    <reltime name='interval' val = 'PT{(dayInMonth+1).ToString()}D' />
 | 
				
			||||||
                                                </obj>";
 | 
					                                                </obj>";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    string device_number = deviceNumberPoint.FullDeviceNumberPoint.Replace("$3", "");
 | 
					                string device_number = deviceNumberPoint.FullDeviceNumberPoint.Replace("$3", "");
 | 
				
			||||||
                    var station = backgroundServiceRepository.GetOneAsync<string>($@"select parent_path from import_niagara_item_history where device_building_tag = '{device_number.Split("_")[1].Replace("$3", "")}' and 
 | 
					                var station = backgroundServiceRepository.GetOneAsync<string>($@"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]}' 
 | 
					                                        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_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_last_name_tag = '{device_number.Split("_")[6]}' and device_serial_tag = '{device_number.Split("_")[7]}'
 | 
				
			||||||
                                        and device_point_name = '{device_number.Split("_")[8]}'").Result;
 | 
					                                        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 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/");
 | 
					                //HttpWebRequest archiveDayRequest = (HttpWebRequest)WebRequest.Create($"{obixApiConfig.ApiBase}obix/histories/{station}/H_E1_B1F_MVCB_MVCBH_V1/~historyRollup/");
 | 
				
			||||||
                    archiveRequest.Method = "POST";
 | 
					                archiveRequest.Method = "POST";
 | 
				
			||||||
                    archiveRequest.Headers.Add("Authorization", "Basic " + encoded);
 | 
					                archiveRequest.Headers.Add("Authorization", "Basic " + encoded);
 | 
				
			||||||
                    archiveRequest.PreAuthenticate = true;
 | 
					                archiveRequest.PreAuthenticate = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    byte[] byteArray = Encoding.UTF8.GetBytes(historyQueryFilter);
 | 
					                byte[] byteArray = Encoding.UTF8.GetBytes(historyQueryFilter);
 | 
				
			||||||
                    using (Stream reqStream = archiveRequest.GetRequestStream())
 | 
					                using (Stream reqStream = archiveRequest.GetRequestStream())
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    reqStream.Write(byteArray, 0, byteArray.Length);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                var archiveResponse = (HttpWebResponse)archiveRequest.GetResponse();
 | 
				
			||||||
 | 
					                var archiveResponseContent = new StreamReader(archiveResponse.GetResponseStream()).ReadToEnd();
 | 
				
			||||||
 | 
					                archiveResponse.Dispose();
 | 
				
			||||||
 | 
					                archiveResponse.Close();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                //logger.LogInformation(@$"【ArchiveElectricMeterMonth】{device_number} startTimestamp={startTimestamp} endTimestamp= {endTimestamp}  interval = PT{dayInMonth.ToString()}D  url = {$"{obixApiConfig.ApiBase}obix/histories/{station}/{deviceNumberPoint.FullDeviceNumberPoint.Replace("$3", "")}/~historyRollup/"}");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                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" || device_number == "NTPC_D8_EE_E4_RF_H2_WHT_N1")  
 | 
				
			||||||
 | 
					                //{
 | 
				
			||||||
 | 
					                logger.LogError(@$"{device_number}  json = {archiveJsonResult}");
 | 
				
			||||||
 | 
					                //}
 | 
				
			||||||
 | 
					                if (archiveJsonResult.ContainsKey("err")) //抓取錯誤
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    //logger.LogError("【ArchiveElectricMeterDayJob】【天歸檔】【取得資料失敗】");
 | 
				
			||||||
 | 
					                    //logger.LogError("【ArchiveElectricMeterDayJob】【天歸檔】【取得資料失敗】[錯誤內容]:{0}", archiveDayJsonResult);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    Dictionary<string, object> archiveDayRawData = new Dictionary<string, object>();
 | 
				
			||||||
 | 
					                    archiveDayRawData.Add("@device_number", deviceNumberPoint.DeviceNumber);
 | 
				
			||||||
 | 
					                    archiveDayRawData.Add("@point", deviceNumberPoint.Point);
 | 
				
			||||||
 | 
					                    archiveDayRawData.Add("@start_timestamp", startTimestamp.Replace("T", " ").Substring(0, 19));
 | 
				
			||||||
 | 
					                    archiveDayRawData.Add("@end_timestamp", endTimestamp.Replace("T", " ").Substring(0, 19));
 | 
				
			||||||
 | 
					                    archiveDayRawData.Add("@is_complete", 0);
 | 
				
			||||||
 | 
					                    archiveDayRawData.Add("@repeat_times", 0);
 | 
				
			||||||
 | 
					                    archiveDayRawData.Add("@fail_reason", archiveJson);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    archiveDayRawData.Add("@count_rawdata", 0);
 | 
				
			||||||
 | 
					                    archiveDayRawData.Add("@min_rawdata", 0);
 | 
				
			||||||
 | 
					                    archiveDayRawData.Add("@max_rawdata", 0);
 | 
				
			||||||
 | 
					                    archiveDayRawData.Add("@avg_rawdata", 0);
 | 
				
			||||||
 | 
					                    archiveDayRawData.Add("@sum_rawdata", 0);
 | 
				
			||||||
 | 
					                    archiveDayRawData.Add("@updated_at", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    resultArchiveDayRawDatas.Add(archiveDayRawData);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (archiveJsonResult.ContainsKey("obj")) //表示可以讀取到內容
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    var ArrangeRawDatas = ArrangeRawData(deviceNumberPoint, archiveJsonResult, ref dicError);
 | 
				
			||||||
 | 
					                    if (ArrangeRawDatas != null && ArrangeRawDatas.Count() > 0)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        reqStream.Write(byteArray, 0, byteArray.Length);
 | 
					                        resultArchiveDayRawDatas.AddRange(ArrangeRawDatas);
 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    var archiveResponse = (HttpWebResponse)archiveRequest.GetResponse();
 | 
					 | 
				
			||||||
                    var archiveResponseContent = new StreamReader(archiveResponse.GetResponseStream()).ReadToEnd();
 | 
					 | 
				
			||||||
                    archiveResponse.Dispose();
 | 
					 | 
				
			||||||
                    archiveResponse.Close();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    //logger.LogInformation(@$"【ArchiveElectricMeterMonth】{device_number} startTimestamp={startTimestamp} endTimestamp= {endTimestamp}  interval = PT{dayInMonth.ToString()}D  url = {$"{obixApiConfig.ApiBase}obix/histories/{station}/{deviceNumberPoint.FullDeviceNumberPoint.Replace("$3", "")}/~historyRollup/"}");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    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" || device_number == "NTPC_D8_EE_E4_RF_H2_WHT_N1")  
 | 
					 | 
				
			||||||
                    //{
 | 
					 | 
				
			||||||
                       logger.LogError(@$"{device_number}  json = {archiveJsonResult}");
 | 
					 | 
				
			||||||
                    //}
 | 
					 | 
				
			||||||
                    if (archiveJsonResult.ContainsKey("err")) //抓取錯誤
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        //logger.LogError("【ArchiveElectricMeterDayJob】【天歸檔】【取得資料失敗】");
 | 
					 | 
				
			||||||
                        //logger.LogError("【ArchiveElectricMeterDayJob】【天歸檔】【取得資料失敗】[錯誤內容]:{0}", archiveDayJsonResult);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        Dictionary<string, object> archiveDayRawData = new Dictionary<string, object>();
 | 
					 | 
				
			||||||
                        archiveDayRawData.Add("@device_number", deviceNumberPoint.DeviceNumber);
 | 
					 | 
				
			||||||
                        archiveDayRawData.Add("@point", deviceNumberPoint.Point);
 | 
					 | 
				
			||||||
                        archiveDayRawData.Add("@start_timestamp", startTimestamp.Replace("T", " ").Substring(0, 19));
 | 
					 | 
				
			||||||
                        archiveDayRawData.Add("@end_timestamp", endTimestamp.Replace("T", " ").Substring(0, 19));
 | 
					 | 
				
			||||||
                        archiveDayRawData.Add("@is_complete", 0);
 | 
					 | 
				
			||||||
                        archiveDayRawData.Add("@repeat_times", 0);
 | 
					 | 
				
			||||||
                        archiveDayRawData.Add("@fail_reason", archiveJson);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        archiveDayRawData.Add("@count_rawdata", 0);
 | 
					 | 
				
			||||||
                        archiveDayRawData.Add("@min_rawdata", 0);
 | 
					 | 
				
			||||||
                        archiveDayRawData.Add("@max_rawdata", 0);
 | 
					 | 
				
			||||||
                        archiveDayRawData.Add("@avg_rawdata", 0);
 | 
					 | 
				
			||||||
                        archiveDayRawData.Add("@sum_rawdata", 0);
 | 
					 | 
				
			||||||
                        archiveDayRawData.Add("@updated_at", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        resultArchiveDayRawDatas.Add(archiveDayRawData);
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    if (archiveJsonResult.ContainsKey("obj")) //表示可以讀取到內容
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        var ArrangeRawDatas = ArrangeRawData(deviceNumberPoint, archiveJsonResult, ref dicError);
 | 
					 | 
				
			||||||
                        if (ArrangeRawDatas != null && ArrangeRawDatas.Count() > 0)
 | 
					 | 
				
			||||||
                        {
 | 
					 | 
				
			||||||
                            resultArchiveDayRawDatas.AddRange(ArrangeRawDatas);
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
                //}
 | 
					                //}
 | 
				
			||||||
                #endregion 
 | 
					                #endregion 
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user