using DevExpress.Utils; using DevExpress.XtraBars; using DevExpress.XtraBars.Docking; using DevExpress.XtraSplashScreen; using Ips.Library.Basic; using Ips.Library.DxpLib; using Ips.Library.Entity; using Ips.Library.WebApi; using Ips.Sps.Controllers; using Ips.Sps.Scheduling; using Ips.Sps.Store; using Ips.Sps.Svrs; using Ips.Sps.Tools; using Ips.Sps.Tools.FileConcats; using Ips.Sps.Tools.SignalDdces; using Ips.Sps.Tools.SignalMerges; using Ips.Sps.Tools.SignalSimes; using Ips.Sps.Tools.TdmaCgs; using Ips.Sps.Tools.Xdcs; using Ips.Sps.Tsks; using System.Diagnostics; using System.Text.Json; using System.Text.Json.Serialization; namespace Ips.Sps { public partial class MainWin : DevExpress.XtraBars.Ribbon.RibbonForm { public MainWin() { Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory; InitializeComponent(); this.Text = SpsConst.AppName; Stores.It.Init(SynchronizationContext.Current); AddDefaultDocument(); } TskListCtrl tskListCtrl; DriveMonitor _driveMonitor; private void AddDefaultDocument() { try { this.SuspendLayout(); tskListCtrl = new TskListCtrl() { Dock = DockStyle.Fill }; dnlTskManager.Options.ShowCloseButton = false; dnlTskManager.ControlContainer.Controls.Add(tskListCtrl); FormManager.Init(this, documentManager, tabbedView, dockManager); btnTskMap.PerformClick(); } finally { this.ResumeLayout(false); this.PerformLayout(); } } private void MainWin_Load(object sender, EventArgs e) { //Ips.Sps.Controllers.dll被反射加载,不调用一下运行单文件发布的程序会找不到此程序集 //var t = new HomeController(); ServerContext.Instance.Init(); string autoClearPath = ToolConfig.GetAppSetting("FileClearPath"); if (autoClearPath.IsNotNullOrWhitespace()) { _driveMonitor = new DriveMonitor(autoClearPath); _driveMonitor.Start(); } WebApiHelper.Start(Convert.ToInt32(SpsConst.HttpPort), "Ips.Library.Entity.xml",null, $"Ips.Sps.Controllers.xml"); IpsLogger.Info("系统启动完成"); SplashScreenManager.CloseForm(); } private void MainWin_FormClosing(object sender, FormClosingEventArgs e) { if (MsgHelper.ShowConfirm("你确定要退出当前系统吗?")) { try { if (TskScheduler.Default.GetRunTskList().Count > 0) { TskScheduler.Default.StopAll(true); } _driveMonitor?.Stop(); } catch { } } else { e.Cancel = true; } } protected override void OnShown(EventArgs e) { base.OnShown(e); //var settings = Ips.Sps.Properties.Settings.Default; //if (!string.IsNullOrEmpty(settings.SkinName)) //{ // if (settings.CompactMode) // UserLookAndFeel.ForceCompactUIMode(true, false); // if (!string.IsNullOrEmpty(settings.Palette)) // UserLookAndFeel.Default.SetSkinStyle(settings.SkinName, settings.Palette); // else UserLookAndFeel.Default.SetSkinStyle(settings.SkinName); //} //SplashScreenManager.CloseForm(); } private void btnTskStrategy_ItemClick(object sender, ItemClickEventArgs e) { FormManager.ShowDocument("任务策略"); } private void btnTskMap_ItemClick(object sender, ItemClickEventArgs e) { FormManager.ShowDocument("态势地图", opt => opt.Properties.AllowClose = DefaultBoolean.False); } private void btnPas_ItemClick(object sender, ItemClickEventArgs e) { FormManager.ShowDocument("采集数据"); } private void btnPes_ItemClick(object sender, ItemClickEventArgs e) { FormManager.ShowDocument("参估数据"); } private void btnCst_ItemClick(object sender, ItemClickEventArgs e) { //FormManager.ShowDocument("目标参估"); } private void btnScr_ItemClick(object sender, ItemClickEventArgs e) { //FormManager.ShowDocument("参考参估"); } private void btnSigBand_ItemClick(object sender, ItemClickEventArgs e) { //FormManager.ShowDocument("频段管理"); } private void btnSat_ItemClick(object sender, ItemClickEventArgs e) { FormManager.ShowDocument("卫星管理"); } private void btnEph_ItemClick(object sender, ItemClickEventArgs e) { FormManager.ShowDocument("星历管理"); } private void btnAnt_ItemClick(object sender, ItemClickEventArgs e) { FormManager.ShowDocument("站点管理"); } private void btnAdc_ItemClick(object sender, ItemClickEventArgs e) { FormManager.ShowDocument("采集管理"); } private void btnEmt_ItemClick(object sender, ItemClickEventArgs e) { FormManager.ShowDocument("目标管理"); } private void btnSingal_ItemClick(object sender, ItemClickEventArgs e) { FormManager.ShowDocument("信号管理"); } private void btnTransRel_ItemClick(object sender, ItemClickEventArgs e) { //FormManager.ShowDocument("转发关系"); } private void btnRefSite_ItemClick(object sender, ItemClickEventArgs e) { //FormManager.ShowDocument("参考站管理"); } private void btnAbout_ItemClick(object sender, ItemClickEventArgs e) { IpsAboutForm aboutForm = new IpsAboutForm() { StartPosition = FormStartPosition.CenterParent }; aboutForm.ShowDialog(); } private void btnHelp_ItemClick(object sender, ItemClickEventArgs e) { FormManager.ShowDocument("帮助"); } private void dockManager_ClosedPanel(object sender, DockPanelEventArgs e) { //e.Panel.Dispose(); } private void menuNewTsk_ItemClick(object sender, ItemClickEventArgs e) { //if (menuNewTsk.ItemLinks.Count == 0) //{ // LoadTskStrategies(); //} } private void LoadTskStrategies() { var strategys = TskStrategys.TskStrategyManager.Default.GetAll(AdMode.DDC, AdMode.ADC); var count = strategys.Count; BarItem[] newTskItems = new BarItem[count]; for (int i = 0; i < count; i++) { var stgItem = strategys[i]; BarButtonItem menuItem = new BarButtonItem(); menuItem.ItemClick += menuItemNewTsk_ItemClick; menuItem.Caption = stgItem.Name; menuItem.Tag = stgItem.Oid; newTskItems[i] = menuItem; } menuNewTsk.AddItems(newTskItems); } private void menuItemNewTsk_ItemClick(object sender, ItemClickEventArgs e) { if (e.Item.Tag == null) return; var stgId = (int)e.Item.Tag; TskEditForm form = new TskEditForm(null, stgId) { Text = $"新建任务({e.Item.Caption})" }; FormManager.ShowDocument(form); } private void menuNewTsk_GetItemData(object sender, EventArgs e) { menuNewTsk.ItemLinks.Clear(); LoadTskStrategies(); } private void btnTskManager_ItemClick(object sender, ItemClickEventArgs e) { FormManager.ShowDockPanel(DockingStyle.Left, "任务管理"); } private void MainWin_KeyDown(object sender, KeyEventArgs e) { if (e.Control && e.Alt && e.KeyCode == Keys.S) { btnTskStrategy.Visibility = btnTskStrategy.Visibility == BarItemVisibility.Never ? BarItemVisibility.Always : BarItemVisibility.Never; } } private void btnGdopErrAnalyse_ItemClick(object sender, ItemClickEventArgs e) { FormManager.ShowDocument(); } private void btnSigSim_ItemClick(object sender, ItemClickEventArgs e) { FormManager.ShowDocument("信号仿真"); } private void btnSigMerge_ItemClick(object sender, ItemClickEventArgs e) { FormManager.ShowDocument("信号合并"); } private void btnSigDdc_ItemClick(object sender, ItemClickEventArgs e) { FormManager.ShowDocument("信号DDC"); } private void btnFileConcat_ItemClick(object sender, ItemClickEventArgs e) { FormManager.ShowDocument("文件拼接"); } private void btnXdcTool_ItemClick(object sender, ItemClickEventArgs e) { FormManager.ShowDocument("同频对消"); } private void btnTdmaCg_ItemClick(object sender, ItemClickEventArgs e) { FormManager.ShowDocument("TDMA参估"); } private void btnSvrs_ItemClick(object sender, ItemClickEventArgs e) { FormManager.ShowDocument("服务状态"); } private void btnSysLog_ItemClick(object sender, ItemClickEventArgs e) { //FormManager.ShowDocument("系统日志"); } private void btnOpenApi_ItemClick(object sender, ItemClickEventArgs e) { string addr = $"http://127.0.0.1:{SpsConst.HttpPort}/swagger"; try { //System.Diagnostics.Process.Start(addr);//NetFramework可用,NetCore使用CMD启动 ProcessStartInfo info = new ProcessStartInfo(); info.Arguments = $"/C start {addr}"; info.FileName = "cmd"; info.UseShellExecute = false; info.CreateNoWindow = true; Process.Start(info); } catch (Exception ex) { IpsLogger.Error($"无法打开默认浏览器,请手动打开浏览器查看接口文档.地址{addr}", ex); } } } /// /// Json日期格式化 /// public class DatetimeJsonConverter : JsonConverter { public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { if (reader.TokenType == JsonTokenType.String) { if (DateTime.TryParse(reader.GetString(), out DateTime date)) return date; } return reader.GetDateTime(); } public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options) { writer.WriteStringValue(value.ToString("yyyy-MM-dd HH:mm:ss")); } } }