[BackendWorkerService]修改水電月歸檔最後一天沒紀錄的問題

This commit is contained in:
張家睿 2024-02-05 07:20:30 +08:00
parent 6c50bdb071
commit 0929c6f21a
2 changed files with 127 additions and 104 deletions

View File

@ -799,6 +799,8 @@ namespace BackendWorkerService.Quartz.Jobs
{ {
var sql = $@" var sql = $@"
UPDATE archive_electric_meter_month SET UPDATE archive_electric_meter_month SET
start_timestamp = @start_timestamp,
end_timestamp = @end_timestamp,
count_rawdata = @count_rawdata, count_rawdata = @count_rawdata,
min_rawdata = round(@min_rawdata, 2), min_rawdata = round(@min_rawdata, 2),
max_rawdata = round(@max_rawdata, 2), max_rawdata = round(@max_rawdata, 2),
@ -846,6 +848,8 @@ namespace BackendWorkerService.Quartz.Jobs
var mySql = $@"BEGIN TRANSACTION; var mySql = $@"BEGIN TRANSACTION;
UPDATE archive_electric_meter_month SET UPDATE archive_electric_meter_month SET
start_timestamp = @start_timestamp,
end_timestamp = @end_timestamp,
count_rawdata = @count_rawdata, count_rawdata = @count_rawdata,
min_rawdata = round(@min_rawdata, 2), min_rawdata = round(@min_rawdata, 2),
max_rawdata = round(@max_rawdata, 2), max_rawdata = round(@max_rawdata, 2),
@ -906,6 +910,8 @@ namespace BackendWorkerService.Quartz.Jobs
{ {
var sql = $@" var sql = $@"
UPDATE archive_water_meter_month SET UPDATE archive_water_meter_month SET
start_timestamp = @start_timestamp,
end_timestamp = @end_timestamp,
count_rawdata = @count_rawdata, count_rawdata = @count_rawdata,
min_rawdata = round(@min_rawdata, 2), min_rawdata = round(@min_rawdata, 2),
max_rawdata = round(@max_rawdata, 2), max_rawdata = round(@max_rawdata, 2),
@ -952,6 +958,8 @@ namespace BackendWorkerService.Quartz.Jobs
var mySql = $@"BEGIN TRANSACTION; var mySql = $@"BEGIN TRANSACTION;
UPDATE archive_water_meter_month SET UPDATE archive_water_meter_month SET
start_timestamp = @start_timestamp,
end_timestamp = @end_timestamp,
count_rawdata = @count_rawdata, count_rawdata = @count_rawdata,
min_rawdata = round(@min_rawdata, 2), min_rawdata = round(@min_rawdata, 2),
max_rawdata = round(@max_rawdata, 2), max_rawdata = round(@max_rawdata, 2),
@ -1330,6 +1338,10 @@ namespace BackendWorkerService.Quartz.Jobs
} }
if (waterArchiveDayRawDatas.Count() > 0) 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 var sql = $@" UPDATE archive_water_meter_day_{dbDateName} SET
count_rawdata = @count_rawdata, count_rawdata = @count_rawdata,
min_rawdata = round(@min_rawdata, 2), min_rawdata = round(@min_rawdata, 2),
@ -1470,6 +1482,7 @@ namespace BackendWorkerService.Quartz.Jobs
await backgroundServiceMsSqlRepository.ExecuteSql(mySql, waterArchiveDayRawDatas); await backgroundServiceMsSqlRepository.ExecuteSql(mySql, waterArchiveDayRawDatas);
} }
} }
}
} }

View File

@ -23,6 +23,7 @@ using BackendWorkerService.Quartz.Jobs;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Org.BouncyCastle.Asn1.Pkcs; using Org.BouncyCastle.Asn1.Pkcs;
using NPOI.SS.Formula.Functions; using NPOI.SS.Formula.Functions;
using MySqlX.XDevAPI.Relational;
namespace BackendWorkerService.Services.Implement namespace BackendWorkerService.Services.Implement
{ {
@ -995,7 +996,7 @@ namespace BackendWorkerService.Services.Implement
//logger.LogInformation(@$"obix query for {deviceNumberPoint.DeviceNumber} day = {day.ToString("yyyy-MM-dd")}"); //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 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'> string historyQueryFilter = $@"<obj is='obix: HistoryFilter'>
@ -1133,18 +1134,27 @@ namespace BackendWorkerService.Services.Implement
// 需要比原定日期增加 1天因 Niagara 內部判斷為 < lastData, 並未包含結束當天 add by jiahao @2023-09-16 // 需要比原定日期增加 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.DaysInMonth(day.Year, day.Month) +1; 、、(DateTime.Now - DateTime.Parse(startDay)).Days
DateTime today = DateTime.Now; DateTime today = DateTime.Now;
var dayInMonth = (DateTime.Now - DateTime.Parse(today.ToString("yyyy-MM-") + "01")).Days + 1;
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", today.ToString("yyyy-MM-") + "01"); //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}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 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='start' val='{startTimestamp}' />
<abstime name='end' val='{endTimestamp}' /> <abstime name='end' val='{endTimestamp}' />
<reltime name='interval' val = 'PT{dayInMonth.ToString()}D' /> <reltime name='interval' val = 'PT{(dayInMonth+1).ToString()}D' />
</obj>"; </obj>";