[BackendWorkService]新增日歸檔的最後歸檔日期判斷,月歸檔會從最後歸檔日期開始補做的邏輯
This commit is contained in:
parent
e91066df9c
commit
30aa417f78
@ -82,6 +82,7 @@ namespace Backend.Models
|
||||
public List<DeviceDisaster> Device_disasters { get; set; } //防災類型
|
||||
public List<DeviceNode> Device_nodes { get; set; } //設備子節點
|
||||
|
||||
public System.DateTime created_at { get; set; }
|
||||
/// <summary>
|
||||
/// 前次成功日期;下次重新歸檔日期
|
||||
/// </summary>
|
||||
@ -277,6 +278,8 @@ namespace Backend.Models
|
||||
public string Point { get; set; }
|
||||
public string FullDeviceNumberPoint { get; set; }
|
||||
public System.DateTime archive_lastDate { get; set; }
|
||||
|
||||
public System.DateTime created_at { get; set; }
|
||||
}
|
||||
|
||||
public class ImportDevForCoo
|
||||
|
@ -99,6 +99,7 @@ namespace BackendWorkerService.Quartz.Jobs
|
||||
deviceNumberPoint.Point = point.points;
|
||||
deviceNumberPoint.FullDeviceNumberPoint = string.Format("{0}_{1}", electricMeter.Device_number, point.points);
|
||||
deviceNumberPoint.archive_lastDate = electricMeter.archive_lastDate;
|
||||
deviceNumberPoint.created_at = electricMeter.created_at;
|
||||
electricDeviceNumberPoints.Add(deviceNumberPoint);
|
||||
}
|
||||
}
|
||||
@ -117,7 +118,7 @@ namespace BackendWorkerService.Quartz.Jobs
|
||||
deviceNumberPoint.Point = point.points;
|
||||
deviceNumberPoint.FullDeviceNumberPoint = string.Format("{0}_{1}", waterMeter.Device_number, point.points);
|
||||
deviceNumberPoint.archive_lastDate = waterMeter.archive_lastDate;
|
||||
|
||||
deviceNumberPoint.created_at = waterMeter.created_at;
|
||||
waterDeviceNumberPoints.Add(deviceNumberPoint);
|
||||
}
|
||||
}
|
||||
@ -168,6 +169,10 @@ namespace BackendWorkerService.Quartz.Jobs
|
||||
{
|
||||
var startDay = deviceNumberPoint.archive_lastDate.ToString("yyyy-MM-dd");
|
||||
var endDay = System.DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
|
||||
if (startDay == "0001-01-01") // 假設archive_lastDate為null
|
||||
{
|
||||
startDay = deviceNumberPoint.created_at.ToString("yyyy-MM-dd");
|
||||
}
|
||||
foreach (DateTime day in EachDay(startDay, endDay))
|
||||
{
|
||||
var sDay = string.Format("{0}T00:00:00.000+08:00", day.ToString("yyyy-MM-dd").Replace(" ", "T")); // 巨蛋用此時間抓到的實際是T00:15:00的資料
|
||||
@ -252,6 +257,10 @@ namespace BackendWorkerService.Quartz.Jobs
|
||||
{
|
||||
var startDay = deviceNumberPoint.archive_lastDate.ToString("yyyy-MM-dd");
|
||||
var endDay = System.DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
|
||||
if (startDay == "0001-01-01") // 假設archive_lastDate為null
|
||||
{
|
||||
startDay = deviceNumberPoint.created_at.ToString("yyyy-MM-dd");
|
||||
}
|
||||
foreach (DateTime day in EachDay(startDay, endDay))
|
||||
{
|
||||
var sDay = string.Format("{0}T00:00:00.000+08:00", day.ToString("yyyy-MM-dd").Replace(" ", "T")); // 巨蛋用此時間抓到的實際是T00:15:00的資料
|
||||
@ -1101,27 +1110,10 @@ namespace BackendWorkerService.Quartz.Jobs
|
||||
try
|
||||
{
|
||||
await task_Detail.InsertWorkTime("ArchiveElectricMeterDayJob", "Month", "水電表月任務開始");
|
||||
var preDay = now.AddDays(-1); //取得前一天
|
||||
|
||||
var dayInMonth = DateTime.DaysInMonth(preDay.Year, preDay.Month);
|
||||
var FirstDay = new DateTime(preDay.Year, preDay.Month, 1);
|
||||
//var LastDay = now.AddMonths(1).AddDays(-now.AddMonths(1).Day); // 這是抓到該月最後一天
|
||||
var LastDay = now;
|
||||
|
||||
|
||||
|
||||
//var startTimestamp = string.Format("{0}T23:59:59.000+08:00", FirstDay.AddDays(-1).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:15:00.000+08:00", LastDay.ToString("yyyy-MM-dd")); // 240131 jay for dome
|
||||
|
||||
|
||||
var historyQueryFilter = $@"<obj is='obix: HistoryFilter'>
|
||||
<abstime name='start' val='{startTimestamp}' />
|
||||
<abstime name='end' val='{endTimestamp}' />
|
||||
<reltime name='interval' val = 'PT{dayInMonth+1}D' />
|
||||
</obj>";
|
||||
string startTimestamp = "";
|
||||
string endTimestamp = "";
|
||||
string historyQueryFilter = "";
|
||||
|
||||
//Stopwatch stopWatch = new Stopwatch();
|
||||
//stopWatch.Start();
|
||||
@ -1131,6 +1123,51 @@ namespace BackendWorkerService.Quartz.Jobs
|
||||
List<Dictionary<string, object>> waterArchiveMonthRawDatas = new List<Dictionary<string, object>>();
|
||||
foreach (var deviceNumberPoint in electricDeviceNumberPoints)
|
||||
{
|
||||
var startDay = deviceNumberPoint.archive_lastDate.ToString("yyyy-MM-dd");
|
||||
|
||||
var endDay = System.DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
|
||||
|
||||
foreach (DateTime day in EachMonth(startDay, endDay))
|
||||
{
|
||||
if (day.ToString("yyyy-MM") == System.DateTime.Now.AddDays(-1).ToString("yyyy-MM"))
|
||||
{
|
||||
var preDay = now.AddDays(-1); //取得前一天
|
||||
|
||||
var dayInMonth = DateTime.DaysInMonth(preDay.Year, preDay.Month);
|
||||
var FirstDay = new DateTime(preDay.Year, preDay.Month, 1);
|
||||
//var LastDay = now.AddMonths(1).AddDays(-now.AddMonths(1).Day); // 這是抓到該月最後一天
|
||||
var LastDay = now;
|
||||
|
||||
//var startTimestamp = string.Format("{0}T23:59:59.000+08:00", FirstDay.AddDays(-1).ToString("yyyy-MM-dd")); // 巨蛋要這樣抓數據才是對的
|
||||
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"));
|
||||
endTimestamp = string.Format("{0}T00:15:00.000+08:00", LastDay.ToString("yyyy-MM-dd")); // 240131 jay for dome
|
||||
|
||||
|
||||
historyQueryFilter = $@"<obj is='obix: HistoryFilter'>
|
||||
<abstime name='start' val='{startTimestamp}' />
|
||||
<abstime name='end' val='{endTimestamp}' />
|
||||
<reltime name='interval' val = 'PT{dayInMonth + 1}D' />
|
||||
</obj>";
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
var dayInMonth = DateTime.DaysInMonth(day.Year, day.Month);
|
||||
var FirstDay = new DateTime(day.Year, day.Month, 1);
|
||||
var LastDay = new DateTime(day.Year, day.Month, dayInMonth);
|
||||
|
||||
startTimestamp = string.Format("{0}T00:00:00.000+08:00", FirstDay.ToString("yyyy-MM-dd"));
|
||||
|
||||
endTimestamp = string.Format("{0}T00:15:00.000+08:00", LastDay.ToString("yyyy-MM-dd"));
|
||||
historyQueryFilter = $@"<obj is='obix: HistoryFilter'>
|
||||
<abstime name='start' val='{startTimestamp}' />
|
||||
<abstime name='end' val='{endTimestamp}' />
|
||||
<reltime name='interval' val = 'PT{dayInMonth + 1}D' />
|
||||
</obj>";
|
||||
}
|
||||
|
||||
device_number = deviceNumberPoint.FullDeviceNumberPoint;
|
||||
if (tagQuantity.Equals("5"))
|
||||
station = await backgroundServiceRepository.GetOneAsync<string>($@"select parent_path from import_niagara_item_history
|
||||
@ -1197,8 +1234,53 @@ namespace BackendWorkerService.Quartz.Jobs
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
foreach (var deviceNumberPoint in waterDeviceNumberPoints)
|
||||
{
|
||||
var startDay = deviceNumberPoint.archive_lastDate.ToString("yyyy-MM-dd");
|
||||
|
||||
var endDay = System.DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
|
||||
|
||||
foreach (DateTime day in EachMonth(startDay, endDay))
|
||||
{
|
||||
if (day.ToString("yyyy-MM") == System.DateTime.Now.AddDays(-1).ToString("yyyy-MM"))
|
||||
{
|
||||
var preDay = now.AddDays(-1); //取得前一天
|
||||
|
||||
var dayInMonth = DateTime.DaysInMonth(preDay.Year, preDay.Month);
|
||||
var FirstDay = new DateTime(preDay.Year, preDay.Month, 1);
|
||||
//var LastDay = now.AddMonths(1).AddDays(-now.AddMonths(1).Day); // 這是抓到該月最後一天
|
||||
var LastDay = now;
|
||||
|
||||
//var startTimestamp = string.Format("{0}T23:59:59.000+08:00", FirstDay.AddDays(-1).ToString("yyyy-MM-dd")); // 巨蛋要這樣抓數據才是對的
|
||||
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"));
|
||||
endTimestamp = string.Format("{0}T00:15:00.000+08:00", LastDay.ToString("yyyy-MM-dd")); // 240131 jay for dome
|
||||
|
||||
|
||||
historyQueryFilter = $@"<obj is='obix: HistoryFilter'>
|
||||
<abstime name='start' val='{startTimestamp}' />
|
||||
<abstime name='end' val='{endTimestamp}' />
|
||||
<reltime name='interval' val = 'PT{dayInMonth + 1}D' />
|
||||
</obj>";
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
var dayInMonth = DateTime.DaysInMonth(day.Year, day.Month);
|
||||
var FirstDay = new DateTime(day.Year, day.Month, 1);
|
||||
var LastDay = new DateTime(day.Year, day.Month, dayInMonth);
|
||||
|
||||
startTimestamp = string.Format("{0}T00:00:00.000+08:00", FirstDay.ToString("yyyy-MM-dd"));
|
||||
|
||||
endTimestamp = string.Format("{0}T00:15:00.000+08:00", LastDay.ToString("yyyy-MM-dd"));
|
||||
historyQueryFilter = $@"<obj is='obix: HistoryFilter'>
|
||||
<abstime name='start' val='{startTimestamp}' />
|
||||
<abstime name='end' val='{endTimestamp}' />
|
||||
<reltime name='interval' val = 'PT{dayInMonth + 1}D' />
|
||||
</obj>";
|
||||
}
|
||||
device_number = deviceNumberPoint.FullDeviceNumberPoint;
|
||||
if (tagQuantity.Equals("5"))
|
||||
station = await backgroundServiceRepository.GetOneAsync<string>($@"select parent_path from import_niagara_item_history
|
||||
@ -1266,6 +1348,7 @@ namespace BackendWorkerService.Quartz.Jobs
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//stopWatch.Stop();
|
||||
//logger.LogInformation("【ArchiveElectricMeterDayJob】【月歸檔效能檢驗】[取得資料花費時間]{0} 毫秒", stopWatch.ElapsedMilliseconds);
|
||||
@ -1663,7 +1746,7 @@ namespace BackendWorkerService.Quartz.Jobs
|
||||
{
|
||||
var strtday = DateTime.Parse(from);
|
||||
var endday = DateTime.Parse(thru);
|
||||
for (var _month = strtday.Date; _month.Month <= endday.Month; _month = _month.AddDays(1))
|
||||
for (var _month = strtday.Date; _month.Month <= endday.Month; _month = _month.AddMonths(1))
|
||||
yield return _month;
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user