Newer
Older
RbFreqStand / RbFreqStandMeasure / info / DetailDlg.cs
yangqianqian on 8 Apr 2021 9 KB detail-setting-databackup complete
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.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();
        long deviceId = -1;
        string startTime = "";
        string endTime = "";

        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");
                LoadData(deviceId, "1", startTime, endTime);
                stability result = new stability();
                result.Show();
                panel_result.Controls.Add(result);
            }            
        }

        // 关闭对话框
        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 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"));

            // 获取当前页的数据
            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[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");
            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.Show();
                        panel_result.Controls.Add(result);
                        break;
                    }
                case "tab_accuracy":
                    {
                        LoadData(deviceId, "2", startTime, endTime);
                        groupBox3.Text = "频率准确度";
                        accuracy result = new accuracy();
                        result.Show();
                        panel_result.Controls.Add(result);
                        break;
                    }
                case "tab_bootFeature":
                    {
                        LoadData(deviceId, "3", startTime, endTime);
                        groupBox3.Text = "开机特性";
                        bootFeature result = new bootFeature();
                        result.Show();
                        panel_result.Controls.Add(result);
                        break;
                    }
                case "tab_ageRate":
                    {
                        LoadData(deviceId, "4", startTime, endTime);
                        groupBox3.Text = "日老化率";
                        ageRate result = new ageRate(tableOriginData);
                        result.Show();
                        panel_result.Controls.Add(result);
                        break;
                    }
                default: break;

            }
        }
    }
}