|
@@ -173,7 +173,7 @@ namespace XdCxRhDW
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
- LogHelper.Error("同步数据库结构异常",ex).Wait(5000);
|
|
|
+ LogHelper.Error("同步数据库结构异常", ex).Wait(5000);
|
|
|
}
|
|
|
}
|
|
|
private void StartWebApi()
|
|
@@ -225,7 +225,6 @@ namespace XdCxRhDW
|
|
|
var res = await HttpHelper.PostRequestAsync<RecordRes>(SysConfig.GetUrl("Xl/ImportTleAsync"), dto);
|
|
|
if (res.code == 200)
|
|
|
{
|
|
|
-
|
|
|
LogHelper.Info($"星历文件[{file}]自动导入成功!").Wait(5000);
|
|
|
//导入完成的文件放在备份目录
|
|
|
var baseDirectory = Path.Combine(backUpDir, "TleBackUp");
|
|
@@ -242,40 +241,53 @@ namespace XdCxRhDW
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
- LogHelper.Error($"星历文件[{file}]自动导入失败",ex).Wait(5000);
|
|
|
+ LogHelper.Error($"星历文件[{file}]自动导入失败", ex).Wait(5000);
|
|
|
+ await Task.Delay(5000);
|
|
|
+ }
|
|
|
+ finally
|
|
|
+ {
|
|
|
+ await Task.Delay(2000);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- //清理180天之前导入的星历
|
|
|
+ //清理1年之前导入的星历
|
|
|
private async Task XlClear()
|
|
|
{
|
|
|
while (true)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
+ List<XlInfo> clearData = new List<XlInfo>();
|
|
|
using (RHDWContext db = new RHDWContext())
|
|
|
{
|
|
|
- DateTime dt = DateTime.Now.AddDays(-180);
|
|
|
- var clearData = await db.XlInfos.Where(p => p.UpdateTime < dt).Take(1000).ToListAsync();
|
|
|
- if (clearData.Any())
|
|
|
+ DateTime dt = DateTime.Now.AddYears(-1);
|
|
|
+ clearData = await db.XlInfos.Where(p => p.UpdateTime < dt).Take(1000).ToListAsync();
|
|
|
+ }
|
|
|
+ if (!clearData.Any())
|
|
|
+ {
|
|
|
+ await Task.Delay(60 * 1000);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ using (RHDWContext db = new RHDWContext())
|
|
|
{
|
|
|
- //db.XlInfos.RemoveRange(clearData);
|
|
|
+ db.XlInfos.RemoveRange(clearData);
|
|
|
await db.SaveChangesAsync();
|
|
|
- await Task.Delay(2000);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- await Task.Delay(60 * 1000);
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
await LogHelper.Error("清理过期星历异常", ex);
|
|
|
}
|
|
|
+ finally
|
|
|
+ {
|
|
|
+ await Task.Delay(2000);
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
}
|
|
@@ -287,62 +299,81 @@ namespace XdCxRhDW
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
+ List<XlInfo> calcItems = null;
|
|
|
+ List<SatInfo> satInfo = null;
|
|
|
using (RHDWContext db = new RHDWContext())
|
|
|
{
|
|
|
- var calcItems = await db.XlInfos.Where(p => p.Lon == null).OrderByDescending(p => p.SatCode).Take(1000).ToListAsync();
|
|
|
- if (calcItems.Any())
|
|
|
+ calcItems = await db.XlInfos.Where(p => p.Lon == null).OrderByDescending(p => p.SatCode).Take(100).ToListAsync();
|
|
|
+ satInfo = await db.SatInfos.ToListAsync();
|
|
|
+ }
|
|
|
+ if (calcItems != null && calcItems.Any())
|
|
|
+ {
|
|
|
+ var firstUpdateItems = calcItems.Where(p => satInfo.Any(t => t.SatCode == p.SatCode)).ToList();
|
|
|
+
|
|
|
+ await Task.Run(() =>
|
|
|
{
|
|
|
- var satInfo = await db.SatInfos.ToListAsync();
|
|
|
- var firstUpdateItems = calcItems.Where(p => satInfo.Any(t => t.SatCode == p.SatCode)).ToList();
|
|
|
- await Task.Run(() =>
|
|
|
+ List<XlInfo> Level1 = new List<XlInfo>();
|
|
|
+ foreach (var item in firstUpdateItems)
|
|
|
{
|
|
|
- foreach (var item in firstUpdateItems)
|
|
|
+ try
|
|
|
{
|
|
|
- try
|
|
|
- {
|
|
|
- var eph = EphHelper.Calc(item.TwoLine, item.TimeUTC);
|
|
|
- item.Lon = Math.Round(PhysicsHelper.EcefToGeo((eph.X, eph.Y, eph.Z)).lon, 1);
|
|
|
-
|
|
|
- }
|
|
|
- catch (Exception ex)
|
|
|
- {
|
|
|
- item.Lon = -999;
|
|
|
- LogHelper.Error($"[{item.TwoLine}]推算XYZ星历出错!", ex).Wait(5000);
|
|
|
- }
|
|
|
- db.XlInfos.AddOrUpdate(item);
|
|
|
- db.SaveChangesAsync();
|
|
|
+ var eph = EphHelper.Calc(item.TwoLine, item.TimeUTC);
|
|
|
+ item.Lon = Math.Round(PhysicsHelper.EcefToGeo((eph.X, eph.Y, eph.Z)).lon, 1);
|
|
|
+ Level1.Add(item);
|
|
|
calcItems.Remove(item);
|
|
|
}
|
|
|
-
|
|
|
- foreach (var item in calcItems)
|
|
|
+ catch (Exception ex)
|
|
|
{
|
|
|
- try
|
|
|
- {
|
|
|
- var eph = EphHelper.Calc(item.TwoLine, item.TimeUTC);
|
|
|
- item.Lon = Math.Round(PhysicsHelper.EcefToGeo((eph.X, eph.Y, eph.Z)).lon, 1);
|
|
|
-
|
|
|
- }
|
|
|
- catch (Exception ex)
|
|
|
- {
|
|
|
- item.Lon = -999;
|
|
|
- LogHelper.Error($"[{item.TwoLine}]推算XYZ星历出错!", ex).Wait(5000);
|
|
|
- }
|
|
|
- db.XlInfos.AddOrUpdate(item);
|
|
|
- db.SaveChangesAsync();
|
|
|
+ item.Lon = -999;
|
|
|
+ LogHelper.Error($"[{item.TwoLine}]推算XYZ星历出错!", ex).Wait(5000);
|
|
|
}
|
|
|
- });
|
|
|
-
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- await Task.Delay(60 * 1000);
|
|
|
- }
|
|
|
+ }
|
|
|
+ if (Level1.Any())
|
|
|
+ {
|
|
|
+ using (RHDWContext db = new RHDWContext())
|
|
|
+ {
|
|
|
+ db.XlInfos.AddOrUpdate(Level1.ToArray());
|
|
|
+ db.SaveChanges();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<XlInfo> Level2 = new List<XlInfo>();
|
|
|
+ foreach (var item in calcItems)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ var eph = EphHelper.Calc(item.TwoLine, item.TimeUTC);
|
|
|
+ item.Lon = Math.Round(PhysicsHelper.EcefToGeo((eph.X, eph.Y, eph.Z)).lon, 1);
|
|
|
+ Level2.Add(item);
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ item.Lon = -999;
|
|
|
+ LogHelper.Error($"[{item.TwoLine}]推算XYZ星历出错!", ex).Wait(5000);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (Level2.Any())
|
|
|
+ {
|
|
|
+ using (RHDWContext db = new RHDWContext())
|
|
|
+ {
|
|
|
+ db.XlInfos.AddOrUpdate(Level2.ToArray());
|
|
|
+ db.SaveChanges();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ await Task.Delay(60 * 1000);
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
LogHelper.Error($"推算XYZ星历出错!", ex).Wait(5000);
|
|
|
}
|
|
|
+ finally
|
|
|
+ {
|
|
|
+ await Task.Delay(5000);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -380,25 +411,36 @@ namespace XdCxRhDW
|
|
|
|
|
|
private async Task ClearLog()
|
|
|
{
|
|
|
- using (RHDWLogContext db = new RHDWLogContext())
|
|
|
+ while (true)
|
|
|
{
|
|
|
- try
|
|
|
+ using (RHDWLogContext db = new RHDWLogContext())
|
|
|
{
|
|
|
- var time1 = DateTime.Today.AddDays(-7);
|
|
|
- var time2 = DateTime.Today.AddDays(-30);
|
|
|
- var delItems = await db.LogRes.Where(p => p.LogTime < time1 && p.LogType != EnumLogType.Error).ToListAsync();
|
|
|
- db.LogRes.RemoveRange(delItems);
|
|
|
+ try
|
|
|
+ {
|
|
|
+ var time1 = DateTime.Today.AddDays(-7);
|
|
|
+ var time2 = DateTime.Today.AddDays(-30);
|
|
|
+ var delItems = await db.LogRes.Where(p => p.LogTime < time1 && p.LogType != EnumLogType.Error).Take(500).ToListAsync();
|
|
|
+ db.LogRes.RemoveRange(delItems);
|
|
|
|
|
|
- var delItems2 = await db.LogRes.Where(p => p.LogTime < time2 && p.LogType == EnumLogType.Error).ToListAsync();
|
|
|
- db.LogRes.RemoveRange(delItems2);
|
|
|
- await db.SaveChangesAsync();
|
|
|
- }
|
|
|
- catch (Exception ex)
|
|
|
- {
|
|
|
- await LogHelper.Error("清理日志信息异常", ex);
|
|
|
+ var delItems2 = await db.LogRes.Where(p => p.LogTime < time2 && p.LogType == EnumLogType.Error).Take(500).ToListAsync();
|
|
|
+ db.LogRes.RemoveRange(delItems2);
|
|
|
+ await db.SaveChangesAsync();
|
|
|
+ if (!delItems.Any() && !delItems2.Any())
|
|
|
+ {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ await LogHelper.Error("清理日志信息异常", ex);
|
|
|
+ await Task.Delay(10000);
|
|
|
+ }
|
|
|
+ finally
|
|
|
+ {
|
|
|
+ await Task.Delay(5000);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- await Task.Delay(3600 * 1000);
|
|
|
}
|
|
|
|
|
|
private void btn_ItemClick(object sender, ItemClickEventArgs e)
|