Kaynağa Gözat

模板状态下配置参数

djs 5 ay önce
ebeveyn
işleme
32f8b4a8cc

+ 9 - 6
MeterVision/Dlg/EditStationDlg2.xaml

@@ -4,11 +4,13 @@
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         xmlns:local="clr-namespace:MeterVision.Dlg"
+        xmlns:mark="clr-namespace:MeterVision.Mark"
         mc:Ignorable="d"
         Background="WhiteSmoke"
-        ResizeMode="NoResize"
+        ResizeMode="CanResizeWithGrip"
         WindowStartupLocation="CenterOwner"
-        Title="站点管理" Height="600" Width="900">
+        ShowInTaskbar="False"
+        Title="站点参数" Height="600" Width="900">
     <Grid Margin="10 10 10 0">
         <Grid.RowDefinitions>
             <RowDefinition Height="*" />
@@ -19,7 +21,7 @@
             <Grid>
                 <Grid.ColumnDefinitions>
                     <ColumnDefinition Width="280" />
-                    <ColumnDefinition Width="20" />
+                    <ColumnDefinition Width="10" />
                     <ColumnDefinition Width="*" />
                 </Grid.ColumnDefinitions>
                 
@@ -146,12 +148,13 @@
                             </StackPanel>
                             <TextBox x:Name="txtLastTime" Margin="5" Padding="2" FontSize="14px" />
                         </StackPanel>
-
                     </Grid>    
                 </Border>
 
-                
-                
+                <Border Grid.Column="2" Margin="0" BorderBrush="#D3D3D3" BorderThickness="1 0 0 0" Background="White">
+                    <mark:UCMark x:Name="ucMark" />
+                </Border>
+
             </Grid>
         </Border>
 

+ 63 - 37
MeterVision/Dlg/EditStationDlg2.xaml.cs

@@ -2,6 +2,7 @@
 using MeterVision.model;
 using System;
 using System.Collections.Generic;
+using System.IO;
 using System.Linq;
 using System.Text;
 using System.Text.RegularExpressions;
@@ -22,8 +23,9 @@ namespace MeterVision.Dlg
     /// </summary>
     public partial class EditStationDlg2 : Window
     {
-        private bool mIsAdd;
         public StationItem mStationItem { get; private set; }
+        private TStandDetail _standDetail;
+        private bool _can_mark;
 
         public EditStationDlg2(StationItem stationItem)
         {
@@ -31,22 +33,54 @@ namespace MeterVision.Dlg
 
             cmbMeterType.ItemsSource = StationItem.MeterTypeList;
             cmbFlowRate.ItemsSource = StationItem.FlowRateList;
-            cmbLastUnit.ItemsSource = StationItem.UnitList;
-            //cmbLastIndUnit.ItemsSource = StationItem.UnitList;
+            cmbLastUnit.ItemsSource = StationItem.UnitList;     
 
-            mIsAdd = (stationItem == null);
-            if(stationItem != null)
+            mStationItem = stationItem;
+          
+            txtStationId.IsEnabled = false;
+
+            Init_Load(stationItem);
+            Load_image();
+        }
+
+        private void Load_image()
+        {
+            _standDetail = DBStand.GetMinSampleTimeDetail(mStationItem.StandId, mStationItem.StationId);
+            if (_standDetail != null && File.Exists(_standDetail.SrcImage))
             {
-                mStationItem = stationItem;
-                Init_Load(stationItem);
-                txtStationId.IsEnabled = false;
+                ucMark.Visibility = Visibility.Visible;
+                ucMark.SetImagePath(_standDetail.SrcImage);
+                ucMark.MeterRegion_MarkFinished += UcMark_MeterRegion_MarkFinished;
+                ucMark.FeatureRegion_MarkFinished += UcMark_FeatureRegion_MarkFinished;
+                _can_mark = true;
             }
             else
             {
-                mStationItem = new StationItem();
-                txtStationId.IsEnabled = true;
-                txtBrightVal.Text = "1.2";
+                ucMark.Visibility = Visibility.Hidden;
+                _can_mark = false;
             }
+
+            if (_can_mark)
+            {
+                ucMark.MeterType = mStationItem.MeterType;
+
+                if (string.IsNullOrEmpty(mStationItem.LastTime))
+                {
+                    txtLastTime.Text = _standDetail.SampleTime;
+                }
+            }
+        }
+
+        private void UcMark_FeatureRegion_MarkFinished(string regions, int meterType)
+        {
+            //throw new NotImplementedException();
+            this.txtFeatureRegion.Text = regions;
+        }
+
+        private void UcMark_MeterRegion_MarkFinished(string regions, int meterType)
+        {
+            //throw new NotImplementedException();
+            this.txtDialRegion.Text = regions;
         }
 
         //加载数据
@@ -73,7 +107,15 @@ namespace MeterVision.Dlg
             }
                     
             txtLastValue.Text = string.IsNullOrEmpty(stationItem.LastTime) ? "" : stationItem.LastValue.ToString();
-            txtLastTime.Text = stationItem.LastTime;            
+
+            if(_standDetail != null)
+            {
+                txtLastTime.Text = _standDetail.SampleTime;
+            }
+            else
+            {
+                txtLastTime.Text = stationItem.LastTime;
+            }
         }
 
         private bool Get_Load()
@@ -189,10 +231,7 @@ namespace MeterVision.Dlg
 
             mStationItem.LastValue = lastValue;
             mStationItem.LastTime = lastTime;
-            if (mIsAdd)
-            {
-                mStationItem.CreateTime = ThisApp.GetNowTime_yyyyMMddHHmmss();
-            }
+
             return true;
         }
 
@@ -208,31 +247,15 @@ namespace MeterVision.Dlg
 
             try
             {
-                if (mIsAdd)
+                bool updateSuccess = DBStation.UpdateTStation(tStation);
+                if (updateSuccess)
                 {
-                    bool insertSuccess = DBStation.InsertTStation(tStation);
-                    if (insertSuccess)
-                    {
-                        DialogResult = true;
-                    }
-                    else
-                    {
-                        MessageBox.Show(Application.Current.MainWindow, "新增失败", "错误",
-                            MessageBoxButton.OK, MessageBoxImage.Error);
-                    }
+                    DialogResult = true;
                 }
                 else
                 {
-                    bool updateSuccess = DBStation.UpdateTStation(tStation);
-                    if (updateSuccess)
-                    {
-                        DialogResult = true;
-                    }
-                    else
-                    {
-                        MessageBox.Show(Application.Current.MainWindow, "修改失败", "错误",
-                            MessageBoxButton.OK, MessageBoxImage.Error);
-                    }
+                    MessageBox.Show(Application.Current.MainWindow, "修改失败", "错误",
+                        MessageBoxButton.OK, MessageBoxImage.Error);
                 }
             }
             catch (Exception ex)
@@ -259,6 +282,9 @@ namespace MeterVision.Dlg
                 meterType = (int)cmbMeterType.SelectedValue;
             }
             this.ChangeInfoByMeterType(meterType);
+
+            //改变仪表的类型
+            ucMark.MeterType = meterType;
         }
 
         private void ChangeInfoByMeterType(int meterType)

+ 0 - 7
MeterVision/MeterVision.csproj

@@ -175,9 +175,6 @@
     <Compile Include="Dlg\EditStandValueDlg.xaml.cs">
       <DependentUpon>EditStandValueDlg.xaml</DependentUpon>
     </Compile>
-    <Compile Include="Dlg\EditStationDlg.xaml.cs">
-      <DependentUpon>EditStationDlg.xaml</DependentUpon>
-    </Compile>
     <Compile Include="Dlg\EditStationDlg2.xaml.cs">
       <DependentUpon>EditStationDlg2.xaml</DependentUpon>
     </Compile>
@@ -344,10 +341,6 @@
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
-    <Page Include="Dlg\EditStationDlg.xaml">
-      <SubType>Designer</SubType>
-      <Generator>MSBuild:Compile</Generator>
-    </Page>
     <Page Include="Dlg\EditStationDlg2.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>

+ 18 - 1
MeterVision/Stand/UCStandMain.xaml.cs

@@ -189,9 +189,26 @@ namespace MeterVision.Stand
             RightVisiable = true;
             ChangeRightVisiable(RightVisiable);
 
-            ucStationGrid.OnStationItemChange += UcStationGrid_OnStationItemChange;  
+            ucStationGrid.OnStationItemChange += UcStationGrid_OnStationItemChange;
+            //ucStationGrid.Station_Config += UcStationGrid_Station_Config;
         }
 
+        //修改参数
+        //private void UcStationGrid_Station_Config(StationItem item)
+        //{
+        //    //第一条数据
+        //    EditStationDlg2 dialog = new EditStationDlg2(item)
+        //    {
+        //        Owner = Application.Current.MainWindow,
+        //        WindowStartupLocation = WindowStartupLocation.CenterOwner
+        //    };
+        //    if (dialog.ShowDialog() == true)
+        //    {
+        //        //stationItem = dialog.mStationItem;
+        //        item = dialog.mStationItem;
+        //    }
+        //}
+
         private void UcStationGrid_OnStationItemChange(StationItem stationItem)
         {
             SelectedStationItem = stationItem;

+ 6 - 1
MeterVision/Station/UCStationGrid.xaml.cs

@@ -35,6 +35,9 @@ namespace MeterVision.Station
 
         public ObservableCollection<StationItem> StationItemList { get; set; }
 
+        //修改站点参数配置命令
+        public event Action<StationItem> Station_Config;
+
         //修改站点事件
         //public static Action<StationItem> OnUpdateItem;
         public event Action<StationItem> OnStationItemChange;
@@ -214,6 +217,7 @@ namespace MeterVision.Station
             {
                 SelectedStationItem = dialog.mStationItem;
             }
+            //Station_Config?.Invoke(SelectedStationItem);
         }
 
         private void MiDelete_Click(object sender, RoutedEventArgs e)
@@ -248,10 +252,11 @@ namespace MeterVision.Station
                 Owner = Application.Current.MainWindow,
                 WindowStartupLocation = WindowStartupLocation.CenterOwner
             };
-            if(dialog.ShowDialog() == true)
+            if (dialog.ShowDialog() == true)
             {
                 stationItem = dialog.mStationItem;
             }
+            //Station_Config?.Invoke(SelectedStationItem);
         }
 
         private void BtnDeleteStation_Click(object sender, RoutedEventArgs e)

+ 13 - 12
MeterVision/Station/UCStationMain.xaml.cs

@@ -50,10 +50,11 @@ namespace MeterVision.Station
             InitializeComponent();
 
             txtFindStationId.Text = "";
-            FindStationId = "";
+            FindStationId = "";            
 
             this.DataContext = this;
         }
+        
 
         private void BtnQuery_Click(object sender, RoutedEventArgs e)
         {
@@ -67,17 +68,17 @@ namespace MeterVision.Station
 
         private void BtnAddStation_Click(object sender, RoutedEventArgs e)
         {
-            //StationItem newItem = new StationItem();
-            EditStationDlg2 dialog = new EditStationDlg2(null)
-            {
-                Owner = Application.Current.MainWindow,
-                WindowStartupLocation = WindowStartupLocation.CenterOwner
-            };
-            if(dialog.ShowDialog() == true)
-            {
-                //ucStationGrid.ChangeFindStationId(null);
-                //ucStationGrid.ChangeFindStationId(FindStationId);
-            }
+            ////StationItem newItem = new StationItem();
+            //EditStationDlg2 dialog = new EditStationDlg2(null)
+            //{
+            //    Owner = Application.Current.MainWindow,
+            //    WindowStartupLocation = WindowStartupLocation.CenterOwner
+            //};
+            //if(dialog.ShowDialog() == true)
+            //{
+            //    //ucStationGrid.ChangeFindStationId(null);
+            //    //ucStationGrid.ChangeFindStationId(FindStationId);
+            //}
         }
 
         private void BtnRefresh_Click(object sender, RoutedEventArgs e)

+ 49 - 0
MeterVision/db/DBStand.cs

@@ -433,6 +433,55 @@ namespace MeterVision.db
             return standDetails;
         }
 
+        public static TStandDetail GetMinSampleTimeDetail(string standId, string stationId)
+        {
+            // 查询 sample_time 最小的符合条件的记录
+            string sql = @"
+                SELECT stand_detail_id, create_time, stand_id, src_image, stand_value, station_id, device_sn, sample_time, num_count, last_unit
+                FROM t_stand_detail
+                WHERE stand_id = @StandId AND station_id = @StationId
+                ORDER BY sample_time ASC
+                LIMIT 1";
+
+            // 定义参数
+            SQLiteParameter[] parameters = new SQLiteParameter[]
+            {
+                new SQLiteParameter("@StandId", standId),
+                new SQLiteParameter("@StationId", stationId)
+            };
+
+            // 执行查询并读取数据
+            try
+            {
+                using (SQLiteDataReader reader = SQLiteHelper.ExecuteReader(sql, parameters))
+                {
+                    if (reader.Read())
+                    {
+                        return new TStandDetail
+                        {
+                            StandDetailId = reader.GetString(reader.GetOrdinal("stand_detail_id")),
+                            CreateTime = reader.GetString(reader.GetOrdinal("create_time")),
+                            StandId = reader.GetString(reader.GetOrdinal("stand_id")),
+                            SrcImage = reader.GetString(reader.GetOrdinal("src_image")),
+                            StandValue = reader.GetString(reader.GetOrdinal("stand_value")),
+                            StationId = reader.GetString(reader.GetOrdinal("station_id")),
+                            DeviceSn = reader.GetString(reader.GetOrdinal("device_sn")),
+                            SampleTime = reader.GetString(reader.GetOrdinal("sample_time")),
+                            NumCount = reader.GetInt32(reader.GetOrdinal("num_count")),
+                            LastUnit = reader.GetInt32(reader.GetOrdinal("last_unit"))
+                        };
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                throw new Exception($"查询最小 SampleTime 记录时发生错误:{ex.Message}", ex);
+            }
+
+            return null; // 若未查询到结果,返回 null
+        }
+
+
         public static async Task<List<TStandDetail>> GetAllStandDetailsAsync(string standId)
         {
             // 分页查询 SQL