Newer
Older
RbFreqStand / RbFreqStandMeasure / info / DetailDlg.cs
yangqianqian on 15 Apr 2021 12 KB after test
using Casic.Birmm.RbFreqStandMeasure.R_DataBase.Dto;
using Casic.Birmm.RbFreqStandMeasure.R_DataBase.Model;
using Casic.Birmm.RbFreqStandMeasure.R_DataBase.Service;
using Casic.Birmm.RbFreqStandMeasure.R_DataBase.Service.Impl;
using Casic.Birmm.RbFreqStandMeasure.Tools;
using DevComponents.DotNetBar.Controls;
using DevComponents.Editors;
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.IO;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace Casic.Birmm.RbFreqStandMeasure.info
{
    public partial class DetailDlg : Form
    {
        #region 无边框拖动效果/最小化窗口/关闭窗口
        [DllImport("user32.dll")]//拖动无窗体的控件
        public static extern bool ReleaseCapture();
        [DllImport("user32.dll")]
        public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
        public const int WM_SYSCOMMAND = 0x0112;
        public const int SC_MOVE = 0xF010;
        public const int HTCAPTION = 0x0002;
        private void panel1_MouseDown(object sender, MouseEventArgs e)
        {
            //拖动窗体
            ReleaseCapture();
            SendMessage(Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);
        }
        #endregion

        #region 样式常量定义
        private readonly Color titleBackColor = Color.FromArgb(63, 132, 215); // #3F64D7
        private readonly Color tableForeColor = Color.White;
        private readonly Font titleFont = new Font("微软雅黑", 14F, FontStyle.Regular, GraphicsUnit.Pixel, 134);

        private readonly Color inputBlack = Color.FromArgb(51, 51, 51); // #333333
        private readonly Color inputDefault = Color.FromArgb(204, 204, 204); // #CCCCCC
        #endregion


        DataTable tableOriginData = new DataTable();
        DataTable tableTimes = new DataTable();
        DetectionService detectionService = new DetectionServiceImpl();
        DetectionItemService detectionItemService = new DetectionItemServiceImpl();
        CounterDataService counterDataService = new CounterDataServiceImpl();

        long deviceId = -1;
        string startTime = "";
        string endTime = "";
        string resultStr = "";

        public Action HideMaskAction
        {
            get;
            set;
        }

        public DetailDlg(long deviceId)
        {
            InitializeComponent();

            this.deviceId = deviceId;
            LoadTimes(deviceId);

            if (tableTimes.Rows.Count > 0)
            {
                startTime = Convert.ToDateTime(dataGridView_times.Rows[0].Cells[1].Value).ToString("yyyy-MM-dd HH:mm:ss");
                endTime = Convert.ToDateTime(dataGridView_times.Rows[0].Cells[2].Value).ToString("yyyy-MM-dd HH:mm:ss");
                resultStr = dataGridView_times.Rows[0].Cells[3].Value.ToString();
                LoadData(deviceId, "1", startTime, endTime);
                tabPageEvent("tab_stability");
            }            
        }

        // 关闭对话框
        private void btnClose_Click(object sender, EventArgs e)
        {
            this.HideMaskAction();
        }


        // 数据列表
        private void LoadData(long deviceId, string detectionItem, string startTime, string endTime)
        {
            tableOriginData = new DataTable();

            // 设置表格的列
            tableOriginData.Columns.Add("序号", Type.GetType("System.String"));
            tableOriginData.Columns.Add("时间", Type.GetType("System.String"));
            tableOriginData.Columns.Add("相对频率偏差", Type.GetType("System.String"));           

            // 获取当前页的数据
            List<DetectionDto> queryList = detectionService.search(deviceId, detectionItem, startTime, endTime);
            if (null != queryList && queryList.Count > 0)
            {               
                int index = 1;
                foreach (DetectionDto detection in queryList)
                {
                    tableOriginData.Rows.Add(index, detection.LogTime, detection.Frequency);
                    index++;
                }

                label_noData.Visible = false;

                dataGridView_Data.DataSource = tableOriginData;

                // width=425px
                dataGridView_Data.Columns[0].Width = 60;
                dataGridView_Data.Columns[1].Width = 185;
                dataGridView_Data.Columns[2].Width = 180;


                dataGridView_Data.Columns[0].ReadOnly = true;
                dataGridView_Data.Columns[1].ReadOnly = true;
                dataGridView_Data.Columns[2].ReadOnly = true;

                dataGridView_Data.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;
                dataGridView_Data.Columns[1].SortMode = DataGridViewColumnSortMode.NotSortable;
                dataGridView_Data.Columns[2].SortMode = DataGridViewColumnSortMode.NotSortable;
            }
            else
            {
                dataGridView_Data.DataSource = null;
                label_noData.Visible = true;
            }
        }

        private void LoadData_Counter(long deviceId)
        {
            tableOriginData = new DataTable();

            // 设置表格的列
            tableOriginData.Columns.Add("序号", Type.GetType("System.String"));
            tableOriginData.Columns.Add("输出值", Type.GetType("System.String"));
            tableOriginData.Columns.Add("测量值", Type.GetType("System.String"));
            tableOriginData.Columns.Add("灵敏度", Type.GetType("System.String"));
            tableOriginData.Columns.Add("测量时间", Type.GetType("System.DateTime"));


            // 获取当前页的数据
            List<CounterData> queryList = counterDataService.getList(deviceId, "", "", "");
            if (null != queryList && queryList.Count > 0)
            {
                int index = 1;
                foreach (CounterData counterData in queryList)
                {
                    tableOriginData.Rows.Add(index, counterData.OutValue, counterData.Value, counterData.Sensitivity,counterData.LogTime);
                    index++;
                }

                label_noData.Visible = false;
                dataGridView_Data.DataSource = tableOriginData;

                // width=425px
                dataGridView_Data.Columns[0].Width = 50;
                dataGridView_Data.Columns[1].Width = 100;
                dataGridView_Data.Columns[2].Width = 100;
                dataGridView_Data.Columns[3].Width = 100;
                dataGridView_Data.Columns[4].Width = 120;

                dataGridView_Data.Columns[0].ReadOnly = true;
                dataGridView_Data.Columns[1].ReadOnly = true;
                dataGridView_Data.Columns[2].ReadOnly = true;

                dataGridView_Data.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;
                dataGridView_Data.Columns[1].SortMode = DataGridViewColumnSortMode.NotSortable;
                dataGridView_Data.Columns[2].SortMode = DataGridViewColumnSortMode.NotSortable;
            }
            else
            {
                dataGridView_Data.DataSource = null;
                label_noData.Visible = true;
            }
        }

        

        // 检测记录列表
        private void LoadTimes(long deviceId)
        {
            dataGridView_times.Columns.Clear();
            dataGridView_times.Rows.Clear();

            tableTimes = new DataTable();

            // 设置表格的列
            tableTimes.Columns.Add("序号", Type.GetType("System.String"));
            tableTimes.Columns.Add("开始时间", Type.GetType("System.String"));
            tableTimes.Columns.Add("结束时间", Type.GetType("System.String"));
            tableTimes.Columns.Add("result", Type.GetType("System.String"));

            // 获取当前页的数据
            List<DetectionItem> queryList = detectionItemService.search(deviceId, false);
            if (null != queryList && queryList.Count > 0)
            {

                int index = 1;
                foreach (DetectionItem detection in queryList)
                {
                    tableTimes.Rows.Add(index, detection.StartTime.ToString("yyyy-MM-dd HH:mm:ss"), detection.EndTime.ToString("yyyy-MM-dd HH:mm:ss"));
                    index++;
                }

                label_noTimes.Visible = false;
                dataGridView_times.DataSource = tableTimes;



                // width=407px
                dataGridView_times.Columns[0].Width = 47;
                dataGridView_times.Columns[1].Width = 180;
                dataGridView_times.Columns[2].Width = 180;
                dataGridView_times.Columns[3].Visible = false;


                dataGridView_times.Columns[0].ReadOnly = true;
                dataGridView_times.Columns[1].ReadOnly = true;
                dataGridView_times.Columns[2].ReadOnly = true;

                dataGridView_times.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;
                dataGridView_times.Columns[1].SortMode = DataGridViewColumnSortMode.NotSortable;
                dataGridView_times.Columns[2].SortMode = DataGridViewColumnSortMode.NotSortable;
            }
            else
            {
                dataGridView_times.DataSource = null;
                label_noTimes.Visible = true;
            }            

        }
               

        private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string tabPageName = tabControl1.SelectedTab.Name;            
            tabPageEvent(tabPageName);
        }

        private void dataGridView_times_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            int rowIndex = e.RowIndex;
            startTime = Convert.ToDateTime(dataGridView_times.Rows[rowIndex].Cells[1].Value).ToString("yyyy-MM-dd HH:mm:ss");
            endTime = Convert.ToDateTime(dataGridView_times.Rows[rowIndex].Cells[2].Value).ToString("yyyy-MM-dd HH:mm:ss");
            resultStr = dataGridView_times.Rows[rowIndex].Cells[3].Value.ToString();

            tabPageEvent(tabControl1.SelectedTab.Name);
        }

        private void tabPageEvent(string tabPageName)
        {
            panel_result.Controls.Clear();
            switch (tabPageName)
            {
                case "tab_stability":
                    {
                        LoadData(deviceId, "1", startTime, endTime);
                        groupBox3.Text = "频率稳定度";
                        stability result = new stability();
                        result.label_stability.Text = resultStr;
                        result.Show();
                        panel_result.Controls.Add(result);
                        break;
                    }
                case "tab_accuracy":
                    {
                        LoadData(deviceId, "2", startTime, endTime);
                        groupBox3.Text = "频率准确度";
                        accuracy result = new accuracy();
                        result.label_accuracy.Text = resultStr;
                        result.Show();
                        panel_result.Controls.Add(result);
                        break;
                    }
                case "tab_bootFeature":
                    {
                        LoadData(deviceId, "3", startTime, endTime);
                        groupBox3.Text = "开机特性";
                        bootFeature result = new bootFeature();
                        result.label_bootFeature.Text = resultStr;
                        result.Show();
                        panel_result.Controls.Add(result);
                        break;
                    }
                case "tab_ageRate":
                    {
                        LoadData(deviceId, "4", startTime, endTime);
                        groupBox3.Text = "日老化率";
                        ageRate result = new ageRate(tableOriginData);
                        if (resultStr.Split(',').Length > 1)
                        {
                            result.label_k.Text = resultStr.Split(',')[0];
                            result.label_r.Text = resultStr.Split(',')[1];
                        }
                        result.Show();
                        panel_result.Controls.Add(result);
                        break;
                    }
                case "tab_counter":
                    {
                        LoadData_Counter(deviceId);
                        groupBox3.Text = "计数器范围及灵敏度";
                        //ageRate result = new ageRate(tableOriginData);
                        //result.Show();
                        break;
                    }
                default: break;

            }
        }

        
    }
}