黄学彪
2020-11-19 9ef48d7b2da7c408b53f73be0f6eef3cbac1c84a
ZigbeeApp/Shared/Phone/TemplateData/TemplateCommonLogic.cs
@@ -366,7 +366,18 @@
            else if (strData == "#DeviceInfo END#")
            {
                //反序列化设备
                var device = CommonDevice.CommonDeviceByByteString(deviceType, this.strTempContentData);
                CommonDevice device = null;
                if (HdlCheckLogic.Current.CheckIsNumber(deviceType) == true)
                {
                    //数值型为新数据,直接转换
                    device = CommonDevice.CommonDeviceByByteString(Convert.ToInt32(deviceType), this.strTempContentData);
                }
                else
                {
                    //字符串型为旧数据,需要特殊处理
                    var myType = (DeviceType)Enum.Parse(typeof(DeviceType), deviceType);
                    device = CommonDevice.CommonDeviceByByteString((int)myType, this.strTempContentData);
                }
                if (device != null)
                {
                    if (this.modelData.dicDeviceInfo.ContainsKey(device.DeviceAddr) == false)
@@ -627,6 +638,7 @@
                    //本地备份保存成功
                    this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.SaveLocalBackDataSuccess));
                }
                ProgressFormBar.Current.Close();
            });
        }
@@ -711,6 +723,7 @@
                    {
                        var homeInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<TemplateHomeInfo>(homeData);
                        myModel.ListUintContent.AddRange(homeInfo.ListUintContent);
                        myModel.ListUintName.AddRange(homeInfo.ListUintName);
                        myModel.ResidenceAddressName = homeInfo.ResidenceAddressName;
                    }
                }
@@ -775,6 +788,15 @@
        public string GetNewTemplateFileName()
        {
            return "ModelData_Local_" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + ".bin";
        }
        /// <summary>
        /// 获取一个新的模板保存文件名
        /// </summary>
        /// <returns></returns>
        public string GetNewTemplateFileName(DateTime dateTime)
        {
            return "ModelData_Local_" + dateTime.ToString("yyyyMMdd_HHmmss") + ".bin";
        }
        #endregion
@@ -1047,7 +1069,6 @@
            var modelData = new LocalModelBaseInfo();
            modelData.EditorTime = DateTime.Now.ToString("yyyy.MM.dd HH:mm");
            modelData.ModelName = backUpName;
            modelData.ListUintContent.AddRange(Common.Config.Instance.Home.ListUintContent);
            modelData.FloorCount = Common.Config.Instance.Home.FloorDics.Count;
            modelData.DeviceCount = this.modelData.dicDeviceTemplateData.Count;
            //功能数
@@ -1076,6 +1097,7 @@
        {
            var homeData = new TemplateHomeInfo();
            homeData.ResidenceAddressName = Common.Config.Instance.Home.ResidenceAddressName;
            homeData.ListUintName.AddRange(Common.Config.Instance.Home.ListUintName);
            homeData.ListUintContent.AddRange(Common.Config.Instance.Home.ListUintContent);
            writeText += "#START#\r\n";
@@ -1113,7 +1135,7 @@
            foreach (var device in listDevice)
            {
                //设备端点
                writeText += "#DeviceInfo START#" + device.Type.ToString() + "\r\n";
                writeText += "#DeviceInfo START#" + (int)device.Type + "\r\n";
                string dataInfo = Newtonsoft.Json.JsonConvert.SerializeObject(device);
                writeText += dataInfo + "\r\n";
                writeText += "#DeviceInfo END#\r\n\r\n";
@@ -1125,7 +1147,7 @@
                    var otaDevice = Common.LocalDevice.Current.GetOTADevice(device.DeviceAddr);
                    if (otaDevice != null)
                    {
                        writeText += "#DeviceInfo START#" + otaDevice.Type.ToString() + "\r\n";
                        writeText += "#DeviceInfo START#" + (int)otaDevice.Type + "\r\n";
                        string dataInfo2 = Newtonsoft.Json.JsonConvert.SerializeObject(otaDevice);
                        writeText += dataInfo2 + "\r\n";
                        writeText += "#DeviceInfo END#\r\n\r\n";
@@ -1198,7 +1220,7 @@
                dicRealRoom[gateway.GwId] = gateway.RoomId;
            }
            //获取全部物理设备所属房间的记录
            var dicDeviceRoom = Common.LocalDevice.Current.GetAllRealDeviceRoomData();
            var dicDeviceRoom = HdlRoomLogic.Current.GetAllRealDeviceRoomData();
            foreach (var strMac in dicDeviceRoom.Keys)
            {
                dicRealRoom[strMac] = dicDeviceRoom[strMac];
@@ -1273,6 +1295,12 @@
        {
            //获取本地指定的Mac的全部设备
            var listDevice = Common.LocalDevice.Current.GetDevicesByMac(sourceMac, false);
            var otaDevice = Common.LocalDevice.Current.GetOTADevice(sourceMac);
            if (otaDevice != null)
            {
                //这里ota设备也要加进去,重中之重
                listDevice.Add(otaDevice);
            }
            foreach (var device in listDevice)
            {
@@ -1280,7 +1308,8 @@
                string localDeviceKey = Common.LocalDevice.Current.GetDeviceMainKeys(device);
                string templateDeviceKey = Common.LocalDevice.Current.GetDeviceMainKeys(targetMac, device.DeviceEpoint);
                if (this.modelData.dicDeviceTemplateRoom.ContainsKey(templateDeviceKey) == true)
                if (this.modelData.dicDeviceTemplateRoom.ContainsKey(templateDeviceKey) == true
                    && (device is OTADevice) == false)
                {
                    //如果模板里面,这个端点设置有房间的话
                    HdlRoomLogic.Current.ChangedRoom(device, this.modelData.dicDeviceTemplateRoom[templateDeviceKey], false);
@@ -1324,7 +1353,7 @@
            //更改物理设备所在的房间
            if (this.modelData.dicDeviceTemplateRealRoom.ContainsKey(targetMac) == true)
            {
                Common.LocalDevice.Current.SaveRealDeviceRoomId(listDevice, this.modelData.dicDeviceTemplateRealRoom[targetMac], false);
                HdlRoomLogic.Current.SaveRealDeviceRoomId(listDevice, this.modelData.dicDeviceTemplateRealRoom[targetMac], false);
            }
            //记录缓存
@@ -1467,7 +1496,7 @@
            //变更网关房间
            if (this.modelData.dicDeviceTemplateRealRoom.ContainsKey(targetGwid) == true)
            {
                HdlGatewayLogic.Current.ChangedGatewayRoom(sourceGwid, this.modelData.dicDeviceTemplateRealRoom[targetGwid]);
                HdlRoomLogic.Current.ChangedGatewayRoom(sourceGwid, this.modelData.dicDeviceTemplateRealRoom[targetGwid]);
            }
            //变更网关名字
            //if (this.modelData.dicGatewayInfo.ContainsKey(targetGwid) == true)
@@ -1690,7 +1719,7 @@
            //保存路径
            string saveFile = DirNameResourse.LocalTemplateDirectory;
            saveFile = System.IO.Path.Combine(saveFile, mainkey);
            saveFile = System.IO.Path.Combine(saveFile, "Device_" + mainkey);
            var listData = this.modelData.dicDeviceTemplateData[mainkey];
            if (listData.Count == 0)