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); } }
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); }
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); } } } }
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); }
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; }
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); }
/// <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(); } }
/// <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)); } }
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(); } } }
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); } })); } }
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); }
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; }
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); }
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; } } }
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); }
/// <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); } }
/// <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); } }
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); }
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 }
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; } })); }
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); }
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); }
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, "请选择门禁节点!"); } }
/// <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); }
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); } }
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(); }
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); }