From 3f6685c77beeb12baf840733fb890860f4c26e7c Mon Sep 17 00:00:00 2001 From: mac <user@users-MacBook-Pro.local> Date: 星期四, 25 七月 2024 17:25:59 +0800 Subject: [PATCH] 2024年07月25日17:24:45 --- HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs | 474 +++++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 330 insertions(+), 144 deletions(-) diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs index b6334d8..14b8c93 100644 --- a/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs +++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs @@ -10,20 +10,20 @@ { /// <summary> /// 瀹氫箟涓�涓潤鎬佸璞� - /// </summary> - private static LogicMethod logicMethod = null; + /// </summary> + private static LogicMethod s_Current = null; /// <summary> /// 鑾峰彇闈欐�佸璞� /// </summary> - public static LogicMethod CurrLogicMethod + public static LogicMethod Current { get { - if (logicMethod == null) + if (s_Current == null) { return new LogicMethod(); } - return logicMethod; + return s_Current; } } @@ -131,7 +131,7 @@ /// <param name="dic">Dictionary绫�</param> /// <param name="key">鍋�</param> /// <param name="value">鍊�</param> - public void dictionary(Dictionary<string, string> dic, string key, string value) + public void dictionary(Dictionary<string, string> dic, string key, string value) { if (dic.ContainsKey(key)) //鍒ゆ柇鏄惁瀛樺湪閿�� { @@ -148,6 +148,8 @@ public List<HDL_ON.Entity.Room> GetGatewayRoomList() { return HDL_ON.Entity.SpatialInfo.CurrentSpatial.RoomList; + + } /// <summary> /// 鑾峰彇缃戝叧鎴块棿鍒楄〃 @@ -180,7 +182,40 @@ /// <returns></returns> public List<HDL_ON.Entity.Function> GetGatewayDeviceList() { - return Entity.FunctionList.List.GetDeviceFunctionList(); + var list = new List<HDL_ON.Entity.Function>(); + var list1 = Entity.FunctionList.List.GetDeviceFunctionList(); + 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> + /// 鑾峰彇鍙瀵硅璁惧鍒楄〃 + /// </summary> + /// <returns></returns> + public List<HDL_ON.Entity.Function> GetVideoDeviceList() + { + var functionList = new List<Function>(); + foreach (var videoDevice in FunctionList.List.videoIntercom) + { + Function function = new Function(); + function.spk = videoDevice.spk; + function.name = videoDevice.deviceName; + function.deviceId = videoDevice.deviceId; + function.setOnine( videoDevice.status == "online"); + function.sid = videoDevice.sid; + var video = functionList.Find((o) => o.deviceId == function.deviceId); + if (video == null) + { + functionList.Add(function); + } + + } + return functionList; } /// <summary> /// 鑾峰彇鍦烘櫙鍒楄〃 @@ -311,102 +346,39 @@ return roomName.TrimEnd(','); } - #region 鍔ㄤ竴鏀瑰洓 + /// <summary> /// 鑾峰彇璁惧绫诲瀷鍥炬爣 /// </summary> - /// <param name="functionType">璁惧绫诲瀷</param> + /// <param name="device">璁惧</param> /// <returns></returns> - public string GetIconPath(string functionType) + public string GetDeviceIconPath(Function device) { - string strPath = ""; - switch (functionType) + if (SPK.MusicStandard == device.spk + || SPK.AvMusic == device.spk) { - - case SPK.AirSwitch: - { - strPath = "FunctionIcon/Icon/electricalbreaker.png"; - } - break; - case SPK.PanelSocket: - case SPK.ElectricSocket: - { - strPath = "FunctionIcon/Icon/electricalsocket.png"; - } - break; - case SPK.LightSwitch: - case SPK.LightRGB: - case SPK.LightRGBW: - case SPK.LightCCT: - case SPK.LightDimming: - { - strPath = "LogicIcon/lightloguc.png"; - } - break; - case SPK.CurtainSwitch: - case SPK.CurtainRoller: - case SPK.CurtainTrietex: - case SPK.CurtainDream: - { - strPath = "LogicIcon/curtainlogic.png"; - } - break; - case SPK.AcStandard: - case SPK.HvacAC: - { - strPath = "LogicIcon/airconditionerlogic.png"; - } - break; - case SPK.HvacCac: - strPath = "FunctionIcon/Icon/hvaccac.png"; - break; - case SPK.FloorHeatStandard: - case SPK.HvacFloorHeat: - { - strPath = "LogicIcon/heatlogic.png"; - } - break; - case SPK.AirFreshStandard: - case SPK.HvacAirFresh: - { - strPath = "LogicIcon/heatlogic.png"; - } - break; - case SPK.SensorSmoke: - case SPK.SensorWater: - case SPK.SensorGas: - case SPK.SensorDryContact: - case SPK.SensorDryContact2: - case SPK.SensorShanLan: - case SPK.SensorDuiShe: - case SPK.SensorPir: - case SPK.SensorDoorWindow: - case SPK.SensorUtrasonic: - case SPK.SenesorMegahealth: - case SPK.SenesorMegahealth2: - case SPK.SensorEnvironment: - case SPK.SensorEnvironment2: - case SPK.SensorEnvironment3: - case SPK.SensorTemperature: - case SPK.SensorHumidity: - case SPK.SensorCO2: - case SPK.SensorPm25: - case SPK.SensorTVOC: - case SPK.SensorHcho: - case SPK.SensorHelp: - { - strPath = "LogicIcon/sensor.png"; - } - break; - case SPK.DoorLock: - { - strPath = "FunctionIcon/DoorLock/DoorLock.png"; - } - break; - + return "MusicIcon/localMusic.png"; } - return strPath; + 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"; + } + else if (SPK.ElectricalTvHisense == device.spk) + { + return "LogicIcon/electricaltvhisense.png"; + } + return $"FunctionIcon/Icon/{device.IconName}.png"; + } + + #region 鍔ㄤ竴鏀逛笁 /// <summary> /// 璁惧绫诲瀷鐨勫垪琛�(鐏厜绫伙紝绐楀笜绫汇�傘�傘��) /// </summary> @@ -416,6 +388,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 @@ -423,6 +404,7 @@ || device.spk == SPK.LightCCT || device.spk == SPK.LightRGB || device.spk == SPK.LightRGBW + || device.spk == SPK.OtherCommon ); if (lightjosn != null) { @@ -440,7 +422,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)); @@ -468,9 +450,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 @@ -480,6 +463,9 @@ || device.spk == SPK.SensorTVOC || device.spk == SPK.SensorHcho || device.spk == SPK.SensorHelp + || device.spk == SPK.SensorPm10 + || device.spk == SPK.SensorPirHold + || device.spk == SPK.SensorLight ); if (sensor != null) { @@ -490,16 +476,44 @@ device.spk == SPK.AirSwitch || device.spk == SPK.PanelSocket || device.spk == SPK.ElectricSocket + || device.spk == SPK.ElectricalTvHisense ); if (electric != null) { 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)); + } + ///闊充箰绫� + var music = deviceList.Find((device) => device.spk == SPK.MusicStandard || device.spk == SPK.AvMusic); + if (music != null) + { + deviceStrTypeList.Add(Language.StringByID(StringId.Music)); + } + ///鍙瀵硅 + var doorgate = deviceList.Find((device) => device.spk == SPK.doorgate); + if (doorgate != null) + { + 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; @@ -512,6 +526,7 @@ public List<string> GetDeviceTypeFunctionList(string deviceType) { List<string> functionTypeList = new List<string>(); + ///鐏厜绫� if (deviceType == Language.StringByID(StringId.Lights)) { @@ -523,6 +538,12 @@ functionTypeList.Add(SPK.AirSwitch); functionTypeList.Add(SPK.PanelSocket); functionTypeList.Add(SPK.ElectricSocket); + functionTypeList.Add(SPK.OtherCommon); + } + //缇ゆ帶 + else if (deviceType == Language.StringByID(StringId.GroupControl)) + { + functionTypeList.Add(SPK.GroupControl); } ///绐楀笜绫� else if (deviceType == Language.StringByID(StringId.Curtain)) @@ -538,6 +559,7 @@ functionTypeList.Add(SPK.AcStandard); functionTypeList.Add(SPK.HvacAC); functionTypeList.Add(SPK.HvacCac); + functionTypeList.Add(SPK.AcIr); } ///鍦版殩绫� else if (deviceType == Language.StringByID(StringId.FloorHeating)) @@ -561,9 +583,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); @@ -573,6 +596,9 @@ functionTypeList.Add(SPK.SensorTVOC); functionTypeList.Add(SPK.SensorHcho); functionTypeList.Add(SPK.SensorHelp); + functionTypeList.Add(SPK.SensorPm10); + functionTypeList.Add(SPK.SensorPirHold); + functionTypeList.Add(SPK.SensorLight); } @@ -582,14 +608,43 @@ functionTypeList.Add(SPK.AirSwitch); functionTypeList.Add(SPK.PanelSocket); functionTypeList.Add(SPK.ElectricSocket); + functionTypeList.Add(SPK.ElectricalTvHisense); } ///闂ㄩ攣绫� else if (deviceType == Language.StringByID(StringId.DoorLock)) { - functionTypeList.Add(SPK.DoorLock); + functionTypeList.Add(SPK.DoorLock); + functionTypeList.Add(SPK.VideoDoorLock); + } + ///闊充箰绫� + else if (deviceType == Language.StringByID(StringId.Music)) + { + functionTypeList.Add(SPK.MusicStandard); + functionTypeList.Add(SPK.AvMusic); + } + ///HDL鍙瀵硅 + else if (deviceType == Language.StringByID(StringId.VideoIntercom)) + { + 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); @@ -603,6 +658,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); @@ -617,9 +673,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); @@ -634,6 +691,20 @@ functionTypeList.Add(SPK.HvacCac); functionTypeList.Add(SPK.SensorHelp); functionTypeList.Add(SPK.DoorLock); + functionTypeList.Add(SPK.CurtainDream); + 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); + functionTypeList.Add(SPK.ElectricalTvHisense); + functionTypeList.Add(SPK.SensorLight); + functionTypeList.Add(SPK.OtherCommon); + } @@ -651,6 +722,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); @@ -659,7 +732,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); @@ -671,9 +744,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); @@ -688,11 +762,19 @@ deviceTypeList.Add(SPK.HvacCac); deviceTypeList.Add(SPK.SensorHelp); deviceTypeList.Add(SPK.DoorLock); + 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); + deviceTypeList.Add(SPK.SensorLight); } break; case target_if: { + deviceTypeList.Add(SPK.GroupControl); deviceTypeList.Add(SPK.LightSwitch); deviceTypeList.Add(SPK.LightRGB); deviceTypeList.Add(SPK.LightRGBW); @@ -701,13 +783,19 @@ 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); deviceTypeList.Add(SPK.PanelSocket); deviceTypeList.Add(SPK.ElectricSocket); deviceTypeList.Add(SPK.CurtainDream); + deviceTypeList.Add(SPK.MusicStandard); + deviceTypeList.Add(SPK.AvMusic); + deviceTypeList.Add(SPK.MechanicalArm); + deviceTypeList.Add(SPK.AcIr); + deviceTypeList.Add(SPK.ElectricalTvHisense); + deviceTypeList.Add(SPK.OtherCommon); } break; } @@ -744,15 +832,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 { @@ -783,6 +871,63 @@ get { return Entity.DB_ResidenceData.Instance.CurrentRegion.isOtherShare; + } + } + /// <summary> + /// 鎷兼帴鏃堕棿鏍煎紡//"{h}h{m}min{s}s"; + /// </summary> + /// <param name="totalSeconds">绉�(娌℃湁榛樿浼犲叆0)</param> + /// <returns></returns> + public string getTimeStr(string totalSeconds) + { + try + { + if (string.IsNullOrEmpty(totalSeconds)) + { + return ""; + } + int time = int.Parse(totalSeconds); + int h = time / (60 * 60); + int m = time % (60 * 60) / 60; + int s = (time % (60 * 60) % 60); + + if (h == 0 && m != 0 && s != 0) + { + return $"{m}min{s}s"; + } + else if (h == 0 && m == 0 && s != 0) + { + return $"{s}s"; + } + else if (h == 0 && m != 0 && s == 0) + { + return $"{m}min"; + } + else if (h != 0 && m == 0 && s != 0) + { + return $"{h}h{s}s"; + } + else if (h != 0 && m == 0 && s == 0) + { + return $"{h}h"; + } + else if (h != 0 && m != 0 && s == 0) + { + return $"{h}h{m}min"; + } + else if (h != 0 && m != 0 && s != 0) + { + return $"{h}h{m}min{s}s"; + } + else if (h == 0 && m == 0 && s == 0) + { + return $"0s"; + } + return ""; + } + catch + { + return ""; } } @@ -935,63 +1080,62 @@ //涓嶆槸涓昏处鍙风洿鎺ヨ繑鍥� return; } - List<LogicData> logicDataList = new List<LogicData>(); + List<LogicIdData> logicDataList = new List<LogicIdData>(); logicDataList.Clear(); System.Threading.Tasks.Task.Run(() => { try { - //鑾峰彇閫昏緫ID鍒楄〃锛岀洰鍓嶉拡瀵规墍鏈�<澶囨敞:濡傛灉鍙拡瀵瑰綋鍓嶆墜鏈虹殑璇濓紝鍙互鐩存帴鎷跨紦瀛樻暟鎹嚜鍔ㄥ寲鍒楄〃閬嶅巻> - var idStr = Send.GetLogicIdList(); - if (idStr.Code == "0" && idStr.Data != null && idStr.Data.ToString() != "") + //鑾峰彇閫昏緫ID鍒楄〃锛岀洰鍓嶉拡瀵规墍鏈�<澶囨敞:濡傛灉鍙拡瀵瑰綋鍓嶆墜鏈虹殑璇濓紝鍙互鐩存帴鎷跨紦瀛樻暟鎹嚜鍔ㄥ寲鍒楄〃閬嶅巻> + var idStrList = Send.Current.GetLogicIdList(); + if (idStrList != null) { - var date = Newtonsoft.Json.JsonConvert.SerializeObject(idStr.Data); - logicDataList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<LogicData>>(date); + logicDataList.AddRange(idStrList); } - ///鏈夎嚜鍔ㄥ垪琛ㄦ墠澶勭悊 - if (logicDataList.Count > 0) + ///鏈夎嚜鍔ㄥ垪琛ㄦ墠澶勭悊 + if (logicDataList.Count > 0) { - ///閬嶅巻鎵�鏈夊垪琛� - for (int i = 0; i < logicDataList.Count; i++) + ///閬嶅巻鎵�鏈夊垪琛� + for (int i = 0; i < logicDataList.Count; i++) { var logicDate = logicDataList[i]; - ///鑷姩鍖栨病鏈夐厤缃湴鐞嗗洿鏍忎笉澶勭悊 - if (string.IsNullOrEmpty(logicDate.geo_fence.latitude) || string.IsNullOrEmpty(logicDate.geo_fence.longitude)) + ///鑷姩鍖栨病鏈夐厤缃湴鐞嗗洿鏍忎笉澶勭悊 + if (string.IsNullOrEmpty(logicDate.geo_fence.latitude) || string.IsNullOrEmpty(logicDate.geo_fence.longitude)) { - //缁忕含搴︿负绌�,璁や负鑷姩鍖栨病鏈夐厤缃湴鐞嗗洿鏍忥紝涓嶅鐞�; - continue; + //缁忕含搴︿负绌�,璁や负鑷姩鍖栨病鏈夐厤缃湴鐞嗗洿鏍忥紝涓嶅鐞�; + continue; } - //鑷姩鍖栭厤缃緭鍏ユ潯浠剁含搴� - double lat = Convert.ToDouble(logicDate.geo_fence.latitude.Replace(",", ".")); - //鑷姩鍖栭厤缃緭鍏ユ潯浠剁粡搴� - double lon = Convert.ToDouble(logicDate.geo_fence.longitude.Replace(",", ".")); - //鑷姩鍖栭厤缃緭鍏ユ潯浠�<鍦扮悊鍥存爮鍗婂緞><鍗曚綅锛屽叕閲屻�佸崈绫�.绫�> - int radius = int.Parse(logicDate.geo_fence.radius); - //璁$畻2涓粡绾害涔嬮棿鐨勮窛绂� - int r = Infrastructure.Service.Helper.CalculatedDistance.Distance(out_lat, out_lng, lat, lon); - //瀹氫箟涓�涓眬閮ㄥ彉閲� - string direction = string.Empty; - //涓ょ偣璺濈灏忎簬閰嶇疆璺濈<鏃㈣嚜鍔ㄥ寲閰嶇疆杈撳叆鏉′欢鍦扮悊鍥存爮鍗婂緞>,璇存槑杩涘叆鍖哄煙 - if (r < radius) + //鑷姩鍖栭厤缃緭鍏ユ潯浠剁含搴� + double lat = Convert.ToDouble(logicDate.geo_fence.latitude.Replace(",", ".")); + //鑷姩鍖栭厤缃緭鍏ユ潯浠剁粡搴� + double lon = Convert.ToDouble(logicDate.geo_fence.longitude.Replace(",", ".")); + //鑷姩鍖栭厤缃緭鍏ユ潯浠�<鍦扮悊鍥存爮鍗婂緞><鍗曚綅锛屽叕閲屻�佸崈绫�.绫�> + int radius = int.Parse(logicDate.geo_fence.radius); + //璁$畻2涓粡绾害涔嬮棿鐨勮窛绂� + int r = Infrastructure.Service.Helper.CalculatedDistance.Distance(out_lat, out_lng, lat, lon); + //瀹氫箟涓�涓眬閮ㄥ彉閲� + string direction = string.Empty; + //涓ょ偣璺濈灏忎簬閰嶇疆璺濈<鏃㈣嚜鍔ㄥ寲閰嶇疆杈撳叆鏉′欢鍦扮悊鍥存爮鍗婂緞>,璇存槑杩涘叆鍖哄煙 + if (r * 1000 < radius) { - //鍒拌揪鏌愬湴 - direction = "arrive"; + //鍒拌揪鏌愬湴 + direction = "arrive"; } else { - //绂诲紑 - direction = "leave"; + //绂诲紑 + direction = "leave"; } - ///閬嶅巻缂撳瓨鍒楄〃<涓嶄负绌鸿鏄庢暟鎹凡缁忔帹閫佽繃锛屼笉鍐嶆帹閫�> - var isPush = pushList.Find((o) => o.homeId == HomeId && o.userId == UserInfo.Current.ID && o.userLogicId == logicDate.userLogicId && o.arriveOnLeave == direction); + ///閬嶅巻缂撳瓨鍒楄〃<涓嶄负绌鸿鏄庢暟鎹凡缁忔帹閫佽繃锛屼笉鍐嶆帹閫�> + var isPush = pushList.Find((o) => o.homeId == HomeId && o.userId == UserInfo.Current.ID && o.userLogicId == logicDate.userLogicId && o.arriveOnLeave == direction); if (isPush == null) { - //鎺ㄩ�佺粰浜戠鏄惁鎴愬姛 - bool push = Send.GeoFenceStateReport(logicDate.userLogicId, logicDate.sid, direction); + //鎺ㄩ�佺粰浜戠鏄惁鎴愬姛 + bool push = Send.Current.GetFenceStateReport(logicDate.userLogicId, logicDate.sid, direction); if (push) { - ///娣诲姞鍒版帹閫佸垪琛� - pushList.Add(new Push + ///娣诲姞鍒版帹閫佸垪琛� + pushList.Add(new Push { homeId = HomeId, userId = UserInfo.Current.ID, @@ -1012,6 +1156,48 @@ /// 鎺ㄩ�佸垪琛�<杩欓噷鏁版嵁宸茬粡鎺ㄩ�佽繃> /// </summary> private static List<Push> pushList = new List<Push>(); + /// <summary> + /// 鑾峰彇妯℃嫙鐨勮澶囧垪琛� + /// </summary> + /// <param name="isBool">鏄惁寮�鍚�</param> + /// <returns></returns> + private List<Entity.Function> GetTestDevice(ref List<HDL_ON.Entity.Function> list, bool isBool) + { + if (isBool) + { + //妯℃嫙璁惧 + var functions = new List<Function> { + new Entity.Function { sid = "1234567890", name = "鍏夌収浼犳劅鍣�", spk = Entity.SPK.SensorLight }, + new Entity.Function { sid = "1234567891", name = "骞茶妭鐐�", spk = Entity.SPK.SensorDryContact }, + new Entity.Function { sid = "1234567892", name = "绱ф�ユ眰鍔╀紶鎰熷櫒", spk = Entity.SPK.SensorHelp }, + new Entity.Function { sid = "12345678921", name = "閫氱敤寮�鍏�", spk = Entity.SPK.OtherCommon }, + //new Entity.Function { sid = "12345678933456", name = "闂ㄩ攣", spk = Entity.SPK.DoorLock }, + // new Entity.Function { sid = "1234567895444", name = "瑙嗛闂ㄩ攣", spk = Entity.SPK.VideoDoorLock }, + new Entity.Function { sid = "123456789688889", 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 }, + new Function { spk = SPK.ElectricalTvHisense, name = "娴蜂俊鐢佃1",sid="123456789"}, + }; + foreach (var function in functions) + { + var device = list.Find((o) => { return o.sid == function.sid; }); + if (device == null) + { + list.Add(function); + } + } + + } + return list; + + } } public class Push -- Gitblit v1.8.0