wyq 8 bulan lalu
induk
melakukan
faf5f15b5a

+ 1 - 0
DW5S.App/ExtensionsDev/MapControlEx.cs

@@ -585,6 +585,7 @@ public static class MapControlEx
     public static void SetPosDataSource<T>(this MapControl ctrl, IEnumerable<T> items, bool clearDrawLayer = true) where T : PosData, new()
     {
         var innerData = ctrl.Tag as InnerData;
+        if (innerData == null) return;
         innerData._dataCache.Clear();
         if (clearDrawLayer)
             ctrl.ClearDrawObj();

+ 87 - 82
DW5S.App/UserControl/CtrlHome.cs

@@ -22,6 +22,7 @@ using System.Drawing;
 using System.Linq;
 using System.Threading;
 using System.Threading.Tasks;
+using System.Windows.Controls;
 using System.Windows.Forms;
 
 namespace DW5S.App.UserControl
@@ -116,10 +117,10 @@ namespace DW5S.App.UserControl
             if (settings == null)
             {
                 mapControl1.UseLocalDb();
-                return;
+
             }
 
-            OnSysSetingsChanged(settings);
+            //OnSysSetingsChanged(settings);
 
             try
             {
@@ -154,79 +155,79 @@ namespace DW5S.App.UserControl
             txtTimeCho_SelectedIndexChanged(null, null);
             WaitHelper.CloseForm();
 
-            await Task.Run(() =>
-           {
-               var refreshPosTime = AppConfigHelper.Get("RefreshPosTime", 5);
-               if (refreshPosTime < 1)
-                   refreshPosTime = 5;
-               refreshPosTime = refreshPosTime * 1000;
-               while (!this.IsDisposed && !this.Disposing)
-               {
-                   try
-                   {
-                       //表格处于筛选状态,不刷新数据
-                       if (!string.IsNullOrWhiteSpace(gridView2.FindFilterText) || !string.IsNullOrWhiteSpace(gridView2.FilterPanelText))
-                       {
-                           continue;
-                       }
-                       var currentTask = gridView1.GetFocusedRow() as TaskViewModel;
-                       IQueryable<PosResViewModel> refreshQuery = null;
-                       List<PosResViewModel> updateItems = null;
-                       long? currentFreq = null;
-                       if (txtFrequpMHz.EditValue != null)
-                           currentFreq = Convert.ToInt64(txtFrequpMHz.EditValue);
-                       List<long> freqs = null;
-                       lock (this)
-                       {
-                           refreshQuery = cache.AsQueryable();
-                           refreshQuery = refreshQuery.Where(p => p.TaskID == currentTask.Id);
-                           freqs = refreshQuery.Select(p => p.FrequpHz).Distinct().OrderBy(p => p).ToList();
-                           if (currentFreq != null)
-                               refreshQuery = refreshQuery.Where(p => p.FrequpHz == currentFreq.Value);
-
-                           if (!btnIncludeInvalidate.Checked)
-                           {
-                               refreshQuery = refreshQuery.Where(p => p.PosLon != 999);
-                           }
-                           updateItems = refreshQuery.Reverse().ToList();
-                           cache.Clear();
-                       }
-
-                       var items = txtFrequpMHz.Properties.Items.Where(p => p.Value != null).Select(t => Convert.ToInt64(t.Value)).ToList();
-                       foreach (var item in freqs)
-                       {
-                           if (!items.Contains(item))
-                           {
-                               this.Invoke(new Action(() =>
-                               {
-                                   this.txtFrequpMHz.Properties.Items.Add(new ImageComboBoxItem((item / 1e6).ToString("f3"), item));
-                               }));
-                           }
-                       }
-                       if (txtTimeCho.Text == "自定义") continue;
-                       if (!updateItems.Any()) continue;
-                       var hours = Convert.ToInt32(txtTimeCho.EditValue);
-                       var ds = this.gridHomePosRes.DataSource as List<PosResViewModel>;
-                       ds.InsertRange(0, updateItems);
-                       var max = ds.First().SigTime;
-                       ds.RemoveAll(p => (max - p.SigTime).TotalHours > hours);
-                       this.Invoke(new Action(() =>
-                       {
-                           mapControl1.DelPosItem<PosResViewModel>(p => (max - p.SigTime).TotalHours > hours);
-                           mapControl1.AddPosItems(updateItems);
-                           gridView2.RefreshData();
-                       }));
-                   }
-                   catch (Exception ex)
-                   {
-                       IocContainer.Logger.Error(ex, "刷新定位点出错");
-                   }
-                   finally
-                   {
-                       Thread.Sleep(refreshPosTime);
-                   }
-               }
-           });
+            // await Task.Run(() =>
+            //{
+            //    var refreshPosTime = AppConfigHelper.Get("RefreshPosTime", 5);
+            //    if (refreshPosTime < 1)
+            //        refreshPosTime = 5;
+            //    refreshPosTime = refreshPosTime * 1000;
+            //    while (!this.IsDisposed && !this.Disposing)
+            //    {
+            //        try
+            //        {
+            //            //表格处于筛选状态,不刷新数据
+            //            if (!string.IsNullOrWhiteSpace(gridView2.FindFilterText) || !string.IsNullOrWhiteSpace(gridView2.FilterPanelText))
+            //            {
+            //                continue;
+            //            }
+            //            var currentTask = gridView1.GetFocusedRow() as TaskViewModel;
+            //            IQueryable<PosResViewModel> refreshQuery = null;
+            //            List<PosResViewModel> updateItems = null;
+            //            long? currentFreq = null;
+            //            if (txtFrequpMHz.EditValue != null)
+            //                currentFreq = Convert.ToInt64(txtFrequpMHz.EditValue);
+            //            List<long> freqs = null;
+            //            lock (this)
+            //            {
+            //                refreshQuery = cache.AsQueryable();
+            //                refreshQuery = refreshQuery.Where(p => p.TaskID == currentTask.Id);
+            //                freqs = refreshQuery.Select(p => p.FrequpHz).Distinct().OrderBy(p => p).ToList();
+            //                if (currentFreq != null)
+            //                    refreshQuery = refreshQuery.Where(p => p.FrequpHz == currentFreq.Value);
+
+            //                if (!btnIncludeInvalidate.Checked)
+            //                {
+            //                    refreshQuery = refreshQuery.Where(p => p.PosLon != 999);
+            //                }
+            //                updateItems = refreshQuery.Reverse().ToList();
+            //                cache.Clear();
+            //            }
+
+            //            var items = txtFrequpMHz.Properties.Items.Where(p => p.Value != null).Select(t => Convert.ToInt64(t.Value)).ToList();
+            //            foreach (var item in freqs)
+            //            {
+            //                if (!items.Contains(item))
+            //                {
+            //                    this.Invoke(new Action(() =>
+            //                    {
+            //                        this.txtFrequpMHz.Properties.Items.Add(new ImageComboBoxItem((item / 1e6).ToString("f3"), item));
+            //                    }));
+            //                }
+            //            }
+            //            if (txtTimeCho.Text == "自定义") continue;
+            //            if (!updateItems.Any()) continue;
+            //            var hours = Convert.ToInt32(txtTimeCho.EditValue);
+            //            var ds = this.gridHomePosRes.DataSource as List<PosResViewModel>;
+            //            ds.InsertRange(0, updateItems);
+            //            var max = ds.First().SigTime;
+            //            ds.RemoveAll(p => (max - p.SigTime).TotalHours > hours);
+            //            this.Invoke(new Action(() =>
+            //            {
+            //                mapControl1.DelPosItem<PosResViewModel>(p => (max - p.SigTime).TotalHours > hours);
+            //                mapControl1.AddPosItems(updateItems);
+            //                gridView2.RefreshData();
+            //            }));
+            //        }
+            //        catch (Exception ex)
+            //        {
+            //            IocContainer.Logger.Error(ex, "刷新定位点出错");
+            //        }
+            //        finally
+            //        {
+            //            Thread.Sleep(refreshPosTime);
+            //        }
+            //    }
+            //});
         }
 
         private async Task<PageData> LoadPageData(PageQueryDto arg)
@@ -242,6 +243,9 @@ namespace DW5S.App.UserControl
         }
         private async Task<PageData> LoadPageDataPos(PageQueryDto arg)
         {
+            listPos.Clear();
+            gridView2.RefreshData();
+            mapControl1.SetPosDataSource(new List<PosResViewModel>() );
             if (tsk == null) return null;
             var repsPos = IocContainer.UnitOfWork.OfLong<PosRes>();
             var queryable = repsPos.AsQueryable();
@@ -269,9 +273,10 @@ namespace DW5S.App.UserControl
             }
             queryable = queryable.OrderByDescending(p => p.SigTime).ThenBy(p => p.FrequpHz);
             var pageData = await repsPos.GetPageData(arg, queryable);
-            listPos.Clear();
+            
             listPos.AddRange(pageData.Data.To<List<PosResViewModel>>());
             gridView2.RefreshData();
+            mapControl1.SetPosDataSource(listPos);
             return pageData;
         }
         private void GridView2_ColumnFilterChanged(object sender, EventArgs e)
@@ -332,7 +337,6 @@ namespace DW5S.App.UserControl
         }
         private async void GridView1_FocusedRowObjectChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowObjectChangedEventArgs e)
         {
-            gridHomePosRes.DataSource = new List<PosResViewModel>();
             mapControl1.DelFixedImg("Sat");
             mapControl1.DelFixedImg("Tx");
             tsk = (e.Row as TaskViewModel);
@@ -498,11 +502,11 @@ namespace DW5S.App.UserControl
                         gridView1.FocusedRowHandle = 0;
 
                     }
-                    else 
+                    else
                     {
-                        
+
                     }
-                    
+
                 }
                 catch (Exception ex)
                 {
@@ -587,10 +591,11 @@ namespace DW5S.App.UserControl
                     if (!DxHelper.MsgBoxHelper.ShowConfirm($"删除任务[{tsk.TaskName}]?"))
                         return;
                     var unitOfWork = IocContainer.UnitOfWork;
-                    var repsTask = unitOfWork.Of<TaskInfo>();
-                    await repsTask.DeleteAsync(p => p.Id == tsk.Id);
                     var repsTaskSig = unitOfWork.Of<TaskSig>();
                     await repsTaskSig.DeleteAsync(p => p.TaskInfoID == tsk.Id);
+
+                    var repsTask = unitOfWork.Of<TaskInfo>();
+                    await repsTask.DeleteAsync(p => p.Id == tsk.Id);
                     await unitOfWork.SaveAsync();
                     gridView1.DeleteSelectedRows();
 

+ 7 - 1
DW5S.Controller/ResultController.cs

@@ -5,6 +5,7 @@ using DW5S.WebApi;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.EntityFrameworkCore;
 using Serilog;
+using System.Linq;
 
 namespace DW5S.Controllers
 {
@@ -75,7 +76,12 @@ namespace DW5S.Controllers
                     if (!posList.Contains(item))
                         posList.Add(item);
                 }
-                var res = posList.Select(p => new TaskFreqResDto() { FreqUpHz = p }).OrderBy(o => o.FreqUpHz).ToList();
+                var res = posList.Select(p => new TaskFreqResDto() { FreqUpHz = p }).ToList();
+                var res2 = (await unitOfWork.Of<TaskSig>().FindAsync(p => p.TaskInfoID == dto.TaskInfoID))
+                    .Select(p => new TaskFreqResDto() { FreqUpHz = p.FreqUpHz });
+
+                res.AddRange(res2);
+                res= res.DistinctBy(p=>p.FreqUpHz).OrderBy(p => p.FreqUpHz).ToList();
                 return Success(res);
             }
             catch (Exception ex)

+ 1 - 1
DW5S.ViewModel/PosResViewModel.cs

@@ -21,7 +21,7 @@ namespace DW5S.ViewModel
         public double FreqUpDis => FrequpHz / 1e6;
 
         [Display(Name = "任务编号",AutoGenerateField =false)]
-        public int TargetInfoID { get; set; }
+        public int? TargetInfoID { get; set; }
 
         [Display(Name = "检测方式")]
         [ToolTip]