陈嘉乐
2020-12-07 56b417e5bcdf4f34ddcda8c7e56fbac6584e615e
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
@@ -16,7 +16,7 @@
        /// </summary>
        public const string target_if = "目标";
        /// <summary>
        /// 移除所有界面
        /// 移除所有"Logic"界面
        /// </summary>
        public static void RemoveAllView()
        {
@@ -55,17 +55,22 @@
                logicId = sOidBeginsWith + sTimeSpan;
                logicId += "0A";
                logicId += "0A01";
                //0A01 物模型为逻辑, 0001 表示 1 号逻辑功能
                int iTopLogicId = 1;
                logicId += "15";
                logicId += "1501";
                //1501 物模型为逻辑, 0001 表示 1 号逻辑功能
                int maxId = 1;
                Random random = new Random();
                iTopLogicId = random.Next(0, 255);
                iTopLogicId += random.Next(0, 255);
                logicId += iTopLogicId.ToString("X4");//逻辑号 两个byte
                logicId += "1100";
                for (int i = 0; i < Logic.LogicList.Count; i++)
                {
                    string s = Logic.LogicList[i].sid.Substring(20, 4);
                    int iThisSceneId = Convert.ToInt16(s, 16);
                    if (iThisSceneId > maxId)
                        maxId = iThisSceneId ;
                }
                logicId += (maxId+1).ToString("X4");//逻辑号 两个byte
                logicId += "0000";
            }
            catch
            {
@@ -73,6 +78,7 @@
            }
            return logicId;
        }
        /// <summary>
        /// 封装Dictionary对象
        /// </summary>
@@ -93,9 +99,9 @@
        /// 获取网关房间列表
        /// </summary>
        /// <returns></returns>
        public static List<HDL_ON.Entity.Room> GetGatewayRoomListG()
        public static List<HDL_ON.Entity.Room> GetGatewayRoomList()
        {
            return HDL_ON.Entity.DB_ResidenceData.rooms;
            return HDL_ON.Entity.DB_ResidenceData.residenceData.Rooms;
        }
        /// <summary>
        /// 获取网关房间列表
@@ -106,10 +112,10 @@
            List<Entity.Room> roomList = new List<Entity.Room>();
            Entity.Room room1 = new Entity.Room();
            room1.name = name;//默认一个房间名为:全部区域
            room1.sid = "全部区域";//默认sid用识别该房间
            room1.roomName = name;//默认一个房间名为:全部区域
            room1.uid = "全部区域";//默认sid用识别该房间
            roomList.Add(room1);//默认添加到房间列表里
            var roomLists = GetGatewayRoomListG();
            var roomLists = GetGatewayRoomList();
            foreach (var room in roomLists)
            {
                roomList.Add(room);
@@ -123,8 +129,15 @@
        /// <returns></returns>
        public static List<HDL_ON.Entity.Function> GetGatewayDeviceList()
        {
            return HDL_ON.Entity.DB_ResidenceData.functionList.GetAllFunction();
        }
        /// <summary>
        /// 获取网关场景列表
        /// </summary>
        /// <returns></returns>
        public static List<HDL_ON.Entity.Scene> GetSceneList()
        {
           return  HDL_ON.Entity.DB_ResidenceData.functionList.scenes;
        }
        /// <summary>
        /// 获取房间的设备列表
@@ -137,11 +150,11 @@
            List<HDL_ON.Entity.Function> lists = GetGatewayDeviceList();
            foreach (var dev in lists)
            {
                if (dev.roomIdList.Find((id) => id == room.sid) != null)
                if (dev.roomIds.Find((id) => id == room.uid) != null)
                {
                    deviceLists.Add(dev);
                }
                if (room.sid == "全部区域")
                if (room.uid == "全部区域")
                {
                    //房间名为全部区域时,显示网关全部设备
                    deviceLists = lists;
@@ -169,6 +182,26 @@
            }
            return device;
        }
        /// <summary>
        /// 获取当个场景
        /// </summary>
        /// <param name="sid">场景唯一标识</param>
        /// <returns></returns>
        public static HDL_ON.Entity.Scene GetSecne(string sid)
        {
            HDL_ON.Entity.Scene scene = new Entity.Scene() { name = "Unknown", sid = "场景不存在" };
            List<HDL_ON.Entity.Scene> sceneLists = GetSceneList();
            foreach (var sce in sceneLists)
            {
                if (sce.sid == sid)
                {
                    scene = sce;
                    break;
                }
            }
            return scene;
        }
        /// <summary>
        /// 获取房间名(即是=区域名称)
        /// </summary>
@@ -177,14 +210,14 @@
        public static string GetGetRoomName(HDL_ON.Entity.Function device)
        {
            string roomName = "";
            List<HDL_ON.Entity.Room> roomLists = GetGatewayRoomListG();
            List<HDL_ON.Entity.Room> roomLists = GetGatewayRoomList();
            foreach (var dev in device.roomIdList)
            foreach (var dev in device.roomIds)
            {
                var room = roomLists.Find((c) => c.sid == dev);
                var room = roomLists.Find((c) => c.uid == dev);
                if (room != null)
                {
                    roomName += room.floorName + "." + room.name + ",";
                    roomName += room.floorName + "." + room.roomName + ",";
                }
            }
@@ -201,8 +234,29 @@
            switch (functionType)
            {
                case FunctionType.Relay:
                case FunctionType.RGB:
                case FunctionType.RGBW:
                case FunctionType.ColorTemperature:
                case FunctionType.Dimmer:
                    {
                        strPath = "LogicIcon/lightloguc.png";
                    }
                    break;
                case FunctionType.Curtain:
                case FunctionType.RollingShutter:
                case FunctionType.MotorCurtain:
                    {
                        strPath = "LogicIcon/curtainlogic.png";
                    }
                    break;
                case FunctionType.AC:
                    {
                        strPath = "LogicIcon/airconditionerlogic.png";
                    }
                    break;
                case FunctionType.FloorHeating:
                    {
                        strPath = "LogicIcon/heatlogic.png";
                    }
                    break;
@@ -218,13 +272,13 @@
        {
            List<string> deviceStrTypeList = new List<string>(); 
            deviceStrTypeList.Clear();
            var lightjosn = deviceList.Find((device) => device.functionType == FunctionType.Relay || device.functionType == FunctionType.Dimmer);
            var lightjosn = deviceList.Find((device) => device.functionType == FunctionType.Relay || device.functionType == FunctionType.Dimmer|| device.functionType == FunctionType.ColorTemperature || device.functionType == FunctionType.RGB|| device.functionType == FunctionType.RGBW);
            if (lightjosn != null)
            {
                deviceStrTypeList.Add(Language.StringByID(StringId.Lights));
            }
            var curtainjosn = deviceList.Find((device) => device.functionType ==FunctionType.Curtain);
            var curtainjosn = deviceList.Find((device) => device.functionType ==FunctionType.Curtain|| device.functionType == FunctionType.MotorCurtain|| device.functionType == FunctionType.RollingShutter);
            if (curtainjosn != null)
            {
                deviceStrTypeList.Add(Language.StringByID(StringId.Curtain));
@@ -234,6 +288,11 @@
            if (ac != null)
            {
                deviceStrTypeList.Add(Language.StringByID(StringId.AC));
            }
            var floorHeating = deviceList.Find((device) => device.functionType == FunctionType.FloorHeating);
            if (ac != null)
            {
                deviceStrTypeList.Add(Language.StringByID(StringId.FloorHeating));
            }
            return deviceStrTypeList;
@@ -250,10 +309,23 @@
            {
                functionTypeList.Add(FunctionType.Relay);
                functionTypeList.Add(FunctionType.Dimmer);
                functionTypeList.Add(FunctionType.RGB);
                functionTypeList.Add(FunctionType.RGBW);
                functionTypeList.Add(FunctionType.ColorTemperature);
            }
            else if (deviceType == Language.StringByID(StringId.Curtain))
            {
                functionTypeList.Add(FunctionType.Curtain);
                functionTypeList.Add(FunctionType.RollingShutter);
                functionTypeList.Add(FunctionType.MotorCurtain);
            }
            else if (deviceType == Language.StringByID(StringId.AC))
            {
                functionTypeList.Add(FunctionType.AC);
            }
            else if (deviceType == Language.StringByID(StringId.FloorHeating))
            {
                functionTypeList.Add(FunctionType.FloorHeating);
            }
            return functionTypeList;
@@ -268,11 +340,29 @@
            switch (if_type) {
                case condition_if: {
                        deviceTypeList.Add(FunctionType.Relay);
                        deviceTypeList.Add(FunctionType.RGB);
                        deviceTypeList.Add(FunctionType.RGBW);
                        deviceTypeList.Add(FunctionType.Dimmer);
                        deviceTypeList.Add(FunctionType.ColorTemperature);
                        deviceTypeList.Add(FunctionType.Curtain);
                        deviceTypeList.Add(FunctionType.RollingShutter);
                        deviceTypeList.Add(FunctionType.MotorCurtain);
                        deviceTypeList.Add(FunctionType.AC);
                        deviceTypeList.Add(FunctionType.FloorHeating);
                    }
                    break;
                case target_if:
                    {
                        deviceTypeList.Add(FunctionType.Relay);
                        deviceTypeList.Add(FunctionType.RGB);
                        deviceTypeList.Add(FunctionType.RGBW);
                        deviceTypeList.Add(FunctionType.Dimmer);
                        deviceTypeList.Add(FunctionType.ColorTemperature);
                        deviceTypeList.Add(FunctionType.Curtain);
                        deviceTypeList.Add(FunctionType.RollingShutter);
                        deviceTypeList.Add(FunctionType.MotorCurtain);
                        deviceTypeList.Add(FunctionType.AC);
                        deviceTypeList.Add(FunctionType.FloorHeating);
                    }
                    break;
            }