Эх сурвалжийг харах

查询条件频点从定位点里取

gongqiuhong 1 жил өмнө
parent
commit
49cd9eecde

+ 65 - 0
XdCxRhDW.App/Controllers/ResultController.cs

@@ -126,6 +126,27 @@ namespace XdCxRhDW.App.Controllers
             }
         }
 
+        /// <summary>
+        /// 根据定位结果加载查询条件频点
+        /// </summary>
+        /// <param name="dto">任务ID</param>
+        /// <returns></returns>
+        /// <exception cref="Exception"></exception>
+        [HttpPost]
+        public async Task<AjaxResult<List<PosFreq>>> GetFreqByTaskInfoID(PosFreqByTaskInfoIdDto dto)
+        {
+            var response = (await GetFreqByTaskIdObsolete(dto));
+            if (response.code == 200)
+            {
+                var listDto = response.data?.ToList();
+                return Success(listDto);
+            }
+            else
+            {
+                return Error<List<PosFreq>>(response.msg);
+            }
+        }
+
         /// <summary>
         /// 根据时间范围查询定位结果(此方法内部调用)
         /// </summary>
@@ -342,6 +363,50 @@ namespace XdCxRhDW.App.Controllers
                 return Error<List<PosRes>>("定位结果查询最新数据异常");
             }
         }
+        /// <summary>
+        /// 根据任务ID查询定位结果(此方法内部调用)
+        /// </summary>
+        /// <param name="dto">任务ID</param>
+        /// <returns></returns>
+        /// <exception cref="Exception"></exception>
+        [HttpPost]
+        [Obsolete]
+        public async Task<AjaxResult<List<PosFreq>>> GetFreqByTaskIdObsolete(PosFreqByTaskInfoIdDto dto)
+        {
+            var posList = new List<PosFreq>();
+            try
+            {
+                var dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DbPart");
+                if (!Directory.Exists(dir)) return Success(posList);
+                var yearDirs = Directory.EnumerateDirectories(dir).OrderByDescending(p => Convert.ToInt32(new DirectoryInfo(p).Name));//年目录,倒叙排列
+                DateTime max = DateTime.MinValue;
+                foreach (var yearDir in yearDirs)
+                {
+                    if (max != DateTime.MinValue) break;
+                    //每一天的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 == null) continue;
+                            //var query = await db.PosRes.Select(s=>new PosFreq() { FreqUpHz= s.FreqUpHz }).Distinct().ToListAsync();
+                            var query1 =  db.PosRes.Where(p => p.TaskInfoID == dto.TaskInfoID).Select(s => new PosFreq() { FreqUpHz = s.FreqUpHz });
+                            var query=await query1.Distinct().ToListAsync();
+                            posList.AddRange(query);
+                        }
+                    }
+                }
+                var res =  posList.Distinct().ToList();
+                return Success(res);
+            }
+            catch (Exception ex)
+            {
+                string msg = $"定位结果查询异常-任务编号:{dto.TaskInfoID}";
+                Serilog.Log.Error(ex, msg);
+                return Error<List<PosFreq>>("定位结果查询异常");
+            }
+        }
         #endregion
 
         private PosResDto MapDto(PosRes res)

+ 42 - 11
XdCxRhDW.App/UserControl/CtrlHome.cs

@@ -120,9 +120,7 @@ namespace XdCxRhDW.App.UserControl
                 return;
             }
             OnSysSetingsChanged(SysConfig.Config);
-            gridView1.FocusedRowObjectChanged += GridView1_FocusedRowObjectChanged;
-            gridView2.FocusedRowObjectChanged += GridView2_FocusedRowObjectChanged;
-            btnIncludeInvalidate.CheckedChanged += BtnIncludeInvalidate_CheckedChanged;
+           
             try
             {
                 List<TxInfo> txList = new List<TxInfo>();
@@ -160,6 +158,9 @@ namespace XdCxRhDW.App.UserControl
             this.svgImageCollection1.Add("Running", SvgHelper.CreateCycle("#2E8B57"));
             gridView1.CustomDrawCell += GridView1_CustomDrawCell;
             gridView1.DoubleClick += GridView1_DoubleClick;
+            gridView1.FocusedRowObjectChanged += GridView1_FocusedRowObjectChanged;
+            gridView2.FocusedRowObjectChanged += GridView2_FocusedRowObjectChanged;
+            btnIncludeInvalidate.CheckedChanged += BtnIncludeInvalidate_CheckedChanged;
             txtTimeCho_SelectedIndexChanged(null, null);
             WaitHelper.CloseForm();
         }
@@ -208,6 +209,21 @@ namespace XdCxRhDW.App.UserControl
                     gridView2.RefreshData();
                     mapControl1.AddPosItem(posRes);
                 }));
+
+
+                var txtFrequpItemFreq = new List<long>();
+                for (int i = 0; i < this.txtFrequpMHz.Properties.Items.Count; i++)
+                {
+                    txtFrequpItemFreq.Add(Convert.ToInt64(this.txtFrequpMHz.Properties.Items[i].Value));
+                }
+                if (!txtFrequpItemFreq.Contains(posRes.FreqUpHz))
+                {
+                    this.Invoke(new Action(() =>
+                    {
+                        this.txtFrequpMHz.Properties.Items.Add(new ImageComboBoxItem((posRes.FreqUpHz / 1e6).ToString("f3"), posRes.FreqUpHz));
+                    }));
+                }
+                
             }
         }
         private async void GridView1_FocusedRowObjectChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowObjectChangedEventArgs e)
@@ -229,16 +245,31 @@ namespace XdCxRhDW.App.UserControl
                 gridView2.Columns[nameof(ModelPosRes.CxResID)].Visible = false;
             }
 
-            using (RHDWContext db = new RHDWContext())
+            //using (RHDWContext db = new RHDWContext())
+            //{
+            //this.txtFrequpMHz.Properties.Items.Clear();
+            //this.txtFrequpMHz.Properties.Items.Add(new ImageComboBoxItem("全部", null));
+            // var sigs = await db.TaskSigs.Where(w => w.TaskInfoID == tsk.ID).ToListAsync();
+            //foreach (var item in sigs)
+            //{
+            //    this.txtFrequpMHz.Properties.Items.Add(new ImageComboBoxItem((item.FreqUp / 1e6).ToString("f3"), item.FreqUp));
+            //}
+            // }
+            this.txtFrequpMHz.Properties.Items.Clear();
+            this.txtFrequpMHz.Properties.Items.Add(new ImageComboBoxItem("全部", null));
+            var sigs =new List<PosFreq>();
+            var dto = new PosFreqByTaskInfoIdDto()
             {
-                this.txtFrequpMHz.Properties.Items.Clear();
-                this.txtFrequpMHz.Properties.Items.Add(new ImageComboBoxItem("全部", null));
-                var sigs = await db.TaskSigs.Where(w => w.TaskInfoID == tsk.ID).ToListAsync();
-                foreach (var item in sigs)
-                {
-                    this.txtFrequpMHz.Properties.Items.Add(new ImageComboBoxItem((item.FreqUp / 1e6).ToString("f3"), item.FreqUp));
-                }
+                TaskInfoID=tsk.ID
+            };
+            var res = await HttpHelper.PostRequestAsync<List<PosFreq>>(SysConfig.GetUrl("Result/GetFreqByTaskIdObsolete"), dto);
+            if (res.code == 200)
+                sigs = res.data;
+            foreach (var item in sigs)
+            {
+                this.txtFrequpMHz.Properties.Items.Add(new ImageComboBoxItem((item.FreqUpHz / 1e6).ToString("f3"), item.FreqUpHz));
             }
+
             txtFrequpMHz.SelectedIndex = 0;
             var btnEdit = (layoutControlGroup1.CustomHeaderButtons[1] as GroupBoxButton);
             var btnDel = (layoutControlGroup1.CustomHeaderButtons[2] as GroupBoxButton);

+ 6 - 0
XdCxRhDW.Entity/PosRes.cs

@@ -94,4 +94,10 @@ namespace XdCxRhDW.Entity
 
 
     }
+
+    public class PosFreq
+    {
+        [Display(Name = "上行频点")]
+        public long FreqUpHz { get; set; }
+    }
 }

+ 12 - 1
XdCxRhDw.Dto/PosResQueryDto.cs

@@ -82,4 +82,15 @@ namespace XdCxRhDW.Dto
         public bool IncludeInvalidate { get; set; } = true;
 
     }
-}
+    /// <summary>
+    /// 
+    /// </summary>
+    public class PosFreqByTaskInfoIdDto
+    {
+        /// <summary>
+        /// 任务编号
+        /// </summary>
+        [RangeInt(0)]
+        public int TaskInfoID { get; set; }
+    }
+    }