Example #1
0
        /// <summary>
        /// 获取设备
        /// </summary>
        /// <param name="parameter"></param>
        public void SelectDoorDevice(object parameter)
        {
            if (string.IsNullOrEmpty(FilePath))
            {
                Notice.Show("请选择Smartdoor安装目录的para文件夹!.", "通知", 3, MessageBoxIcon.Warning);
                return;
            }

            UInt32 deviceID = curDoorServer.deviceID;

            if (deviceID == 0)
            {
                Notice.Show("请选择门禁服务!.", "通知", 3, MessageBoxIcon.Warning);
                return;
            }

            bool              result      = false;
            string            cmd         = "select * from control_devices where deviceID = " + deviceID + " or parentID = " + deviceID;
            List <DeviceInfo> jsipDevList = new List <DeviceInfo>();
            List <PartialViewDoorServer.ViewModels.K02.DeviceInfo> k02DevList = new List <PartialViewDoorServer.ViewModels.K02.DeviceInfo>();

            using (MySqlDataReader reader = MySqlHelper.ExecuteReader(EnvironmentInfo.ConnectionString, string.Format(cmd)))
            {
                while (reader.Read())
                {
                    ushort deviceType = Convert.ToUInt16(reader["DeviceType"].ToString());
                    if (deviceType == 32)
                    {
                        #region 门禁服务
                        // 门禁服务
                        PartialViewDoorServer.ViewModels.K02.DeviceInfo k02Dev = new PartialViewDoorServer.ViewModels.K02.DeviceInfo();
                        k02Dev.type             = deviceType;
                        k02Dev.id               = Convert.ToUInt32(reader["DeviceID"].ToString());
                        k02Dev.ip               = reader["IP"].ToString();
                        k02Dev.model            = "门禁服务客户端";
                        k02Dev.status           = 1;
                        k02Dev.statusUpdateTime = DateTime.Now;
                        k02Dev.DeviceAddTime    = DateTime.Now;

                        k02DevList.Add(k02Dev);
                        #endregion
                    }
                    else if (deviceType == 100 || deviceType == 116)
                    {
                        #region 领域III
                        // 领域III
                        PartialViewDoorServer.ViewModels.K02.DeviceInfo k02Dev = new PartialViewDoorServer.ViewModels.K02.DeviceInfo();
                        k02Dev.type             = deviceType;
                        k02Dev.id               = Convert.ToUInt32(reader["DeviceID"].ToString());
                        k02Dev.ip               = reader["IP"].ToString();
                        k02Dev.status           = 1;
                        k02Dev.productDate      = DateTime.Now.ToString();
                        k02Dev.statusUpdateTime = DateTime.Now;
                        k02Dev.DeviceAddTime    = DateTime.Now;

                        k02DevList.Add(k02Dev);
                        #endregion
                    }
                    else
                    {
                        #region JSIP设备
                        // JSIP设备
                        DeviceInfo dev = new DeviceInfo();
                        dev.SendHttpTime   = DateTime.Now;
                        dev.DeviceAddTime  = DateTime.Now;
                        dev.status         = 1;
                        dev.state          = 1;
                        dev.ID             = Convert.ToUInt32(reader["DeviceID"].ToString());
                        dev.ParentDeviceID = 0;
                        dev.Name           = reader["DeviceName"].ToString();
                        dev.Type           = deviceType.ToString();
                        dev.IP             = reader["IP"].ToString();
                        dev.Mac            = reader["Mac"].ToString();
                        dev.Mask           = reader["Net_Mask"].ToString();
                        dev.GateWay        = reader["Gateway_IP"].ToString();

                        dev.SN              = string.IsNullOrEmpty(reader["SN"].ToString()) ? 0 : Convert.ToUInt32(reader["SN"].ToString());
                        dev.Company         = "捷顺科技";
                        dev.Model           = reader["Model"].ToString();
                        dev.HardwareVersion = "V1.0.0";
                        dev.SoftwareVersion = "V1.0.0";
                        dev.Manufacturer    = "捷顺科技";
                        dev.ProductDate     = DateTime.Now.ToString();
                        dev.DeviceClass     = 0;
                        dev.CPUID           = reader["CpuID"].ToString();
                        dev.RegisterState   = 1;
                        dev.HasInit         = true;
                        dev.RegisterID      = 1;
                        dev.IsHttpSended    = false;
                        dev.AuthorizeFlag   = 1;

                        jsipDevList.Add(dev);
                        #endregion
                    }
                    result = true;
                }
            }

            string k02DevicePath  = FilePath + @"\DeviceInfos.xml";
            string jsipDevicePath = FilePath + @"\CriterionDeviceInfos.xml";

            // 备份
            string devicePathBak = FilePath + @"_" + DateTime.Now.ToString("yyyyMMddHHmmss");
            CopyDirectory(FilePath, devicePathBak);

            Notice.Show("para文件夹备份成功:" + devicePathBak, "通知", 3, MessageBoxIcon.Success);

            SerializationHelper.SerializeToXMLFile <List <PartialViewDoorServer.ViewModels.K02.DeviceInfo> >(k02DevicePath, k02DevList);
            SerializationHelper.SerializeToXMLFile <List <DeviceInfo> >(jsipDevicePath, jsipDevList);

            Notice.Show("获取设备成功....", "通知", 3, MessageBoxIcon.Success);

            Notice.Show("直接结束门禁服务进程,重启门禁服务!", "通知", 3, MessageBoxIcon.Success);
        }
        /// <summary>
        /// 获取设备
        /// </summary>
        /// <param name="parameter"></param>
        public void SelectDoorDevice(object parameter)
        {
            try
            {
                if (string.IsNullOrEmpty(FilePath))
                {
                    Notice.Show("请选择Smartdoor安装目录的para文件夹!.", "通知", 3, MessageBoxIcon.Warning);
                    return;
                }

                UInt32 deviceID = curDoorServer.deviceID;
                if (deviceID == 0)
                {
                    Notice.Show("请选择门禁服务!.", "通知", 3, MessageBoxIcon.Warning);
                    return;
                }

                bool              result      = false;
                string            cmd         = "select * from control_devices where deviceID = " + deviceID + " or parentID = " + deviceID;
                List <DeviceInfo> jsipDevList = new List <DeviceInfo>();
                List <PartialViewDoorServer.ViewModels.K02.DeviceInfo> k02DevList = new List <PartialViewDoorServer.ViewModels.K02.DeviceInfo>();
                using (MySqlDataReader reader = MySqlHelper.ExecuteReader(EnvironmentInfo.ConnectionString, string.Format(cmd)))
                {
                    while (reader.Read())
                    {
                        ushort deviceType = Convert.ToUInt16(reader["DeviceType"].ToString());
                        if (deviceType == 32)
                        {
                            #region 门禁服务
                            // 门禁服务
                            PartialViewDoorServer.ViewModels.K02.DeviceInfo k02Dev = new PartialViewDoorServer.ViewModels.K02.DeviceInfo();
                            k02Dev.type             = deviceType;
                            k02Dev.id               = Convert.ToUInt32(reader["DeviceID"].ToString());
                            k02Dev.ip               = reader["IP"].ToString();
                            k02Dev.model            = "门禁服务客户端";
                            k02Dev.status           = 1;
                            k02Dev.statusUpdateTime = DateTime.Now;
                            k02Dev.DeviceAddTime    = DateTime.Now;

                            k02DevList.Add(k02Dev);
                            #endregion
                        }
                        else if (deviceType == 100 || deviceType == 116)
                        {
                            #region 领域III
                            // 领域III
                            PartialViewDoorServer.ViewModels.K02.DeviceInfo k02Dev = new PartialViewDoorServer.ViewModels.K02.DeviceInfo();
                            k02Dev.type             = deviceType;
                            k02Dev.id               = Convert.ToUInt32(reader["DeviceID"].ToString());
                            k02Dev.ip               = reader["IP"].ToString();
                            k02Dev.status           = 1;
                            k02Dev.productDate      = DateTime.Now.ToString();
                            k02Dev.statusUpdateTime = DateTime.Now;
                            k02Dev.DeviceAddTime    = DateTime.Now;

                            k02DevList.Add(k02Dev);
                            #endregion
                        }
                        else
                        {
                            #region JSIP设备
                            // JSIP设备
                            DeviceInfo dev = new DeviceInfo();
                            dev.SendHttpTime   = DateTime.Now;
                            dev.DeviceAddTime  = DateTime.Now;
                            dev.status         = 1;
                            dev.state          = 1;
                            dev.ID             = Convert.ToUInt32(reader["DeviceID"].ToString());
                            dev.ParentDeviceID = 0;
                            dev.Name           = reader["DeviceName"].ToString();
                            dev.Type           = deviceType.ToString();
                            dev.IP             = reader["IP"].ToString();
                            dev.Mac            = reader["Mac"].ToString();
                            dev.Mask           = reader["Net_Mask"].ToString();
                            dev.GateWay        = reader["Gateway_IP"].ToString();

                            dev.SN              = string.IsNullOrEmpty(reader["SN"].ToString()) ? 0 : Convert.ToUInt32(reader["SN"].ToString());
                            dev.Company         = "捷顺科技";
                            dev.Model           = reader["Model"].ToString();
                            dev.HardwareVersion = "V1.0.0";
                            dev.SoftwareVersion = "V1.0.0";
                            dev.Manufacturer    = "捷顺科技";
                            dev.ProductDate     = DateTime.Now.ToString();
                            dev.DeviceClass     = 0;
                            dev.CPUID           = reader["CpuID"].ToString();
                            dev.RegisterState   = 1;
                            dev.HasInit         = true;
                            dev.RegisterID      = 1;
                            dev.IsHttpSended    = false;
                            dev.AuthorizeFlag   = 1;

                            jsipDevList.Add(dev);
                            #endregion
                        }
                        result = true;
                    }
                }

                string k02DevicePath  = FilePath + @"\DeviceInfos.xml";
                string jsipDevicePath = FilePath + @"\CriterionDeviceInfos.xml";

                // 备份
                string devicePathBak = FilePath + @"_" + DateTime.Now.ToString("yyyyMMddHHmmss");
                CopyDirectory(FilePath, devicePathBak);

                Notice.Show("para文件夹备份成功:" + devicePathBak, "通知", 3, MessageBoxIcon.Success);

                SerializationHelper.SerializeToXMLFile <List <PartialViewDoorServer.ViewModels.K02.DeviceInfo> >(k02DevicePath, k02DevList);
                SerializationHelper.SerializeToXMLFile <List <DeviceInfo> >(jsipDevicePath, jsipDevList);

                Notice.Show("获取设备成功....", "通知", 3, MessageBoxIcon.Success);
                var process = Process.GetProcessesByName("SmartBoxDoor.Infrastructures.Server.DoorServer").FirstOrDefault();
                if (process != null)
                {
                    process.Kill();
                    Notice.Show("已结束门禁服务!等待自动重启门禁服务", "通知", 3, MessageBoxIcon.Success);
                }
                else
                {
                    Notice.Show("需手动结束门禁服务进程,重启门禁服务!", "通知", 3, MessageBoxIcon.Success);
                }

                // 非2.8.1会获取不到这个路径导致报错
                // 2.8.1以后,自动取这个备份文件夹的文件
                string strParaDataDirDest = string.Format(@"{0}\JieLinkDoor\para", System.Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData));
                File.Copy(k02DevicePath, strParaDataDirDest + @"\DeviceInfos.xml", true);
                File.Copy(jsipDevicePath, strParaDataDirDest + @"\CriterionDeviceInfos.xml", true);
            }
            catch (Exception ex)
            {
                LogHelper.CommLogger.Error(ex.ToString());
            }
        }