diff --git a/BackendWorkerService/Quartz/Jobs/ArchiveElectricMeterDayJob.cs b/BackendWorkerService/Quartz/Jobs/ArchiveElectricMeterDayJob.cs index 0d1bfdf..8a96c56 100644 --- a/BackendWorkerService/Quartz/Jobs/ArchiveElectricMeterDayJob.cs +++ b/BackendWorkerService/Quartz/Jobs/ArchiveElectricMeterDayJob.cs @@ -592,7 +592,7 @@ namespace BackendWorkerService.Quartz.Jobs { await task_Detail.WorkFail("ArchiveElectricMeterDayJob", "Day", exception.ToString()); logger.LogError("【ArchiveElectricMeterDayJob】【天歸檔】【任務失敗】"); - logger.LogError("【ArchiveElectricMeterDayJob】【天歸檔】【任務失敗】[Exception]:{0}", exception.ToString()); + logger.LogError("【ArchiveElectricMeterDayJob】【天歸檔】【任務失敗】[Exception]:{0} {1}", exception.ToString(), "device_number : " + device_number); } finally { @@ -959,7 +959,7 @@ namespace BackendWorkerService.Quartz.Jobs { await task_Detail.WorkFail("ArchiveElectricMeterDayJob", "Week", exception.ToString()); logger.LogError("【ArchiveElectricMeterDayJob】【週歸檔】【任務失敗】"); - logger.LogError("【ArchiveElectricMeterDayJob】【週歸檔】【任務失敗】[Exception]:{0}", exception.ToString()); + logger.LogError("【ArchiveElectricMeterDayJob】【週歸檔】【任務失敗】[Exception]:{0} {1}", exception.ToString(), "device_number : " + device_number); } finally { @@ -1321,7 +1321,7 @@ namespace BackendWorkerService.Quartz.Jobs { await task_Detail.WorkFail("ArchiveElectricMeterDayJob", "Month", exception.ToString()); logger.LogError("【ArchiveElectricMeterDayJob】【月歸檔】【任務失敗】"); - logger.LogError("【ArchiveElectricMeterDayJob】【月歸檔】【任務失敗】[Exception]:{0}", exception.ToString()); + logger.LogError("【ArchiveElectricMeterDayJob】【月歸檔】【任務失敗】[Exception]:{0} {1}", exception.ToString(), "device_number : " + device_number); } finally { @@ -1361,35 +1361,105 @@ namespace BackendWorkerService.Quartz.Jobs { await task_Detail.WorkFail("ArchiveElectricMeterDayJob", "All", exception.ToString()); logger.LogError("【ArchiveElectricMeterDayJob】【任務失敗】"); - logger.LogError("【ArchiveElectricMeterDayJob】【任務失敗】[Exception]:{0} {1}", exception.ToString(), "device_number : " + device_number); + logger.LogError("【ArchiveElectricMeterDayJob】【任務失敗】[Exception]:{0} {1}", exception.ToString()); } } private List> ArrangeRawData(DeviceNumberPoint deviceNumberPoint, JObject jsonResult) { List> arrangeRawDatas = new List>(); - var histories = jsonResult["obj"]["list"]; - var rawdateCount = Convert.ToInt32(jsonResult["obj"]["int"]["@val"].ToString()); - - if(rawdateCount == 0) + try { - return null; - } + var histories = jsonResult["obj"]["list"]; + var rawdateCount = Convert.ToInt32(jsonResult["obj"]["int"]["@val"].ToString()); - if (histories != null && histories.HasValues) - { - if (rawdateCount > 1) - { //多筆資料 - foreach (var history in histories) - { + if (rawdateCount == 0) + { + return null; + } + + if (histories != null && histories.HasValues) + { + if (rawdateCount > 1) + { //多筆資料 + foreach (var history in histories) + { + Dictionary arrangeRawData = new Dictionary(); + arrangeRawData.Add("@device_number", deviceNumberPoint.DeviceNumber); + arrangeRawData.Add("@point", deviceNumberPoint.Point); + + //時間 + if (history["abstime"] != null && history["abstime"].HasValues) + { + foreach (var abstime in history["abstime"]) + { + var name = abstime["@name"].ToString(); + switch (name) + { + case "start": + var startTimstamp = Convert.ToDateTime(abstime["@val"].ToString()).ToString("yyyy-MM-dd HH:mm:ss"); + arrangeRawData.Add("@start_timestamp", startTimstamp); + break; + case "end": + var endTimstamp = Convert.ToDateTime(abstime["@val"].ToString()).ToString("yyyy-MM-dd HH:mm:ss"); + arrangeRawData.Add("@end_timestamp", endTimstamp); + break; + } + } + } + + //區間內資料筆數 + if (history["int"] != null && history["int"].HasValues) + { + var count = Convert.ToInt32(histories["obj"]["int"]["@val"].ToString()); + arrangeRawData.Add("@count_rawdata", count); + } + + //整合數值(最大、最小、平均、總和) + if (history["real"] != null && history["real"].HasValues) + { + foreach (var real in history["real"]) + { + var name = real["@name"].ToString(); + switch (name) + { + case "min": + var min = Convert.ToDecimal(real["@val"].ToString()); + arrangeRawData.Add("@min_rawdata", min); + break; + case "max": + var max = Convert.ToDecimal(real["@val"].ToString()); + arrangeRawData.Add("@max_rawdata", max); + break; + case "avg": + var avg = Convert.ToDecimal(real["@val"].ToString()); + arrangeRawData.Add("@avg_rawdata", avg); + break; + case "sum": + var sum = Decimal.Parse(real["@val"].ToString(), System.Globalization.NumberStyles.Float); + arrangeRawData.Add("@sum_rawdata", sum); + break; + } + } + } + arrangeRawData.Add("@is_complete", 1); + arrangeRawData.Add("@repeat_times", 0); + arrangeRawData.Add("@fail_reason", null); + arrangeRawData.Add("@updated_at", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); + + arrangeRawDatas.Add(arrangeRawData); + } + } + else + { //單筆資料 Dictionary arrangeRawData = new Dictionary(); arrangeRawData.Add("@device_number", deviceNumberPoint.DeviceNumber); arrangeRawData.Add("@point", deviceNumberPoint.Point); //時間 - if (history["abstime"] != null && history["abstime"].HasValues) + if (histories["obj"]["abstime"] != null && histories["obj"]["abstime"].HasValues) { - foreach (var abstime in history["abstime"]) + foreach (var abstime in histories["obj"]["abstime"]) { var name = abstime["@name"].ToString(); switch (name) @@ -1407,16 +1477,16 @@ namespace BackendWorkerService.Quartz.Jobs } //區間內資料筆數 - if (history["int"] != null && history["int"].HasValues) + if (histories["obj"]["int"] != null && histories["obj"]["int"].HasValues) { var count = Convert.ToInt32(histories["obj"]["int"]["@val"].ToString()); arrangeRawData.Add("@count_rawdata", count); } //整合數值(最大、最小、平均、總和) - if (history["real"] != null && history["real"].HasValues) + if (histories["obj"]["real"] != null && histories["obj"]["real"].HasValues) { - foreach (var real in history["real"]) + foreach (var real in histories["obj"]["real"]) { var name = real["@name"].ToString(); switch (name) @@ -1448,76 +1518,15 @@ namespace BackendWorkerService.Quartz.Jobs arrangeRawDatas.Add(arrangeRawData); } } - else - { //單筆資料 - Dictionary arrangeRawData = new Dictionary(); - arrangeRawData.Add("@device_number", deviceNumberPoint.DeviceNumber); - arrangeRawData.Add("@point", deviceNumberPoint.Point); - //時間 - if (histories["obj"]["abstime"] != null && histories["obj"]["abstime"].HasValues) - { - foreach (var abstime in histories["obj"]["abstime"]) - { - var name = abstime["@name"].ToString(); - switch (name) - { - case "start": - var startTimstamp = Convert.ToDateTime(abstime["@val"].ToString()).ToString("yyyy-MM-dd HH:mm:ss"); - arrangeRawData.Add("@start_timestamp", startTimstamp); - break; - case "end": - var endTimstamp = Convert.ToDateTime(abstime["@val"].ToString()).ToString("yyyy-MM-dd HH:mm:ss"); - arrangeRawData.Add("@end_timestamp", endTimstamp); - break; - } - } - } - - //區間內資料筆數 - if (histories["obj"]["int"] != null && histories["obj"]["int"].HasValues) - { - var count = Convert.ToInt32(histories["obj"]["int"]["@val"].ToString()); - arrangeRawData.Add("@count_rawdata", count); - } - - //整合數值(最大、最小、平均、總和) - if (histories["obj"]["real"] != null && histories["obj"]["real"].HasValues) - { - foreach (var real in histories["obj"]["real"]) - { - var name = real["@name"].ToString(); - switch (name) - { - case "min": - var min = Convert.ToDecimal(real["@val"].ToString()); - arrangeRawData.Add("@min_rawdata", min); - break; - case "max": - var max = Convert.ToDecimal(real["@val"].ToString()); - arrangeRawData.Add("@max_rawdata", max); - break; - case "avg": - var avg = Convert.ToDecimal(real["@val"].ToString()); - arrangeRawData.Add("@avg_rawdata", avg); - break; - case "sum": - var sum = Decimal.Parse(real["@val"].ToString(), System.Globalization.NumberStyles.Float); - arrangeRawData.Add("@sum_rawdata", sum); - break; - } - } - } - arrangeRawData.Add("@is_complete", 1); - arrangeRawData.Add("@repeat_times", 0); - arrangeRawData.Add("@fail_reason", null); - arrangeRawData.Add("@updated_at", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); - - arrangeRawDatas.Add(arrangeRawData); - } + return arrangeRawDatas; + } + catch (Exception exception) + { + logger.LogError("【ArchiveElectricMeterDayJob】【任務失敗】"); + logger.LogError("【ArchiveElectricMeterDayJob】【任務失敗】[Exception]:{0} {1}", exception.ToString(), "device_number : " + deviceNumberPoint.FullDeviceNumberPoint); + return arrangeRawDatas; } - - return arrangeRawDatas; } } }