diff --git a/BackendWorkerService/Quartz/Jobs/ArchiveElectricMeterDayJob.cs b/BackendWorkerService/Quartz/Jobs/ArchiveElectricMeterDayJob.cs
index 26fabdf..54bd8f2 100644
--- a/BackendWorkerService/Quartz/Jobs/ArchiveElectricMeterDayJob.cs
+++ b/BackendWorkerService/Quartz/Jobs/ArchiveElectricMeterDayJob.cs
@@ -190,7 +190,7 @@ namespace BackendWorkerService.Quartz.Jobs
//}
//}
- await task_Detail.InsertWorkTime_End("ArchiveElectricMeterDayJob", "Day", "任務完成");
+ await task_Detail.InsertWorkTime_End("ArchiveElectricMeterDayJob", "Day", "任務完成0927");
}
catch (Exception exception)
{
@@ -615,38 +615,43 @@ namespace BackendWorkerService.Quartz.Jobs
try
{
await task_Detail.InsertWorkTime("ArchiveElectricMeterDayJob", "Month", "水電表月任務開始");
- //var FirstDay = actionDay.AddDays(-actionDay.Day + 1);
+ //var FirstDay = now.AddDays(-now.Day + 1);
+ //var LastDay = now.AddMonths(1).AddDays(-now.AddMonths(1).Day);
+ //var dayInMonth = DateTime.DaysInMonth(now.Year, now.Month);
+
+ //var FirstDay = actionDay.AddDays(-actionDay.Day + 1); // 計算出當月 1日
//var LastDay = actionDay.AddMonths(1).AddDays(-actionDay.AddMonths(1).Day);
- var FirstDay = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-") + "01");
- var LastDay = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd"));
- // 需要比原定日期增加 1天:因 Niagara 內部判斷為 < lastData, 並未包含結束當天 add by jiahao @2023-09-16
- var dayInMonth = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month) + 1;
+ //var FirstDay = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-") + "01");
+ //var LastDay = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd"));
- var startTimestamp = string.Format("{0}T00:00:00.000+08:00", FirstDay.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", LastDay.ToString("yyyy-MM-dd")); // by jiahao @2023-09-16
+ //// 需要比原定日期增加 1天:因 Niagara 內部判斷為 < lastData, 並未包含結束當天 add by jiahao @2023-09-16
+ //var dayInMonth = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month) + 1;
- var historyQueryFilter = $@"
-
-
-
- ";
+ //var startTimestamp = string.Format("{0}T00:00:00.000+08:00", FirstDay.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", LastDay.ToString("yyyy-MM-dd")); // by jiahao @2023-09-16
- logger.LogInformation("【ArchiveElectricMeterMonth】startTimestamp=", startTimestamp + " endTimestamp=" + endTimestamp);
+ //var historyQueryFilter = $@"
+ //
+ //
+ //
+ // ";
+
+ //logger.LogInformation("【ArchiveElectricMeterMonth】startTimestamp=", startTimestamp + " endTimestamp=" + endTimestamp);
//Stopwatch stopWatch = new Stopwatch();
//stopWatch.Start();
//抓取每個設備的資料
List> electricArchiveMonthRawDatas = new List>();
List> waterArchiveMonthRawDatas = new List>();
-
+
//收集 niagara 電錶 Data
- procEletricMeterService.obixData_collect_range(xmlDocument, electricDeviceNumberPoints, obixApiConfig, encoded, startTimestamp, endTimestamp, historyQueryFilter, electricArchiveMonthRawDatas);
+ procEletricMeterService.obixData_collect_range(xmlDocument, electricDeviceNumberPoints, obixApiConfig, encoded, electricArchiveMonthRawDatas);
//水錶結果收集
- procEletricMeterService.obixData_collect_range(xmlDocument, waterDeviceNumberPoints, obixApiConfig, encoded, startTimestamp, endTimestamp, historyQueryFilter, waterArchiveMonthRawDatas);
+ procEletricMeterService.obixData_collect_range(xmlDocument, waterDeviceNumberPoints, obixApiConfig, encoded, waterArchiveMonthRawDatas);
//if (electricMeters.Where(e => e.Device_number == "NTPC_D8_EE_E4_RF_Total_WHT_N1").Count() == 1)
//{
@@ -1021,11 +1026,11 @@ namespace BackendWorkerService.Quartz.Jobs
try
{
await task_Detail.InsertWorkTime("ArchiveElectricMeterDayJob", "Compensate", "補償機制任務開始");
-
+
await procEletricMeterService.ArchiveData();
await task_Detail.InsertWorkTime_End("ArchiveElectricMeterDayJob", "Compensate", "任務完成");
}
- catch(Exception ex)
+ catch (Exception ex)
{
await task_Detail.WorkFail("ArchiveElectricMeterDayJob", "Compensate", ex.ToString());
logger.LogError("【ArchiveElectricMeterDayJob】【補償機制】【任務失敗】");
@@ -1060,6 +1065,9 @@ namespace BackendWorkerService.Quartz.Jobs
List> electericArchiveDayRawDatas = new List>();
List> waterArchiveDayRawDatas = new List>();
+ //異常清單
+ Dictionary dicError = new Dictionary();
+
#region old request niagara history by obix
//foreach (var deviceNumberPoint in electricDeviceNumberPoints)
//{
@@ -1140,11 +1148,11 @@ namespace BackendWorkerService.Quartz.Jobs
//}
//電錶結果收集
// procEletricMeterService.obixData_collect(xmlDocument, electricDeviceNumberPoints, obixApiConfig, encoded, startTimestamp, endTimestamp, historyQueryFilter, electericArchiveDayRawDatas);
- procEletricMeterService.obixData_collect(xmlDocument, electricDeviceNumberPoints, obixApiConfig, encoded, electericArchiveDayRawDatas);
+ procEletricMeterService.obixData_collect(xmlDocument, electricDeviceNumberPoints, obixApiConfig, encoded, electericArchiveDayRawDatas, ref dicError);
//水錶結果收集
//procEletricMeterService.obixData_collect(xmlDocument, waterDeviceNumberPoints, obixApiConfig, encoded, startTimestamp, endTimestamp, historyQueryFilter, waterArchiveDayRawDatas);
- procEletricMeterService.obixData_collect(xmlDocument, waterDeviceNumberPoints, obixApiConfig, encoded, waterArchiveDayRawDatas);
+ procEletricMeterService.obixData_collect(xmlDocument, waterDeviceNumberPoints, obixApiConfig, encoded, waterArchiveDayRawDatas, ref dicError);
stopWatch.Stop();
logger.LogInformation(@$"【ArchiveElectricMeterDayJob】【天歸檔】【效能檢驗】[取得資料花費時間]{stopWatch.ElapsedMilliseconds } 毫秒 資料筆數=" + electericArchiveDayRawDatas.Count() );
@@ -1286,15 +1294,28 @@ 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($@"putint value NTPC_G6_EE_E4_B1F_CB3_WHT_N1 ={electricMeter.archive_lastDate} archive_lastActionDate={electricMeter.archive_lastActionDate}");
+
+
+ //異常設備 update
+ string sql2 = string.Empty;
+ foreach (var kv in dicError)
+ {
+ sql2 += $@"update device set archive_lastDate = '{kv.Value}' where device_number = '{kv.Key}' , archive_lastActionDate = now();";
+ }
+ if (!string.IsNullOrEmpty(sql2))
+ {
+ await backgroundServiceRepository.ExecuteSql(sql2);
+ }
+
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 0488f86..ee6d9fb 100644
--- a/BackendWorkerService/Services/Implement/ProcEletricMeterService.cs
+++ b/BackendWorkerService/Services/Implement/ProcEletricMeterService.cs
@@ -22,6 +22,7 @@ using BackendWorkerService.Quartz;
using BackendWorkerService.Quartz.Jobs;
using Microsoft.Extensions.Logging;
using Org.BouncyCastle.Asn1.Pkcs;
+using NPOI.SS.Formula.Functions;
namespace BackendWorkerService.Services.Implement
{
@@ -55,7 +56,8 @@ namespace BackendWorkerService.Services.Implement
XmlDocument xmlDocument = new XmlDocument();
var obixApiConfig = new ObixApiConfig();
string encoded = string.Empty;
-
+ //異常清單
+ Dictionary dicError = new Dictionary();
try
{
//取得可錯誤次數
@@ -377,7 +379,7 @@ namespace BackendWorkerService.Services.Implement
if (archiveDayJsonResult.ContainsKey("obj")) //表示可以讀取到內容
{
- var ArrangeRawDatas = ArrangeRawData(deviceNumberPoint, archiveDayJsonResult);
+ var ArrangeRawDatas = ArrangeRawData(deviceNumberPoint, archiveDayJsonResult, ref dicError);
if (ArrangeRawDatas != null && ArrangeRawDatas.Count() > 0)
{
electricArchiveDayRawDatas.AddRange(ArrangeRawDatas);
@@ -524,7 +526,7 @@ namespace BackendWorkerService.Services.Implement
if (archiveDayJsonResult.ContainsKey("obj")) //表示可以讀取到內容
{
- var ArrangeRawDatas = ArrangeRawData(deviceNumberPoint, archiveDayJsonResult);
+ var ArrangeRawDatas = ArrangeRawData(deviceNumberPoint, archiveDayJsonResult, ref dicError);
if (ArrangeRawDatas != null && ArrangeRawDatas.Count() > 0)
{
waterArchiveDayRawDatas.AddRange(ArrangeRawDatas);
@@ -624,7 +626,7 @@ namespace BackendWorkerService.Services.Implement
if (archiveWeekJsonResult.ContainsKey("obj")) //表示可以讀取到內容
{
- var ArrangeRawDatas = ArrangeRawData(deviceNumberPoint, archiveWeekJsonResult);
+ var ArrangeRawDatas = ArrangeRawData(deviceNumberPoint, archiveWeekJsonResult, ref dicError);
if (ArrangeRawDatas != null && ArrangeRawDatas.Count() > 0)
{
electricArchiveWeekRawDatas.AddRange(ArrangeRawDatas);
@@ -715,7 +717,7 @@ namespace BackendWorkerService.Services.Implement
if (archiveWeekJsonResult.ContainsKey("obj")) //表示可以讀取到內容
{
- var ArrangeRawDatas = ArrangeRawData(deviceNumberPoint, archiveWeekJsonResult);
+ var ArrangeRawDatas = ArrangeRawData(deviceNumberPoint, archiveWeekJsonResult, ref dicError);
if (ArrangeRawDatas != null && ArrangeRawDatas.Count() > 0)
{
waterArchiveWeekRawDatas.AddRange(ArrangeRawDatas);
@@ -956,7 +958,7 @@ namespace BackendWorkerService.Services.Implement
///
///
///
- public void obixData_collect(XmlDocument xmlDocument, List DeviceNumberPoints, ObixApiConfig obixApiConfig, string encoded, List> resultArchiveDayRawDatas)
+ public void obixData_collect(XmlDocument xmlDocument, List DeviceNumberPoints, ObixApiConfig obixApiConfig, string encoded, List> resultArchiveDayRawDatas, ref Dictionary dicError)
{
#region 水電錶 save to DB start
@@ -975,16 +977,7 @@ namespace BackendWorkerService.Services.Implement
var startDay = string.Format("{0}T00:00:00.000+08:00", deviceNumberPoint.archive_lastDate.ToString("yyyy-MM-dd").Replace(" ", "T"));
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"))
- //{
- // //同一天為 舊有格式 採用 endtime
- // endDay = string.Format("{0}T00:00:10.000+08:00", DateTime.Parse(endTimestamp).AddDays(1).ToString("yyyy-MM-dd").Replace(" ", "T"));
- //}
- //else
- //{ //不同天為新格式 採用 Start_timestamp
- // 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
@@ -1003,8 +996,8 @@ namespace BackendWorkerService.Services.Implement
string historyQueryFilter = $@"
-
-
+
+
";
string device_number = deviceNumberPoint.FullDeviceNumberPoint.Replace("$3", "");
@@ -1039,10 +1032,10 @@ namespace BackendWorkerService.Services.Implement
xmlDocument.LoadXml(archiveResponseContent);
var archiveJson = JsonConvert.SerializeXmlNode(xmlDocument);
var archiveJsonResult = (JObject)JsonConvert.DeserializeObject(archiveJson);
- 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 (device_number == "NTPC_G6_EE_E4_B1F_CB3_WHT_N1_KWH")
+ //{
+ // logger.LogError("obixData_collect - NTPC_G6_EE_E4_B1F_CB3_WHT_N1_KWH json = " + archiveJsonResult);
+ //}
if (archiveJsonResult.ContainsKey("err")) //抓取錯誤
{
//logger.LogError("【ArchiveElectricMeterDayJob】【天歸檔】【取得資料失敗】");
@@ -1065,41 +1058,86 @@ namespace BackendWorkerService.Services.Implement
archiveDayRawData.Add("@updated_at", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
resultArchiveDayRawDatas.Add(archiveDayRawData);
+ if (!dicError.ContainsKey(deviceNumberPoint.DeviceNumber))
+ {
+ dicError.Add(deviceNumberPoint.DeviceNumber, day.ToString("yyyy-MM-dd")); //記錄異常設備與日期
+ }
}
if (archiveJsonResult.ContainsKey("obj")) //表示可以讀取到內容
{
- logger.LogError("【ArchiveElectricMeterDayJob】【天歸檔】【OK】{0}", archiveJsonResult);
- var ArrangeRawDatas = ArrangeRawData(deviceNumberPoint, archiveJsonResult);
+ //logger.LogInformation("【ArchiveElectricMeterDayJob】【天歸檔】【OK】{0}", archiveJsonResult);
+
+ var ArrangeRawDatas = ArrangeRawData(deviceNumberPoint, archiveJsonResult, ref dicError); // <-- 解析內容中 也有判斷是否 max == 0 的收集
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);
}
- }
+ else {
+ if (!dicError.ContainsKey(deviceNumberPoint.DeviceNumber))
+ {
+ dicError.Add(deviceNumberPoint.DeviceNumber, day.ToString("yyyy-MM-dd")); //記錄異常設備與日期
+ }
+ }
+ }
}
#endregion
}
#endregion 水電錶作業 save to DB end
+
+ // string funish = string.Empty;
}
- public void obixData_collect_range(XmlDocument xmlDocument, List DeviceNumberPoints, ObixApiConfig obixApiConfig, string encoded, string startTimestamp, string endTimestamp, string historyQueryFilter, List> resultArchiveDayRawDatas)
+ public void obixData_collect_range(XmlDocument xmlDocument, List DeviceNumberPoints, ObixApiConfig obixApiConfig, string encoded, List> resultArchiveDayRawDatas)
{
-
+ //異常清單
+ Dictionary dicError = new Dictionary(); //僅需要記錄在 day 此處不需要
#region 水電錶 save to DB start
// 需要先 group by DeviceNumberPoints 因為已經展開日期
- var DevicePoints = DeviceNumberPoints
- .GroupBy(x => new { _FullDeviceNumberPoint = x.FullDeviceNumberPoint })
- .Select(x => new DeviceNumberPoint { FullDeviceNumberPoint = x.Key._FullDeviceNumberPoint }).ToList();
+ //var DevicePoints = DeviceNumberPoints
+ // .GroupBy(x => new { _FullDeviceNumberPoint = x.FullDeviceNumberPoint })
+ // .Select(x => new DeviceNumberPoint { FullDeviceNumberPoint = x.Key._FullDeviceNumberPoint }).ToList();
- logger.LogInformation($@"before groupby DeviceNumberPoints.Count() = {DeviceNumberPoints.Count().ToString()} after DevicePoints.Count() = {DevicePoints.Count().ToString()}"); // ----------- log
+ //logger.LogInformation($@"before groupby DeviceNumberPoints.Count() = {DeviceNumberPoints.Count().ToString()} after DevicePoints.Count() = {DevicePoints.Count().ToString()}"); // ----------- log
+ // string last_deviceNumber = string.Empty;
+ foreach (var deviceNumberPoint in DeviceNumberPoints)
+ {
+ //if (string.IsNullOrEmpty(last_deviceNumber)) last_deviceNumber = deviceNumberPoint.DeviceNumber;
+ //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; //如果是今天 就不要用歸檔了
+ //}
- foreach (var deviceNumberPoint in DevicePoints)
- {
+ var startDay = deviceNumberPoint.archive_lastDate.ToString("yyyy-MM-dd");
+ var endDay = DateTime.Now.ToString("yyyy-MM-dd");
+
+ logger.LogInformation($@"before startDay = {startDay} endDay={endDay}"); // ----------- log
+
#region
- // foreach (DateTime day in EachDay(startDay, endDay))
- //{
+ foreach (DateTime day in EachMonth(startDay , endDay))
+ {
+ // 需要比原定日期增加 1天:因 Niagara 內部判斷為 < lastData, 並未包含結束當天 add by jiahao @2023-09-16
+ var dayInMonth = DateTime.DaysInMonth(day.Year, day.Month) +1;
+
+ var startTimestamp = string.Format("{0}T00:00:00.000+08:00", day.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}T00:00:10.000+08:00", day.AddMonths(1).ToString("yyyy-MM-") + "01"); // by jiahao @2023-09-26
+
+ var historyQueryFilter = $@"
+
+
+
+ ";
+
+ logger.LogInformation("【ArchiveElectricMeterMonth】startTimestamp=", startTimestamp + " endTimestamp=" + endTimestamp);
+
string device_number = deviceNumberPoint.FullDeviceNumberPoint.Replace("$3", "");
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]}'
@@ -1157,20 +1195,20 @@ namespace BackendWorkerService.Services.Implement
if (archiveJsonResult.ContainsKey("obj")) //表示可以讀取到內容
{
- var ArrangeRawDatas = ArrangeRawData(deviceNumberPoint, archiveJsonResult);
+ var ArrangeRawDatas = ArrangeRawData(deviceNumberPoint, archiveJsonResult, ref dicError);
if (ArrangeRawDatas != null && ArrangeRawDatas.Count() > 0)
{
resultArchiveDayRawDatas.AddRange(ArrangeRawDatas);
}
}
- //}
+ }
#endregion
}
#endregion 水電錶作業 save to DB end
}
- private List> ArrangeRawData(DeviceNumberPoint deviceNumberPoint, JObject jsonResult)
+ private List> ArrangeRawData(DeviceNumberPoint deviceNumberPoint, JObject jsonResult, ref Dictionary dicError)
{
List> arrangeRawDatas = new List>();
var histories = jsonResult["obj"]["list"];
@@ -1233,6 +1271,16 @@ namespace BackendWorkerService.Services.Implement
case "max":
var max = Decimal.Parse(real["@val"].ToString(), System.Globalization.NumberStyles.Float);
arrangeRawData.Add("@max_rawdata", max);
+
+ //add by jiahao 2023-09-26
+ //if (max == 0)
+ //{
+ // if (!dicError.ContainsKey(deviceNumberPoint.DeviceNumber))
+ // {
+ // dicError.Add(deviceNumberPoint.DeviceNumber, arrangeRawData["@start_timestamp"].ToString()); //記錄異常設備與日期
+ // }
+ //}
+
break;
case "avg":
var avg = Decimal.Parse(real["@val"].ToString(), System.Globalization.NumberStyles.Float);
@@ -1301,6 +1349,16 @@ namespace BackendWorkerService.Services.Implement
case "max":
var max = Decimal.Parse(real["@val"].ToString(), System.Globalization.NumberStyles.Float);
arrangeRawData.Add("@max_rawdata", max);
+
+ //add by jiahao 2023-09-26
+ //if (max == 0)
+ //{
+ // if (!dicError.ContainsKey(deviceNumberPoint.DeviceNumber))
+ // {
+ // dicError.Add(deviceNumberPoint.DeviceNumber, arrangeRawData["@start_timestamp"].ToString()); //記錄異常設備與日期
+ // }
+ //}
+
break;
case "avg":
var avg = Decimal.Parse(real["@val"].ToString(), System.Globalization.NumberStyles.Float);
@@ -1334,17 +1392,20 @@ namespace BackendWorkerService.Services.Implement
///
///
public IEnumerable EachDay(string from, string thru)
- {
- var strtday = DateTime.Parse(from);
+ {
+ var strtday = DateTime.Parse(from).AddDays(-1); //每次重做 2天
var endday = DateTime.Parse(thru);
for (var day = strtday.Date; day.Date <= endday.Date; day = day.AddDays(1))
yield return day;
+ }
+
+ public IEnumerable EachMonth(string from, string thru)
+ {
+ var strtday = DateTime.Parse(from);
+ var endday = DateTime.Parse(thru);
+ for (var _month = strtday.Date; _month.Month <= endday.Month; _month = _month.AddMonths(1))
+ yield return _month;
- /// 使用方式
- //foreach (DateTime day in EachDay(DateTime.Parse(date1), DateTime.Parse(date2)))
- //{
-
- //}
}
}
diff --git a/BackendWorkerService/appsettings.Development.json b/BackendWorkerService/appsettings.Development.json
index 4333ec0..8f5c0e0 100644
--- a/BackendWorkerService/appsettings.Development.json
+++ b/BackendWorkerService/appsettings.Development.json
@@ -27,7 +27,8 @@
//"Database": "IgYBsgG2VLKKxFb64j7LOA==", //wsp
//"Database": "7gWfmZ28HGIJZbxEbK+0yg==", //tpe_dome_dome
//"Database": "siTUcDaC/g2yGTMFWD72Kg==", //tpe_dome_hotel
- "Database": "Rq7Gn4x6LwBvVtl7GY8LbA==", //mcut
+ //"Database": "Rq7Gn4x6LwBvVtl7GY8LbA==", //mcut
+ "Database": "j9LOmjFh2/9PpuwnVB8ugqnKdBDJHx1AAT7aTWeh37E=", //ibms_mcut_online
"Root": "SzdxEgaJJ7tcTCrUl2zKsA==",
"Password": "FVAPxztxpY4gJJKQ/se4bQ=="
},
diff --git a/FrontendWebApi/ApiControllers/HydroMeterController.cs b/FrontendWebApi/ApiControllers/HydroMeterController.cs
index b1b025f..6dd95f5 100644
--- a/FrontendWebApi/ApiControllers/HydroMeterController.cs
+++ b/FrontendWebApi/ApiControllers/HydroMeterController.cs
@@ -978,12 +978,12 @@ namespace FrontendWebApi.ApiControllers
int columnIndex = 1; // 假設第一欄是要填入的位置
List need_cal_total = new List
{
- "綜合大樓",
- "體育舘",
- "化工電機",
- "創新大樓",
- "學人會館",
- "綠能中心"
+ "綜合大樓", //G6
+ "體育舘", //F5
+ "化工電機", //D8
+ "創新大樓", //G9
+ "學人會館", //B9
+ "綠能中心" //$340B9
};
List no_cal_sum_device = new List
{
@@ -992,7 +992,7 @@ namespace FrontendWebApi.ApiControllers
"第二校區總盤",
"薄膜分盤"
};
- List need_green_device = new List
+ List need_green_device = new List //需要綠色底色
{
"第一校區總盤",
"圖資大樓總盤",
@@ -1000,8 +1000,8 @@ namespace FrontendWebApi.ApiControllers
"電子館分盤",
"機械館分盤",
"電機館分盤",
- "學1-4舍空調總盤",
- "學五舍五眷總盤",
+ "學1-4舍餐廳總盤", //C7
+ "學5舍5眷總盤", //B4
"8眷舍分盤",
"企教分盤",
"7眷舍分盤",
@@ -1017,6 +1017,14 @@ namespace FrontendWebApi.ApiControllers
#region 特定棟別總計處理
foreach (var item in result)
{
+ if (item.device_full_name == "NTPC_B4_EE_E4_B1F_VCB3B_WHT_N1") //學5舍5眷總盤
+ {
+ Console.WriteLine("here 學5舍5眷總盤 " + item.building_name);
+ if (item.building_name == "學5舍5眷總盤")
+ {
+ Console.WriteLine("here 學5舍5眷總盤 " + item.building_name);
+ }
+ }
if (!need_cal_total.Contains(item.building_name))
{
continue;
@@ -1115,7 +1123,19 @@ namespace FrontendWebApi.ApiControllers
columnIndex++;
cell = row.GetCell(columnIndex++) ?? row.CreateCell(columnIndex++);
- cell.SetCellValue(last_build + "總計");
+
+ if (last_build == "化工電機")
+ {
+ cell.SetCellValue("化工館總計");
+ }
+ else if (last_build == "學人會館")
+ {
+ cell.SetCellValue("學人國際總計");
+ }
+ else {
+ cell.SetCellValue(last_build + "總計");
+ }
+
cell.CellStyle = greenCellStyle;
foreach (var timeStampData in buildingSumData[last_build])
@@ -1287,8 +1307,8 @@ order by e.report_priority, a.priority";
"電子館分盤",
"機械館分盤",
"電機館分盤",
- "學1-4舍空調總盤",
- "學五舍五眷總盤",
+ "學1-4舍餐廳總盤",
+ "學5舍5眷總盤",
"8眷舍分盤",
"企教分盤",
"7眷舍分盤",
@@ -1307,10 +1327,15 @@ order by e.report_priority, a.priority";
foreach (var l in ResultData)
{
var full_name = await backendRepository.GetOneAsync($"select full_name from device where device_number = '{l.device_number}'");
+ //if (l.device_number == "NTPC_B4_EE_E4_B1F_VCB3B_WHT_N1")//"學5舍5眷總盤"
+ //{
+ // Console.WriteLine("here " + l.device_full_name);
+ //}
+
if (input.Mode == HydroMeterInputSearchMode.Custom && !need_green_device.Contains(full_name))
{
continue;
- }
+ }
l.rawData = new List();
@@ -1386,11 +1411,11 @@ order by e.report_priority, a.priority";
apiResult.Code = "0000";
if (input.Mode == HydroMeterInputSearchMode.All)
{
- apiResult.Data = ResultData;
+ apiResult.Data = ResultData; //含分盤
}
else
{
- apiResult.Data = ResultData_custom;
+ apiResult.Data = ResultData_custom; //不含分盤
}
}
catch (Exception exception)
diff --git a/FrontendWebApi/appsettings.Development.json b/FrontendWebApi/appsettings.Development.json
index afd6507..2548a1a 100644
--- a/FrontendWebApi/appsettings.Development.json
+++ b/FrontendWebApi/appsettings.Development.json
@@ -22,7 +22,7 @@
//"Database": "siTUcDaC/g2yGTMFWD72Kg==", //tpe_dome_hotel
//"Database": "iuaY0h0+TWkir44/eZLDqw==", //tpe_dome_office
//"Database": "Rq7Gn4x6LwBvVtl7GY8LbA==", //MCUT
- "Database": "j9LOmjFh2/9PpuwnVB8ugqnKdBDJHx1AAT7aTWeh37E=",
+ "Database": "j9LOmjFh2/9PpuwnVB8ugqnKdBDJHx1AAT7aTWeh37E=", // ibms_mcut_online
"Root": "SzdxEgaJJ7tcTCrUl2zKsA==",
"Password": "FVAPxztxpY4gJJKQ/se4bQ=="
}