Newer
Older
RbFreqStand / RbFreqStandMeasure / info / ExportDlg.cs
yangqianqian on 18 May 2021 13 KB s
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 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.IO.Ports;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace Casic.Birmm.RbFreqStandMeasure.info
{
    public partial class ExportDlg : 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

        DictService dictService = new DictServiceImpl();
        DetectionItemService detectionItemService = new DetectionItemServiceImpl();
        public string detectType = "";
        public long deviceId=-1;
        DataTable tableTimes = new DataTable();
        private DetectionService detectionService = new DetectionServiceImpl();
        CheckBox ckBox;
        public Action HideMaskAction
        {
            get;
            set;
        }

        public ExportDlg(long devId)
        {
            InitializeComponent();
            deviceId = devId;
            

        }

        private void ExportDlg_Shown(object sender, EventArgs e)
        {
            LoadTimes();
        }
        // 检测记录列表
        private void LoadTimes()
        {
            dataGridView_times.Columns.Clear();
            dataGridView_times.Rows.Clear();

            DataGridViewCheckBoxColumn columncb = new DataGridViewCheckBoxColumn();
            columncb.HeaderText = "";
            columncb.Name = "cb_check";
            columncb.TrueValue = true;
            columncb.FalseValue = false;
            columncb.DataPropertyName = "IsChecked";
            dataGridView_times.Columns.Add(columncb);

            ckBox = new CheckBox();
            ckBox.Text = "";
            ckBox.Checked = false;
            System.Drawing.Rectangle rect = dataGridView_times.GetCellDisplayRectangle(0, -1, true);
            ckBox.Size = new System.Drawing.Size(13, 13);
            ckBox.BackColor = Color.White;
            ckBox.Location = new Point(18, 8);
            ckBox.Click += new EventHandler(ckBox_CheckedChanged);
            dataGridView_times.Controls.Add(ckBox);
            ckBox.BringToFront();
            

            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("accuracy", Type.GetType("System.String"));
            tableTimes.Columns.Add("stability", Type.GetType("System.String"));
            tableTimes.Columns.Add("boot", Type.GetType("System.String"));
            tableTimes.Columns.Add("age", Type.GetType("System.String"));
            tableTimes.Columns.Add("通道", Type.GetType("System.String"));
            tableTimes.Columns.Add("stability1", Type.GetType("System.String"));
            tableTimes.Columns.Add("stability10", Type.GetType("System.String"));
            tableTimes.Columns.Add("stability20", Type.GetType("System.String"));
            tableTimes.Columns.Add("stability100", Type.GetType("System.String"));
            tableTimes.Columns.Add("id", Type.GetType("System.Int64"));

            // 获取当前页的数据
            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, detection.EndTime, detection.Accuracy, detection.Stability, detection.BootFeature, detection.AgeRate, detection.Channel, detection.Stability1, detection.Stability10, detection.Stability20, detection.Stability100,detection.Id);
                    LogHelper.WriteErrorLog(MethodBase.GetCurrentMethod().DeclaringType, "detection.Id :" + detection.Id);
                    index++;
                }

                dataGridView_times.DataSource = tableTimes;

                // width=407px
                dataGridView_times.Columns[0].Width = 40;
                dataGridView_times.Columns[1].Width = 40;
                dataGridView_times.Columns[2].Width = 120;
                dataGridView_times.Columns[3].Width = 120;
                dataGridView_times.Columns[4].Visible = false;
                dataGridView_times.Columns[5].Visible = false;
                dataGridView_times.Columns[6].Visible = false;
                dataGridView_times.Columns[7].Visible = false;
                dataGridView_times.Columns[8].Width = 50;
                dataGridView_times.Columns[9].Visible = false;
                dataGridView_times.Columns[10].Visible = false;
                dataGridView_times.Columns[11].Visible = false;
                dataGridView_times.Columns[12].Visible = false;
                dataGridView_times.Columns[13].Visible = false;

                dataGridView_times.Columns[1].ReadOnly = true;
                dataGridView_times.Columns[2].ReadOnly = true;
                dataGridView_times.Columns[3].ReadOnly = true;
                dataGridView_times.Columns[4].ReadOnly = true;

                dataGridView_times.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;
                dataGridView_times.Columns[1].SortMode = DataGridViewColumnSortMode.NotSortable;
                dataGridView_times.Columns[2].SortMode = DataGridViewColumnSortMode.NotSortable;
                dataGridView_times.Columns[3].SortMode = DataGridViewColumnSortMode.NotSortable;
                dataGridView_times.Columns[4].SortMode = DataGridViewColumnSortMode.NotSortable;
                dataGridView_times.Columns[7].SortMode = DataGridViewColumnSortMode.NotSortable;
                dataGridView_times.Columns[8].SortMode = DataGridViewColumnSortMode.NotSortable;
            }
            else
            {
                dataGridView_times.DataSource = null;
            }

            ckBox.Checked = true;
            selectAll();
        }

        // 全选事件
        private void ckBox_CheckedChanged(object sender, EventArgs e)
        {
            selectAll();
        }
        private void selectAll()
        {
            dataGridView_times.EndEdit();
            if (ckBox.CheckState == CheckState.Checked)
            {
                for (int i = 0; i < this.dataGridView_times.Rows.Count; i++)
                {
                    DataGridViewCheckBoxCell checkBox = (DataGridViewCheckBoxCell)dataGridView_times.Rows[i].Cells[0];
                    checkBox.Value = true;
                }
            }
            else
            {
                for (int i = 0; i < this.dataGridView_times.Rows.Count; i++)
                {
                    DataGridViewCheckBoxCell checkBox = (DataGridViewCheckBoxCell)dataGridView_times.Rows[i].Cells[0];
                    checkBox.Value = false;
                }
            }
        }

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

        private void btnExitDev_Click(object sender, EventArgs e)
        {
            this.HideMaskAction();
        }

        private void roundButton1_Click(object sender, EventArgs e)
        {
            this.HideMaskAction();
        }

        private void btn_reDetec_Click(object sender, EventArgs e)
        {            
            bool selected = false;
            foreach (DataGridViewRow row in dataGridView_times.Rows)
            {
                DataGridViewCheckBoxCell checkBox = (DataGridViewCheckBoxCell)row.Cells[0];
                string re = checkBox.Value.ToString();
                if (re.Equals("True"))
                { selected = true; break; }
            }
            if (!selected)
            {
                MessageBox.Show("请选择要导出的检测记录!");
                return;
            }
            string strFilePath = ConfigHelper.GetAppConfig("exportPath") + DateTime.Now.ToString("yyyyMMddHHmmss") + ".csv";

            StreamWriter strmWriterObj = new StreamWriter(strFilePath, false, System.Text.Encoding.UTF8);
            strmWriterObj.WriteLine(label_devName.Text + " - " + label_devType.Text + "-" + "测试数据及结果");
            foreach (DataGridViewRow row in dataGridView_times.Rows)
            {
                DataGridViewCheckBoxCell checkBox = (DataGridViewCheckBoxCell)row.Cells[0];
                string re = checkBox.Value.ToString();
                if (re.Equals("True"))
                {
                    string startTime = row.Cells[2].Value.ToString();
                    string endTime = row.Cells[3].Value.ToString();

                    strmWriterObj.WriteLine("测试时间:" + startTime + "," + endTime);

                    for (int type = 1; type < 8; type++) //1-STABILITY,2-ACCURACY,3-BOOT_FEATURE,4-AGE_RATE
                    {
                        string typeStr = type + "";
                        if (type == 1) typeStr = "1-1"; 
                        if(type == 2) typeStr = "1-10";
                        if (type == 3) typeStr = "1-20";
                        if (type == 4) typeStr = "1-100";
                        if(type == 5) typeStr = "2";
                        if (type == 6) typeStr = "3";
                        if (type == 7) typeStr = "4";

                        // 获取数据
                        List<Detection> List = detectionService.search(deviceId, typeStr, startTime, endTime,Convert.ToInt64(row.Cells[13].Value));
                        LogHelper.WriteErrorLog(MethodBase.GetCurrentMethod().DeclaringType, "List.count :" + List.Count +";itemid="+ Convert.ToInt64(row.Cells[13].Value)+ ";typeStr"+ typeStr+";devid="+ deviceId);

                        if (null != List && List.Count > 0)
                        {
                            string detecItemName = "";

                            switch (typeStr)
                            {
                                case "1-1": detecItemName = "1s频率稳定度 :"+row.Cells[9].Value.ToString(); break;
                                case "1-10": detecItemName = "10s频率稳定度 :" + row.Cells[10].Value.ToString(); break;
                                case "1-20": detecItemName = "20s频率稳定度 :" + row.Cells[11].Value.ToString(); break;
                                case "1-100": detecItemName = "100s频率稳定度 :" + row.Cells[12].Value.ToString(); break;
                                case "2": detecItemName = "频率准确度:" + row.Cells[4].Value.ToString(); break;
                                case "3": detecItemName = "开机特性:" + row.Cells[6].Value.ToString(); break;
                                case "4": detecItemName = "日老化率:" + row.Cells[7].Value.ToString(); break;
                                default: break;
                            }
                            strmWriterObj.WriteLine(detecItemName);
                            int index = 1;
                            foreach (Detection detection in List)
                            {
                                string strBufferLine = index + "," + detection.LogTime + "," + detection.Frequency;
                                strmWriterObj.WriteLine(strBufferLine);

                                index++;
                            }
                        }                      

                    }
                    
                }
                
            }

            CounterDataService counterDataService = new CounterDataServiceImpl();
            List<CounterData> query = counterDataService.getHistory(deviceId, "", "");
            if (null != query && query.Count > 0)
            {
                strmWriterObj.WriteLine("计数器范围及灵敏度");
                strmWriterObj.WriteLine("序号,输出值,测量值,灵敏度,时间");
                int index2 = 1;
                foreach (CounterData counterData in query)
                {
                    string strBufferLine = index2 + "," + counterData.OutValue + "," + counterData.Value + "," + counterData.Sensitivity + "," + counterData.LogTime;
                    strmWriterObj.WriteLine(strBufferLine);
                    index2++;
                }
            }
            strmWriterObj.Close();
            MessageBox.Show("导出成功,存放位置:" + strFilePath);

            this.HideMaskAction();
        }

    }
}