wxr
2024-08-27 bfb3d0d4879dca8c59ff287c92f5113162f3a33a
OnPro/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
@@ -2,7 +2,8 @@
using Shared;
using System.Collections.Generic;
using HDL_ON.Entity;
using HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock;
using Newtonsoft.Json;
namespace HDL_ON.UI.UI2.Intelligence.Automation
{
@@ -59,6 +60,7 @@
        public void Show(Entity.Function device, int index, bool edit)
        {
            this.function = device;
            this.mEdit = edit;
            this.mIndex = index;
@@ -236,7 +238,7 @@
                                    int h = time / (60 * 60);
                                    int m = time % (60 * 60) / 60;
                                    int s = (time % (60 * 60) % 60);
                                    view2.btnState.Text = inputs.hold_time + "s";
                                    view2.btnState.Text = LogicMethod.Current.getTimeStr(inputs.hold_time);
                                    view2.btnState.Name = h + ":" + m + ":" + s;
                                    this.hold_time = inputs.hold_time;
                                }
@@ -255,6 +257,22 @@
                        view.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            DeviceView(device, view.btnState, StringId.kaiqi, StringId.bihe);
                        };
                        if (edit)
                        {
                            GetEditState(device, index, view.btnState, null, null, null);
                        }
                    }
                    break;
                //紧急呼叫传感器
                case SPK.SensorHelp:
                    {
                        LogicView.FunTypeView view = new LogicView.FunTypeView();
                        view.btnText.TextID = StringId.qiujiu;
                        fLayout.AddChidren(view.FLayoutView());
                        view.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            DeviceView(device, view.btnState, StringId.qiujiu, StringId.zhengchang,1);
                        };
                        if (edit)
                        {
@@ -605,60 +623,6 @@
                        }
                    }
                    break;
                //可视对讲
                case SPK.doorgate:
                    {
                        LogicView.FunTypeView view1 = new LogicView.FunTypeView();
                        view1.btnText.TextID = StringId.shipintonghuahujiao;
                        view1.btnText.Name = Language.StringByID(StringId.shipintonghuahujiao);
                        fLayout.AddChidren(view1.FLayoutView());
                        view1.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            this.identifier = "door_call_cloud_event";
                            this.DeviceView(device, view1.btnState, StringId.shi, StringId.offLogic, 1);
                        };
                        LogicView.FunTypeView view2 = new LogicView.FunTypeView();
                        view2.frameLayout.Y = view1.frameLayout.Bottom;
                        view2.btnText.TextID = StringId.renliankaimen;
                        fLayout.AddChidren(view2.FLayoutView());
                        view2.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            this.identifier = "door_pedestrian_records";
                            this.FaceAction(this, device, view2.btnState);
                        };
                        int intValue = 0;
                        if (edit)
                        {
                            Input inputs = Logic.currlogic.input[index];
                            if (inputs.identifier == "door_call_cloud_event")
                            {
                                intValue = 1;
                            }
                            else
                            {
                                intValue = 2;
                            }
                        }
                        if (intValue == 1)
                        {
                            view2.frameLayout.Visible = false;
                        }
                        else if (intValue == 2)
                        {
                            view2.frameLayout.Y = Application.GetRealHeight(0);
                        }
                        if (edit)
                        {
                            this.GetEditState(device, index, view1.btnState, view2.btnState, null, null);
                        }
                    }
                    break;
                //大华摄像头
                case SPK.IpCam_Imou:
                    {
@@ -675,24 +639,6 @@
                        if (edit)
                        {
                            this.GetEditState(device, index, view.btnState, null, null, null);
                        }
                    }
                    break;
                //萤石视频门锁
                case SPK.VideoDoorLock:
                    {
                        LogicView.FunTypeView view1 = new LogicView.FunTypeView();
                        view1.btnText.TextID=StringId.kaimenrenyuan;
                        view1.btnText.Name = Language.StringByID(StringId.shipinmensuo);
                        fLayout.AddChidren(view1.FLayoutView());
                        view1.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            this.identifier = "open_door";//开锁事件
                            this.VideoDoorLockAction(this, device, view1.btnState);
                        };
                        if (edit)
                        {
                            this.GetEditState(device, index, view1.btnState,null, null, null);
                        }
                    }
                    break;
@@ -798,6 +744,7 @@
                    ////萤石视频门锁
                    inputDevice.condition_type = "9";
                    inputDevice.identifier = this.identifier;
                    //inputDevice.condition = new List<Dictionary<string, string>>();
                }
                else if (device.spk == SPK.SensorPirHold)
                {
@@ -855,7 +802,7 @@
        /// <param name="button">选中状态显示文本Btn控件</param>
        /// <param name="btnText1">属性状态值文本1</param>
        /// <param name="btnText2">属性状态值文本2</param>
        /// <param name="viewCount">view数量</param>
        /// <param name="viewCount">view数量,默认2个view</param>
        private void DeviceView(Entity.Function device, Button button, int btnText1, int btnText2,int viewCount=2)
        {
            FrameLayout frame = new FrameLayout { BackgroundColor = CSS.CSS_Color.viewTrans60lucence };
@@ -872,6 +819,7 @@
                    case SPK.SensorGas:
                    case SPK.SensorWater:
                    case SPK.SensorSmoke:
                    case SPK.SensorHelp:
                        {
                            keyVlaue = "status";
                            if (!Is_SpkAttribute(keyVlaue)) {
@@ -942,12 +890,14 @@
                {
                    case StringId.xieluo:
                    case StringId.luoshui:
                    case StringId.qiujiu:
                        {
                            value = "alarm";
                        }
                        break;
                    case StringId.wuxieluo:
                    case StringId.wuluoshui:
                    case StringId.zhengchang:
                        {
                            value = "normal";
                        }
@@ -955,11 +905,19 @@
                    case StringId.onLogic:
                        {
                            value = "on";
                            if (device.spk== SPK.SensorDryContact) {
                                value = "open";
                            }
                        }
                        break;
                    case StringId.offLogic:
                        {
                            value = "off";
                            if (device.spk == SPK.SensorDryContact)
                            {
                                value = "close";
                            }
                        }
                        break;
                    case StringId.youren:
@@ -1059,6 +1017,7 @@
        {
            if (edit)
            {
                this.function = device;
                Input inputs = Logic.currlogic.input[index];
                //清除之前旧数据
                dicSateteList.Clear();
@@ -1068,44 +1027,53 @@
                    dicSateteList.AddRange(inputs.condition);
                }
            }
            int max = 100;
            int min = 1;
            if (device.spk == SPK.SensorLight)
            {
                //照明传感器
                min = 0;
                max =1200;
            }
            new LogicView.TipPopView { }.InputBox(textInt, stateValue, (value) =>
            {
                string keyValue = "20";
                string key = "20";
                string data_type = "integer";
                string comparator = "=";
                switch (textInt)
                {
                    case StringId.wendugaoyu:
                        {
                            keyValue = "temperature";
                            key = "temperature";
                            comparator = ">";
                            data_type = "float";
                        }
                        break;
                    case StringId.wendudiyu:
                        {
                            keyValue = "temperature";
                            key = "temperature";
                            comparator = "<";
                            data_type = "float";
                        }
                        break;
                    case StringId.shidugaoyu:
                        {
                            keyValue = "humidity";
                            key = "humidity";
                            comparator = ">";
                        }
                        break;
                    case StringId.shidudiyu:
                        {
                            keyValue = "humidity";
                            key = "humidity";
                            comparator = "<";
                        }
                        break;
                }
                selectedState = device.spk + "_" + value;
                AddDictionary(keyValue, value, data_type, comparator);
                AddDictionary(key, value, data_type, comparator);
                SaveInput(device,index, edit);
            });
            },min,max);
        }
        /// PM2.5,Co2,Tvoc设置值
        /// </summary>
@@ -1167,142 +1135,6 @@
               });
        }
        /// <summary>
        /// 可视对讲专用
        /// </summary>
        /// <param name="frame">当前界面</param>
        /// <param name="device">当前设备</param>
        /// <param name="btnState">旧状态</param>
        public void FaceAction(FrameLayout frame, Entity.Function device, Button btnState)
        {
            selectedState = device.spk + "_";
            Loading loading = new Loading();
            frame.AddChidren(loading);
            loading.Start();
            CommonMethod.Current.SunThread(() =>
            {
                try
                {
                    var faceIdList = Send.Current.GetListHomeFace(device.deviceId, true);
                    CommonMethod.Current.MainThread(() =>
                    {
                        loading.Hide();
                        string stateValue = btnState.Tag == null ? "" : btnState.Tag.ToString();
                        PublicInterface publicInterface = new PublicInterface();
                        publicInterface.MultiSelectShow(this, faceIdList, device.name, stateValue, (indexeList) =>
                     {
                         if (indexeList.Count > 0)
                         {
                             dicSateteList.Clear();
                             string s = string.Empty;
                             string tag = string.Empty;
                             //数据封装
                             AddDictionary("open_type", "1", "integer");
                             for (int i = 0; i < indexeList.Count; i++)
                             {
                                 if (i > faceIdList.Count)
                                 {
                                     continue;
                                 }
                                 var indexe = indexeList[i];
                                 var face = faceIdList[indexe];
                                 AddDictionary("user_id", face.userId, "string");
                                 s += face.userName;
                                 s += ",";
                                 tag += face.userId;
                                 tag += "_";
                             }
                             //界面显示选中值
                             btnState.Text = s;
                             btnState.Tag = tag;
                         }
                     });
                    });
                }
                catch { }
                finally
                {
                    Application.RunOnMainThread(() =>
                    {
                        loading.Hide();
                    });
                }
            });
        }
        /// <summary>
        /// 萤石视频门锁专用
        /// </summary>
        /// <param name="frame">当前界面</param>
        /// <param name="device">当前设备</param>
        /// <param name="btnState">旧状态</param>
        public void VideoDoorLockAction(FrameLayout frame, Entity.Function device, Button btnState)
        {
            selectedState = device.spk + "_";
            Loading loading = new Loading();
            frame.AddChidren(loading);
            loading.Start();
            CommonMethod.Current.SunThread(() =>
            {
                try
                {
                    var faceIdList = Send.Current.GetVideoDoorLockUserListInfo(device);
                    CommonMethod.Current.MainThread(() =>
                    {
                        loading.Hide();
                        string stateValue = btnState.Text == null ? "" : btnState.Text.ToString();
                        PublicInterface publicInterface = new PublicInterface();
                        publicInterface.MultiSelectShow(this, faceIdList, device.name, stateValue, (indexeList) =>
                        {
                            if (indexeList.Count > 0)
                            {
                                dicSateteList.Clear();
                                string s = string.Empty;
                                string tag = string.Empty;
                                for (int i = 0; i < indexeList.Count; i++)
                                {
                                    if (i > faceIdList.Count)
                                    {
                                        continue;
                                    }
                                    var indexe = indexeList[i];
                                    var face = faceIdList[indexe];
                                    //数据封装<高胜说萤石那边是推送用户名>
                                    AddDictionary("open_user", face.userName, "string");
                                    s += face.userName;
                                    s += ",";
                                    tag += face.userId;
                                    tag += "_";
                                }
                                //界面显示选中值
                                btnState.Text = s;
                                btnState.Tag = tag;
                            }
                        });
                    });
                }
                catch { }
                finally
                {
                    Application.RunOnMainThread(() =>
                    {
                        loading.Hide();
                    });
                }
            });
        }
        /// <summary>
        /// 时间方法
        /// </summary>
        /// <param name="fLayout">在哪个界面显示</param>
@@ -1327,7 +1159,7 @@
                        this.hold_time = (h + m + s).ToString();
                        if (button != null)
                        {
                            button.Text = this.hold_time + "s";
                            button.Text = LogicMethod.Current.getTimeStr(this.hold_time);
                            button.Name = timeValue;
                        }
                        selectedState = device.spk + "_" + timeValue;
@@ -1502,6 +1334,10 @@
        /// <returns></returns>
        private bool CheckSpk()
        {
            if (this.function == null)
            {
                return false;
            }
            if (this.function.spk == SPK.VideoDoorLock ||
               this.function.spk == SPK.doorgate
                )
@@ -1510,7 +1346,7 @@
            }
            return false;
        }
        }
        /// <summary>
        /// 判断dictionaryB是否完整包含另一个dictionaryA
        /// </summary>