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==" }