Merge remote-tracking branch 'origin/MCUT' into MCUT
# Conflicts: # FrontendWebApi/appsettings.Development.json
This commit is contained in:
commit
7c9866d54e
@ -14,15 +14,14 @@
|
||||
},
|
||||
"DBConfig": {
|
||||
"MySqlDBConfig": {
|
||||
"Server": "FYlY+w0XDIz+jmF2rlZWJw==", //0.201
|
||||
"Port": "js2LutKe+rdjzdxMPQUrvQ==",
|
||||
"Server": "CYGthbCeGtAXT4s1NOSJHQ==", //0.132
|
||||
"Port": "mkF51jVbg40V5K5eTh2Ckw==",
|
||||
//"Database": "VJB2XC+lAtzuHObDGMVOAA==", //30
|
||||
//"Database": "IgYBsgG2VLKKxFb64j7LOA==", //wsp
|
||||
//"Database": "7gWfmZ28HGIJZbxEbK+0yg==", //tpe_dome_dome
|
||||
//"Database": "siTUcDaC/g2yGTMFWD72Kg==", //tpe_dome_hotel
|
||||
//"Database": "iuaY0h0+TWkir44/eZLDqw==", //tpe_dome_office
|
||||
"Database": "Rq7Gn4x6LwBvVtl7GY8LbA==", //mcut
|
||||
//"Database": "2U+9jYGy0dCbMzLaguBXow==", //tpe_dome_mall
|
||||
//"Database": "Rq7Gn4x6LwBvVtl7GY8LbA==", //mcut
|
||||
"Database": "XZ2fOBnta9kdVGEb7y92cg==", //ibms_mcut
|
||||
"Root": "SzdxEgaJJ7tcTCrUl2zKsA==",
|
||||
"Password": "FVAPxztxpY4gJJKQ/se4bQ=="
|
||||
},
|
||||
|
@ -189,7 +189,7 @@ namespace BackendWorkerService.Quartz.Jobs
|
||||
// 每日資料製作
|
||||
await day_proc(procEletricMeterService, saveToMSDB, archiveResponse, electricDeviceNumberPoints, waterDeviceNumberPoints, obixApiConfig, encoded, startDay, endDay, dbDateName);
|
||||
|
||||
//}
|
||||
//}
|
||||
//}
|
||||
await task_Detail.InsertWorkTime_End("ArchiveElectricMeterDayJob", "Day", "任務完成0927");
|
||||
}
|
||||
@ -799,6 +799,8 @@ namespace BackendWorkerService.Quartz.Jobs
|
||||
{
|
||||
var sql = $@"
|
||||
UPDATE archive_electric_meter_month SET
|
||||
start_timestamp = @start_timestamp,
|
||||
end_timestamp = @end_timestamp,
|
||||
count_rawdata = @count_rawdata,
|
||||
min_rawdata = round(@min_rawdata, 2),
|
||||
max_rawdata = round(@max_rawdata, 2),
|
||||
@ -846,6 +848,8 @@ namespace BackendWorkerService.Quartz.Jobs
|
||||
var mySql = $@"BEGIN TRANSACTION;
|
||||
|
||||
UPDATE archive_electric_meter_month SET
|
||||
start_timestamp = @start_timestamp,
|
||||
end_timestamp = @end_timestamp,
|
||||
count_rawdata = @count_rawdata,
|
||||
min_rawdata = round(@min_rawdata, 2),
|
||||
max_rawdata = round(@max_rawdata, 2),
|
||||
@ -906,6 +910,8 @@ namespace BackendWorkerService.Quartz.Jobs
|
||||
{
|
||||
var sql = $@"
|
||||
UPDATE archive_water_meter_month SET
|
||||
start_timestamp = @start_timestamp,
|
||||
end_timestamp = @end_timestamp,
|
||||
count_rawdata = @count_rawdata,
|
||||
min_rawdata = round(@min_rawdata, 2),
|
||||
max_rawdata = round(@max_rawdata, 2),
|
||||
@ -952,6 +958,8 @@ namespace BackendWorkerService.Quartz.Jobs
|
||||
var mySql = $@"BEGIN TRANSACTION;
|
||||
|
||||
UPDATE archive_water_meter_month SET
|
||||
start_timestamp = @start_timestamp,
|
||||
end_timestamp = @end_timestamp,
|
||||
count_rawdata = @count_rawdata,
|
||||
min_rawdata = round(@min_rawdata, 2),
|
||||
max_rawdata = round(@max_rawdata, 2),
|
||||
@ -1231,7 +1239,7 @@ namespace BackendWorkerService.Quartz.Jobs
|
||||
|
||||
update device set archive_lastDate = @start_timestamp, archive_lastActionDate = @updated_at
|
||||
where device_number = @device_number;"; //archive_lastDate 前次完成時間 ,archive_lastActionDate 本次作業時間
|
||||
await backgroundServiceRepository.ExecuteSql(mySql, electericArchiveDayRawDatas);
|
||||
await backgroundServiceRepository.ExecuteSql(mySql, row);
|
||||
}
|
||||
#region 明志 沒有mssql
|
||||
//if (!string.IsNullOrEmpty(saveToMSDB) && saveToMSDB == "1")
|
||||
@ -1329,7 +1337,11 @@ namespace BackendWorkerService.Quartz.Jobs
|
||||
#endregion
|
||||
}
|
||||
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
|
||||
count_rawdata = @count_rawdata,
|
||||
min_rawdata = round(@min_rawdata, 2),
|
||||
@ -1464,12 +1476,13 @@ namespace BackendWorkerService.Quartz.Jobs
|
||||
END
|
||||
|
||||
COMMIT TRANSACTION;";
|
||||
await backgroundServiceRepository.ExecuteSql(sql, waterArchiveDayRawDatas);
|
||||
await backgroundServiceRepository.ExecuteSql(sql, row);
|
||||
if (!string.IsNullOrEmpty(saveToMSDB) && saveToMSDB == "1")
|
||||
{
|
||||
await backgroundServiceMsSqlRepository.ExecuteSql(mySql, waterArchiveDayRawDatas);
|
||||
await backgroundServiceMsSqlRepository.ExecuteSql(mySql, row);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -23,6 +23,7 @@ using BackendWorkerService.Quartz.Jobs;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Org.BouncyCastle.Asn1.Pkcs;
|
||||
using NPOI.SS.Formula.Functions;
|
||||
using MySqlX.XDevAPI.Relational;
|
||||
|
||||
namespace BackendWorkerService.Services.Implement
|
||||
{
|
||||
@ -965,9 +966,9 @@ namespace BackendWorkerService.Services.Implement
|
||||
logger.LogInformation($@"s0 DeviceNumberPoints.Count() = {DeviceNumberPoints.Count().ToString()}");
|
||||
foreach (var deviceNumberPoint in DeviceNumberPoints)
|
||||
{
|
||||
if (deviceNumberPoint.DeviceNumber == "NTPC_G6_EE_E4_B1F_CB3_WHT_N1")
|
||||
if (deviceNumberPoint.DeviceNumber == "NTPC_G6_EE_E4_B1F_CB1_WHT_N1") //NTPC_G6_EE_E4_B1F_CB2_WHT_N1 NTPC_G6_EE_E4_B1F_MVCB_WHT_N1
|
||||
{
|
||||
logger.LogInformation($@"s1 devie_number = NTPC_G6_EE_E4_B1F_CB3_WHT_N1 archive_lastDate={deviceNumberPoint.archive_lastDate}");
|
||||
logger.LogInformation($@"s1 devie_number = NTPC_G6_EE_E4_B1F_CB1_WHT_N1 archive_lastDate={deviceNumberPoint.archive_lastDate}");
|
||||
}
|
||||
if (deviceNumberPoint.archive_lastDate.ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd"))
|
||||
{
|
||||
@ -975,9 +976,13 @@ namespace BackendWorkerService.Services.Implement
|
||||
continue; //如果是今天 就不要用歸檔了
|
||||
}
|
||||
|
||||
var startDay = string.Format("{0}T00:00:00.000+08:00", deviceNumberPoint.archive_lastDate.ToString("yyyy-MM-dd").Replace(" ", "T"));
|
||||
//var startDay = string.Format("{0}T00:00:00.000+08:00", deviceNumberPoint.archive_lastDate.ToString("yyyy-MM-dd").Replace(" ", "T"));
|
||||
var startDay = deviceNumberPoint.archive_lastDate.ToString("yyyy-MM-dd");
|
||||
var endDay = System.DateTime.Now.ToString("yyyy-MM-dd");
|
||||
|
||||
//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.AddDays(-29).ToString();
|
||||
|
||||
//logger.LogInformation($@"before startDay = {startDay} endDay={endDay}"); // ----------- log
|
||||
|
||||
#region
|
||||
@ -986,13 +991,12 @@ namespace BackendWorkerService.Services.Implement
|
||||
if (day.ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd"))
|
||||
{
|
||||
//logger.LogInformation($@"s2 foreach (DateTime day in EachDay(startDay, endDay)) 判斷為今天 不用跑 day = {day} "); // ----------- log
|
||||
continue; //如果是今天 就不要用歸檔了
|
||||
break; //如果是今天 就不要用歸檔了
|
||||
}
|
||||
|
||||
//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 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'>
|
||||
@ -1016,7 +1020,7 @@ namespace BackendWorkerService.Services.Implement
|
||||
archiveRequest.Headers.Add("Authorization", "Basic " + encoded);
|
||||
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);
|
||||
using (Stream reqStream = archiveRequest.GetRequestStream())
|
||||
@ -1120,99 +1124,109 @@ namespace BackendWorkerService.Services.Implement
|
||||
//}
|
||||
|
||||
var startDay = deviceNumberPoint.archive_lastDate.ToString("yyyy-MM-dd");
|
||||
var endDay = DateTime.Now.ToString("yyyy-MM-dd");
|
||||
var endDay = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
|
||||
|
||||
logger.LogInformation($@"before startDay = {startDay} endDay={endDay}"); // ----------- log
|
||||
|
||||
#region
|
||||
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; 、、(DateTime.Now - DateTime.Parse(startDay)).Days
|
||||
var dayInMonth = (DateTime.Now - DateTime.Parse(day.ToString("yyyy-MM-") + "01")).Days + 1;
|
||||
//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; 、、(DateTime.Now - DateTime.Parse(startDay)).Days
|
||||
DateTime today = DateTime.Now;
|
||||
|
||||
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", 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", DateTime.Now.ToString("yyyy-MM-dd")); // by jiahao @2023-10-03
|
||||
//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}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 = $@"<obj is='obix: HistoryFilter'>
|
||||
var historyQueryFilter = $@"<obj is='obix: HistoryFilter'>
|
||||
<abstime name='start' val='{startTimestamp}' />
|
||||
<abstime name='end' val='{endTimestamp}' />
|
||||
<reltime name='interval' val = 'PT{dayInMonth.ToString()}D' />
|
||||
<reltime name='interval' val = 'PT{(dayInMonth+1).ToString()}D' />
|
||||
</obj>";
|
||||
|
||||
|
||||
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
|
||||
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
|
||||
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_last_name_tag = '{device_number.Split("_")[6]}' and device_serial_tag = '{device_number.Split("_")[7]}'
|
||||
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 archiveDayRequest = (HttpWebRequest)WebRequest.Create($"{obixApiConfig.ApiBase}obix/histories/{station}/H_E1_B1F_MVCB_MVCBH_V1/~historyRollup/");
|
||||
archiveRequest.Method = "POST";
|
||||
archiveRequest.Headers.Add("Authorization", "Basic " + encoded);
|
||||
archiveRequest.PreAuthenticate = true;
|
||||
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/");
|
||||
archiveRequest.Method = "POST";
|
||||
archiveRequest.Headers.Add("Authorization", "Basic " + encoded);
|
||||
archiveRequest.PreAuthenticate = true;
|
||||
|
||||
|
||||
byte[] byteArray = Encoding.UTF8.GetBytes(historyQueryFilter);
|
||||
using (Stream reqStream = archiveRequest.GetRequestStream())
|
||||
byte[] byteArray = Encoding.UTF8.GetBytes(historyQueryFilter);
|
||||
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);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
resultArchiveDayRawDatas.AddRange(ArrangeRawDatas);
|
||||
}
|
||||
}
|
||||
//}
|
||||
#endregion
|
||||
}
|
||||
|
||||
@ -1414,7 +1428,7 @@ namespace BackendWorkerService.Services.Implement
|
||||
{
|
||||
var strtday = DateTime.Parse(from);
|
||||
var endday = DateTime.Parse(thru);
|
||||
for (var _month = strtday.Date; _month.Month <= endday.Month; _month = _month.AddMonths(1))
|
||||
for (var _month = strtday.Date; _month.Month <= endday.Month; _month = _month.AddDays(1))
|
||||
yield return _month;
|
||||
|
||||
}
|
||||
|
@ -879,8 +879,12 @@
|
||||
|
||||
const ElecEachTotal =
|
||||
$("li.active [name=reportTypeRadio]").data("type") === "compare";
|
||||
if (ElecEachTotal) {
|
||||
const [year, month] = $("#elecMonthDate").val().split("-");
|
||||
if (ElecEachTotal) {
|
||||
let preDate = new Date($("#elecMonthDate").val().split("-") + "-01");
|
||||
preDate.setMonth(preDate.getMonth() - 1);
|
||||
const [year, month] = $("#elecMonthDate").val().split("-");
|
||||
const preYear = preDate.getFullYear();
|
||||
const preMonth = (preDate.getMonth() + 1).toString().padStart(2, '0');
|
||||
datesColumns = [
|
||||
{
|
||||
label: "選擇月份 <br>" + `${year}${month}` + "(A)",
|
||||
@ -888,16 +892,15 @@
|
||||
},
|
||||
{
|
||||
label:
|
||||
"前一月份 <br>" +
|
||||
`${year}${month - 1 > 10 ? month - 1 : `0${month - 1}`}` +
|
||||
"前一月份 <br>" +
|
||||
`${preYear}${preMonth}` +
|
||||
"(B)",
|
||||
value: `${year}-${month - 1 > 10 ? month - 1 : `0${month - 1}`}`,
|
||||
value: `${preYear}-${preMonth}`,
|
||||
},
|
||||
{
|
||||
label:
|
||||
"差異比較 <br>" +
|
||||
`${year}${month}(A)-${year}${month - 1 > 10 ? month - 1 : `0${month - 1}`
|
||||
}(B)`,
|
||||
`${year}${month}(A)-${preYear}${preMonth}(B)`,
|
||||
value: "last month different",
|
||||
},
|
||||
{
|
||||
|
@ -80,11 +80,17 @@ namespace FrontendWebApi.ApiControllers
|
||||
? input.startTime + "-01"
|
||||
: input.tableType == "month" || input.tableType == "year" ? input.startTime + "-01-01"
|
||||
: null;
|
||||
var yyyymmdd = System.DateTime.Parse(input.startTime + "-01").AddMonths(1);
|
||||
//var endTime = input.tableType == "day" || input.tableType == "week"
|
||||
// ? input.startTime.Split("-")[0] + "-" + (Int32.Parse(input.startTime.Split("-")[1]) + 1).ToString().PadLeft(2, '0') + "-01"
|
||||
// : input.tableType == "month" ? (Int32.Parse(input.startTime.Split("-")[0]) + 1) + "-01-01"
|
||||
// : input.tableType == "year" ? (Int32.Parse(input.endTime) + 1).ToString() + "-01-01"
|
||||
// : null;
|
||||
var endTime = input.tableType == "day" || input.tableType == "week"
|
||||
? input.startTime.Split("-")[0] + "-" + (Int32.Parse(input.startTime.Split("-")[1]) + 1).ToString().PadLeft(2, '0') + "-01"
|
||||
: input.tableType == "month" ? (Int32.Parse(input.startTime.Split("-")[0]) + 1) + "-01-01"
|
||||
: input.tableType == "year" ? (Int32.Parse(input.endTime) + 1).ToString() + "-01-01"
|
||||
: null;
|
||||
? yyyymmdd.ToString("yyyy-MM-dd")
|
||||
: input.tableType == "month" ? (Int32.Parse(input.startTime.Split("-")[0]) + 1) + "-01-01"
|
||||
: input.tableType == "year" ? (Int32.Parse(input.endTime) + 1).ToString() + "-01-01"
|
||||
: null;
|
||||
string sqlWhere = "";
|
||||
string sqlGroup = "";
|
||||
string sqlAvgRawData = "";
|
||||
@ -1293,6 +1299,7 @@ namespace FrontendWebApi.ApiControllers
|
||||
var start_month = date.ToString("MM"); // 查詢月
|
||||
var last_year = previousYear.ToString("yyyy"); // 上個查詢年
|
||||
var last_month = previousMonth.ToString("MM"); // 上個查詢月
|
||||
var pre_year = previousMonth.ToString("yyyy"); // 上個查詢月(年份)
|
||||
|
||||
string sqlWhere = "";
|
||||
string tag_quantity = await backendRepository.GetOneAsync<string>("select system_value from variable where system_type = 'obixConfig' and system_key = 'tag_quantity' and deleted = 0");
|
||||
@ -1323,14 +1330,14 @@ namespace FrontendWebApi.ApiControllers
|
||||
}
|
||||
|
||||
string header_now = start_year + "-" + start_month;
|
||||
string header_lastM = start_year + "-" + last_month;
|
||||
string header_lastM = pre_year + "-" + last_month;
|
||||
string header_lastY = last_year + "-" + start_month;
|
||||
|
||||
var sql = $@"
|
||||
select e.full_name building_name, a.device_number, '{header_now}' searchMT, ifnull(b.kwh_sum, 0) searchM, '{header_lastM}' lastMT, ifnull(c.kwh_sum, 0) lastM, '{header_lastY}' lastYT, ifnull(d.kwh_sum, 0) lastY
|
||||
from device a
|
||||
left join (select device_number, sum(kwh_result) kwh_sum from archive_electric_meter_month where year(start_timestamp) = {start_year} and month(start_timestamp) = {start_month} group by device_number) b on a.device_number COLLATE utf8mb4_0900_ai_ci = b.device_number -- month1
|
||||
left join (select device_number, sum(kwh_result) kwh_sum from archive_electric_meter_month where year(start_timestamp) = {start_year} and month(start_timestamp) = {last_month} group by device_number) c on a.device_number COLLATE utf8mb4_0900_ai_ci = c.device_number -- month2
|
||||
left join (select device_number, sum(kwh_result) kwh_sum from archive_electric_meter_month where year(start_timestamp) = {pre_year} and month(start_timestamp) = {last_month} group by device_number) c on a.device_number COLLATE utf8mb4_0900_ai_ci = c.device_number -- month2
|
||||
left join (select device_number, sum(kwh_result) kwh_sum from archive_electric_meter_month where year(start_timestamp) = {last_year} and month(start_timestamp) = {start_month} group by device_number) d on a.device_number COLLATE utf8mb4_0900_ai_ci = d.device_number -- last Month
|
||||
join building e on a.device_building_tag = e.building_tag
|
||||
where {sqlWhere}
|
||||
|
@ -14,8 +14,13 @@
|
||||
},
|
||||
"DBConfig": {
|
||||
"MySqlDBConfig": {
|
||||
"Server": "CYGthbCeGtAXT4s1NOSJHQ==", //0.201"
|
||||
"Port": "mkF51jVbg40V5K5eTh2Ckw==", //306"
|
||||
"Server": "CYGthbCeGtAXT4s1NOSJHQ==", //0.132
|
||||
"Port": "mkF51jVbg40V5K5eTh2Ckw==",
|
||||
//"Database": "VJB2XC+lAtzuHObDGMVOAA==", //30
|
||||
//"Database": "IgYBsgG2VLKKxFb64j7LOA==", //wsp
|
||||
//"Database": "7gWfmZ28HGIJZbxEbK+0yg==", //tpe_dome_dome
|
||||
//"Database": "siTUcDaC/g2yGTMFWD72Kg==", //tpe_dome_hotel
|
||||
//"Database": "Rq7Gn4x6LwBvVtl7GY8LbA==", //mcut
|
||||
"Database": "XZ2fOBnta9kdVGEb7y92cg==", //ibms_mcut
|
||||
"Root": "SzdxEgaJJ7tcTCrUl2zKsA==",
|
||||
"Password": "FVAPxztxpY4gJJKQ/se4bQ=="
|
||||
|
Loading…
Reference in New Issue
Block a user