wjc
2023-07-26 9508510f0b27da3278fa1161eb2ba3dd1e3e2030
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
@@ -11,7 +11,7 @@
        /// <summary>
        /// 定义一个静态对象
        /// </summary> 
        private static LogicMethod s_Current = null;
        private static LogicMethod s_Current = null;
        /// <summary>
        /// 获取静态对象
        /// </summary>
@@ -147,9 +147,9 @@
        /// <returns></returns>
        public List<HDL_ON.Entity.Room> GetGatewayRoomList()
        {
            return   HDL_ON.Entity.SpatialInfo.CurrentSpatial.RoomList;
            return HDL_ON.Entity.SpatialInfo.CurrentSpatial.RoomList;
        }
        /// <summary>
        /// 获取网关房间列表
@@ -187,7 +187,10 @@
            var list2 = this.GetVideoDeviceList();
            list.AddRange(list1);
            list.AddRange(list2);
            list.AddRange(FunctionList.List.groupControls);
#if DEBUG
            GetTestDevice(ref list, true);
#endif
            return list;
        }
        /// <summary>
@@ -197,15 +200,17 @@
        public List<HDL_ON.Entity.Function> GetVideoDeviceList()
        {
            var functionList = new List<Function>();
            foreach (var videoDevice in FunctionList.List.videoIntercom) {
            foreach (var videoDevice in FunctionList.List.videoIntercom)
            {
                Function function = new Function();
                function.spk = videoDevice.spk;
                function.name = videoDevice.deviceName;
                function.deviceId = videoDevice.deviceId;
                function.online = videoDevice.status== "online";
                function.online = videoDevice.status == "online";
                function.sid = videoDevice.sid;
                var video = functionList.Find((o) => o.deviceId == function.deviceId);
                if (video == null) {
                if (video == null)
                {
                    functionList.Add(function);
                }
@@ -341,17 +346,52 @@
            return roomName.TrimEnd(',');
        }
        #region   动一改四
        /// <summary>
        /// 获取设备类型图标
        /// </summary>
        /// <param name="device">设备</param>
        /// <returns></returns>
        public string GetDeviceIconPath(Function device)
        {
            if (SPK.MusicStandard == device.spk
                || SPK.AvMusic == device.spk)
            {
                return "MusicIcon/localMusic.png";
            }
            else if (SPK.SensorPm10 == device.spk || SPK.SensorPirHold == device.spk)
            {
                return "LogicIcon/sensor.png";
            }
            else if (SPK.DoorLock == device.spk
                || SPK.VideoDoorLock == device.spk)
            {
                return "FunctionIcon/DoorLock/DoorLock.png";
            }
            //LogicIcon/heatlogic.png"
            return $"FunctionIcon/Icon/{device.IconName}.png";
        }
        /// <summary>
        /// 获取设备类型图标(已弃用 2022年11月25日14:07:30)
        /// </summary>
        /// <param name="functionType">设备类型</param>
        /// <returns></returns>
        public string GetIconPath(string functionType)
        public string GetIconPath(string spk)
        {
            string strPath = "";
            switch (functionType)
            switch (spk)
            {
                case SPK.IpCam_Imou:
                    {
                        strPath = $"FunctionIcon/Icon/{SPK.IpCam_Imou.Replace(".", "")}.png";
                    }
                    break;
                case SPK.MechanicalArm:
                    {
                        strPath = "LogicIcon/lightloguc.png";
                    }
                    break;
                case SPK.doorgate:
                    {
                        strPath = "VideoIcon/keshiduijiang.png";
@@ -386,6 +426,7 @@
                    }
                    break;
                case SPK.AcStandard:
                case SPK.AcIr:
                case SPK.HvacAC:
                    {
                        strPath = "LogicIcon/airconditionerlogic.png";
@@ -416,9 +457,10 @@
                case SPK.SensorPir:
                case SPK.SensorDoorWindow:
                case SPK.SensorUtrasonic:
                case SPK.SensorMmvPose:
                case SPK.SenesorMegahealth:
                case SPK.SenesorMegahealth2:
                case SPK.SensorEnvironment:
                case SPK.SensorEnvironment:case SPK.SensorEnvironmentHailin:
                case SPK.SensorEnvironment2:
                case SPK.SensorEnvironment3:
                case SPK.SensorTemperature:
@@ -428,6 +470,8 @@
                case SPK.SensorTVOC:
                case SPK.SensorHcho:
                case SPK.SensorHelp:
                case SPK.SensorPirHold:
                    {
                        strPath = "LogicIcon/sensor.png";
                    }
@@ -443,10 +487,10 @@
                        strPath = "MusicIcon/localMusic.png";
                    }
                    break;
            }
            return strPath;
        }
        #region   动一改三
        /// <summary>
        /// 设备类型的列表(灯光类,窗帘类。。。)
        /// </summary>
@@ -456,6 +500,15 @@
        {
            List<string> deviceStrTypeList = new List<string>();
            deviceStrTypeList.Clear();
            //群控
            var gp = deviceList.Find((device) =>
                device.spk == SPK.GroupControl);
            if (gp != null)
            {
                deviceStrTypeList.Add(Language.StringByID(StringId.GroupControl));
            }
            ///灯光类
            var lightjosn = deviceList.Find((device) =>
            device.spk == SPK.LightSwitch
@@ -480,7 +533,7 @@
                deviceStrTypeList.Add(Language.StringByID(StringId.Curtain));
            }
            ///空调类
            var ac = deviceList.Find((device) => device.spk == SPK.AcStandard || device.spk == SPK.HvacAC);
            var ac = deviceList.Find((device) => device.spk == SPK.AcStandard || device.spk == SPK.HvacAC|| device.spk == SPK.AcIr);
            if (ac != null)
            {
                deviceStrTypeList.Add(Language.StringByID(StringId.AC));
@@ -508,9 +561,10 @@
            || device.spk == SPK.SensorPir
            || device.spk == SPK.SensorDoorWindow
            || device.spk == SPK.SensorUtrasonic
            || device.spk == SPK.SensorMmvPose
            || device.spk == SPK.SenesorMegahealth
            || device.spk == SPK.SenesorMegahealth2
            || device.spk == SPK.SensorEnvironment
            || device.spk == SPK.SensorEnvironment || device.spk == SPK.SensorEnvironmentHailin
             || device.spk == SPK.SensorEnvironment2
              || device.spk == SPK.SensorEnvironment3
                || device.spk == SPK.SensorTemperature
@@ -520,6 +574,8 @@
                        || device.spk == SPK.SensorTVOC
                          || device.spk == SPK.SensorHcho
                          || device.spk == SPK.SensorHelp
                          || device.spk == SPK.SensorPm10
                          || device.spk == SPK.SensorPirHold
            );
            if (sensor != null)
            {
@@ -536,7 +592,8 @@
                deviceStrTypeList.Add(Language.StringByID(StringId.Electric));
            }
            ///门锁类
            var doorlock = deviceList.Find((device) => device.spk == SPK.DoorLock);
            var doorlock = deviceList.Find((device) => device.spk == SPK.DoorLock
            || device.spk == SPK.VideoDoorLock);
            if (doorlock != null)
            {
                deviceStrTypeList.Add(Language.StringByID(StringId.DoorLock));
@@ -553,6 +610,20 @@
            {
                deviceStrTypeList.Add(Language.StringByID(StringId.VideoIntercom));
            }
            ///机械手类
            var MechanicalArm = deviceList.Find((device) =>
            device.spk == SPK.MechanicalArm);
            if (MechanicalArm != null)
            {
                deviceStrTypeList.Add(Language.StringByID(StringId.jixieshou));
            }
            ///摄像头类
            var camera = deviceList.Find((device) =>
            device.spk == SPK.IpCam_Imou || device.spk == SPK.Ev_Ipcam || device.spk == SPK.Peephole);
            if (camera != null)
            {
                deviceStrTypeList.Add(Language.StringByID(StringId.shexiangtou));
            }
            return deviceStrTypeList;
        }
@@ -564,6 +635,7 @@
        public List<string> GetDeviceTypeFunctionList(string deviceType)
        {
            List<string> functionTypeList = new List<string>();
            ///灯光类
            if (deviceType == Language.StringByID(StringId.Lights))
            {
@@ -575,6 +647,11 @@
                functionTypeList.Add(SPK.AirSwitch);
                functionTypeList.Add(SPK.PanelSocket);
                functionTypeList.Add(SPK.ElectricSocket);
            }
            //群控
            else if (deviceType == Language.StringByID(StringId.GroupControl))
            {
                functionTypeList.Add(SPK.GroupControl);
            }
            ///窗帘类
            else if (deviceType == Language.StringByID(StringId.Curtain))
@@ -590,6 +667,7 @@
                functionTypeList.Add(SPK.AcStandard);
                functionTypeList.Add(SPK.HvacAC);
                functionTypeList.Add(SPK.HvacCac);
                functionTypeList.Add(SPK.AcIr);
            }
            ///地暖类
            else if (deviceType == Language.StringByID(StringId.FloorHeating))
@@ -613,9 +691,10 @@
                functionTypeList.Add(SPK.SensorPir);
                functionTypeList.Add(SPK.SensorDoorWindow);
                functionTypeList.Add(SPK.SensorUtrasonic);
                functionTypeList.Add(SPK.SensorMmvPose);
                functionTypeList.Add(SPK.SenesorMegahealth);
                functionTypeList.Add(SPK.SenesorMegahealth2);
                functionTypeList.Add(SPK.SensorEnvironment);
                functionTypeList.Add(SPK.SensorEnvironment); functionTypeList.Add(SPK.SensorEnvironmentHailin);
                functionTypeList.Add(SPK.SensorEnvironment2);
                functionTypeList.Add(SPK.SensorEnvironment3);
                functionTypeList.Add(SPK.SensorTemperature);
@@ -625,6 +704,8 @@
                functionTypeList.Add(SPK.SensorTVOC);
                functionTypeList.Add(SPK.SensorHcho);
                functionTypeList.Add(SPK.SensorHelp);
                functionTypeList.Add(SPK.SensorPm10);
                functionTypeList.Add(SPK.SensorPirHold);
            }
@@ -639,6 +720,7 @@
            else if (deviceType == Language.StringByID(StringId.DoorLock))
            {
                functionTypeList.Add(SPK.DoorLock);
                functionTypeList.Add(SPK.VideoDoorLock);
            }
            ///音乐类
            else if (deviceType == Language.StringByID(StringId.Music))
@@ -651,9 +733,24 @@
            {
                functionTypeList.Add(SPK.doorgate);
            }
            ///机械手类
            else  if (deviceType == Language.StringByID(StringId.jixieshou))
            {
                functionTypeList.Add(SPK.MechanicalArm);
            }
            ///摄像头类
            else if (deviceType == Language.StringByID(StringId.shexiangtou))
            {
                functionTypeList.Add(SPK.IpCam_Imou);
                functionTypeList.Add(SPK.Ev_Ipcam);
                functionTypeList.Add(SPK.Peephole);
            }
            else
            {
                //全部区域
                functionTypeList.Add(SPK.GroupControl);
                functionTypeList.Add(SPK.Peephole);
                functionTypeList.Add(SPK.Ev_Ipcam);
                functionTypeList.Add(SPK.LightSwitch);
                functionTypeList.Add(SPK.LightDimming);
                functionTypeList.Add(SPK.LightRGB);
@@ -667,6 +764,7 @@
                functionTypeList.Add(SPK.CurtainTrietex);
                functionTypeList.Add(SPK.AcStandard);
                functionTypeList.Add(SPK.HvacAC);
                functionTypeList.Add(SPK.AcIr);
                functionTypeList.Add(SPK.FloorHeatStandard);
                functionTypeList.Add(SPK.HvacFloorHeat);
                functionTypeList.Add(SPK.AirFreshStandard);
@@ -681,9 +779,10 @@
                functionTypeList.Add(SPK.SensorPir);
                functionTypeList.Add(SPK.SensorDoorWindow);
                functionTypeList.Add(SPK.SensorUtrasonic);
                functionTypeList.Add(SPK.SensorMmvPose);
                functionTypeList.Add(SPK.SenesorMegahealth);
                functionTypeList.Add(SPK.SenesorMegahealth2);
                functionTypeList.Add(SPK.SensorEnvironment);
                functionTypeList.Add(SPK.SensorEnvironment); functionTypeList.Add(SPK.SensorEnvironmentHailin);
                functionTypeList.Add(SPK.SensorEnvironment2);
                functionTypeList.Add(SPK.SensorEnvironment3);
                functionTypeList.Add(SPK.SensorTemperature);
@@ -702,6 +801,12 @@
                functionTypeList.Add(SPK.MusicStandard);
                functionTypeList.Add(SPK.AvMusic);
                functionTypeList.Add(SPK.doorgate);
                functionTypeList.Add(SPK.MechanicalArm);
                functionTypeList.Add(SPK.IpCam_Imou);
                functionTypeList.Add(SPK.SensorPm10);
                functionTypeList.Add(SPK.VideoDoorLock);
                functionTypeList.Add(SPK.AcIr);
                functionTypeList.Add(SPK.SensorPirHold);
            }
@@ -720,6 +825,8 @@
            {
                case condition_if:
                    {
                        deviceTypeList.Add(SPK.Ev_Ipcam);
                        deviceTypeList.Add(SPK.Peephole);
                        deviceTypeList.Add(SPK.LightSwitch);
                        deviceTypeList.Add(SPK.LightRGB);
                        deviceTypeList.Add(SPK.LightRGBW);
@@ -728,7 +835,7 @@
                        deviceTypeList.Add(SPK.CurtainSwitch);
                        deviceTypeList.Add(SPK.CurtainRoller);
                        deviceTypeList.Add(SPK.CurtainTrietex);
                        deviceTypeList.Add(SPK.AcStandard); deviceTypeList.Add(SPK.HvacAC);
                        deviceTypeList.Add(SPK.AcStandard); deviceTypeList.Add(SPK.HvacAC);deviceTypeList.Add(SPK.AcIr);
                        deviceTypeList.Add(SPK.AirFreshStandard); deviceTypeList.Add(SPK.HvacAirFresh);
                        deviceTypeList.Add(SPK.FloorHeatStandard); deviceTypeList.Add(SPK.HvacFloorHeat);
                        deviceTypeList.Add(SPK.SensorSmoke);
@@ -740,9 +847,10 @@
                        deviceTypeList.Add(SPK.SensorPir);
                        deviceTypeList.Add(SPK.SensorDoorWindow);
                        deviceTypeList.Add(SPK.SensorUtrasonic);
                        deviceTypeList.Add(SPK.SensorMmvPose);
                        deviceTypeList.Add(SPK.SenesorMegahealth);
                        deviceTypeList.Add(SPK.SenesorMegahealth2);
                        deviceTypeList.Add(SPK.SensorEnvironment);
                        deviceTypeList.Add(SPK.SensorEnvironment); deviceTypeList.Add(SPK.SensorEnvironmentHailin);
                        deviceTypeList.Add(SPK.SensorEnvironment2);
                        deviceTypeList.Add(SPK.SensorEnvironment3);
                        deviceTypeList.Add(SPK.SensorTemperature);
@@ -757,12 +865,18 @@
                        deviceTypeList.Add(SPK.HvacCac);
                        deviceTypeList.Add(SPK.SensorHelp);
                        deviceTypeList.Add(SPK.DoorLock);
                        deviceTypeList.Add(SPK.doorgate);
                        deviceTypeList.Add(SPK.doorgate);
                        deviceTypeList.Add(SPK.IpCam_Imou);
                        deviceTypeList.Add(SPK.SensorPm10);
                        deviceTypeList.Add(SPK.VideoDoorLock);
                        deviceTypeList.Add(SPK.AcIr);
                        deviceTypeList.Add(SPK.SensorPirHold);
                    }
                    break;
                case target_if:
                    {
                        deviceTypeList.Add(SPK.GroupControl);
                        deviceTypeList.Add(SPK.LightSwitch);
                        deviceTypeList.Add(SPK.LightRGB);
                        deviceTypeList.Add(SPK.LightRGBW);
@@ -771,7 +885,7 @@
                        deviceTypeList.Add(SPK.CurtainSwitch);
                        deviceTypeList.Add(SPK.CurtainRoller);
                        deviceTypeList.Add(SPK.CurtainTrietex);
                        deviceTypeList.Add(SPK.AcStandard); deviceTypeList.Add(SPK.HvacAC);
                        deviceTypeList.Add(SPK.AcStandard); deviceTypeList.Add(SPK.HvacAC); deviceTypeList.Add(SPK.AcIr);
                        deviceTypeList.Add(SPK.FloorHeatStandard); deviceTypeList.Add(SPK.HvacFloorHeat);
                        deviceTypeList.Add(SPK.AirFreshStandard); deviceTypeList.Add(SPK.HvacAirFresh);
                        deviceTypeList.Add(SPK.AirSwitch);
@@ -780,6 +894,8 @@
                        deviceTypeList.Add(SPK.CurtainDream);
                        deviceTypeList.Add(SPK.MusicStandard);
                        deviceTypeList.Add(SPK.AvMusic);
                        deviceTypeList.Add(SPK.MechanicalArm);
                        deviceTypeList.Add(SPK.AcIr);
                    }
                    break;
            }
@@ -816,15 +932,15 @@
        /// <returns></returns>
        public List<Entity.Function> GetFunctionDeviceList(Entity.Room room, string str)
        {
            List<string> functionTypeList = GetSupportEquipment(str);
            List<string> functionTypeList = this.GetSupportEquipment(str);
            //返回房间设备列表
            var roomDeviceList = GetRoomDevice(room);
            var roomDeviceList = this.GetRoomDevice(room);
            //返回最终支持显示出来的设备列表
            var list = GetShowDeviceList(functionTypeList, roomDeviceList);
            var list =this.GetShowDeviceList(functionTypeList, roomDeviceList);
            return list;
        }
        /// <summary>
        /// 网关ID(获取嘉乐网关ID)
        /// 网关ID(获取网关ID)
        /// </summary>
        public string GatewayId
        {
@@ -1044,7 +1160,7 @@
                            //定义一个局部变量
                            string direction = string.Empty;
                            //两点距离小于配置距离<既自动化配置输入条件地理围栏半径>,说明进入区域
                            if (r*1000< radius)
                            if (r * 1000 < radius)
                            {
                                //到达某地
                                direction = "arrive";
@@ -1098,11 +1214,18 @@
                 //new Entity.Function { sid = "1234567890", name = "超声波传感器", spk = Entity.SPK.SensorUtrasonic },
                 // new Entity.Function { sid = "1234567891", name = "温度传感器", spk = Entity.SPK.SensorTemperature },
                 //  new Entity.Function { sid = "1234567892", name = "湿度传感器", spk = Entity.SPK.SensorHumidity },
                 //   new Entity.Function { sid = "1234567893", name = "红外对射传感器", spk = Entity.SPK.SensorDuiShe },
                 //     new Entity.Function { sid = "1234567895", name = "超声波传感器", spk = Entity.SPK.SensorUtrasonic },
                      new Entity.Function { sid = "1234567896", name = "毫米波传感器", spk = Entity.SPK.SenesorMegahealth },
                        new Entity.Function { sid = "1234567897", name = "毫米波传感器1", spk = Entity.SPK.SenesorMegahealth2 },
                       new Entity.Function { sid = "1234567899", name = "门磁传感器", spk = Entity.SPK.SensorDoorWindow },
                    //new Entity.Function { sid = "12345678933456", name = "门锁", spk = Entity.SPK.DoorLock },
                    //  new Entity.Function { sid = "1234567895444", name = "视频门锁", spk = Entity.SPK.VideoDoorLock },
                      //new Entity.Function { sid = "12345678968888", name = "人体存在传感器", spk = Entity.SPK.SensorPirHold },
                      new Entity.Function { sid = "12345678968888", name = "测试猫眼", spk = Entity.SPK.Peephole },
                      new Entity.Function { sid = "12345678968889", name = "测试萤石摄像头", spk = Entity.SPK.Ev_Ipcam },
                      //  new Entity.Function { sid = "1234567897", name = "毫米波传感器1", spk = Entity.SPK.SenesorMegahealth2 },
                      // new Entity.Function { sid = "1234567899", name = "门磁传感器", spk = Entity.SPK.SensorDoorWindow },
                      //  new Entity.Function { sid = "12345678991234", name = "HDL机械手", spk = Entity.SPK.MechanicalArm },
                      //    new Entity.Function { sid = "123456789912345", name = "海曼机械手", spk = Entity.SPK.MechanicalArm },
                              new Entity.Function { sid = "12345678991234566844", name = "大华摄像头", spk = Entity.SPK.IpCam_Imou },
                                 new Entity.Function { sid = "12345678991234567", name = "RGB", spk = Entity.SPK.LightRGB },
                                  new Entity.Function { sid = "123456789912345678", name = "RGBW", spk = Entity.SPK.LightRGBW },
            };
                foreach (var function in functions)
                {