123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- using DevExpress.XtraEditors;
- using DevExpress.XtraTreeList.Data;
- using ExtensionsDev;
- using PosResAnalysis;
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using DW5S.DTO;
- using DW5S.App.Model;
- using DW5S.Entity;
- using DW5S.Repostory;
- using Microsoft.Extensions.Logging;
- namespace DW5S.App.CorTools
- {
- public partial class XlCalculateForm : DevExpress.XtraEditors.XtraForm
- {
- [Autowired]
- private readonly ILogger logger;
- [Autowired]
- private readonly UnitOfWork unitOfWork;
- List<ModelSatEphRes> listEph = new List<ModelSatEphRes>();
- //选择卫星执行星历推算
- public XlCalculateForm()
- {
- InitializeComponent();
- this.itemTle.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
- var list1 = unitOfWork.Reps<SatInfo>().GetAllAsync(p => p.SatCode).Result;
- var repsXl = unitOfWork.Reps<XlInfo>() as XlRepository;
- var list2 = repsXl.GetAllSat().Result;//所有卫星
- list2.RemoveAll(p => list1.Select(t => t.SatCode).Contains(p.SatCode));
- list2.InsertRange(0, list1);
- this.txtSat.UseDefault().SetData(list2, nameof(SatInfo.Sat)).UseDoubleClickToSelectAll();
- }
- //选择TLE执行星历推算
- public XlCalculateForm(string tle)
- : this()
- {
- this.Text = "星历推算";
- this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
- this.IconOptions.ShowIcon = false;
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
- this.txtTle.Text = tle;
- this.itemTle.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
- this.itemSat.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
- }
- private void XlCalculateForm_Load(object sender, EventArgs e)
- {
- gridControl.UseDefault(listEph).UseMultiSelect().UseRowNumber();
- txtStartTime.UseDefault().UseDoubleClickToSelectAll();
- txtEndTime.UseDefault().UseDoubleClickToSelectAll();
- layoutControl1.BestFit();
- }
- private async void btnCalculate_Click(object sender, EventArgs e)
- {
- if (itemSat.Visibility == DevExpress.XtraLayout.Utils.LayoutVisibility.Always)
- {
- if (txtSat.EditValue == null)
- {
- DxHelper.MsgBoxHelper.ShowError("请选择卫星");
- return;
- }
- }
- else
- {
- if (string.IsNullOrWhiteSpace(txtTle.Text))
- {
- DxHelper.MsgBoxHelper.ShowError("请选择双行根数");
- return;
- }
- }
- if (string.IsNullOrWhiteSpace(txtStartTime.Text))
- {
- DxHelper.MsgBoxHelper.ShowError("请填写开始时间");
- return;
- }
- int spanSeconds = 1;
- if (txtEndTime.DateTime != txtStartTime.DateTime)
- {
- if (!string.IsNullOrEmpty(txtEndTime.Text) && !int.TryParse(txtSpanSeconds.Text, out spanSeconds))
- {
- DxHelper.MsgBoxHelper.ShowError("推算间隔非数字");
- return;
- }
- }
- var startTime = Convert.ToDateTime(txtStartTime.EditValue);
- var endTime = Convert.ToDateTime(txtEndTime.EditValue);
- if (!string.IsNullOrEmpty(txtStartTime.Text) && !string.IsNullOrEmpty(txtEndTime.Text))
- {
- if (endTime < startTime)
- {
- DxHelper.MsgBoxHelper.ShowError("开始时间不能大于结束时间");
- return;
- }
- if ((endTime - startTime).TotalHours > 24)
- {
- DxHelper.MsgBoxHelper.ShowError("开始时间和结束时间不能相差超过24小时");
- return;
- }
- }
- listEph.Clear();
- try
- {
- var repsXl = unitOfWork.Reps<XlInfo>() as XlRepository;
- if (!string.IsNullOrEmpty(txtEndTime.Text) && !string.IsNullOrEmpty(txtSpanSeconds.Text))
- {
- var XlCalcMultDto = new XlCalcMultDto()
- {
- startTime = startTime,
- endTime = endTime,
- spanSeconds = spanSeconds,
- };
- if (itemTle.Visibility == DevExpress.XtraLayout.Utils.LayoutVisibility.Always)
- {
- XlCalcMultDto.tleStr = txtTle.Text.Trim();
- }
- else
- {
- var sat = txtSat.EditValue as SatInfo;
- var xlInfo = await repsXl.GetLatestAsync(sat.SatCode, startTime);
- XlCalcMultDto.tleStr = xlInfo.TwoLine;
- }
- var ephRes = await HttpHelper.PostRequestAsync<List<ModelSatEphRes>>(SysConfig.GetUrl("Xl/CalcMult"), XlCalcMultDto);
- if (ephRes.code == 200)
- {
- listEph.AddRange(ephRes.data);
- gridView.RefreshData();
- }
- else
- {
- DxHelper.MsgBoxHelper.ShowError(ephRes.msg);
- }
- }
- else
- {
- var XlCalcDto = new XlCalcDto()
- {
- SigTime = txtStartTime.DateTime,
- };
- if (itemTle.Visibility == DevExpress.XtraLayout.Utils.LayoutVisibility.Always)
- {
- XlCalcDto.tleStr = txtTle.Text;
- }
- else
- {
- var sat = txtSat.EditValue as SatInfo;
- var xlInfo = await repsXl.GetLatestAsync(sat.SatCode, XlCalcDto.SigTime);
- XlCalcDto.tleStr = xlInfo.TwoLine;
- }
- var ephRes = await HttpHelper.PostRequestAsync<ModelSatEphRes>(SysConfig.GetUrl("Xl/Calc"), XlCalcDto);
- if (ephRes.code == 200)
- {
- listEph.Add(ephRes.data);
- gridView.RefreshData();
- }
- else
- {
- DxHelper.MsgBoxHelper.ShowError(ephRes.msg);
- }
- }
- }
- catch (TaskCanceledException)
- {
- string msg = "星历推算Http接口调用超时";
- logger.LogWarning(msg);
- DxHelper.MsgBoxHelper.ShowWarning("星历推算Http接口调用超时");
- }
- catch (Exception ex)
- {
- string msg = "星历推算异常";
- logger.LogError(ex,msg);
- DxHelper.MsgBoxHelper.ShowError("星历推算异常");
- }
- }
- }
- }
|