From 05946b151e7010b2b1a851892152e6b5d34151b3 Mon Sep 17 00:00:00 2001
From: lx <ex_lixiang17@cosl.com.cn>
Date: 星期五, 11 七月 2025 17:30:52 +0800
Subject: [PATCH] update

---
 ErrorAnalysis.UI/FrmMain.cs |  102 ++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 97 insertions(+), 5 deletions(-)

diff --git a/ErrorAnalysis.UI/FrmMain.cs b/ErrorAnalysis.UI/FrmMain.cs
index 25ff4ec..d6a053c 100644
--- a/ErrorAnalysis.UI/FrmMain.cs
+++ b/ErrorAnalysis.UI/FrmMain.cs
@@ -1,4 +1,5 @@
 using ErrorAnalysis.Repository;
+using ErrorAnalysis.Repository.Entity;
 using static System.Windows.Forms.VisualStyles.VisualStyleElement.Menu;
 
 namespace ErrorAnalysis.UI
@@ -6,7 +7,8 @@
     public partial class FrmMain : Form
     {
         private string? _connectionString;
-
+        private List<COModelTable> _models;
+        private COModelTable? _curModel;
         public FrmMain()
         {
             InitializeComponent();
@@ -41,15 +43,51 @@
 
             if (result == DialogResult.OK)
             {
+                pbLoadDB.Show();
+                pbLoadDB.Value = 0;
                 txtDataPath.Text = fileDlg.FileName;
+                txtToolType.Text = fileDlg.SafeFileName.Replace("DB.db", "").Replace("Mcnp", "");
                 _connectionString = $"Data Source={fileDlg.FileName};";
+                var modelRepository = new COModelRepository(_connectionString);
+                pbLoadDB.Value = 50;
+                Task.Run(() =>
+                {
+                    _models = modelRepository.GetCOModels();
+                    BeginInvoke(new System.Action(() =>
+                    {
+                        pbLoadDB.Value = 80;
+                        InitInputControl();
+                    }));
+
+                    BeginInvoke(new System.Action(() =>
+                    {
+                        pbLoadDB.Value = 100;
+                    }));
+                    Thread.Sleep(1000);
+                    BeginInvoke(new System.Action(() =>
+                    {
+                        pbLoadDB.Hide();
+                    }));
+
+                });
             }
         }
 
         private void FrmMain_Load(object sender, EventArgs e)
         {
-
             cmbSpeedUnit.SelectedIndex = 0;
+        }
+
+        private void InitInputControl()
+        {
+            foreach (var item in gpBorehole.Controls)
+                if (item is ComboBox cmb)
+                    cmb.Items.Clear();
+
+            if (_models != null)
+            {
+                cmbBit.Items.AddRange(_models.Select(m => m.BIT).Distinct().ToArray());
+            }
         }
 
         private void btnSelectBore_Click(object sender, EventArgs e)
@@ -59,9 +97,63 @@
                 MessageBox.Show("Please choose data source first!");
                 return;
             }
-            var modelRepository = new COModelRepository(_connectionString);
-            var models = modelRepository.GetCOModels();
-          
+        }
+
+        private void borehole_cmb_SelectedIndexChanged(object sender, EventArgs e)
+        {
+            var control = (sender as ComboBox);
+
+            var parentControl = control.Parent;
+            var allCmb = parentControl.Controls.OfType<Control>().Where(c => c is ComboBox).Select(c => c as ComboBox).ToList();
+            if (control.Name == "cmbBit")
+            {
+                foreach (var item in allCmb)
+                {
+                    if (item.Name != "cmbBit")
+                    {
+                        item.Items.Clear();
+                    }
+                }
+            }
+            else if (control.Name.Contains("OD"))
+            {
+                allCmb.FirstOrDefault(a => a.Name == control.Name.Replace("OD", "ID")).Items.Clear();
+            }
+            else if (control.Name == "cmbCasingID")
+            {
+                cmbScreenOD.Items.Clear();
+                cmbScreenID.Items.Clear();
+                cmbTubeOD.Items.Clear();
+                cmbTubeID.Items.Clear();
+            }
+            var selectedCmbs = allCmb.Where(c => c.SelectedIndex != -1).ToList();
+            var unSelectedCmbs = allCmb.Where(c => c.SelectedIndex == -1).ToList();
+            var selectedModels = _models;
+            var modelType = _models[0].GetType();
+
+            foreach (var cmb in selectedCmbs)
+            {
+                selectedModels = selectedModels.Where(c => modelType.GetProperty(cmb.Tag.ToString()).GetValue(c).ToString() == cmb.Text).ToList();
+            }
+
+            foreach (var cmb in unSelectedCmbs)
+            {
+                cmb.Items.Clear();
+                cmb.Enabled = true;
+                var currentItems = selectedModels.Where(c => modelType.GetProperty(cmb.Tag.ToString()).GetValue(c).ToString() != "0").Select(c => modelType.GetProperty(cmb.Tag.ToString()).GetValue(c).ToString()).Distinct().ToArray();
+                if (currentItems.Length == 0)
+                    cmb.Enabled = false;
+
+
+                cmb.Items.AddRange(currentItems);
+                if (currentItems.Length == 1)
+                    cmb.Text = currentItems[0];
+            }
+
+            if (selectedModels.Count == 1)
+            {
+                _curModel = selectedModels[0];
+            }
         }
     }
 }

--
Gitblit v1.9.3