示例#1
0
        /// <summary>
        /// 刷新数据列表
        /// </summary>
        private void RefreshGrid(CLDC_DataCore.Model.DnbModel.DnbGroupInfo MeterGroup, int CheckOrderID)
        {
            _DnbGroup = MeterGroup;

            int FirstYJMeter = Main.GetFirstYaoJianMeterIndex(MeterGroup);

            if (CheckOrderID >= MeterGroup.CheckPlan.Count ||
                !(MeterGroup.CheckPlan[CheckOrderID] is StPlan_WcPoint))
            {
                return;
            }

            StPlan_WcPoint _Item = (StPlan_WcPoint)MeterGroup.CheckPlan[CheckOrderID];

            #region ---------------------动态创建数据表格样式-------------------------------
            if (_Item.ToString().IndexOf("FHC") != -1)
            {
                //带分合差列样式
                if (Data_Error.Columns.Count != MeterGroup.WcCheckNumic + 7)          //如果误差数据表格的列数大于默认列数,则需要删除大于部分
                {
                    for (int i = Data_Error.Columns.Count - 1; i >= 4; i--)
                    {
                        Data_Error.Columns.RemoveAt(i);
                    }

                    for (int i = 0; i < MeterGroup.WcCheckNumic; i++)
                    {
                        Data_Error.Columns.Add("Tmp_Col" + i.ToString(), "误差" + (i + 1).ToString());
                    }
                    Data_Error.Columns.Add("Tmp_Pj", "平均值");

                    Data_Error.Columns.Add("Tmp_Hz", "化整值");

                    Data_Error.Columns.Add("Tmp_FhcRand", "差值上下限");

                    Data_Error.Columns.Add("Tmp_Fhc", "差值");

                    this.CreateColumnStyle();           //创建表格列样式
                }
            }
            else if (_Item.ToString().IndexOf("标准偏差") == -1)                 //如果不是标准偏差
            {                                                                //普通误差样式
                if (Data_Error.Columns.Count != MeterGroup.WcCheckNumic + 6) //如果误差数据表格的列数大于默认列数,则需要删除大于部分
                {
                    for (int i = Data_Error.Columns.Count - 1; i >= 4; i--)
                    {
                        Data_Error.Columns.RemoveAt(i);
                    }

                    for (int i = 0; i < MeterGroup.WcCheckNumic; i++)
                    {
                        Data_Error.Columns.Add("Tmp_Col" + i.ToString(), "误差" + (i + 1).ToString());
                    }
                    Data_Error.Columns.Add("Tmp_Pj", "平均值");

                    Data_Error.Columns.Add("Tmp_Hz", "化整值");

                    this.CreateColumnStyle();           //创建表格列样式
                }
            }
            else
            {                                                                //偏差表格样式
                if (Data_Error.Columns.Count != MeterGroup.PcCheckNumic + 6) //如果误差数据表格的列数大于默认列数,则需要删除大于部分
                {
                    for (int i = Data_Error.Columns.Count - 1; i >= 4; i--)
                    {
                        Data_Error.Columns.RemoveAt(i);
                    }

                    for (int i = 0; i < MeterGroup.PcCheckNumic; i++)
                    {
                        Data_Error.Columns.Add("Tmp_Col" + i.ToString(), "误差" + (i + 1).ToString());
                    }

                    Data_Error.Columns.Add("Tmp_Pj", "偏差值");

                    Data_Error.Columns.Add("Tmp_Hz", "化整值");

                    this.CreateColumnStyle();           //创建表格列样式
                }
            }

            #endregion

            for (int i = 0; i < MeterGroup.MeterGroup.Count; i++)
            {
                CLDC_DataCore.Model.DnbModel.DnbInfo.MeterBasicInfo _MeterInfo = MeterGroup.MeterGroup[i];

                DataGridViewRow Row = Data_Error.Rows[i];

                Row.Cells[1].Value = _MeterInfo.ToString(); //插入表位号

                if (!_MeterInfo.YaoJianYn)                  //如果不检
                {
                    Row.Cells[0].Value = false;
                    if (_MeterInfo.Mb_chrBcs == String.Empty || _MeterInfo.Mb_chrBdj == String.Empty)       //如果不检,并且常数或者等级都为空,则将勾选单元格设置为只读
                    {
                        Row.Cells[0].ReadOnly = true;
                    }
                    for (int j = 2; j < Row.Cells.Count; j++)
                    {
                        Row.Cells[j].Value = string.Empty;
                    }
                    continue;
                }

                //if (_MeterInfo.Mb_chrResult == CLDC_DataCore.Const.Variable.CTG_BuHeGe)
                //{
                //    Row.HeaderCell.Style.ForeColor = CLDC_DataCore.Const.Variable.Color_Grid_BuHeGe;
                //}
                //else
                //{
                //    Row.HeaderCell.Style.ForeColor = CLDC_DataCore.Const.Variable.Color_Grid_Normal;
                //}

                Row.Cells[0].Value = true;

                string _Key = _Item.PrjID;

                if (_MeterInfo.MeterErrors.ContainsKey(_Key))          //如果数据模型中已经存在该点的数据
                {
                    #region
                    try
                    {
                        if (_MeterInfo.MeterErrors[_Key].Me_chrWcJl == CLDC_DataCore.Const.Variable.CTG_BuHeGe)            //如果不合格修改当前行背景颜色为红色
                        {
                            Row.DefaultCellStyle.ForeColor = CLDC_DataCore.Const.Variable.Color_Grid_BuHeGe;
                            foreach (DataGridViewCell cell in Row.Cells)
                            {
                                cell.ToolTipText = _MeterInfo.MeterErrors[_Key].AVR_DIS_REASON;
                            }
                        }
                        else
                        {
                            Row.DefaultCellStyle.ForeColor = Color.Black;
                            foreach (DataGridViewCell cell in Row.Cells)
                            {
                                cell.ToolTipText = string.Empty;
                            }
                        }
                    }
                    catch { }
                    try
                    {
                        string[] Arr_WcLimit = _MeterInfo.MeterErrors[_Key].Me_WcLimit.Split('|');      //分解误差限
                        if (Arr_WcLimit.Length == 2)
                        {
                            Row.Cells[2].Value = string.Format("{0}  {1}", Arr_WcLimit[0], Arr_WcLimit[1]);       //项目误差限
                        }
                        else
                        {
                            Row.Cells[2].Value = "";
                        }
                    }
                    catch { }
                    try
                    {
                        Row.Cells[3].Value = _MeterInfo.MeterErrors[_Key].Me_chrWcJl;
                    }
                    catch { }
                    try
                    {
                        string[] Arr_Err = _MeterInfo.MeterErrors[_Key].Me_chrWcMore.Split('|');           //分解误差

                        if (Arr_Err.Length == -1)
                        {
                            continue;
                        }
                        for (int j = 0; j < Arr_Err.Length; j++)
                        {
                            if (Data_Error.Columns.Count <= j + 4)
                            {
                                break;                                              //如果列数小于当前误差数,则自动退出
                            }
                            Row.Cells[j + 4].Value = Arr_Err[j];
                        }
                    }
                    catch { }
                    try
                    {
                        if (_Item.Dif_Err_Flag == 1)
                        {
                            Row.Cells[8].Value = _MeterInfo.MeterErrors[_Key].AVR_UPPER_LIMIT + " " + _MeterInfo.MeterErrors[_Key].AVR_LOWER_LIMIT;
                            Row.Cells[9].Value = _MeterInfo.MeterErrors[_Key].AVR_DIF_ERR_AVG;//AVR_DIF_ERR_AVG
                        }
                    }
                    catch { }
                    #endregion
                }
                else
                {
                    //Row.DefaultCellStyle.ForeColor = Color.Black;
                    for (int j = 2; j < Data_Error.Columns.Count; j++)
                    {
                        Row.Cells[j].Value = "";
                    }
                }

                if (_MeterInfo.Mb_Result == CLDC_DataCore.Const.Variable.CTG_BuHeGe)
                {
                    Row.DefaultCellStyle.ForeColor = Color.Red;
                }
                else
                {
                    Row.DefaultCellStyle.ForeColor = Color.Black;
                }
            }
        }
        private void CreateFaInfo()
        {
            Cmb_xIb.Text     = _DnbGroup.CzIb;
            Txt_Qs.Text      = _DnbGroup.CzQs.ToString();
            Cmb_WcLimit.Text = _DnbGroup.CzWcLimit;
            Txt_Down.Text    = (_DnbGroup.WcxDownPercent * 100).ToString();
            Txt_Up.Text      = (_DnbGroup.WcxUpPercent * 100).ToString();

            _WcLimitName = _DnbGroup.CzWcLimit;

            _xIb = _DnbGroup.CzIb;

            _Qs = _DnbGroup.CzQs;

            int _FirstYaoJian = CLDC_MeterUI.UI_Detection_New.Main.GetFirstYaoJianMeterIndex(_DnbGroup);

            CLDC_DataCore.Model.DnbModel.DnbInfo.MeterBasicInfo _MeterInfo = _DnbGroup.MeterGroup[_FirstYaoJian];

            _FirstConst = _MeterInfo.Mb_chrBcs;

            _FirstIb = _MeterInfo.Mb_chrIb;

            _FirstDj = _MeterInfo.Mb_chrBdj;

            _FirstGuiCheng = _MeterInfo.GuiChengName;

            _FirstHgq = _MeterInfo.Mb_BlnHgq;

            _MeterInfo = null;

            for (int i = 0; i < _DnbGroup.CheckPlan.Count; i++)
            {
                if (!(_DnbGroup.CheckPlan[i] is StPlan_WcPoint))
                {
                    continue;                                                   //如果不是误差则跳出
                }
                StPlan_WcPoint _Item = (StPlan_WcPoint)_DnbGroup.CheckPlan[i];

                if (_Item.Pc == 1)
                {
                    continue;                        //如果是偏差则跳出
                }
                int _RowIndex = Dgv_Wc.Rows.Add();

                Dgv_Wc.Rows[_RowIndex].HeaderCell.Value = _Item.ToString();   //方案项目描述

                Dgv_Wc.Rows[_RowIndex].Tag = i;                               //检定序号
            }


            int _ThreadSum = (int)((int)Dgv_Wc.Rows.Count / 10) + 1;            //归纳需要多少个线程来进行处理,固定一个线程最多处理10行数据

            for (int i = 0; i < _ThreadSum; i++)
            {
                System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(CheckQs), i * 10);      //计算圈数

                System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(CheckWcLimit), i * 10); //计算误差限
            }

            AsyncOpDone.WaitOne();
        }