diff --git a/BackendWorkerService/Quartz/Jobs/ArchiveElectricMeterDayJob.cs b/BackendWorkerService/Quartz/Jobs/ArchiveElectricMeterDayJob.cs
index 1635c46..a49d9f2 100644
--- a/BackendWorkerService/Quartz/Jobs/ArchiveElectricMeterDayJob.cs
+++ b/BackendWorkerService/Quartz/Jobs/ArchiveElectricMeterDayJob.cs
@@ -792,6 +792,8 @@ namespace BackendWorkerService.Quartz.Jobs
//stopWatch.Stop();
//logger.LogInformation("【ArchiveElectricMeterDayJob】【月歸檔效能檢驗】[取得資料花費時間]{0} 毫秒", stopWatch.ElapsedMilliseconds);
+ logger.LogInformation($@"before 月報 electricArchiveMonthRawDatas.Count() ={electricArchiveMonthRawDatas.Count()} ");
+
if (electricArchiveMonthRawDatas.Count() > 0)
{
var sql = $@"
@@ -889,13 +891,16 @@ namespace BackendWorkerService.Quartz.Jobs
@fail_reason)
END
- COMMIT TRANSACTION;";
+ COMMIT TRANSACTION;";
+
await backgroundServiceRepository.ExecuteSql(sql, electricArchiveMonthRawDatas);
+
if (!string.IsNullOrEmpty(saveToMSDB) && saveToMSDB == "1")
{
await backgroundServiceMsSqlRepository.ExecuteSql(mySql, electricArchiveMonthRawDatas);
}
}
+ // 水錶
if (waterArchiveMonthRawDatas.Count() > 0)
{
var sql = $@"
@@ -992,7 +997,8 @@ namespace BackendWorkerService.Quartz.Jobs
@fail_reason)
END
- COMMIT TRANSACTION;";
+ COMMIT TRANSACTION;";
+
await backgroundServiceRepository.ExecuteSql(sql, waterArchiveMonthRawDatas);
if (!string.IsNullOrEmpty(saveToMSDB) && saveToMSDB == "1")
{
@@ -1314,10 +1320,11 @@ namespace BackendWorkerService.Quartz.Jobs
logger.LogInformation("run sql electericArchiveDayRawDatas.Count() = " + electericArchiveDayRawDatas.Count());
await backgroundServiceRepository.ExecuteSql(sql, electericArchiveDayRawDatas);
- if (!string.IsNullOrEmpty(saveToMSDB) && saveToMSDB == "1")
- {
- await backgroundServiceMsSqlRepository.ExecuteSql(mySql, electericArchiveDayRawDatas);
- }
+ //明志 沒有mssql
+ //if (!string.IsNullOrEmpty(saveToMSDB) && saveToMSDB == "1")
+ //{
+ // await backgroundServiceMsSqlRepository.ExecuteSql(mySql, electericArchiveDayRawDatas);
+ //}
}
if (waterArchiveDayRawDatas.Count() > 0)
@@ -1556,7 +1563,7 @@ namespace BackendWorkerService.Quartz.Jobs
{
string sql = $@"CREATE TABLE IF NOT EXISTS `archive_electric_meter_day_{dbDateName}` (
`device_number` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
- `point` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `point` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`start_timestamp` datetime(6) NOT NULL,
`end_timestamp` datetime(6) NULL DEFAULT NULL,
`count_rawdata` int(11) NULL DEFAULT NULL,
diff --git a/BackendWorkerService/Services/Implement/ProcEletricMeterService.cs b/BackendWorkerService/Services/Implement/ProcEletricMeterService.cs
index 5abd190..aa43534 100644
--- a/BackendWorkerService/Services/Implement/ProcEletricMeterService.cs
+++ b/BackendWorkerService/Services/Implement/ProcEletricMeterService.cs
@@ -1016,7 +1016,7 @@ namespace BackendWorkerService.Services.Implement
archiveRequest.Headers.Add("Authorization", "Basic " + encoded);
archiveRequest.PreAuthenticate = true;
- logger.LogInformation($@" {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);
using (Stream reqStream = archiveRequest.GetRequestStream())
@@ -1124,20 +1124,22 @@ namespace BackendWorkerService.Services.Implement
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 dayInMonth = DateTime.DaysInMonth(day.Year, day.Month) +1; 、、(DateTime.Now - DateTime.Parse(startDay)).Days
+ var dayInMonth = (DateTime.Now - DateTime.Parse(day.ToString("yyyy-MM-") + "01")).Days + 1;
- var startTimestamp = string.Format("{0}T00:00:00.000+08:00", day.ToString("yyyy-MM-") + "01");
+
+ 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 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 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]}'
@@ -1162,12 +1164,17 @@ namespace BackendWorkerService.Services.Implement
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")
+
+
+ //if (device_number == "NTPC_D8_EE_E4_RF_Total_WHT_N1" || device_number == "NTPC_D8_EE_E4_RF_H2_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);
+ logger.LogError(@$"{device_number} json = {archiveJsonResult}");
//}
if (archiveJsonResult.ContainsKey("err")) //抓取錯誤
{
diff --git a/FrontendWebApi/ApiControllers/HydroMeterController.cs b/FrontendWebApi/ApiControllers/HydroMeterController.cs
index 224925c..472a1a9 100644
--- a/FrontendWebApi/ApiControllers/HydroMeterController.cs
+++ b/FrontendWebApi/ApiControllers/HydroMeterController.cs
@@ -21,6 +21,8 @@ using Google.Protobuf.Collections;
using Org.BouncyCastle.Asn1.Pkcs;
using NPOI.SS.Formula.Functions;
using static ICSharpCode.SharpZipLib.Zip.ExtendedUnixData;
+using static NPOI.HSSF.Record.PageBreakRecord;
+using System.Linq.Expressions;
namespace FrontendWebApi.ApiControllers
{
@@ -136,10 +138,11 @@ namespace FrontendWebApi.ApiControllers
switch (input.tableType)
{
case "day": date_yyyymmdd = @$" date(aemm.start_timestamp) = {aemmStaDate}"; break;
- case "month": date_yyyymmdd = @$" aemm.start_timestamp >= {aemmStaDate} and aemm.end_timestamp < {aemmEndDate} "; break;
+ // case "month": date_yyyymmdd = @$" aemm.start_timestamp >= {aemmStaDate} and aemm.end_timestamp < {aemmEndDate} "; break;
+ case "month": date_yyyymmdd = @$" date(aemm.start_timestamp) = {aemmStaDate}"; break;
case "year": date_yyyymmdd = @$" aemm.start_timestamp >= {aemmStaDate} and aemm.end_timestamp < {aemmEndDate} "; break;
}
- var sql = $@"set @i = -1;
+ var sql = $@" set @i = -1;
select fd.device_number, case when aemm.avg_rawdata = -1.0 then 'NaN' when aemm.avg_rawdata is null then 0.00 else aemm.avg_rawdata end as avg_rawdata, DATE_FORMAT(fd.date, @dateFormat) as timestamp
from (
select *
@@ -445,11 +448,12 @@ namespace FrontendWebApi.ApiControllers
{
List> result = new List>();
var building = backendRepository.GetAllAsync("select * from building where deleted = 0").Result;
- foreach(var b in building)
- {
- input.building_tag = b.building_tag;
- result.Add(this.ElectricList(input).Result.Value.Data.ToList());
- }
+ //foreach(var b in building)
+ //{
+ // input.building_tag = b.building_tag;
+ // 0 result.Add(this.ElectricList(input).Result.Value.Data.ToList());
+ //}
+ result.Add(this.ElectricList(input).Result.Value.Data.ToList());
List> docFile = new List>();
var workbook = new XSSFWorkbook();
@@ -508,14 +512,25 @@ namespace FrontendWebApi.ApiControllers
stylein12.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
stylein12.WrapText = true;
#endregion
+ string reportType = string.Empty;
+
+ switch (input.tableType.ToLower()) //day, week, month, year
+ {
+ case "day": reportType = "日報表"; break;
+ case "week": reportType = "周報表"; break;
+ case "month": reportType = "月報表"; break;
+ case "year": reportType = "年報表"; break;
+ }
+ //var sheet = workbook.CreateSheet($"{buildingName}");
+ var sheet = workbook.CreateSheet($"{reportType}");
foreach (var r in result)
{
if (r.Count > 0)
{
string buildingName = r.Select(x => x.building_name).FirstOrDefault();
- var sheet = workbook.CreateSheet($"{buildingName}");
+ Logger.LogInformation(@$"buildingName = {buildingName}" + Environment.NewLine);
int RowPosition = 0;
- #region set cell
+ #region set cell for columns
IRow row = sheet.CreateRow(RowPosition);
sheet.SetColumnWidth(0, 4 * 160 * 12);
sheet.SetColumnWidth(1, 4 * 160 * 12);
@@ -616,7 +631,7 @@ namespace FrontendWebApi.ApiControllers
ms.Flush();
ms.Seek(0, SeekOrigin.Begin);
Response.Headers.Add("Access-Control-Expose-Headers", "Content-Disposition");
- return File(ms, "application/vnd.ms", @$"電表報表_{System.DateTime.Now.ToString("yyyyMMddHHmm")}.xlsx");
+ return File(ms, "application/vnd.ms", @$"電表報表_{reportType}_{System.DateTime.Now.ToString("yyyyMMddHHmm")}.xlsx");
}
[HttpPost]
@@ -860,6 +875,12 @@ namespace FrontendWebApi.ApiControllers
return File(ms, "application/vnd.ms-excel", @$"電表報表{System.DateTime.Now.ToString("yyyyMMddHHmm")}.xlsx");
}
+
+ ///
+ /// 客製化報表 excel 匯出 - 總計不含分盤
+ ///
+ ///
+ ///
[HttpPost]
[Route("api/ExportElectricEachTotalCompareList")]
public FileResult OpeExportEachTotalCompareExcelElec([FromBody] HydroMeterInput input)