Skip to content

Commit 48d9855

Browse files
committed
update time check
1 parent 9486da8 commit 48d9855

File tree

3 files changed

+129
-75
lines changed

3 files changed

+129
-75
lines changed

build/NukeBuild.csproj.DotSettings

+4-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_SIMPLE_ANONYMOUSMETHOD_ON_SINGLE_LINE/@EntryValue">False</s:Boolean>
1818
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateInstanceFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /&gt;</s:String>
1919
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateStaticFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /&gt;</s:String>
20+
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=4a98fdf6_002D7d98_002D4f5a_002Dafeb_002Dea44ad98c70c/@EntryIndexedValue">&lt;Policy&gt;&lt;Descriptor Staticness="Instance" AccessRightKinds="Private" Description="Instance fields (private)"&gt;&lt;ElementKinds&gt;&lt;Kind Name="FIELD" /&gt;&lt;Kind Name="READONLY_FIELD" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /&gt;&lt;/Policy&gt;</s:String>
21+
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=f9fce829_002De6f4_002D4cb2_002D80f1_002D5497c44f51df/@EntryIndexedValue">&lt;Policy&gt;&lt;Descriptor Staticness="Static" AccessRightKinds="Private" Description="Static fields (private)"&gt;&lt;ElementKinds&gt;&lt;Kind Name="FIELD" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /&gt;&lt;/Policy&gt;</s:String>
2022
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpAttributeForSingleLineMethodUpgrade/@EntryIndexedValue">True</s:Boolean>
2123
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpKeepExistingMigration/@EntryIndexedValue">True</s:Boolean>
2224
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpPlaceEmbeddedOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
@@ -25,4 +27,5 @@
2527
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EAddAccessorOwnerDeclarationBracesMigration/@EntryIndexedValue">True</s:Boolean>
2628
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002ECSharpPlaceAttributeOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
2729
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateBlankLinesAroundFieldToBlankLinesAroundProperty/@EntryIndexedValue">True</s:Boolean>
28-
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateThisQualifierSettings/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
30+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateThisQualifierSettings/@EntryIndexedValue">True</s:Boolean>
31+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EPredefinedNamingRulesToUserRulesUpgrade/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>

sample/Hsu.Db.Export.Spreadsheet.Worker/appsettings.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"ConnectionStrings": {
3-
"Default": "Data Source=mysql.sqlpub.com;Port=3306;User ID=public;Initial Catalog=db_hsu_des;Charset=utf8;SslMode=none;Min pool size=1"
3+
"Default": "Data Source=mysql.sqlpub.com;Port=3306;User ID=public;Initial Catalog=db_hsu_des;Charset=utf8;SslMode=none;Min pool size=1",
4+
"Db": "Data Source=47.96.24.4;Port=3306;User ID=root;Password=87671678;Initial Catalog=employees;Charset=utf8;SslMode=none;Min pool size=1"
45
},
56
"Export": {
67
"Spreadsheet": {

src/Hsu.Db.Export.Spreadsheet/Workers/DbDailySyncWorker.cs

+123-73
Original file line numberDiff line numberDiff line change
@@ -52,83 +52,137 @@ public override Task StopAsync(CancellationToken cancellationToken)
5252
}
5353

5454
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
55-
{
55+
{
5656
_logger.LogInformation("Sync Executing");
5757
await Task.Delay(5000, stoppingToken);
58+
5859
var dir = InitialDirectory();
5960
var launch = _options.Launch ?? false;
6061
var timeout = (int)_options.Timeout.GetValueOrDefault(TimeSpan.FromMinutes(1.5)).TotalMilliseconds;
6162
var types = InitialConfigurations();
62-
//_exportService.InitialConfigurations(_options.Tables);
6363

64-
while (!stoppingToken.IsCancellationRequested)
64+
if (launch)
6565
{
66-
var now = DateTime.Now;
67-
if (!launch && await Check(now, _time, stoppingToken)) continue;
68-
launch = false;
66+
await HandlerAsync(DateTime.Now,dir,types,timeout,stoppingToken);
67+
}
6968

69+
while (!stoppingToken.IsCancellationRequested)
70+
{
7071
try
7172
{
72-
now = now.AddDays(-1);
73-
_logger.LogInformation("Executing synchronously data....");
74-
var completed = false;
75-
while (!completed)
73+
var now = DateTime.Now;
74+
var ret = await Check(now, _time, stoppingToken);
75+
_logger.LogDebug("Sync Check: {ret}", ret);
76+
if (!ret) continue;
77+
78+
await HandlerAsync(now, dir, types, timeout, stoppingToken);
79+
}
80+
catch (Exception ex)
81+
{
82+
_logger.LogError(ex, ex.Message);
83+
}
84+
}
85+
86+
_logger.LogInformation("Sync Executed");
87+
}
88+
89+
protected async Task HandlerAsync(DateTime now,string dir, ConcurrentDictionary<string, TableInfo> types, int timeout, CancellationToken stoppingToken)
90+
{
91+
_logger.LogInformation("Sync Handler Executing");
92+
93+
try
94+
{
95+
now = now.AddDays(-1);
96+
_logger.LogInformation("Executing synchronously data....");
97+
var completed = false;
98+
99+
while (!completed)
100+
{
101+
completed = true;
102+
103+
foreach (var table in _options.Tables)
76104
{
77-
completed = true;
78-
foreach(var table in _options.Tables)
105+
var (date, tmp) = GetDate(dir, table.Code, now);
106+
if (date > now) continue;
107+
108+
if (date < now) completed = false;
109+
var sw = Stopwatch.StartNew();
110+
111+
try
79112
{
80-
var (date, tmp) = GetDate(dir, table.Code, now);
81-
if (date > now) continue;
82-
if (date < now) completed = false;
83-
var sw = Stopwatch.StartNew();
84-
try
113+
_logger.LogInformation("Executing synchronously [{Table}]-{Date:yyyy-MM-dd} records to {Output} ..."
114+
, table.Name
115+
, date
116+
, table.Output
117+
);
118+
var exportService = _factory.Get(table.Output);
119+
if (exportService == null) throw new NotSupportedException($"No export service available for {table.Output}");
120+
121+
var file = table.Output switch
85122
{
86-
_logger.LogInformation("Executing synchronously [{Table}]-{Date:yyyy-MM-dd} records to {Output} ..."
87-
, table.Name
88-
, date
89-
, table.Output
90-
);
91-
var exportService = _factory.Get(table.Output);
92-
if (exportService == null) throw new NotSupportedException($"No export service available for {table.Output}");
93-
var total = await FetchRecordAsync(_freeSql, timeout, table, date, _path, types[table.Code], exportService, _logger, stoppingToken);
94-
sw.Stop();
95-
_logger.LogInformation("Executing synchronously [{Table}]-{Date:yyyy-MM-dd} export to {Output} {Total} records completed used {Time}."
96-
, table.Name
97-
, date
98-
, table.Output
99-
, total
100-
, sw.Elapsed);
101-
}
102-
catch (Exception ex)
123+
"Csv" => Path.Combine(_path, $"{table.Name}-{date:yyyy-MM-dd}.csv"),
124+
"Xlsx" => Path.Combine(_path, $"{table.Name}-{date:yyyy-MM-dd}.xlsx"),
125+
_ => null
126+
};
127+
128+
var total = await FetchRecordAsync(_freeSql, timeout, table, date, _path, types[table.Code], exportService, _logger, stoppingToken);
129+
sw.Stop();
130+
_logger.LogInformation("Executing synchronously [{Table}]-{Date:yyyy-MM-dd} export to {Output} {Total} records completed used {Time}."
131+
, table.Name
132+
, date
133+
, Path.GetFileName(file)
134+
, total
135+
, sw.Elapsed);
136+
137+
if (total < 1)
103138
{
104-
_logger.LogError(ex, ex.Message);
105-
if (sw.IsRunning) sw.Stop();
106-
completed = true;
107-
break;
108-
}
109-
finally
110-
{
111-
#if NETFRAMEWORK || NETSTANDARD2_0
112-
File.WriteAllText(tmp, $"{date.AddDays(1):yyyy-MM-dd}");
113-
#else
114-
await File.WriteAllTextAsync(tmp, $"{date.AddDays(1):yyyy-MM-dd}", stoppingToken);
115-
#endif
139+
try
140+
{
141+
if (file != null && File.Exists(file))
142+
{
143+
File.Delete(file);
144+
_logger.LogDebug("Executing synchronously [{Table}]-{Date:yyyy-MM-dd} delete file {File}"
145+
, table.Name
146+
, date
147+
, Path.GetFileName(file));
148+
}
149+
}
150+
catch (Exception ex)
151+
{
152+
_logger.LogError(ex, ex.Message);
153+
}
116154
}
117-
}
118155

119-
if (!completed)
156+
#if NETFRAMEWORK || NETSTANDARD2_0
157+
File.WriteAllText(tmp, $"{date.AddDays(1):yyyy-MM-dd}");
158+
#else
159+
await File.WriteAllTextAsync(tmp, $"{date.AddDays(1):yyyy-MM-dd}", stoppingToken);
160+
#endif
161+
}
162+
catch (Exception ex)
120163
{
121-
await Task.Delay(_options.Interval, stoppingToken);
164+
_logger.LogError(ex, ex.Message);
165+
if (sw.IsRunning) sw.Stop();
166+
completed = true;
167+
break;
122168
}
123169
}
124170

125-
_logger.LogInformation("Executing synchronously mes data completed");
126-
}
127-
finally
128-
{
129-
await Task.Delay(TimeSpan.FromMinutes(1), stoppingToken);
171+
if (!completed)
172+
{
173+
await Task.Delay(_options.Interval, stoppingToken);
174+
}
130175
}
176+
177+
_logger.LogInformation("Executing synchronously mes data completed");
178+
}
179+
catch (Exception ex)
180+
{
181+
_logger.LogError(ex, ex.Message);
131182
}
183+
184+
await Task.Delay(TimeSpan.FromMinutes(1), stoppingToken);
185+
_logger.LogInformation("Sync Handler Executed");
132186
}
133187

134188
private static async Task<int> FetchRecordAsync(IFreeSql freeSql,
@@ -240,37 +294,33 @@ private static (DateTime Date, string Path) GetDate(string dir, string table, Da
240294

241295
private static async Task<bool> Check(DateTime now, TimeSpan span, CancellationToken stoppingToken)
242296
{
243-
var t1 = now.Date.Add(span - TimeSpan.FromHours(1));
244-
var t2 = now.Date.Add(span - TimeSpan.FromMinutes(15));
297+
var t2 = now.Date.Add(span - TimeSpan.FromMinutes(5));
298+
// target time - 1 minute
245299
var t3 = now.Date.Add(span - TimeSpan.FromMinutes(1));
300+
// target time
246301
var t4 = now.Date.Add(span);
247-
var t5 = now.Date.Add(span + TimeSpan.FromSeconds(59));
248-
249-
if (now < t1 || now > t5)
250-
{
251-
await Task.Delay(TimeSpan.FromHours(1), stoppingToken);
252-
return true;
253-
}
302+
// target time + 1 minute
303+
var t5 = now.Date.Add(span + TimeSpan.FromMinutes(1));
254304

255-
if (now < t4)
305+
if (now < t2 || now > t5)
256306
{
257-
await Task.Delay(TimeSpan.FromSeconds(1), stoppingToken);
258-
return true;
307+
await Task.Delay(TimeSpan.FromMinutes(5), stoppingToken);
308+
return false;
259309
}
260310

261311
if (now < t3)
262312
{
263-
await Task.Delay(TimeSpan.FromMinutes(1), stoppingToken);
264-
return true;
313+
await Task.Delay(TimeSpan.FromSeconds(5), stoppingToken);
314+
return false;
265315
}
266316

267-
if (now < t2)
317+
if (now < t4)
268318
{
269-
await Task.Delay(TimeSpan.FromMinutes(10), stoppingToken);
270-
return true;
319+
await Task.Delay(TimeSpan.FromSeconds(1), stoppingToken);
320+
return false;
271321
}
272-
273-
return false;
322+
323+
return true;
274324
}
275325

276326
private ConcurrentDictionary<string, TableInfo> InitialConfigurations()

0 commit comments

Comments
 (0)