Exemplo n.º 1
0
        private void mapCtrl_DragDrop(object sender, DragEventArgs e)
        {
            Node node = (Node)e.Data.GetData(typeof(Node));

            Maticsoft.Model.SMT_DOOR_INFO doorInfo = node.Tag as Maticsoft.Model.SMT_DOOR_INFO;
            if (doorInfo != null)
            {
                mapCtrl.AddDoorInfo(doorInfo, null, mapCtrl.PointToClient(Cursor.Position));
            }
            else
            {
                var dev = node.Tag as Maticsoft.Model.SMT_FACERECG_DEVICE;
                if (dev != null)
                {
                    mapCtrl.AddDoorInfo(null, dev, mapCtrl.PointToClient(Cursor.Position));
                }
            }
            if (_selectNodes == null)
            {
                _selectNodes = new List <Node>();
            }
            if (!_selectNodes.Contains(node))
            {
                node.DataKey = node.Parent;
                node.Remove();
                _selectNodes.Add(node);
            }
        }
Exemplo n.º 2
0
        private string GetDoorText(Maticsoft.Model.SMT_DOOR_INFO door, bool isdetect = false)
        {
            string text = door.DOOR_NAME;

            if (!door.IS_ENABLE)
            {
                text += "(禁用)";
            }
            else
            {
                if (door.CTRL_STYLE == 1)
                {
                    text += "(常开)";
                }
                else if (door.CTRL_STYLE == 2)
                {
                    text += "(常关)";
                }
                else if (isdetect)
                {
                    text += "(监控中)";
                }
            }
            return(text);
        }
Exemplo n.º 3
0
 private void DoCheckedDoor(Node node, List <Maticsoft.Model.SMT_ROLE_FUN> funs)
 {
     Maticsoft.Model.SMT_DOOR_INFO fun = node.Tag as Maticsoft.Model.SMT_DOOR_INFO;
     if (fun == null)
     {
         if (node.Nodes.Count > 0)
         {
             foreach (Node item in node.Nodes)
             {
                 DoCheckedDoor(item, funs);
             }
         }
     }
     else
     {
         if (funs.Exists(m => m.FUN_ID == fun.ID))
         {
             node.Checked = true;
             node.EnsureVisible();
         }
         else
         {
             foreach (Node item in node.Nodes)
             {
                 DoCheckedDoor(item, funs);
             }
         }
     }
 }
Exemplo n.º 4
0
        public static Maticsoft.Model.SMT_CONTROLLER_INFO AddController(Controller ctrlr)
        {
            Maticsoft.Model.SMT_CONTROLLER_INFO info = UpdateDBControllerIp(ctrlr);//如果存在则更新
            if (info != null)
            {
                info.DOOR_INFOS = DoorDataHelper.GetDoors();
                return(info);
            }
            info = ToInfo(ctrlr);
            Maticsoft.BLL.SMT_CONTROLLER_INFO bll = new Maticsoft.BLL.SMT_CONTROLLER_INFO();
            decimal ctrlId = bll.Add(info);

            info.ID = ctrlId;
            int count = 1;
            int dir   = 1;

            switch (ctrlr.doorType)
            {
            case ControllerDoorType.OneDoorTwoDirections:
                count = 1;
                dir   = 2;
                break;

            case ControllerDoorType.TwoDoorsTwoDirections:
                count = 2;
                dir   = 2;
                break;

            case ControllerDoorType.FourDoorsOneDirection:
                count = 4;
                dir   = 1;
                break;

            default:
                break;
            }
            Maticsoft.BLL.SMT_DOOR_INFO doorBll = new Maticsoft.BLL.SMT_DOOR_INFO();
            info.DOOR_INFOS = new List <Maticsoft.Model.SMT_DOOR_INFO>();
            for (int i = 0; i < count; i++)
            {
                Maticsoft.Model.SMT_DOOR_INFO doorInfo = new Maticsoft.Model.SMT_DOOR_INFO();
                doorInfo.CTRL_DELAY_TIME = 3;
                doorInfo.CTRL_DOOR_INDEX = i + 1;
                doorInfo.CTRL_ID         = ctrlId;
                doorInfo.CTRL_STYLE      = 0;
                doorInfo.DOOR_NAME       = "门_" + ctrlId + "_" + (i + 1);
                doorInfo.DOOR_DESC       = doorInfo.DOOR_NAME;
                doorInfo.AREA_ID         = -1;
                doorInfo.AREA_NAME       = "";
                doorInfo.ID             = -1;
                doorInfo.IS_ATTENDANCE1 = false;
                doorInfo.IS_ATTENDANCE2 = false;
                doorInfo.IS_ENABLE      = true;
                doorInfo.IS_ENTER1      = true;
                doorInfo.IS_ENTER2      = dir == 1;
                doorInfo.ID             = doorBll.Add(doorInfo);
                info.DOOR_INFOS.Add(doorInfo);
            }
            return(info);
        }
Exemplo n.º 5
0
        private void ShowDoorText()
        {
            var    nodes = doorTree.GetNodeList(true, typeof(Maticsoft.Model.SMT_DOOR_INFO));
            string str   = "";

            foreach (var item in nodes)
            {
                Maticsoft.Model.SMT_DOOR_INFO door = (Maticsoft.Model.SMT_DOOR_INFO)item.Tag;
                str += door.DOOR_NAME + ";";
            }
            tbDoorDropDown.Text = str;
        }
Exemplo n.º 6
0
        private List <Maticsoft.Model.SMT_DOOR_INFO> GetSelect()
        {
            List <Maticsoft.Model.SMT_DOOR_INFO> doors = new List <Maticsoft.Model.SMT_DOOR_INFO>();

            foreach (DataGridViewRow item in dgvSelectDoor.Rows)
            {
                Node node = (Node)item.Tag;
                Maticsoft.Model.SMT_DOOR_INFO door = (Maticsoft.Model.SMT_DOOR_INFO)node.Tag;
                doors.Add(door);
            }
            return(doors);
        }
Exemplo n.º 7
0
 /// <summary>
 /// 执行选择门
 /// </summary>
 /// <param name="doors"></param>
 private void DoSelectDoors(List <Node> doors)
 {
     foreach (var item in doors)
     {
         Maticsoft.Model.SMT_DOOR_INFO door = (Maticsoft.Model.SMT_DOOR_INFO)item.Tag;
         DataGridViewRow row = new DataGridViewRow();
         row.CreateCells(dgvSelectDoor, door.DOOR_NAME, door.AREA_NAME);
         row.Tag = item;
         dgvSelectDoor.Rows.Add(row);
         item.DataKey = item.Parent;
         item.Remove();
     }
 }
Exemplo n.º 8
0
        /// <summary>
        /// 增加一条数据
        /// </summary>
        public decimal Add(Maticsoft.Model.SMT_DOOR_INFO model)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("insert into SMT_DOOR_INFO(");
            strSql.Append("DOOR_NAME,CTRL_ID,CTRL_DOOR_INDEX,DOOR_DESC,CTRL_STYLE,CTRL_DELAY_TIME,IS_ENABLE,IS_ENTER1,IS_ENTER2,IS_ATTENDANCE1,IS_ATTENDANCE2,OPEN_STATE,IS_ALLOW_VISITOR)");
            strSql.Append(" values (");
            strSql.Append("@DOOR_NAME,@CTRL_ID,@CTRL_DOOR_INDEX,@DOOR_DESC,@CTRL_STYLE,@CTRL_DELAY_TIME,@IS_ENABLE,@IS_ENTER1,@IS_ENTER2,@IS_ATTENDANCE1,@IS_ATTENDANCE2,@OPEN_STATE,@IS_ALLOW_VISITOR)");
            strSql.Append(";select @@IDENTITY");
            SqlParameter[] parameters =
            {
                new SqlParameter("@DOOR_NAME",        SqlDbType.NVarChar, 200),
                new SqlParameter("@CTRL_ID",          SqlDbType.Decimal,    9),
                new SqlParameter("@CTRL_DOOR_INDEX",  SqlDbType.TinyInt,    1),
                new SqlParameter("@DOOR_DESC",        SqlDbType.NVarChar, 400),
                new SqlParameter("@CTRL_STYLE",       SqlDbType.TinyInt,    1),
                new SqlParameter("@CTRL_DELAY_TIME",  SqlDbType.TinyInt,    1),
                new SqlParameter("@IS_ENABLE",        SqlDbType.Bit,        1),
                new SqlParameter("@IS_ENTER1",        SqlDbType.Bit,        1),
                new SqlParameter("@IS_ENTER2",        SqlDbType.Bit,        1),
                new SqlParameter("@IS_ATTENDANCE1",   SqlDbType.Bit,        1),
                new SqlParameter("@IS_ATTENDANCE2",   SqlDbType.Bit,        1),
                new SqlParameter("@OPEN_STATE",       SqlDbType.TinyInt,    1),
                new SqlParameter("@IS_ALLOW_VISITOR", SqlDbType.Bit, 1)
            };
            parameters[0].Value  = model.DOOR_NAME;
            parameters[1].Value  = model.CTRL_ID;
            parameters[2].Value  = model.CTRL_DOOR_INDEX;
            parameters[3].Value  = model.DOOR_DESC;
            parameters[4].Value  = model.CTRL_STYLE;
            parameters[5].Value  = model.CTRL_DELAY_TIME;
            parameters[6].Value  = model.IS_ENABLE;
            parameters[7].Value  = model.IS_ENTER1;
            parameters[8].Value  = model.IS_ENTER2;
            parameters[9].Value  = model.IS_ATTENDANCE1;
            parameters[10].Value = model.IS_ATTENDANCE2;
            parameters[11].Value = model.OPEN_STATE;
            parameters[12].Value = model.IS_ALLOW_VISITOR;

            object obj = DbHelperSQL.GetSingle(strSql.ToString(), parameters);

            if (obj == null)
            {
                return(0);
            }
            else
            {
                return(Convert.ToDecimal(obj));
            }
        }
Exemplo n.º 9
0
 private void doorTree_LoadEnded(object sender, EventArgs e)
 {
     if (_mapInfo != null && _mapInfo.MAP_DOORS != null && _mapInfo.MAP_DOORS.Count > 0)
     {
         var nodes = this.doorTree.Tree.GetNodeList(typeof(Maticsoft.Model.SMT_DOOR_INFO));
         _selectNodes = nodes.FindAll(m =>
         {
             Maticsoft.Model.SMT_DOOR_INFO di = (Maticsoft.Model.SMT_DOOR_INFO)m.Tag;
             return(_mapInfo.MAP_DOORS.Exists(n => n.DOOR_ID == di.ID && n.DOOR_TYPE == 1));
         });
         foreach (var item in _selectNodes)
         {
             item.DataKey = item.Parent;
             item.Remove();
         }
     }
 }
Exemplo n.º 10
0
 public static void UpdateDoorSync(Maticsoft.Model.SMT_DOOR_INFO door)
 {
     if (door != null)
     {
         ThreadPool.QueueUserWorkItem(new WaitCallback((o) =>
         {
             try
             {
                 Maticsoft.BLL.SMT_DOOR_INFO doorBll = new Maticsoft.BLL.SMT_DOOR_INFO();
                 doorBll.Update(door);
             }
             catch (Exception ex)
             {
                 log.Error("更新门禁异常:", ex);
             }
         }));
     }
 }
Exemplo n.º 11
0
        private void AddToGridDoorCamera(Maticsoft.Model.SMT_DOOR_INFO door, Maticsoft.Model.SMT_CAMERA_INFO camera, bool enable)
        {
            DataGridViewRow dgvr = new DataGridViewRow();

            dgvr.CreateCells(dgvDoorCamera,
                             door.DOOR_NAME,
                             camera.CAMERA_NAME + "[" + camera.CAMERA_IP + "]",
                             enable,
                             "删除"
                             );
            DoorCamera dc = new DoorCamera()
            {
                DOOR_ID   = door.ID,
                CAMERA_ID = camera.ID
            };

            dgvr.Tag = dc;
            dgvDoorCamera.Rows.Add(dgvr);
        }
Exemplo n.º 12
0
 private void biStop_Click(object sender, EventArgs e)
 {
     UploadPrivate.WatchService.ClearControllers(this.GetType().FullName);
     UploadPrivate.FaceWatchService.ClearControllers(this.GetType().FullName);
     foreach (var item in _lastDetectDoorItems)
     {
         Maticsoft.Model.SMT_DOOR_INFO d = (Maticsoft.Model.SMT_DOOR_INFO)item.Tag;
         item.Text = GetDoorText(d, false);
     }
     foreach (var item in _lastDetectFaceDevItems)
     {
         Maticsoft.Model.SMT_FACERECG_DEVICE d = (Maticsoft.Model.SMT_FACERECG_DEVICE)item.Tag;
         item.Text = GetDevText(d, false);
     }
     biRealDetect.Text = "实时监控";
     _lastDetectDoorItems.Clear();
     _lastDetectFaceDevItems.Clear();
     biRealDetect.Enabled = true;
 }
Exemplo n.º 13
0
        private List <Maticsoft.Model.SMT_DOOR_INFO> GetSelectDoors()
        {
            List <Maticsoft.Model.SMT_DOOR_INFO> doors = new List <Maticsoft.Model.SMT_DOOR_INFO>();

            if (listDoors.SelectedItems.Count == 0)
            {
                return(doors);
            }

            foreach (ListViewItem item in listDoors.SelectedItems)
            {
                Maticsoft.Model.SMT_DOOR_INFO d = (Maticsoft.Model.SMT_DOOR_INFO)item.Tag;
                if (d.IS_ENABLE)
                {
                    doors.Add(d);
                }
            }
            return(doors);
        }
Exemplo n.º 14
0
        private void tsmiDoorStateCfg_Click(object sender, EventArgs e)
        {
            var doors = GetSelectDoors();

            if (doors.Count == 0)
            {
                foreach (ListViewItem item in listDoors.Items)
                {
                    item.Selected = true;
                }
                doors = GetSelectDoors();
            }

            FrmDoorStateCfg cfg = new FrmDoorStateCfg(doors, dgvRealLog);

            cfg.ShowDialog(this);
            if (cfg.IsChanged)
            {
                foreach (ListViewItem item in listDoors.SelectedItems)
                {
                    Maticsoft.Model.SMT_DOOR_INFO door = (Maticsoft.Model.SMT_DOOR_INFO)item.Tag;
                    item.Text = GetDoorText(door);
                    int index = door.OPEN_STATE;
                    if (index < 0 || index > 2)
                    {
                        index = 0;
                    }
                    if (door.CTRL_STYLE == 1)
                    {
                        index = 1;
                    }
                    if (!door.IS_ENABLE)
                    {
                        index = 3;
                    }
                    item.ImageIndex = index;
                }
            }
        }
Exemplo n.º 15
0
        void doorTree_LoadEnded(object sender, EventArgs e)
        {
            CtrlWaiting ctrlWaiting = new CtrlWaiting(() =>
            {
                Maticsoft.BLL.SMT_STAFF_DOOR sdBLL = new Maticsoft.BLL.SMT_STAFF_DOOR();
                var sdList  = sdBLL.GetModelList("STAFF_ID=" + staffInfo.ID);
                _staffDoors = sdList;
                var nodes   = this.doorTree.Tree.GetNodeList(typeof(Maticsoft.Model.SMT_DOOR_INFO));

                var selectNodes = nodes.FindAll(m =>
                {
                    Maticsoft.Model.SMT_DOOR_INFO di = (Maticsoft.Model.SMT_DOOR_INFO)m.Tag;
                    return(sdList.Exists(n => n.DOOR_ID == di.ID));
                });
                this.Invoke(new Action(() =>
                {
                    DoSetTimeNum();
                    DoSelectDoors(selectNodes);
                }));
            });

            ctrlWaiting.Show(this);
        }
Exemplo n.º 16
0
        /// <summary>
        /// 得到一个对象实体
        /// </summary>
        public Maticsoft.Model.SMT_DOOR_INFO GetModel(decimal ID)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("select  top 1 ID,DOOR_NAME,CTRL_ID,CTRL_DOOR_INDEX,DOOR_DESC,CTRL_STYLE,CTRL_DELAY_TIME,IS_ENABLE,IS_ENTER1,IS_ENTER2,IS_ATTENDANCE1,IS_ATTENDANCE2,OPEN_STATE,IS_ALLOW_VISITOR from SMT_DOOR_INFO ");
            strSql.Append(" where ID=@ID");
            SqlParameter[] parameters =
            {
                new SqlParameter("@ID", SqlDbType.Decimal)
            };
            parameters[0].Value = ID;

            Maticsoft.Model.SMT_DOOR_INFO model = new Maticsoft.Model.SMT_DOOR_INFO();
            DataSet ds = DbHelperSQL.Query(strSql.ToString(), parameters);

            if (ds.Tables[0].Rows.Count > 0)
            {
                return(DataRowToModel(ds.Tables[0].Rows[0]));
            }
            else
            {
                return(null);
            }
        }
Exemplo n.º 17
0
        /// <summary>
        /// 更新一条数据
        /// </summary>
        public bool Update(Maticsoft.Model.SMT_DOOR_INFO model)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("update SMT_DOOR_INFO set ");
            strSql.Append("DOOR_NAME=@DOOR_NAME,");
            strSql.Append("CTRL_ID=@CTRL_ID,");
            strSql.Append("CTRL_DOOR_INDEX=@CTRL_DOOR_INDEX,");
            strSql.Append("DOOR_DESC=@DOOR_DESC,");
            strSql.Append("CTRL_STYLE=@CTRL_STYLE,");
            strSql.Append("CTRL_DELAY_TIME=@CTRL_DELAY_TIME,");
            strSql.Append("IS_ENABLE=@IS_ENABLE,");
            strSql.Append("IS_ENTER1=@IS_ENTER1,");
            strSql.Append("IS_ENTER2=@IS_ENTER2,");
            strSql.Append("IS_ATTENDANCE1=@IS_ATTENDANCE1,");
            strSql.Append("IS_ATTENDANCE2=@IS_ATTENDANCE2,");
            strSql.Append("OPEN_STATE=@OPEN_STATE,");
            strSql.Append("IS_ALLOW_VISITOR=@IS_ALLOW_VISITOR");
            strSql.Append(" where ID=@ID");
            SqlParameter[] parameters =
            {
                new SqlParameter("@DOOR_NAME",        SqlDbType.NVarChar, 200),
                new SqlParameter("@CTRL_ID",          SqlDbType.Decimal,    9),
                new SqlParameter("@CTRL_DOOR_INDEX",  SqlDbType.TinyInt,    1),
                new SqlParameter("@DOOR_DESC",        SqlDbType.NVarChar, 400),
                new SqlParameter("@CTRL_STYLE",       SqlDbType.TinyInt,    1),
                new SqlParameter("@CTRL_DELAY_TIME",  SqlDbType.TinyInt,    1),
                new SqlParameter("@IS_ENABLE",        SqlDbType.Bit,        1),
                new SqlParameter("@IS_ENTER1",        SqlDbType.Bit,        1),
                new SqlParameter("@IS_ENTER2",        SqlDbType.Bit,        1),
                new SqlParameter("@IS_ATTENDANCE1",   SqlDbType.Bit,        1),
                new SqlParameter("@IS_ATTENDANCE2",   SqlDbType.Bit,        1),
                new SqlParameter("@OPEN_STATE",       SqlDbType.TinyInt,    1),
                new SqlParameter("@IS_ALLOW_VISITOR", SqlDbType.Bit,        1),
                new SqlParameter("@ID",               SqlDbType.Decimal, 9)
            };
            parameters[0].Value  = model.DOOR_NAME;
            parameters[1].Value  = model.CTRL_ID;
            parameters[2].Value  = model.CTRL_DOOR_INDEX;
            parameters[3].Value  = model.DOOR_DESC;
            parameters[4].Value  = model.CTRL_STYLE;
            parameters[5].Value  = model.CTRL_DELAY_TIME;
            parameters[6].Value  = model.IS_ENABLE;
            parameters[7].Value  = model.IS_ENTER1;
            parameters[8].Value  = model.IS_ENTER2;
            parameters[9].Value  = model.IS_ATTENDANCE1;
            parameters[10].Value = model.IS_ATTENDANCE2;
            parameters[11].Value = model.OPEN_STATE;
            parameters[12].Value = model.IS_ALLOW_VISITOR;
            parameters[13].Value = model.ID;

            int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);

            if (rows > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Exemplo n.º 18
0
        private void biAdd_Click(object sender, EventArgs e)
        {
            if (cbCtrler.SelectedItem == null)
            {
                WinInfoHelper.ShowInfoWindow(this, "请选择电梯控制器!");
                return;
            }
            if (cbDoorIndex.SelectedItem == null)
            {
                WinInfoHelper.ShowInfoWindow(this, "请选择继电器序号!");
                return;
            }
            if (tbDoorName.Text.Trim() == "")
            {
                WinInfoHelper.ShowInfoWindow(this, "梯门名称不能为空!");
                return;
            }
            var info  = (Maticsoft.Model.SMT_CONTROLLER_INFO)((ComboBoxItem)cbCtrler.SelectedItem).Tag;
            int index = (int)cbDoorIndex.SelectedItem;

            Maticsoft.Model.SMT_DOOR_INFO door = new Maticsoft.Model.SMT_DOOR_INFO();
            door.CTRL_ID         = info.ID;
            door.CTRL_DOOR_INDEX = index;
            door.DOOR_NAME       = tbDoorName.Text.Trim();
            door.ID        = -1;
            door.IS_ENABLE = true;
            CtrlWaiting waiting = new CtrlWaiting(() =>
            {
                try
                {
                    Maticsoft.BLL.SMT_DOOR_INFO doorBll = new Maticsoft.BLL.SMT_DOOR_INFO();
                    var doors = doorBll.GetModelList("CTRL_ID=" + info.ID + " and CTRL_DOOR_INDEX=" + index);
                    if (doors.Count > 0)
                    {
                        doors[0].DOOR_NAME = door.DOOR_NAME;
                        doorBll.Update(doors[0]);
                        door.ID = doors[0].ID;
                    }
                    else
                    {
                        door.ID = doorBll.Add(door);
                    }
                    this.Invoke(new Action(() =>
                    {
                        DataGridViewRow row = null;
                        foreach (DataGridViewRow item in dgvData.Rows)
                        {
                            if ((decimal)item.Cells[0].Value == info.ID &&
                                (int)item.Cells[2].Value == index
                                )
                            {
                                row = item;

                                break;
                            }
                        }
                        if (row != null)
                        {
                            row.Cells[3].Value = door.DOOR_NAME;
                            row.Tag            = door;
                        }
                        else
                        {
                            row = new DataGridViewRow();
                            row.CreateCells(dgvData,
                                            info.ID,
                                            info.NAME,
                                            index,
                                            door.DOOR_NAME,
                                            "删除"
                                            );
                            row.Tag = door;
                            dgvData.Rows.Add(row);
                        }
                        if (cbDoorIndex.SelectedIndex < cbDoorIndex.Items.Count - 1)
                        {
                            cbDoorIndex.SelectedIndex += 1;
                        }
                    }));
                }
                catch (Exception ex)
                {
                    log.Error("添加梯控门失败:", ex);
                    WinInfoHelper.ShowInfoWindow(this, "添加梯控门失败:" + ex.Message);
                    return;
                }
            });

            waiting.Show(this);
        }
Exemplo n.º 19
0
        private void biRealDetect_Click(object sender, EventArgs e)
        {
            List <Maticsoft.Model.SMT_DOOR_INFO>       doors = GetSelectDoors();
            List <Maticsoft.Model.SMT_FACERECG_DEVICE> devs  = GetSelectDevs();

            #region 门禁
            if (doors.Count == 0 && devs.Count == 0)
            {
                WinInfoHelper.ShowInfoWindow(this, "请选择设备!");
                return;
            }
            if (doors.Count > 0)
            {
                _lastDetectDoorItems.Clear();
                foreach (ListViewItem item in listDoors.SelectedItems)
                {
                    Maticsoft.Model.SMT_DOOR_INFO d = (Maticsoft.Model.SMT_DOOR_INFO)item.Tag;
                    if (d.IS_ENABLE)
                    {
                        _lastDetectDoorItems.Add(item);
                    }
                }
                List <decimal> ctrIds = GetSelectCtrlIDs(doors);

                CtrlWaiting waiting = new CtrlWaiting(() =>
                {
                    var models = GetSelectCtrls(ctrIds);
                    if (models.Count == 0)
                    {
                        WinInfoHelper.ShowInfoWindow(this, "未找到控制器!");
                        return;
                    }
                    foreach (var item in models)
                    {
                        UploadPrivate.WatchService.AddController(ControllerHelper.ToController(item), ControllerStateCallBack, this.GetType().FullName);
                    }
                    this.Invoke(new Action(() =>
                    {
                        biRealDetect.Text = "增加监控(实时监控中...)";
                        foreach (var item in _lastDetectDoorItems)
                        {
                            Maticsoft.Model.SMT_DOOR_INFO d = (Maticsoft.Model.SMT_DOOR_INFO)item.Tag;
                            item.Text = GetDoorText(d, true);
                        }
                    }));
                });
                waiting.Show(this);
            }
            #endregion

            #region 人脸
            if (devs.Count > 0)
            {
                _lastDetectFaceDevItems.Clear();
                foreach (ListViewItem item in listViewFaceDev.SelectedItems)
                {
                    Maticsoft.Model.SMT_FACERECG_DEVICE d = (Maticsoft.Model.SMT_FACERECG_DEVICE)item.Tag;
                    if (d.FACEDEV_IS_ENABLE)
                    {
                        _lastDetectFaceDevItems.Add(item);
                    }
                }

                CtrlWaiting waiting1 = new CtrlWaiting(() =>
                {
                    foreach (var item in devs)
                    {
                        UploadPrivate.FaceWatchService.AddController(new BSTDevice()
                        {
                            _id = item.ID, _ip = item.FACEDEV_IP, _dbName = item.FACEDEV_DB_NAME, _dbPort = item.FACEDEV_DB_PORT, _dbPwd = item.FACEDEV_DB_PWD, _dbUser = item.FACEDEV_DB_USER, _heartPort = item.FACEDEV_HEART_PORT, _port = item.FACEDEV_CTRL_PORT
                        }, FaceStateCallback, this.GetType().FullName);
                    }
                    this.Invoke(new Action(() =>
                    {
                        biRealDetect.Text = "增加监控(实时监控中...)";
                        foreach (var item in _lastDetectFaceDevItems)
                        {
                            Maticsoft.Model.SMT_FACERECG_DEVICE d = (Maticsoft.Model.SMT_FACERECG_DEVICE)item.Tag;
                            item.Text = GetDevText(d, true);
                        }
                    }));
                });
                waiting1.Show(this);
            }
            #endregion
        }
Exemplo n.º 20
0
        private void AddWatchData(Controller ctrlr, bool connected, ControllerState state, bool doorstate, bool relaystate)
        {
            string cardNo = null;

            if (state != null)
            {
                cardNo = state.cardOrNoNumber;
                var card = _cards.Find(m => m.CARD_WG_NO == state.cardOrNoNumber);
                if (card != null)
                {
                    cardNo = card.CARD_NO;
                }
                else
                {
                    Maticsoft.BLL.SMT_CARD_INFO cardBll = new Maticsoft.BLL.SMT_CARD_INFO();
                    var c = cardBll.GetModelList("CARD_WG_NO='" + state.cardOrNoNumber + "'");
                    if (c.Count > 0)
                    {
                        _cards.Add(c[0]);
                        cardNo = c[0].CARD_NO;
                    }
                }
            }
            string staffname = "未知";
            string orgname   = "未知";

            Maticsoft.Model.SMT_STAFF_INFO sinfo = null;
            if (cardNo != null)
            {
                try
                {
                    Maticsoft.BLL.SMT_STAFF_INFO siBll = new Maticsoft.BLL.SMT_STAFF_INFO();
                    var ds   = siBll.GetListByCardNum(cardNo);
                    var list = siBll.DataTableToListWithDept(ds.Tables[0]);
                    if (list.Count > 0)
                    {
                        staffname = list[0].REAL_NAME;
                        orgname   = list[0].ORG_NAME;
                        sinfo     = list[0];
                    }
                }
                catch (Exception ex)
                {
                    log.Error("读取职员异常:", ex);
                }
            }
            this.Invoke(new Action(() =>
            {
                foreach (ListViewItem item in _lastDetectDoorItems)
                {
                    Maticsoft.Model.SMT_DOOR_INFO door = (Maticsoft.Model.SMT_DOOR_INFO)item.Tag;
                    if (door.IS_ENABLE && door.CTRL_ID != null && door.CTRL_DOOR_INDEX != null)
                    {
                        if (ctrlr.id != (decimal)door.CTRL_ID)
                        {
                            continue;
                        }
                        int doorIndex = (int)door.CTRL_DOOR_INDEX;
                        bool doorLock = false;
                        if (state != null)
                        {
                            //更新状态
                            switch (doorIndex)
                            {
                            case 1:
                                doorLock = state.isOpenDoorOfLock1;
                                break;

                            case 2:
                                doorLock = state.isOpenDoorOfLock2;
                                break;

                            case 3:
                                doorLock = state.isOpenDoorOfLock3;
                                break;

                            case 4:
                                doorLock = state.isOpenDoorOfLock4;
                                break;

                            default:
                                break;
                            }

                            //更新状态
                            item.ImageIndex = doorLock ? 1 : 0;
                            door.OPEN_STATE = doorLock ? 1 : 0;
                            DoorDataHelper.UpdateDoorSync(door);
                        }

                        if ((!connected || state == null) && !doorstate)
                        {
                            door.OPEN_STATE = 2;
                            DoorDataHelper.UpdateDoorSync(door);
                            item.ImageIndex = connected ? 0 : 2;

                            /*DataGridViewRow row = new DataGridViewRow();
                             * row.Tag = ctrlr;
                             * row.CreateCells(dgvRealLog, DateTime.Now, door.DOOR_NAME, string.Format("控制器:IP={0},SN={1} {2}!", ctrlr.ip, ctrlr.sn, connected ? "连接成功" : "无法连接"));
                             * row.DefaultCellStyle.BackColor = Color.Yellow;
                             * dgvRealLog.Rows.Insert(0, row);*/
                        }
                        else if ((byte)door.CTRL_DOOR_INDEX == state.doorNum)
                        {
                            DataGridViewRow row = new DataGridViewRow();
                            row.Tag             = state;
                            if (relaystate)
                            {
                                // row.CreateCells(dgvRealLog, state.recordTime, door.DOOR_NAME, string.Format("门禁:{0},卡号:{1},继电器状态改变!", door.DOOR_NAME, cardNo));
                                //dgvRealLog.Rows.Insert(0, row);
                            }
                            else
                            {
                                string actionname = AccessHelper.GetRecordReasonString(state.reasonNo);
                                if (!doorLock)
                                {
                                    actionname += ",锁状态:关";
                                }
                                else
                                {
                                    actionname += ",锁状态:开";
                                }
                                if (doorstate)
                                {
                                    row.CreateCells(dgvRealLog, state.recordTime, door.DOOR_NAME + (state.isEnterDoor ? "-进门" : "-出门"), string.Format("人员:{0},部门:{1},门禁:{2},卡号:{3},动作:{4}", staffname, orgname, door.DOOR_NAME, cardNo, actionname));
                                    dgvRealLog.Rows.Insert(0, row);
                                    row.Tag = new object[] { sinfo, state };
                                    ShowStaffInfo(row, row.Tag as object[]);
                                    while (dgvRealLog.Rows.Count > 2000)
                                    {
                                        dgvRealLog.Rows.RemoveAt(dgvRealLog.Rows.Count - 1);
                                    }
                                }
                                //else
                                //{
                                // row.CreateCells(dgvRealLog, state.recordTime, door.DOOR_NAME + (state.isEnterDoor ? "-进门" : "-出门"), string.Format("人员:{0},部门:{1},门禁:{2},卡号:{3},动作:当前状态=>{4}", staffname, orgname, door.DOOR_NAME, cardNo, actionname));
                                // }
                            }
                        }
                    }
                }
                foreach (DataGridViewRow item in dgvRealLog.SelectedRows)
                {
                    item.Selected = false;
                }
                if (dgvRealLog.Rows.Count > 0)
                {
                    dgvRealLog.Rows[0].Selected = true;
                }
            }));
        }
Exemplo n.º 21
0
        private void biDetectCtrlr_Click(object sender, EventArgs e)
        {
            dgvRealLog.ClearSelection();
            List <Maticsoft.Model.SMT_DOOR_INFO> doors = GetSelectDoors();
            List <ListViewItem> items = new List <ListViewItem>();

            foreach (ListViewItem item in listDoors.SelectedItems)
            {
                items.Add(item);
            }

            if (doors.Count == 0)
            {
                WinInfoHelper.ShowInfoWindow(this, "请选择门禁!");
                return;
            }
            List <decimal> ctrIds  = GetSelectCtrlIDs(doors);
            CtrlWaiting    waiting = new CtrlWaiting(() =>
            {
                var models = GetSelectCtrls(ctrIds);
                if (models.Count == 0)
                {
                    WinInfoHelper.ShowInfoWindow(this, "未找到控制器!");
                    return;
                }
                List <ManualResetEvent> events = new List <ManualResetEvent>();
                foreach (var item in models)
                {
                    ManualResetEvent evt = new ManualResetEvent(false);
                    events.Add(evt);
                    ThreadPool.QueueUserWorkItem(new WaitCallback((o) =>
                    {
                        Maticsoft.Model.SMT_CONTROLLER_INFO cinfo = item;
                        Controller c          = ControllerHelper.ToController(item);
                        bool isconnect        = false;
                        ControllerState state = null;
                        try
                        {
                            IAccessCore acc = new Li.Access.Core.WGAccesses.WGAccess();
                            state           = acc.GetControllerState(c);
                            if (state == null)
                            {
                                throw new Exception("通信不上");
                            }
                            isconnect = true;
                        }
                        catch (Exception ex)
                        {
                            isconnect = false;
                        }
                        finally
                        {
                            lock (items)
                            {
                                this.Invoke(new Action(() =>
                                {
                                    foreach (var it in items)
                                    {
                                        Maticsoft.Model.SMT_DOOR_INFO door = (Maticsoft.Model.SMT_DOOR_INFO)it.Tag;
                                        if (door.CTRL_ID == null || !door.IS_ENABLE)
                                        {
                                            continue;
                                        }
                                        if (door.CTRL_ID == c.id)
                                        {
                                            if (state == null || !isconnect)
                                            {
                                                it.ImageIndex = 2;
                                            }
                                            else
                                            {
                                                it.ImageIndex = state.relayState[(int)door.CTRL_DOOR_INDEX - 1] ? 1 : 0;
                                            }
                                            DateTime dt         = DateTime.Now;
                                            DataGridViewRow row = new DataGridViewRow();
                                            row.CreateCells(dgvRealLog, dt, door.DOOR_NAME, string.Format("控制器通信{0}:IP={1},SN={2}", isconnect ? "正常" : "不上", cinfo.IP, cinfo.SN_NO));
                                            dgvRealLog.Rows.Insert(0, row);
                                            row.Selected = true;
                                        }
                                    }
                                }));
                            }
                            evt.Set();
                        }
                    }));
                }
                foreach (var item in events)
                {
                    item.WaitOne(15000);
                }
            });

            waiting.Show(this);
        }
Exemplo n.º 22
0
        private void biAdjustTime_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("确定校准选择门禁的时间?", "提示", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
            {
                return;
            }
            dgvRealLog.ClearSelection();
            List <Maticsoft.Model.SMT_DOOR_INFO> doors = GetSelectDoors();
            List <ListViewItem> items = new List <ListViewItem>();

            foreach (ListViewItem item in listDoors.SelectedItems)
            {
                items.Add(item);
            }

            if (doors.Count == 0)
            {
                WinInfoHelper.ShowInfoWindow(this, "请选择门禁!");
                return;
            }
            List <decimal> ctrIds  = GetSelectCtrlIDs(doors);
            CtrlWaiting    waiting = new CtrlWaiting(() =>
            {
                var models = GetSelectCtrls(ctrIds);
                if (models.Count == 0)
                {
                    WinInfoHelper.ShowInfoWindow(this, "未找到控制器!");
                    return;
                }
                List <ManualResetEvent> events = new List <ManualResetEvent>();
                foreach (var item in models)
                {
                    ManualResetEvent evt = new ManualResetEvent(false);
                    events.Add(evt);
                    ThreadPool.QueueUserWorkItem(new WaitCallback((o) =>
                    {
                        Maticsoft.Model.SMT_CONTROLLER_INFO cinfo = item;
                        Controller c   = ControllerHelper.ToController(item);
                        bool isconnect = false;
                        bool succeed   = false;
                        try
                        {
                            IAccessCore acc = new Li.Access.Core.WGAccesses.WGAccess();
                            succeed         = acc.SetControllerTime(c, DateTime.Now);
                            if (!succeed)
                            {
                                throw new Exception("通信不上");
                            }
                            isconnect = true;
                        }
                        catch (Exception ex)
                        {
                            isconnect = false;
                        }
                        finally
                        {
                            lock (items)
                            {
                                this.Invoke(new Action(() =>
                                {
                                    foreach (var it in items)
                                    {
                                        Maticsoft.Model.SMT_DOOR_INFO door = (Maticsoft.Model.SMT_DOOR_INFO)it.Tag;
                                        if (door.CTRL_ID == null || !door.IS_ENABLE)
                                        {
                                            continue;
                                        }
                                        if (door.CTRL_ID == c.id)
                                        {
                                            DateTime dt         = DateTime.Now;
                                            DataGridViewRow row = new DataGridViewRow();
                                            if (!isconnect)
                                            {
                                                it.ImageIndex = 2;
                                                row.CreateCells(dgvRealLog, dt, door.DOOR_NAME, string.Format("校准时间{0},控制器通信{1}:IP={2},SN={3}", succeed ? "成功" : "失败", isconnect ? "正常" : "不上", cinfo.IP, cinfo.SN_NO));
                                            }
                                            else
                                            {
                                                if (it.ImageIndex == 2)
                                                {
                                                    it.ImageIndex = 0;
                                                }
                                                row.CreateCells(dgvRealLog, dt, door.DOOR_NAME, string.Format("校准时间{0}", succeed ? "成功" : "失败"));
                                            }
                                            dgvRealLog.Rows.Insert(0, row);
                                            row.Selected = true;
                                        }
                                    }
                                }));
                            }
                            evt.Set();
                        }
                    }));
                }
                foreach (var item in events)
                {
                    item.WaitOne(15000);
                }
            });

            waiting.Show(this);
        }
Exemplo n.º 23
0
        private void biAddDoorCamera_Click(object sender, EventArgs e)
        {
            var node = this.doorTree.Tree.SelectedNode;

            if (node == null)
            {
                WinInfoHelper.ShowInfoWindow(this, "请选择门禁!");
                return;
            }
            if (node.Tag is Maticsoft.Model.SMT_DOOR_INFO)
            {
                Maticsoft.Model.SMT_DOOR_INFO door = (Maticsoft.Model.SMT_DOOR_INFO)node.Tag;
                var rows = dgvCamera.SelectedRows;
                if (rows.Count == 0)
                {
                    WinInfoHelper.ShowInfoWindow(this, "请选择摄像头!");
                    return;
                }
                List <Maticsoft.Model.SMT_CAMERA_INFO> cameras = new List <Maticsoft.Model.SMT_CAMERA_INFO>();
                foreach (DataGridViewRow row in rows)
                {
                    Maticsoft.Model.SMT_CAMERA_INFO cameraInfo = (Maticsoft.Model.SMT_CAMERA_INFO)row.Tag;
                    cameras.Add(cameraInfo);
                }
                CtrlWaiting waiting = new CtrlWaiting(() =>
                {
                    try
                    {
                        foreach (var camera in cameras)
                        {
                            Maticsoft.BLL.SMT_DOOR_CAMERA dcBll = new Maticsoft.BLL.SMT_DOOR_CAMERA();
                            var dcModel = dcBll.GetModel(door.ID, camera.ID);
                            if (dcModel == null)
                            {
                                dcModel            = new Maticsoft.Model.SMT_DOOR_CAMERA();
                                dcModel.DOOR_ID    = door.ID;
                                dcModel.CAMERA_ID  = camera.ID;
                                dcModel.ENABLE_CAP = cbEnableCap.Checked;
                                dcBll.Add(dcModel);
                                this.Invoke(new Action(() =>
                                {
                                    AddToGridDoorCamera(door, camera, dcModel.ENABLE_CAP);
                                }));
                            }
                            else
                            {
                                if (dcModel.ENABLE_CAP != cbEnableCap.Checked)
                                {
                                    dcModel.ENABLE_CAP = cbEnableCap.Checked;
                                    dcBll.Update(dcModel);
                                    this.Invoke(new Action(() =>
                                    {
                                        foreach (DataGridViewRow row in this.dgvDoorCamera.Rows)
                                        {
                                            DoorCamera dc = (DoorCamera)row.Tag;
                                            if (dc.DOOR_ID == door.ID && dc.CAMERA_ID == camera.ID)
                                            {
                                                row.Cells[2].Value = dcModel.ENABLE_CAP;
                                                break;
                                            }
                                        }
                                    }));
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        log.Error("添加关系异常:", ex);
                        WinInfoHelper.ShowInfoWindow(this, "添加门禁相机关系异常:" + ex.Message);
                    }
                });
                waiting.Show(this);
            }
            else
            {
                WinInfoHelper.ShowInfoWindow(this, "请选择门禁节点!");
            }
        }
Exemplo n.º 24
0
 /// <summary>
 /// 得到一个对象实体
 /// </summary>
 public Maticsoft.Model.SMT_DOOR_INFO DataRowToModel(DataRow row)
 {
     Maticsoft.Model.SMT_DOOR_INFO model = new Maticsoft.Model.SMT_DOOR_INFO();
     if (row != null)
     {
         if (row["ID"] != null && row["ID"].ToString() != "")
         {
             model.ID = decimal.Parse(row["ID"].ToString());
         }
         if (row["DOOR_NAME"] != null)
         {
             model.DOOR_NAME = row["DOOR_NAME"].ToString();
         }
         if (row["CTRL_ID"] != null && row["CTRL_ID"].ToString() != "")
         {
             model.CTRL_ID = decimal.Parse(row["CTRL_ID"].ToString());
         }
         if (row["CTRL_DOOR_INDEX"] != null && row["CTRL_DOOR_INDEX"].ToString() != "")
         {
             model.CTRL_DOOR_INDEX = int.Parse(row["CTRL_DOOR_INDEX"].ToString());
         }
         if (row["DOOR_DESC"] != null)
         {
             model.DOOR_DESC = row["DOOR_DESC"].ToString();
         }
         if (row["CTRL_STYLE"] != null && row["CTRL_STYLE"].ToString() != "")
         {
             model.CTRL_STYLE = int.Parse(row["CTRL_STYLE"].ToString());
         }
         if (row["CTRL_DELAY_TIME"] != null && row["CTRL_DELAY_TIME"].ToString() != "")
         {
             model.CTRL_DELAY_TIME = int.Parse(row["CTRL_DELAY_TIME"].ToString());
         }
         if (row["IS_ENABLE"] != null && row["IS_ENABLE"].ToString() != "")
         {
             if ((row["IS_ENABLE"].ToString() == "1") || (row["IS_ENABLE"].ToString().ToLower() == "true"))
             {
                 model.IS_ENABLE = true;
             }
             else
             {
                 model.IS_ENABLE = false;
             }
         }
         if (row["IS_ENTER1"] != null && row["IS_ENTER1"].ToString() != "")
         {
             if ((row["IS_ENTER1"].ToString() == "1") || (row["IS_ENTER1"].ToString().ToLower() == "true"))
             {
                 model.IS_ENTER1 = true;
             }
             else
             {
                 model.IS_ENTER1 = false;
             }
         }
         if (row["IS_ENTER2"] != null && row["IS_ENTER2"].ToString() != "")
         {
             if ((row["IS_ENTER2"].ToString() == "1") || (row["IS_ENTER2"].ToString().ToLower() == "true"))
             {
                 model.IS_ENTER2 = true;
             }
             else
             {
                 model.IS_ENTER2 = false;
             }
         }
         if (row["IS_ATTENDANCE1"] != null && row["IS_ATTENDANCE1"].ToString() != "")
         {
             if ((row["IS_ATTENDANCE1"].ToString() == "1") || (row["IS_ATTENDANCE1"].ToString().ToLower() == "true"))
             {
                 model.IS_ATTENDANCE1 = true;
             }
             else
             {
                 model.IS_ATTENDANCE1 = false;
             }
         }
         if (row["IS_ATTENDANCE2"] != null && row["IS_ATTENDANCE2"].ToString() != "")
         {
             if ((row["IS_ATTENDANCE2"].ToString() == "1") || (row["IS_ATTENDANCE2"].ToString().ToLower() == "true"))
             {
                 model.IS_ATTENDANCE2 = true;
             }
             else
             {
                 model.IS_ATTENDANCE2 = false;
             }
         }
         if (row["OPEN_STATE"] != null && row["OPEN_STATE"].ToString() != "")
         {
             model.OPEN_STATE = int.Parse(row["OPEN_STATE"].ToString());
         }
         if (row["IS_ALLOW_VISITOR"] != null && row["IS_ALLOW_VISITOR"].ToString() != "")
         {
             if ((row["IS_ALLOW_VISITOR"].ToString() == "1") || (row["IS_ALLOW_VISITOR"].ToString().ToLower() == "true"))
             {
                 model.IS_ALLOW_VISITOR = true;
             }
             else
             {
                 model.IS_ALLOW_VISITOR = false;
             }
         }
     }
     return(model);
 }
Exemplo n.º 25
0
        private void DoSave(bool upload)
        {
            try
            {
                if (!CheckInput())
                {
                    return;
                }
                Maticsoft.Model.SMT_CONTROLLER_INFO ctrlInfo = new Maticsoft.Model.SMT_CONTROLLER_INFO();
                if (_ctrlr != null)
                {
                    ctrlInfo.MAC            = _ctrlr.MAC;
                    ctrlInfo.ID             = _ctrlr.ID;
                    ctrlInfo.MASK           = _ctrlr.MASK;
                    ctrlInfo.ORG_ID         = _ctrlr.ORG_ID;
                    ctrlInfo.ORDER_VALUE    = _ctrlr.ORDER_VALUE;
                    ctrlInfo.CTRLR_MODEL    = _ctrlr.CTRLR_MODEL;
                    ctrlInfo.DRIVER_DATE    = _ctrlr.DRIVER_DATE;
                    ctrlInfo.DRIVER_VERSION = _ctrlr.DRIVER_VERSION;
                    ctrlInfo.GATEWAY        = _ctrlr.GATEWAY;
                }
                else
                {
                    ctrlInfo.ID = -1;
                }
                ctrlInfo.SN_NO     = tbCtrlrSn.Text.Trim();
                ctrlInfo.IS_ENABLE = cbCtrlrEnable.Checked;
                string name = tbCtrlName.Text.Trim();
                if (name == "")
                {
                    name = ctrlInfo.SN_NO;
                }
                ctrlInfo.NAME       = name;
                ctrlInfo.IP         = ipCtrlr.Value;
                ctrlInfo.PORT       = iiPort.Value;
                ctrlInfo.CTRLR_DESC = tbDesc.Text.Trim();
                ctrlInfo.CTRLR_TYPE = (int)_lastType;
                ctrlInfo.AREA_ID    = -1;
                if (cboTreeArea.SelectedNode != null && cboTreeArea.SelectedNode.Tag is Maticsoft.Model.SMT_CONTROLLER_ZONE)
                {
                    var area = cboTreeArea.SelectedNode.Tag as Maticsoft.Model.SMT_CONTROLLER_ZONE;
                    ctrlInfo.AREA_ID   = area.ID;
                    ctrlInfo.AREA_NAME = area.ZONE_NAME;
                }

                List <DoorNameAttriData>             doorNameDatas   = doorNameAttriGroup.GetDatas();
                List <DoorReaderAttriData>           doorReaderDatas = doorReaderAttriGroup.GetDatas();
                List <Maticsoft.Model.SMT_DOOR_INFO> doors           = new List <Maticsoft.Model.SMT_DOOR_INFO>();
                foreach (var item in doorNameDatas)
                {
                    Maticsoft.Model.SMT_DOOR_INFO door = new Maticsoft.Model.SMT_DOOR_INFO();
                    door.CTRL_ID          = ctrlInfo.ID;
                    door.CTRL_DELAY_TIME  = item.doorSecond;
                    door.CTRL_DOOR_INDEX  = item.doorNo;
                    door.CTRL_STYLE       = item.doorCtrlType;
                    door.IS_ALLOW_VISITOR = item.visitor;
                    if (_ctrlr != null)
                    {
                        var old = _ctrlr.DOOR_INFOS.Find(m => m.CTRL_DOOR_INDEX == item.doorNo);
                        if (old != null)
                        {
                            door.ID        = old.ID;
                            door.DOOR_DESC = old.DOOR_DESC;
                        }
                    }
                    else
                    {
                        door.ID        = -1;
                        door.DOOR_DESC = "";
                    }
                    door.DOOR_NAME = item.doorName;
                    DoorReaderAttriData reader1 = doorReaderDatas.Find(m => m.doorNo == item.doorNo && m.isEnter1);
                    DoorReaderAttriData reader2 = doorReaderDatas.Find(m => m.doorNo == item.doorNo && !m.isEnter1);
                    door.IS_ATTENDANCE1 = reader1 == null ? false : reader1.isAttend;
                    door.IS_ATTENDANCE2 = reader2 == null ? false : reader2.isAttend;
                    door.IS_ENABLE      = item.doorEnable;
                    door.IS_ENTER1      = reader1 == null ? false : reader1.isEnter;
                    door.IS_ENTER2      = reader2 == null ? false : reader2.isEnter;
                    doors.Add(door);
                }
                CtrlWaiting ctrlWaiting = new CtrlWaiting(() =>
                {
                    try
                    {
                        Maticsoft.BLL.SMT_CONTROLLER_INFO ctrlBll = new Maticsoft.BLL.SMT_CONTROLLER_INFO();
                        var exists = ctrlBll.GetModelList("SN_NO='" + ctrlInfo.SN_NO + "'");

                        if (ctrlInfo.ID != -1)
                        {
                            if (exists.Count > 0)
                            {
                                if (exists[0].ID != ctrlInfo.ID)
                                {
                                    WinInfoHelper.ShowInfoWindow(this, "已存在控制器序列号:" + ctrlInfo.SN_NO);
                                    return;
                                }
                            }
                            ctrlBll.Update(ctrlInfo);
                            ctrlInfo.DOOR_INFOS = _ctrlr.DOOR_INFOS;
                            _ctrlr = ctrlInfo;
                        }
                        else
                        {
                            if (exists.Count > 0)
                            {
                                WinInfoHelper.ShowInfoWindow(this, "已存在控制器序列号:" + ctrlInfo.SN_NO);
                                return;
                            }
                            ctrlInfo.ID = ctrlBll.Add(ctrlInfo);
                            _ctrlr      = ctrlInfo;
                        }

                        if (_lastType != ControllerDoorType.Elevator)//非电梯控制器
                        {
                            Maticsoft.BLL.SMT_DOOR_INFO doorBll = new Maticsoft.BLL.SMT_DOOR_INFO();

                            foreach (var item in doors)
                            {
                                var edoors = doorBll.GetModelList("CTRL_ID=" + ctrlInfo.ID + " and " + " CTRL_DOOR_INDEX=" + item.CTRL_DOOR_INDEX);
                                if (edoors.Count > 0)
                                {
                                    item.ID = edoors[0].ID;
                                    doorBll.Update(item);
                                }
                                else
                                {
                                    item.CTRL_ID = ctrlInfo.ID;
                                    item.ID      = doorBll.Add(item);
                                }
                            }
                            _ctrlr.DOOR_INFOS = doors;

                            if (upload)
                            {
                                string errMsg = null;
                                if (UploadPrivate.UploadByCtrlr(_ctrlr, out errMsg, doors, true))
                                {
                                    if (errMsg != "")
                                    {
                                        WinInfoHelper.ShowInfoWindow(this, "设置控制器" + (_ctrlr.IS_ENABLE ? "启用" : "禁用") + "异常:" + errMsg);
                                        return;
                                    }
                                }
                                else
                                {
                                    WinInfoHelper.ShowInfoWindow(this, "设置控制器" + (_ctrlr.IS_ENABLE ? "启用" : "禁用") + "异常:" + errMsg);
                                    return;
                                }
                                Controller c = ControllerHelper.ToController(_ctrlr);
                                //设置门控制方式
                                foreach (var item in doors)
                                {
                                    using (IAccessCore access = new WGAccess())
                                    {
                                        bool ret = access.SetDoorControlStyle(c, (int)item.CTRL_DOOR_INDEX, (DoorControlStyle)item.CTRL_STYLE, item.CTRL_DELAY_TIME);
                                        if (!ret)
                                        {
                                            WinInfoHelper.ShowInfoWindow(this, "上传门控制方式失败!");
                                            return;
                                        }
                                    }
                                }
                            }
                        }
                        this.Invoke(new Action(() =>
                        {
                            this.DialogResult = DialogResult.OK;
                            this.Close();
                        }));
                    }
                    catch (Exception ex)
                    {
                        log.Error("保存异常:" + ex.Message, ex);
                        WinInfoHelper.ShowInfoWindow(this, "保存异常:" + ex.Message);
                    }
                });
                ctrlWaiting.Show(this);
            }
            catch (Exception ex)
            {
                WinInfoHelper.ShowInfoWindow(this, "保存异常:" + ex.Message);
                log.Error("保存异常:" + ex.Message, ex);
            }
        }
Exemplo n.º 26
0
        public void AddDoorInfo(Maticsoft.Model.SMT_DOOR_INFO doorInfo, Maticsoft.Model.SMT_FACERECG_DEVICE faceDevInfo, Point ctrlPoint)
        {
            decimal id       = 0;
            int     type     = 1;
            string  doorname = "";

            if (doorInfo != null)
            {
                id       = doorInfo.ID;
                type     = 1;
                doorname = doorInfo.DOOR_NAME;
            }
            else if (faceDevInfo != null)
            {
                id       = faceDevInfo.ID;
                type     = 2;
                doorname = faceDevInfo.FACEDEV_NAME;
            }
            else
            {
                return;
            }

            if (_doors.Exists(m => m.Id == id && m.DoorType == type))
            {
                return;
            }
            DoorRectangle dr = new DoorRectangle();

            dr.Id         = id;
            dr.DoorType   = type;
            dr.DoorName   = doorname;
            dr.IsOnline   = true;
            dr.IsOpen     = false;
            dr.IsSelected = false;
            PointF pf = ToExtentPoint(ctrlPoint);

            dr.RatioX      = pf.X;
            dr.RatioY      = pf.Y;
            dr.RatioWidth  = (double)32 / _mapRect.Width;
            dr.RatioHeight = (double)32 / _mapRect.Height;

            RectangleF rect = dr.GetRect(_mapRect);

            if (rect.Left - _mapRect.Left < 0)
            {
                dr.RatioX = 0;
            }
            if (rect.Top - _mapRect.Top < 0)
            {
                dr.RatioY = 0;
            }
            if (rect.Right > _mapRect.Right)
            {
                dr.RatioX -= (rect.Right - _mapRect.Right) / _mapRect.Width;
            }
            if (rect.Bottom > _mapRect.Bottom)
            {
                dr.RatioY -= (rect.Bottom - _mapRect.Bottom) / _mapRect.Height;
            }

            _doors.Add(dr);
            this.Invalidate();
        }
Exemplo n.º 27
0
        private void SetAccessExAttribute(ControllerDoorType doorType)
        {
            if (_lastType == null)
            {
                _lastType = doorType;
            }
            else
            {
                if (_lastType == doorType)
                {
                    return;
                }
            }
            _lastType = doorType;
            int doorCount      = 1;
            int directionCount = 1;

            switch (doorType)
            {
            case ControllerDoorType.OneDoorTwoDirections:
            {
                this.tabItemDoor.Text = "【单门双向控制器】属性";
                doorCount             = 1;
                directionCount        = 2;
            }
            break;

            case ControllerDoorType.TwoDoorsTwoDirections:
            {
                this.tabItemDoor.Text = "【双门双向控制器】属性";
                doorCount             = 2;
                directionCount        = 2;
            }
            break;

            case ControllerDoorType.FourDoorsOneDirection:
            {
                this.tabItemDoor.Text = "【四门单向控制器】属性";
                doorCount             = 4;
                directionCount        = 1;
            }
            break;

            case ControllerDoorType.Elevator:
            {
                return;
            }
            break;

            default:
                break;
            }
            List <DoorNameAttriData>   doorNameDatas   = new List <DoorNameAttriData>();
            List <DoorReaderAttriData> doorReaderDatas = new List <DoorReaderAttriData>();

            for (int i = 0; i < doorCount; i++)
            {
                DoorNameAttriData data = new DoorNameAttriData();
                data.doorNo       = i + 1;
                data.doorCtrlType = 0;
                data.doorEnable   = true;
                data.doorName     = "门_" + tbCtrlrSn.Text.Trim() + "_" + data.doorNo;
                data.doorSecond   = 3;
                Maticsoft.Model.SMT_DOOR_INFO doorInfo = null;
                if (_ctrlr != null)
                {
                    if (_ctrlr.DOOR_INFOS != null)
                    {
                        doorInfo = _ctrlr.DOOR_INFOS.Find(m => m.CTRL_ID == _ctrlr.ID && (m.CTRL_DOOR_INDEX == data.doorNo));
                        if (doorInfo != null)
                        {
                            if (!string.IsNullOrWhiteSpace(doorInfo.DOOR_NAME))
                            {
                                data.doorName = doorInfo.DOOR_NAME;
                            }
                            data.doorCtrlType = doorInfo.CTRL_STYLE;
                            data.doorEnable   = doorInfo.IS_ENABLE;
                            data.doorSecond   = doorInfo.CTRL_DELAY_TIME;
                            data.visitor      = doorInfo.IS_ALLOW_VISITOR;
                        }
                    }
                }
                doorNameDatas.Add(data);
                for (int j = 0; j < directionCount; j++)
                {
                    DoorReaderAttriData rdata = new DoorReaderAttriData();
                    rdata.doorNo   = data.doorNo;
                    rdata.isEnter  = rdata.isNoEnter = j == 0;
                    rdata.isAttend = false;
                    rdata.isEnter1 = j == 0;
                    if (doorInfo != null)
                    {
                        rdata.isEnter  = j == 0 ? doorInfo.IS_ENTER1 : doorInfo.IS_ENTER2;
                        rdata.isAttend = j == 0 ? doorInfo.IS_ATTENDANCE1 : doorInfo.IS_ATTENDANCE2;
                    }
                    doorReaderDatas.Add(rdata);
                }
            }

            doorNameAttriGroup.SetDatas(doorNameDatas);
            doorReaderAttriGroup.SetDatas(doorReaderDatas);
        }