Example #1
0
        /// <summary>
        /// 在添加controller之前做检查
        /// </summary>
        /// <param name="typeInfo">controller类型</param>
        /// <param name="addNumber">增加的数量</param>
        /// <returns></returns>
        private bool CheckBeforeAddController(CentralController typeInfo, int addNumber)
        {
            ControllerLayoutType type = glProject.ControllerLayoutType;
            int controllerQty         = GetControllerQty();
            int outdoorQty            = GetOutdoorQty();
            int indoorQty             = GetIndoorQty();
            int ccControllerQty       = GetControllerQty(ControllerType.CentralController);
            int onoffQty = GetControllerQty(ControllerType.ONOFF);
            int unitQty  = outdoorQty + indoorQty;

            //累加上需要新增的数量
            controllerQty += addNumber;
            switch (typeInfo.Type)
            {
            case ControllerType.ONOFF:
                onoffQty += addNumber;
                break;

            case ControllerType.Software:     //软件不统计数量,但是因为会同时增加一个实体controller,所以需要加上
            case ControllerType.CentralController:
                ccControllerQty += addNumber;
                break;
            }

            int deviceQty = controllerQty + unitQty;  //TODO: 此处还需要加上remote controller的数量

            ////检查产品类型是否匹配
            //if (CheckProductType(ucDropOutdoor1.GetProductTypes(), typeInfo.ProductType) == false)
            //{
            //    return false;
            //}

            //区分exchanger 和system 选中的Controller on 20170830 by xyj
            if (CheckSystemAndExchanger(ucDropOutdoor1.GetOutdoorAndExchanger(), typeInfo.ProductType) == false)
            {
                return(false);
            }

            //区分exchanger类型对应的Controller 类型是否相同on 20170904 by xyj
            if (CheckExchangerIsMatch(ucDropOutdoor1.GetExchangerTypesList(), typeInfo.ProductType) == false)
            {
                return(false);
            }

            //EU暂时忽略设备数及Hlink限制   add on 20180621 by Vince
            if (_mainRegion == "EU_E" || _mainRegion == "EU_S" || _mainRegion == "EU_W")
            {
                return(true);
            }

            //检查设备数量是否符合拖动的controller的限制
            if (CheckSystemQtyLimitation(typeInfo, indoorQty, outdoorQty, deviceQty + addNumber) == false)
            {
                return(false);
            }

            //检查设备数量是否在H-Link的限制范围之内
            bool isHLinkII = !(typeInfo.Protocol.Trim().ToUpper() == "H-LINK" || HasHLinkI());

            if (CheckHLinkLimiation(isHLinkII, indoorQty, outdoorQty, deviceQty + addNumber) == false)
            {
                return(false);
            }

            ////1 - Can be connected upto 8 Central Controllers in 1 H-Link
            //if (typeInfo.Type == ControllerType.CentralController && ccControllerQty > Model.ConstValue.HLINKII_MAX_CC_QTY)
            //{
            //    JCMsg.ShowWarningOK(Msg.CONTROLLER_HLINK_CENTRAL_CONTROLLER_QTY(Model.ConstValue.HLINKII_MAX_CC_QTY));
            //    return false;
            //}



            //1 - Can be connected upto 8 Central Controllers in 1 H-Link
            if (typeInfo.MaxControllerNumber > 0 && ccControllerQty > typeInfo.MaxControllerNumber)
            {
                JCMsg.ShowWarningOK(Msg.CONTROLLER_HLINK_CENTRAL_CONTROLLER_QTY(ControllerConstValue.HLINKII_MAX_CC_QTY));
                return(false);
            }

            //2 - combination limitation
            CheckCombinationLimitation(typeInfo);

            //3 - check quantity of this model
            if (typeInfo.MaxSameModel > 0 && GetControllerQty(typeInfo.Model) + addNumber > typeInfo.MaxSameModel)
            {
                JCMsg.ShowWarningOK(Msg.CONTROLLER_HLINK_CONTROLLER_QTY(typeInfo.MaxSameModel));
                return(false);
            }

            //4 - check quantity of this type
            if (typeInfo.MaxSameType > 0 && GetControllerQty(typeInfo.Type) + addNumber > typeInfo.MaxSameType)
            {
                JCMsg.ShowWarningOK(Msg.CONTROLLER_HLINK_CONTROLLER_QTY(typeInfo.MaxSameType));
                return(false);
            }

            //5 - BACNet Interface Can be connected upto 4 Central Controllers
            if (typeInfo.Type == ControllerType.BACNetInterface && ccControllerQty > ControllerConstValue.BACNET_MAX_CC_QTY)
            {
                JCMsg.ShowWarningOK(Msg.CONTROLLER_BACNET_CC_QTY(ControllerConstValue.BACNET_MAX_CC_QTY));
            }

            //6 - For Web based Cotnrol, max 176 units (ODU + IDU) can be connected.
            if (typeInfo.MaxUnitNumber > 0 && unitQty > typeInfo.MaxUnitNumber)
            {
                //TODO: 此处需要翻译
                JCMsg.ShowWarningOK(Msg.CONTROLLER_UNIT_QTY(typeInfo.Model, typeInfo.MaxUnitNumber));
            }


            return(true);
        }