mac
2024-07-25 f9181a9c8125136f597add7c30cb2ff508d54ba7
HDL_ON/UI/UI2/4-PersonalCenter/CombinedDimming/AddGroupControlPage.cs
@@ -2,6 +2,7 @@
using System;
using System.Collections.Generic;
using System.Threading;
using HDL_ON.Common;
using HDL_ON.DAL.Server;
using HDL_ON.DriverLayer;
using HDL_ON.Entity;
@@ -50,7 +51,8 @@
        /// <summary>
        /// 回调刷新
        /// </summary>
        Action<GroupControl> backActon;
        Action<GroupControl> addActon;
        Action delAction;
        /// <summary>
        /// 是否新增群控
        /// </summary>
@@ -64,7 +66,7 @@
        GroupControlType groupControlType = new GroupControlType();
        public AddGroupControlPage(GroupControl groupControl, Action<GroupControl> action)
        public AddGroupControlPage(GroupControl groupControl, Action<GroupControl> addAction,Action delAction)
        {
            bodyView = this;
            if(groupControl == null)
@@ -78,19 +80,90 @@
                editDataString = Newtonsoft.Json.JsonConvert.SerializeObject(this.groupControl);
            }
            groupControlLightList = new List<Function>();
            backActon = action;
            this.addActon = addAction;
            this.delAction = delAction;
            lightList = FunctionList.List.GetLightList();
        }
        public void LoadPage()
        {
            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
            new TopViewDiv(bodyView, Language.StringByID(StringId.CombinedDimming)).LoadTopView();
            if (isAdd)
            {
                var topView = new TopViewDiv(bodyView, Language.StringByID(StringId.GroupControl));
                topView.maginY = 10;
                topView.LoadTopView();
            }
            else
            {
                var topView = new TopViewDiv(bodyView, "");
                topView.maginY = 10;
                topView.LoadTopView_SettingText(()=> {
                    Action action = () => {
                        var waitPage = new Loading();
                        this.AddChidren(waitPage);
                        waitPage.Start("");
                        new System.Threading.Thread(() =>
                        {
                            try
                            {
                                var pack = ApiUtlis.Ins.HttpRequest.DelGroupControl(groupControl.userDeviceGroupControlId);
                                if (pack != null)
                                {
                                    Application.RunOnMainThread(() =>
                                    {
                                        try
                                        {
                                            if (pack.Code == StateCode.SUCCESS)
                                            {
                                                var delTemp = FunctionList.List.groupControls.Find((obj) => groupControl.sid == obj.sid);
                                                FunctionList.List.groupControls.Remove(delTemp);
                                                //list.Remove(groupControl);
                                                this.RemoveFromParent();
                                                delAction?.Invoke();
                                            }
                                            else
                                            {
                                                IMessageCommon.Current.ShowErrorInfoAlter(pack.Code);
                                            }
                                        }
                                        catch (Exception ex)
                                        {
                                            MainPage.Log($"刷新组控数据异常:{ex.Message}");
                                        }
                                    });
                                }
                            }
                            catch (Exception ex)
                            {
                                MainPage.Log($"删除组控异常:{ex.Message}");
                            }
                            finally
                            {
                                Application.RunOnMainThread(() => {
                                    if (waitPage != null)
                                    {
                                        waitPage.Hide();
                                        waitPage.RemoveFromParent();
                                        waitPage = null;
                                    }
                                });
                            }
                        })
                        { IsBackground = true }.Start();
                    };
                    new PublicAssmebly().TipOptionMsg(StringId.Tip, StringId.DoYouWantDelCombinedDimming, action);
                }, Language.StringByID(StringId.DelGroupControl),true);
            }
            var contentView = new FrameLayout()
            {
                Y = Application.GetRealHeight(64),
                Height = Application.GetRealHeight(667-64),
                Y = Application.GetRealHeight(64+10),
                Height = Application.GetRealHeight(667-64-10),
            };
            bodyView.AddChidren(contentView);
@@ -302,7 +375,7 @@
            functionListView = new VerticalScrolViewLayout()
            {
                Y = Application.GetRealHeight(220),
                Height = Application.GetRealHeight(640 - 12 - 52 - 100 -100),
                Height = Application.GetRealHeight(640 - 12 - 52 - 100 -100-10),
            };
            bodyView.AddChidren(functionListView);
@@ -349,6 +422,7 @@
                        new PublicAssmebly().TipMsg(StringId.Tip, StringId.PlsEntryGroupName);
                        return;
                    }
                    groupControl.name = name;
                    if (groupControlLightList.Count < 2)
                    {
                        new PublicAssmebly().TipMsg(StringId.Tip, StringId.PlsSelectMoreData);
@@ -356,7 +430,6 @@
                    }
                    if (isAdd)
                    {
                        groupControl.name = name;
                        groupControl.sids.Clear();
                        foreach (var light in groupControlLightList)
                        {
@@ -372,90 +445,137 @@
                                MainPage.Log($"新增群控转换数据异常:{ex.Message}");
                            }
                        }
                        try
                        var waitPage = new Loading();
                        bodyView.AddChidren(waitPage);
                        waitPage.Start("");
                        new Thread(() =>
                        {
                            groupControl.type = groupControlType.type;
                            groupControl.sid = groupControl.NewGroupControlSid();
                            var pack = Common.ApiUtlis.Ins.HttpRequest.AddGroupControl(new List<GroupControl>() { groupControl });
                            if (pack != null)
                            try
                            {
                                if (pack.Code == StateCode.SUCCESS)
                                groupControl.type = groupControlType.type;
                                groupControl.sid = groupControl.NewGroupControlSid();
                                var pack = ApiUtlis.Ins.HttpRequest.AddGroupControl(new List<GroupControl>() { groupControl });
                                if (pack != null)
                                {
                                    if (pack.Code == StateCode.SUCCESS)
                                    {
                                        try
                                        {
                                            var addTemp = Newtonsoft.Json.JsonConvert.DeserializeObject<List<GroupControl>>(pack.Data.ToString());
                                            if (addTemp != null && addTemp.Count > 0)
                                                groupControl.userDeviceGroupControlId = addTemp[0].userDeviceGroupControlId;
                                            FunctionList.List.groupControls.Add(groupControl);
                                        }
                                        catch (Exception ex)
                                        {
                                            MainPage.Log($"添加群控异常,转译返回数据失败:{ex.Message}");
                                        }
                                        Application.RunOnMainThread(() =>
                                        {
                                            addActon?.Invoke(groupControl);
                                            this.RemoveFromParent();
                                        });
                                    }
                                    else
                                    {
                                        IMessageCommon.Current.ShowErrorInfoAlter(pack.Code);
                                    }
                                }
                            }
                            catch (Exception ex)
                            {
                                MainPage.Log($"新增群控异常:{ex.Message}");
                            }
                            finally
                            {
                                Application.RunOnMainThread(() => {
                                    try
                                    {
                                        var addTemp = Newtonsoft.Json.JsonConvert.DeserializeObject<List<GroupControl>>(pack.Data.ToString());
                                        if (addTemp != null && addTemp.Count > 0)
                                            groupControl.userDeviceGroupControlId = addTemp[0].userDeviceGroupControlId;
                                        FunctionList.List.groupControls.Add(groupControl);
                                        waitPage.Hide();
                                        waitPage = null;
                                    }
                                    catch (Exception ex)
                                    {
                                        MainPage.Log($"添加群控异常,转译返回数据失败:{ex.Message}");
                                    }
                                    backActon?.Invoke(groupControl);
                                    this.RemoveFromParent();
                                }
                                else
                                {
                                    IMessageCommon.Current.ShowErrorInfoAlter(pack.Code);
                                }
                                    catch { }
                                });
                            }
                        }
                        catch (Exception ex)
                        {
                            MainPage.Log($"新增群控异常:{ex.Message}");
                        }
                        })
                        { IsBackground = true }.Start();
                    }
                    else
                    {
                        try
                        var waitPage = new Loading();
                        bodyView.AddChidren(waitPage);
                        waitPage.Start("");
                        new Thread(() =>
                        {
                            var newEditDataString = Newtonsoft.Json.JsonConvert.SerializeObject(this.groupControl);
                            //没有更新数据则直接退出
                            if (newEditDataString == editDataString)
                            try
                            {
                                this.RemoveFromParent();
                                return;
                            }
                            groupControl.sids.Clear();
                            foreach (var light in groupControlLightList)
                            {
                                try
                                //var newEditDataString = Newtonsoft.Json.JsonConvert.SerializeObject(this.groupControl);
                                //var newEditDataString1 = Newtonsoft.Json.JsonConvert.SerializeObject(groupControlLightList);
                                //var newEditDataString2 = Newtonsoft.Json.JsonConvert.SerializeObject(this.groupControl.sids);
                                ////没有更新数据则直接退出
                                //if (newEditDataString == editDataString && newEditDataString1 == newEditDataString2)
                                //{
                                //    this.RemoveFromParent();
                                //    return;
                                //}
                                groupControl.sids.Clear();
                                foreach (var light in groupControlLightList)
                                {
                                    var gc = new GroupControlFunction();
                                    gc.sid = light.sid;
                                    gc.spk = light.spk;
                                    groupControl.sids.Add(gc);
                                }
                                catch (Exception ex)
                                {
                                    MainPage.Log($"新增群控转换数据异常:{ex.Message}");
                                }
                            }
                            var pack = Common.ApiUtlis.Ins.HttpRequest.EditGroupControl(new List<GroupControl>() { groupControl });
                            if (pack != null)
                            {
                                if (pack.Code == StateCode.SUCCESS)
                                {
                                    var temp = FunctionList.List.groupControls.Find((obj) => obj.userDeviceGroupControlId == groupControl.userDeviceGroupControlId);
                                    if(temp!= null)
                                    try
                                    {
                                        temp = groupControl;
                                        var gc = new GroupControlFunction();
                                        gc.sid = light.sid;
                                        gc.spk = light.spk;
                                        groupControl.sids.Add(gc);
                                    }
                                    backActon?.Invoke(temp);
                                    this.RemoveFromParent();
                                    catch (Exception ex)
                                    {
                                        MainPage.Log($"新增群控转换数据异常:{ex.Message}");
                                    }
                                }
                                else
                                var pack = ApiUtlis.Ins.HttpRequest.EditGroupControl(new List<GroupControl>() { groupControl });
                                if (pack != null)
                                {
                                    IMessageCommon.Current.ShowErrorInfoAlter(pack.Code);
                                    if (pack.Code == StateCode.SUCCESS)
                                    {
                                        var temp = FunctionList.List.groupControls.Find((obj) => obj.userDeviceGroupControlId == groupControl.userDeviceGroupControlId);
                                        if (temp != null)
                                        {
                                            temp = groupControl;
                                        }
                                        Application.RunOnMainThread(() =>
                                        {
                                            addActon?.Invoke(temp);
                                            this.RemoveFromParent();
                                        });
                                    }
                                    else
                                    {
                                        IMessageCommon.Current.ShowErrorInfoAlter(pack.Code);
                                    }
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            MainPage.Log($"编辑群控异常:{ex.Message}");
                        }
                            catch (Exception ex)
                            {
                                MainPage.Log($"编辑群控异常:{ex.Message}");
                            }
                            finally
                            {
                                Application.RunOnMainThread(() =>
                                {
                                    try
                                    {
                                        waitPage.Hide();
                                        waitPage = null;
                                    }
                                    catch { }
                                });
                            }
                        })
                        { IsBackground = true }.Start();
                    }
                }
@@ -481,6 +601,12 @@
                                var groupControlTypes = Newtonsoft.Json.JsonConvert.DeserializeObject<List<GroupControlType>>(pack.Data.ToString());
                                if (groupControlTypes != null && groupControlTypes.Count > 0)
                                {
                                    //groupControlType = new GroupControlType {
                                    //      type = "LIGHT",
                                    //        typeName ="灯光控制",
                                    //        spks = new List<string> { "light.switch" },
                                    //         spkAttrs = new List<string> { "on_off" }
                                    //};
                                    groupControlType = groupControlTypes[0];
                                    Application.RunOnMainThread(() => {
                                        LoadLightRow(lightList);