/// <summary>
 /// 3D响应推送状态
 /// </summary>
 /// <param name="state"></param>
 public void ChangeDoorState(DoorAccessState state)
 {
     CurrentDoorState = state;
     if (state.Abutment_CardState == "开")
     {
         OpenDoor();
     }
     else
     {
         CloseDoor(false);
     }
 }
Beispiel #2
0
        /// <summary>
        /// 设置门禁信息
        /// </summary>
        private void SetDoorAccessInfo()
        {
            IList <DevInfo>        devlist        = new List <DevInfo>();
            IList <Dev_DoorAccess> doorAccessList = new List <Dev_DoorAccess>();

            Worker.Run(() =>
            {
                LocationService service = new LocationService();
                devlist        = service.GetAllDevInfos();
                doorAccessList = service.GetAllDoorAccessInfo();
            }, () =>
            {
                //MessageBox.Show("完成");
                if (devlist == null || doorAccessList == null)
                {
                    return;
                }
                BindingDevInfo(devlist.ToList(), doorAccessList.ToList());
                DoorAccessListBox1.LoadData(doorAccessList.ToArray());

                DoorAccessListBox1.AddMenu("开门", (se, arg) =>
                {
                    var dev = DoorAccessListBox1.CurrentDev;
                    DoorAccessState doorAccessState = new DoorAccessState()
                    {
                        DoorId             = dev.DoorId,
                        Abutment_CardId    = dev.Id.ToString(),
                        Abutment_CardState = "开",
                        Dev = dev.DevInfo
                    };
                    DoorAccessHub.SendDoorAccessInfo(doorAccessState);
                });
                DoorAccessListBox1.AddMenu("关门", (se, arg) =>
                {
                    var dev = DoorAccessListBox1.CurrentDev;
                    DoorAccessState doorAccessState = new DoorAccessState()
                    {
                        DoorId             = dev.DoorId,
                        Abutment_CardId    = dev.Id.ToString(),
                        Abutment_CardState = "关",
                        Dev = dev.DevInfo
                    };
                    DoorAccessHub.SendDoorAccessInfo(doorAccessState);
                });
            });
        }
    /// <summary>
    /// 更换当前区域下,门的开关状态
    /// </summary>
    /// <param name="state"></param>
    private void PushDoorStateInfo(DoorAccessState state)
    {
        DoorAccessState door = DoorStateList.Find(i => i.DoorId == state.DoorId && i.Dev.Id == state.Dev.Id);

        if (door != null)
        {
            door.Abutment_CardState = state.Abutment_CardState;
        }
        else
        {
            DoorStateList.Add(state);
        }
        if (FactoryDepManager.currentDep == null)
        {
            return;
        }
        string parentId = state.Dev.ParentId.ToString();

        if (IsDepDev(FactoryDepManager.currentDep, parentId))
        {
            DevNode dev = RoomFactory.Instance.GetCreateDevById(state.Dev.DevID, int.Parse(parentId));
            if (dev != null)
            {
                DoorAccessDevController doorAccess = dev as DoorAccessDevController;
                if (doorAccess)
                {
                    DoorAccessItem doorItem = doorAccess.DoorItem;
                    if (doorItem == null)
                    {
                        Log.Error("DoorAccessManage.PushDoorStateInfo.DoorAcessItem is null:" + doorAccess.Info == null? "devinfo id is null":doorAccess.Info.Id.ToString());
                        return;
                    }
                    doorItem.ChangeDoorState(state);
                    if (!DepDoorList.Contains(doorItem))
                    {
                        DepDoorList.Add(doorItem);
                    }
                }
            }
        }
    }