|
@@ -23,6 +23,7 @@ using XdCxRhDW.WebApi.Controllers;
|
|
|
using System.ComponentModel.DataAnnotations;
|
|
|
using System.Web.Caching;
|
|
|
using XdCxRhDW.Repostory;
|
|
|
+using System.IO;
|
|
|
|
|
|
namespace XdCxRhDW.App.WebAPI
|
|
|
{
|
|
@@ -484,7 +485,7 @@ namespace XdCxRhDW.App.WebAPI
|
|
|
}
|
|
|
using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime))
|
|
|
{
|
|
|
- var xlInfoList = await XlCache.GetAllAsync();
|
|
|
+ var xlInfoList = await XlCache.GetAllAsync();
|
|
|
|
|
|
var mainXl = xlInfoList.Where(w => w.SatCode == dto.MainCode);
|
|
|
var minTime = mainXl.Min(m => Math.Abs((m.TimeBJ - dto.SigTime).TotalSeconds));
|
|
@@ -1089,7 +1090,7 @@ namespace XdCxRhDW.App.WebAPI
|
|
|
|
|
|
var mainXl = xlInfoList.Where(w => w.SatCode == dto.MainCode);
|
|
|
var minTime = mainXl.Min(m => Math.Abs((m.TimeBJ - dto.SigTime).TotalSeconds));
|
|
|
- var xlInfo1 = mainXl.Where(w => Math.Abs((w.TimeBJ - dto.SigTime).TotalSeconds) == minTime).FirstOrDefault();
|
|
|
+ var xlInfo1 = mainXl.Where(w => Math.Abs((w.TimeBJ - dto.SigTime).TotalSeconds) == minTime).FirstOrDefault();
|
|
|
if (xlInfo1 == null)
|
|
|
{
|
|
|
Serilog.Log.Error($"未找到卫星[{dto.MainCode}]的双行根数星历");
|
|
@@ -1312,7 +1313,7 @@ namespace XdCxRhDW.App.WebAPI
|
|
|
|
|
|
var mainXl = xlInfoList.Where(w => w.SatCode == dto.MainCode);
|
|
|
var minTime = mainXl.Min(m => Math.Abs((m.TimeBJ - dto.SigTime).TotalSeconds));
|
|
|
- var xlInfo1 = mainXl.Where(w => Math.Abs((w.TimeBJ - dto.SigTime).TotalSeconds) == minTime).FirstOrDefault();
|
|
|
+ var xlInfo1 = mainXl.Where(w => Math.Abs((w.TimeBJ - dto.SigTime).TotalSeconds) == minTime).FirstOrDefault();
|
|
|
if (xlInfo1 == null)
|
|
|
{
|
|
|
Serilog.Log.Error($"未找到卫星[{dto.MainCode}]的双行根数星历");
|
|
@@ -1659,16 +1660,72 @@ namespace XdCxRhDW.App.WebAPI
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 查询定位结果(暂未实现)
|
|
|
+ /// 查询定位结果
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
/// <exception cref="Exception"></exception>
|
|
|
- [HttpGet]
|
|
|
- public async Task<AjaxResult<PosResDto>> GetPosRes(PosResQueryDto dto)
|
|
|
+ [HttpPost]
|
|
|
+ public async Task<AjaxResult<List<PosResDto>>> GetPosRes([FromBody] PosResQueryDto dto)
|
|
|
{
|
|
|
- await Task.Delay(100);
|
|
|
- return Error<PosResDto>("该功能暂未实现!");
|
|
|
+ List<PosResDto> posList = new List<PosResDto>();
|
|
|
+ try
|
|
|
+ {
|
|
|
+ DateTime start = dto.BeginTime;
|
|
|
+ DateTime end = dto.EndTime;
|
|
|
+ if (!Directory.Exists("DbPart")) return Success(posList);
|
|
|
+ var yearDirs = Directory.EnumerateDirectories(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DbPart")).OrderByDescending(p => Convert.ToInt32(new DirectoryInfo(p).Name));//年目录,倒叙排列
|
|
|
+ foreach (var yearDir in yearDirs)
|
|
|
+ {
|
|
|
+ //每一天的db文件,倒序排列
|
|
|
+ var dayFiles = Directory.EnumerateFiles(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, yearDir), "*.db").OrderByDescending(p => Convert.ToInt32(new DirectoryInfo(p).Name.Substring(0, 4)));
|
|
|
+ foreach (var dayFile in dayFiles)
|
|
|
+ {
|
|
|
+ using (RHDWPartContext db = RHDWPartContext.GetContext(dayFile))
|
|
|
+ {
|
|
|
+ if (db.PosRes.Any(p => p.TaskInfoID == dto.TaskInfoID))
|
|
|
+ end = await db.PosRes.Where(p => p.TaskInfoID == dto.TaskInfoID).MaxAsync(p => p.SigTime);
|
|
|
+ }
|
|
|
+ if (end != DateTime.MinValue)
|
|
|
+ {
|
|
|
+ goto skip;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ skip:
|
|
|
+ if (end == DateTime.MinValue)
|
|
|
+ {
|
|
|
+ return Success(posList);//没有数据不查询
|
|
|
+ }
|
|
|
+ if (end >= dto.EndTime)
|
|
|
+ {
|
|
|
+ end = dto.EndTime;
|
|
|
+ }
|
|
|
+ start = dto.BeginTime;
|
|
|
+ DateTime endDay = new DateTime(end.Year, end.Month, end.Day);
|
|
|
+ DateTime startDay = new DateTime(start.Year, start.Month, start.Day);
|
|
|
+ while (endDay >= startDay)
|
|
|
+ {
|
|
|
+ using (RHDWPartContext db = RHDWPartContext.GetContext(endDay))
|
|
|
+ {
|
|
|
+ var posRes = await db.PosRes
|
|
|
+ .Where(w => w.SigTime >= start && w.SigTime <= end && w.TaskInfoID == dto.TaskInfoID)
|
|
|
+ .OrderByDescending(o => o.SigTime).ToListAsync();
|
|
|
+ posList.AddRange(posRes.Select(m => Map(m)));
|
|
|
+ }
|
|
|
+ endDay = endDay.AddDays(-1);
|
|
|
+ }
|
|
|
+ return Success(posList);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ string err = $"定位查询任务编号:{dto.TaskInfoID},{dto.BeginTime:yyyy-MM-dd HH:mm:ss}-{dto.EndTime:yyyy-MM-dd HH:mm:ss}异常:{ex.Message}";
|
|
|
+ Serilog.Log.Error(err);
|
|
|
+ return Error<List<PosResDto>>(err);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
}
|