TaskCache.cs 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data.Entity;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using DataSimulation.Repostory.EFContext;
  9. using DataSimulation.Repostory.Model;
  10. namespace DataSimulation.Repostory
  11. {
  12. public static class TaskCache
  13. {
  14. /// <summary>
  15. /// 获取数据库所有任务
  16. /// </summary>
  17. /// <returns></returns>
  18. public static async Task<List<TaskInfo>> GetAllAsync()
  19. {
  20. try
  21. {
  22. List<TaskInfo> list = new List<TaskInfo>();
  23. var dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DbPart");
  24. if (!Directory.Exists(dir)) return list;
  25. var yearDirs = Directory.EnumerateDirectories(dir).OrderByDescending(p => Convert.ToInt32(new DirectoryInfo(p).Name));//年目录,倒叙排列
  26. foreach (var yearDir in yearDirs)
  27. {
  28. //每一天的db文件,倒序排列
  29. var dayFiles = Directory.EnumerateFiles(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, yearDir), "*.db").OrderByDescending(p => Convert.ToInt32(new DirectoryInfo(p).Name.Substring(0, 4)));
  30. foreach (var dayFile in dayFiles)
  31. {
  32. using (SimulationPartContext db = SimulationPartContext.GetContext(dayFile))
  33. {
  34. list.AddRange(await db.TaskInfos.ToListAsync());
  35. }
  36. }
  37. }
  38. return list;
  39. }
  40. catch (Exception ex)
  41. {
  42. Serilog.Log.Error(ex, "加载任务信息异常");
  43. return null;
  44. }
  45. }
  46. /// <summary>
  47. /// 获取任务航迹
  48. /// </summary>
  49. /// <param name="taskId"></param>
  50. /// <returns></returns>
  51. public static async Task<List<TaskSimulation>> GetTaskSimulationAsync(long taskId)
  52. {
  53. try
  54. {
  55. List<TaskSimulation> list = new List<TaskSimulation>();
  56. var dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DbPart");
  57. if (!Directory.Exists(dir)) return list;
  58. var yearDirs = Directory.EnumerateDirectories(dir).OrderByDescending(p => Convert.ToInt32(new DirectoryInfo(p).Name));//年目录,倒叙排列
  59. foreach (var yearDir in yearDirs)
  60. {
  61. //每一天的db文件,倒序排列
  62. var dayFiles = Directory.EnumerateFiles(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, yearDir), "*.db").OrderByDescending(p => Convert.ToInt32(new DirectoryInfo(p).Name.Substring(0, 4)));
  63. foreach (var dayFile in dayFiles)
  64. {
  65. using (SimulationPartContext db = SimulationPartContext.GetContext(dayFile))
  66. {
  67. list.AddRange(await db.TaskSimulations.Where(w=>w.TaskId==taskId).ToListAsync());
  68. }
  69. }
  70. }
  71. return list;
  72. }
  73. catch (Exception ex)
  74. {
  75. Serilog.Log.Error(ex, "加载任务航迹信息异常");
  76. return null;
  77. }
  78. }
  79. }
  80. }