//================================  事件 ================================

        #region 添加期货持仓限制窗体 AddPositionLimitValueUI_Load

        /// <summary>
        ///添加期货持仓限制窗体
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void AddPositionLimitValueUI_Load(object sender, EventArgs e)
        {
            try
            {
                if (EditType == (int)UITypes.EditTypeEnum.AddUI)
                {
                    m_QHPositionLimitValue = new QH_PositionLimitValue();
                }
                this.InitBindData();

                if (EditType == (int)UITypes.EditTypeEnum.UpdateUI)
                {
                    this.UpdateInitData();
                    //this.Text = "修改持仓限制";
                }
            }
            catch (Exception ex)
            {
                string      errCode   = "GL-6420";
                string      errMsg    = "添加期货持仓限制窗体加载失败!";
                VTException exception = new VTException(errCode, errMsg, ex);
                LogHelper.WriteError(exception.ToString(), exception.InnerException);
                return;
            }
        }
        /// <summary>
        /// 输入值是否在当前字段范围内
        /// </summary>
        /// <param name="value">输入值</param>
        /// <param name="fieldRange">字段范围</param>
        /// <returns>是否在当前字段范围内</returns>
        public static bool CheckLimitFieldRange(decimal value, QH_PositionLimitValue fieldRange)
        {
            bool result = false;

            if (!fieldRange.Start.HasValue && !fieldRange.Ends.HasValue)
            {
                return(result);
            }
            if (fieldRange.Start.HasValue)
            {
                result = fieldRange.LowerLimitIfEquation.Value == (int)Types.IsYesOrNo.Yes
                                                  ? value >= fieldRange.Start
                                                  : value > fieldRange.Start;
                if (result)
                {
                    if (fieldRange.Ends.HasValue)
                    {
                        result = fieldRange.UpperLimitIfEquation.Value == (int)Types.IsYesOrNo.Yes
                                     ? value <= fieldRange.Ends
                                     : value < fieldRange.Ends;
                    }
                }
            }
            else if (fieldRange.Ends.HasValue)
            {
                result = fieldRange.UpperLimitIfEquation.Value == (int)Types.IsYesOrNo.Yes
                             ? value <= fieldRange.Ends
                             : value < fieldRange.Ends;
            }
            return(result);
        }
        /// <summary>
        /// 获取需要更新的(商品)期货_持仓限制的实体
        /// </summary>
        /// <param name="handle">行号</param>
        private void UpdateQHPositionLimitValue(int handle)
        {
            try
            {
                if (handle < 0)
                {
                    return;
                }
                //显示添加(商品)期货_持仓限制窗体
                AddPositionLimitValueUI addPositionLimitValueUI = new AddPositionLimitValueUI();
                addPositionLimitValueUI.EditType = (int)UITypes.EditTypeEnum.UpdateUI;
                DataRow _dr = this.gdPositionLimitValueSelect.GetDataRow(handle);
                int     positionLimitValueID = Convert.ToInt32(_dr["PositionLimitValueID"]);
                QH_PositionLimitValue qHPositionLimitValue = FuturesManageCommon.GetQHPositionLimitValueModel(positionLimitValueID);
                addPositionLimitValueUI.QHPositionLimitValue = qHPositionLimitValue;

                if (addPositionLimitValueUI.ShowDialog(this) == DialogResult.OK)
                {
                    this.QueryQHPositionLimitValue();
                    this.gdPositionLimitValueSelect.FocusedRowHandle = handle;
                }
            }
            catch (Exception ex)
            {
                string      errCode   = "GL-6463";
                string      errMsg    = "获取需要更新的(商品)期货_持仓限制的实体失败!";
                VTException exception = new VTException(errCode, errMsg, ex);
                LogHelper.WriteError(exception.ToString(), exception.InnerException);
                return;
            }
        }
        /// <summary>
        /// 通过持仓和保证金控制类型来获取具体的持仓限制
        /// </summary>
        /// <param name="values">持仓限制列表</param>
        /// <param name="findVal">类型值(持仓或者日期)</param>
        /// <param name="positionValueType">持仓限制取值类型(百分比还是值)</param>
        /// <returns>持仓限制</returns>
        ///
        private static PositionLimitValueInfo GetLimit(IList <QH_PositionLimitValue> values, decimal findVal, out Types.QHPositionValueType positionValueType)
        {
            QH_PositionLimitValue  limitValue = null;
            PositionLimitValueInfo info       = new PositionLimitValueInfo();

            info.PositionValue    = -1;
            info.IsMinMultiple    = false;
            info.MinMultipleValue = 0;

            foreach (QH_PositionLimitValue value in values)
            {
                if (CheckLimitFieldRange(findVal, value))
                {
                    limitValue = value;
                    break;
                }
            }

            positionValueType = Types.QHPositionValueType.Scales;
            if (limitValue == null)
            {
                //return -1;
                return(info);
            }

            positionValueType = (Types.QHPositionValueType)limitValue.PositionValueTypeID.Value;

            //如果有值即为要对本记录作最小交割单位倍数判断
            if (limitValue.MinUnitLimit.HasValue && limitValue.MinUnitLimit.Value != 0)
            {
                info.IsMinMultiple    = true;
                info.MinMultipleValue = (decimal)limitValue.MinUnitLimit.Value;
            }
            info.PositionValue = limitValue.PositionValue.Value;
            return(info);
        }
        /// <summary>
        /// 添加或修改(商品)期货持仓限制
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnOK_Click(object sender, EventArgs e)
        {
            try
            {
                QH_PositionLimitValue qH_PositionLimitValue = new QH_PositionLimitValue();

                if (!string.IsNullOrEmpty(this.cmbBreedClassID.Text))
                {
                    qH_PositionLimitValue.BreedClassID = ((UComboItem)this.cmbBreedClassID.SelectedItem).ValueIndex;
                }
                else
                {
                    ShowMessageBox.ShowInformation("请选择品种!");
                    this.cmbBreedClassID.Focus();
                    return;
                }
                if (!string.IsNullOrEmpty(this.txtStart.Text) && !string.IsNullOrEmpty(this.txtEnds.Text))
                {
                    if (InputTest.zeroStartIntTest(this.txtStart.Text) && InputTest.intTest(this.txtEnds.Text))
                    {
                        if (Convert.ToInt32(this.txtStart.Text) < Convert.ToInt32(this.txtEnds.Text))
                        {
                            qH_PositionLimitValue.Start = Convert.ToInt32(this.txtStart.Text);
                        }
                        else
                        {
                            ShowMessageBox.ShowInformation("起始值不能大于或等于结束值!");
                            this.txtStart.Focus();
                            return;
                        }
                        if (Convert.ToInt32(this.txtEnds.Text) > Convert.ToInt32(this.txtStart.Text))
                        {
                            qH_PositionLimitValue.Ends = Convert.ToInt32(this.txtEnds.Text);
                        }
                        else
                        {
                            ShowMessageBox.ShowInformation("结束值不能小于或等于起始值!");
                            this.txtEnds.Focus();
                            return;
                        }
                    }
                    else
                    {
                        ShowMessageBox.ShowInformation("请输入数字!");
                        this.txtStart.Focus();
                        this.txtEnds.Focus();
                        return;
                    }
                }
                else
                {
                    if (string.IsNullOrEmpty(this.txtStart.Text) && string.IsNullOrEmpty(this.txtEnds.Text))
                    {
                        ShowMessageBox.ShowInformation("范围值不能为空!");
                        this.txtStart.Focus();
                        return;
                    }
                    if (!string.IsNullOrEmpty(this.txtStart.Text))
                    {
                        if (InputTest.zeroStartIntTest(this.txtStart.Text))
                        {
                            qH_PositionLimitValue.Start = Convert.ToInt32(this.txtStart.Text);
                        }
                        else
                        {
                            ShowMessageBox.ShowInformation("请输入数字!");
                            this.txtStart.Focus();
                            return;
                        }
                    }
                    if (!string.IsNullOrEmpty(this.txtEnds.Text))
                    {
                        if (InputTest.intTest(this.txtEnds.Text))
                        {
                            qH_PositionLimitValue.Ends = Convert.ToInt32(this.txtEnds.Text);
                        }
                        else
                        {
                            ShowMessageBox.ShowInformation("请输入数字!");
                            this.txtEnds.Focus();
                            return;
                        }
                    }
                }
                if (!string.IsNullOrEmpty(this.txtPositionValue.Text))
                {
                    if (InputTest.DecimalTest(this.txtPositionValue.Text))
                    {
                        qH_PositionLimitValue.PositionValue = Convert.ToDecimal(this.txtPositionValue.Text);
                    }
                    else
                    {
                        ShowMessageBox.ShowInformation("请输入数字!");
                        this.txtPositionValue.Focus();
                        return;
                    }
                }
                else
                {
                    ShowMessageBox.ShowInformation("请输入持仓!");
                    this.txtPositionValue.Focus();
                    return;
                }

                if (!string.IsNullOrEmpty(this.cmbDeliveryMonthTypeID.Text))
                {
                    qH_PositionLimitValue.DeliveryMonthType = ((UComboItem)this.cmbDeliveryMonthTypeID.SelectedItem).ValueIndex;
                }
                else
                {
                    qH_PositionLimitValue.DeliveryMonthType = AppGlobalVariable.INIT_INT;
                }
                if (checkBox2.Checked)
                {
                    qH_PositionLimitValue.LowerLimitIfEquation = (int)GTA.VTS.Common.CommonObject.Types.IsYesOrNo.Yes;
                }
                else
                {
                    qH_PositionLimitValue.LowerLimitIfEquation = (int)GTA.VTS.Common.CommonObject.Types.IsYesOrNo.No;
                }
                if (checkBox3.Checked)
                {
                    qH_PositionLimitValue.UpperLimitIfEquation = (int)GTA.VTS.Common.CommonObject.Types.IsYesOrNo.Yes;
                }
                else
                {
                    qH_PositionLimitValue.UpperLimitIfEquation = (int)GTA.VTS.Common.CommonObject.Types.IsYesOrNo.No;
                }

                if (!string.IsNullOrEmpty(this.cmbPositionBailTypeID.Text))
                {
                    qH_PositionLimitValue.PositionBailTypeID = ((UComboItem)this.cmbPositionBailTypeID.SelectedItem).ValueIndex;
                }
                if (radioButton1.Checked)
                {
                    qH_PositionLimitValue.PositionValueTypeID = (int)GTA.VTS.Common.CommonObject.Types.QHPositionValueType.Positions;
                }
                if (radioButton2.Checked)
                {
                    qH_PositionLimitValue.PositionValueTypeID = (int)GTA.VTS.Common.CommonObject.Types.QHPositionValueType.Scales;
                }
                //if (!string.IsNullOrEmpty(this.cmbPositionValueTypeID.Text))
                //{
                //    qH_PositionLimitValue.PositionValueTypeID = ((UComboItem)this.cmbPositionValueTypeID.SelectedItem).ValueIndex;
                //}
                //else
                //{
                //    qH_PositionLimitValue.PositionValueTypeID = AppGlobalVariable.INIT_INT;
                //}
                //if (!string.IsNullOrEmpty(this.cmbPositionLimitType.Text))
                //{
                //    qH_PositionLimitValue.PositionLimitType = ((UComboItem)this.cmbPositionLimitType.SelectedItem).ValueIndex;
                //}
                if (checkBox1.Checked)
                {
                    int minUnit;
                    int.TryParse(txtMinUnit.Text, out minUnit);
                    if (string.IsNullOrEmpty(txtMinUnit.Text) || minUnit == 0)
                    {
                        ShowMessageBox.ShowInformation("请输入最小交割单位!");
                        this.txtMinUnit.Focus();
                        return;
                    }
                    qH_PositionLimitValue.MinUnitLimit = Convert.ToInt32(txtMinUnit.Text);
                }
                else
                {
                    qH_PositionLimitValue.MinUnitLimit = null;
                }

                if (EditType == (int)UITypes.EditTypeEnum.AddUI)
                {
                    int result = FuturesManageCommon.AddQHPositionLimitValue(qH_PositionLimitValue);
                    if (result != AppGlobalVariable.INIT_INT)
                    {
                        FireSaved(this, new EventArgs());
                        ShowMessageBox.ShowInformation("添加成功!");
                        this.DialogResult = DialogResult.OK;
                        this.Close();
                    }
                    else
                    {
                        ShowMessageBox.ShowInformation("添加失败!");
                    }
                }
                else if (EditType == (int)UITypes.EditTypeEnum.UpdateUI)
                {
                    if (m_PositionLimitValueID != AppGlobalVariable.INIT_INT)
                    {
                        qH_PositionLimitValue.PositionLimitValueID = m_PositionLimitValueID;
                    }
                    m_Result = FuturesManageCommon.UpdateQHPositionLimitValue(qH_PositionLimitValue);
                    if (m_Result)
                    {
                        ShowMessageBox.ShowInformation("修改成功!");
                        this.DialogResult = DialogResult.OK;
                        this.Close();
                    }
                    else
                    {
                        ShowMessageBox.ShowInformation("修改失败!");
                    }
                }
            }
            catch (Exception ex)
            {
                string      errCode   = "GL-6422";
                string      errMsg    = "添加或修改(商品)期货持仓限制失败!";
                VTException exception = new VTException(errCode, errMsg, ex);
                LogHelper.WriteError(exception.ToString(), exception.InnerException);
                return;
            }
        }