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 UpdateRow(DataGridViewRow row, Maticsoft.Model.SMT_CONTROLLER_INFO ctrl) { if (ctrl == null) { return; } string doors = ""; if (ctrl.DOOR_INFOS != null && ctrl.DOOR_INFOS.Count > 0) { foreach (var door in ctrl.DOOR_INFOS) { doors += door.DOOR_NAME + ";"; } } row.Cells[0].Value = ctrl.NAME; row.Cells[1].Value = ctrl.SN_NO; row.Cells[2].Value = ctrl.IS_ENABLE ? "启用" : "禁用"; row.Cells[3].Value = ctrl.IP; row.Cells[4].Value = ctrl.PORT; row.Cells[5].Value = ctrl.AREA_NAME; row.Cells[6].Value = ctrl.CTRLR_DESC; row.Cells[7].Value = doors;//所控制的门 row.Tag = ctrl; }
private void DoAddCtrlr(DataGridViewRow row) { Controller ctrlr = (Controller)row.Tag; CtrlWaiting ctrlWaiting = new CtrlWaiting("添加控制...", () => { try { Maticsoft.Model.SMT_CONTROLLER_INFO info = ControllerHelper.AddController(ctrlr); if (info != null) { log.Info("添加控制器成功:" + ctrlr.sn + "," + ctrlr.ip); WinInfoHelper.ShowInfoWindow(this, "添加/更新控制器成功,请编辑控制器参数."); Changed = true; this.Invoke(new Action(() => { FrmAddOrModifyCtrlr modify = new FrmAddOrModifyCtrlr(info); modify.ShowDialog(this); })); } else { log.Warn("添加控制器失败:" + ctrlr.sn + "," + ctrlr.ip); WinInfoHelper.ShowInfoWindow(this, "添加/更新控制器失败!"); } } catch (Exception ex) { log.Error("添加控制器异常:", ex); WinInfoHelper.ShowInfoWindow(this, "添加/更新控制器失败:" + ex.Message); } }); ctrlWaiting.Show(this); }
private void DoShow(Maticsoft.Model.SMT_CONTROLLER_INFO ctrl, Maticsoft.Model.SMT_ALARM_SETTING alarmSetting) { alarmSetting.CONTROLLER_INFO = ctrl; DataGridViewRow row = new DataGridViewRow(); string doors = ""; foreach (var item in ctrl.DOOR_INFOS) { doors += item.DOOR_NAME + ";"; } row.CreateCells(dgvData, ctrl.NAME, ctrl.SN_NO, alarmSetting.ENABLE_FORCE_PWD, alarmSetting.ENABLE_CLOSED_TIMEOUT, alarmSetting.ENABLE_FORCE_ACCESS, alarmSetting.ENABLE_FORCE_CLOSE, alarmSetting.ENABLE_INVALID_CARD, alarmSetting.ENABLE_FIRE, alarmSetting.ENABLE_STEAL, alarmSetting.ENABLE_FORCE_CARD, doors); row.Tag = alarmSetting; dgvData.Rows.Add(row); if (dgvData.Rows.Count == 1) { DoSelectRow(row); } }
private void tsmiResetRecord_Click(object sender, EventArgs e) { DataGridViewRow row = GetSelectRow(); if (row == null) { WinInfoHelper.ShowInfoWindow(this, "未有选择控制器!"); return; } Maticsoft.Model.SMT_CONTROLLER_INFO ctrlInfo = (Maticsoft.Model.SMT_CONTROLLER_INFO)row.Tag; if (MessageBox.Show("确定恢复该控制器" + ctrlInfo.NAME + "记录读取?", "确定", MessageBoxButtons.OKCancel) != DialogResult.OK) { return; } CtrlWaiting waiting = new CtrlWaiting(() => { try { IAccessCore acc = new WGAccess(); var c = ControllerHelper.ToController(ctrlInfo); bool ret = acc.SetControllerReadedIndex(c, 0); WinInfoHelper.ShowInfoWindow(this, "恢复控制器" + ctrlInfo.NAME + "记录" + (ret ? "成功!" : "失败!")); } catch (Exception ex) { log.Error("恢复控制器记录异常:", ex); WinInfoHelper.ShowInfoWindow(this, "恢复控制器" + ctrlInfo.NAME + "记录异常:" + ex.Message); } }); waiting.Show(this); }
/// <summary> /// 增加一条数据 /// </summary> public decimal Add(Maticsoft.Model.SMT_CONTROLLER_INFO model) { StringBuilder strSql = new StringBuilder(); strSql.Append("insert into SMT_CONTROLLER_INFO("); strSql.Append("SN_NO,NAME,IP,PORT,MASK,GATEWAY,MAC,CTRLR_TYPE,DRIVER_VERSION,DRIVER_DATE,CTRLR_DESC,AREA_ID,ORDER_VALUE,ORG_ID,CTRLR_MODEL,IS_ENABLE,ENABLE_BUTTON_RECORD)"); strSql.Append(" values ("); strSql.Append("@SN_NO,@NAME,@IP,@PORT,@MASK,@GATEWAY,@MAC,@CTRLR_TYPE,@DRIVER_VERSION,@DRIVER_DATE,@CTRLR_DESC,@AREA_ID,@ORDER_VALUE,@ORG_ID,@CTRLR_MODEL,@IS_ENABLE,@ENABLE_BUTTON_RECORD)"); strSql.Append(";select @@IDENTITY"); SqlParameter[] parameters = { new SqlParameter("@SN_NO", SqlDbType.VarChar, 100), new SqlParameter("@NAME", SqlDbType.NVarChar, 200), new SqlParameter("@IP", SqlDbType.VarChar, 40), new SqlParameter("@PORT", SqlDbType.Int, 4), new SqlParameter("@MASK", SqlDbType.VarChar, 40), new SqlParameter("@GATEWAY", SqlDbType.VarChar, 40), new SqlParameter("@MAC", SqlDbType.VarChar, 40), new SqlParameter("@CTRLR_TYPE", SqlDbType.TinyInt, 1), new SqlParameter("@DRIVER_VERSION", SqlDbType.VarChar, 20), new SqlParameter("@DRIVER_DATE", SqlDbType.Date, 3), new SqlParameter("@CTRLR_DESC", SqlDbType.NVarChar, 400), new SqlParameter("@AREA_ID", SqlDbType.Decimal, 9), new SqlParameter("@ORDER_VALUE", SqlDbType.Int, 4), new SqlParameter("@ORG_ID", SqlDbType.Decimal, 9), new SqlParameter("@CTRLR_MODEL", SqlDbType.VarChar, 20), new SqlParameter("@IS_ENABLE", SqlDbType.Bit, 1), new SqlParameter("@ENABLE_BUTTON_RECORD", SqlDbType.Bit, 1) }; parameters[0].Value = model.SN_NO; parameters[1].Value = model.NAME; parameters[2].Value = model.IP; parameters[3].Value = model.PORT; parameters[4].Value = model.MASK; parameters[5].Value = model.GATEWAY; parameters[6].Value = model.MAC; parameters[7].Value = model.CTRLR_TYPE; parameters[8].Value = model.DRIVER_VERSION; parameters[9].Value = model.DRIVER_DATE; parameters[10].Value = model.CTRLR_DESC; parameters[11].Value = model.AREA_ID; parameters[12].Value = model.ORDER_VALUE; parameters[13].Value = model.ORG_ID; parameters[14].Value = model.CTRLR_MODEL; parameters[15].Value = model.IS_ENABLE; parameters[16].Value = model.ENABLE_BUTTON_RECORD; object obj = DbHelperSQL.GetSingle(strSql.ToString(), parameters); if (obj == null) { return(0); } else { return(Convert.ToDecimal(obj)); } }
private void DoModify(DataGridViewRow row) { Maticsoft.Model.SMT_CONTROLLER_INFO ctrlr = (Maticsoft.Model.SMT_CONTROLLER_INFO)row.Tag; FrmAddOrModifyCtrlr frmModify = new FrmAddOrModifyCtrlr(ctrlr); if (frmModify.ShowDialog(this) == DialogResult.OK) { UpdateRow(row, frmModify.Controller); } }
private void cmsCtrl_Opened(object sender, EventArgs e) { DataGridViewRow row = GetSelectRow(); if (row == null) { WinInfoHelper.ShowInfoWindow(this, "未有选择控制器!"); return; } Maticsoft.Model.SMT_CONTROLLER_INFO ctrlInfo = (Maticsoft.Model.SMT_CONTROLLER_INFO)row.Tag; tsmiRecordButton.Checked = ctrlInfo.ENABLE_BUTTON_RECORD; }
public Maticsoft.Model.SMT_CONTROLLER_INFO DataRowToModelWithArea(DataRow row) { Maticsoft.Model.SMT_CONTROLLER_INFO model = DataRowToModel(row); if (row != null) { if (row["ZONE_NAME"] != null) { model.AREA_NAME = row["ZONE_NAME"].ToString(); } } return(model); }
public FrmAddOrModifyCtrlr(Maticsoft.Model.SMT_CONTROLLER_INFO ctrlr) { InitializeComponent(); this._ctrlr = ctrlr; if (this._ctrlr != null) { this.Text = "修改控制器"; } else { this.Text = "添加控制器"; } }
public static Controller ToController(Maticsoft.Model.SMT_CONTROLLER_INFO info) { Controller ctrlr = new Controller(); ControllerDoorType type = ControllerDoorType.TwoDoorsTwoDirections; Enum.TryParse <ControllerDoorType>(Convert.ToString(info.CTRLR_TYPE), out type); ctrlr.doorType = type; ctrlr.driverReleaseTime = info.DRIVER_DATE == null ? DateTime.MinValue : (DateTime)info.DRIVER_DATE; ctrlr.driverVersion = info.DRIVER_VERSION; ctrlr.gateway = info.GATEWAY; ctrlr.id = info.ID; ctrlr.ip = info.IP; ctrlr.mac = info.MAC; ctrlr.mask = info.MASK; ctrlr.model = info.CTRLR_MODEL; ctrlr.port = info.PORT == null ? 60000 : (int)info.PORT; ctrlr.sn = info.SN_NO; return(ctrlr); }
public static Maticsoft.Model.SMT_CONTROLLER_INFO ToInfo(Controller ctrlr) { Maticsoft.Model.SMT_CONTROLLER_INFO info = new Maticsoft.Model.SMT_CONTROLLER_INFO(); info.AREA_ID = -1; info.CTRLR_DESC = ""; info.CTRLR_MODEL = ctrlr.model; info.CTRLR_TYPE = (int)ctrlr.doorType; info.DRIVER_DATE = ctrlr.driverReleaseTime; info.DRIVER_VERSION = ctrlr.driverVersion; info.GATEWAY = ctrlr.gateway; info.IP = ctrlr.ip; info.MAC = ctrlr.mac; info.MASK = ctrlr.mask; info.NAME = ctrlr.ip; info.ORDER_VALUE = 100; info.ORG_ID = -1; info.PORT = ctrlr.port; info.SN_NO = ctrlr.sn; info.IS_ENABLE = true; return(info); }
private void tsmiRecordButton_Click(object sender, EventArgs e) { DataGridViewRow row = GetSelectRow(); if (row == null) { WinInfoHelper.ShowInfoWindow(this, "未有选择控制器!"); return; } Maticsoft.Model.SMT_CONTROLLER_INFO ctrlInfo = (Maticsoft.Model.SMT_CONTROLLER_INFO)row.Tag; CtrlWaiting waiting = new CtrlWaiting(() => { try { IAccessCore access = new WGAccess(); var c = ControllerHelper.ToController(ctrlInfo); bool ret = access.SetRecordButtonRecords(c, !ctrlInfo.ENABLE_BUTTON_RECORD); if (!ret) { WinInfoHelper.ShowInfoWindow(this, "设置按钮记录状态失败!"); } else { Maticsoft.BLL.SMT_CONTROLLER_INFO ctrlBll = new Maticsoft.BLL.SMT_CONTROLLER_INFO(); ctrlInfo.ENABLE_BUTTON_RECORD = !ctrlInfo.ENABLE_BUTTON_RECORD; ctrlBll.Update(ctrlInfo); } } catch (System.Exception ex) { log.Error("设置按钮记录状态异常:", ex); WinInfoHelper.ShowInfoWindow(this, "设置按钮记录状态异常:" + ex.Message); } }); waiting.Show(this); }
private void AddRow(Maticsoft.Model.SMT_CONTROLLER_INFO ctrl, string filter = null) { if (!string.IsNullOrWhiteSpace(filter)) { string str = ctrl.NAME + " " + ctrl.SN_NO + " " + ctrl.IP + " " + ctrl.AREA_NAME; if (!str.Contains(filter.Trim())) { return; } } DataGridViewRow row = new DataGridViewRow(); string doors = ""; if (ctrl.DOOR_INFOS != null && ctrl.DOOR_INFOS.Count > 0) { foreach (var door in ctrl.DOOR_INFOS) { doors += door.DOOR_NAME + ";"; } } row.CreateCells(dgvCtrlr, ctrl.NAME, ctrl.SN_NO, ctrl.IS_ENABLE?"启用":"禁用", ctrl.IP, ctrl.PORT, ctrl.AREA_NAME, ctrl.CTRLR_DESC, doors,//所控制的门 ctrl.DRIVER_VERSION, "修改", "删除" ); row.Tag = ctrl; dgvCtrlr.Rows.Add(row); }
/// <summary> /// 得到一个对象实体 /// </summary> public Maticsoft.Model.SMT_CONTROLLER_INFO GetModel(decimal ID) { StringBuilder strSql = new StringBuilder(); strSql.Append("select top 1 ID,SN_NO,NAME,IP,PORT,MASK,GATEWAY,MAC,CTRLR_TYPE,DRIVER_VERSION,DRIVER_DATE,CTRLR_DESC,AREA_ID,ORDER_VALUE,ORG_ID,CTRLR_MODEL,IS_ENABLE,ENABLE_BUTTON_RECORD from SMT_CONTROLLER_INFO "); strSql.Append(" where ID=@ID"); SqlParameter[] parameters = { new SqlParameter("@ID", SqlDbType.Decimal) }; parameters[0].Value = ID; Maticsoft.Model.SMT_CONTROLLER_INFO model = new Maticsoft.Model.SMT_CONTROLLER_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_CONTROLLER_INFO model) { StringBuilder strSql = new StringBuilder(); strSql.Append("update SMT_CONTROLLER_INFO set "); strSql.Append("NAME=@NAME,"); strSql.Append("IP=@IP,"); strSql.Append("PORT=@PORT,"); strSql.Append("MASK=@MASK,"); strSql.Append("GATEWAY=@GATEWAY,"); strSql.Append("MAC=@MAC,"); strSql.Append("CTRLR_TYPE=@CTRLR_TYPE,"); strSql.Append("DRIVER_VERSION=@DRIVER_VERSION,"); strSql.Append("DRIVER_DATE=@DRIVER_DATE,"); strSql.Append("CTRLR_DESC=@CTRLR_DESC,"); strSql.Append("AREA_ID=@AREA_ID,"); strSql.Append("ORDER_VALUE=@ORDER_VALUE,"); strSql.Append("ORG_ID=@ORG_ID,"); strSql.Append("CTRLR_MODEL=@CTRLR_MODEL,"); strSql.Append("IS_ENABLE=@IS_ENABLE,"); strSql.Append("ENABLE_BUTTON_RECORD=@ENABLE_BUTTON_RECORD"); strSql.Append(" where ID=@ID"); SqlParameter[] parameters = { new SqlParameter("@NAME", SqlDbType.NVarChar, 200), new SqlParameter("@IP", SqlDbType.VarChar, 40), new SqlParameter("@PORT", SqlDbType.Int, 4), new SqlParameter("@MASK", SqlDbType.VarChar, 40), new SqlParameter("@GATEWAY", SqlDbType.VarChar, 40), new SqlParameter("@MAC", SqlDbType.VarChar, 40), new SqlParameter("@CTRLR_TYPE", SqlDbType.TinyInt, 1), new SqlParameter("@DRIVER_VERSION", SqlDbType.VarChar, 20), new SqlParameter("@DRIVER_DATE", SqlDbType.Date, 3), new SqlParameter("@CTRLR_DESC", SqlDbType.NVarChar, 400), new SqlParameter("@AREA_ID", SqlDbType.Decimal, 9), new SqlParameter("@ORDER_VALUE", SqlDbType.Int, 4), new SqlParameter("@ORG_ID", SqlDbType.Decimal, 9), new SqlParameter("@CTRLR_MODEL", SqlDbType.VarChar, 20), new SqlParameter("@IS_ENABLE", SqlDbType.Bit, 1), new SqlParameter("@ENABLE_BUTTON_RECORD", SqlDbType.Bit, 1), new SqlParameter("@ID", SqlDbType.Decimal, 9), new SqlParameter("@SN_NO", SqlDbType.VarChar, 100) }; parameters[0].Value = model.NAME; parameters[1].Value = model.IP; parameters[2].Value = model.PORT; parameters[3].Value = model.MASK; parameters[4].Value = model.GATEWAY; parameters[5].Value = model.MAC; parameters[6].Value = model.CTRLR_TYPE; parameters[7].Value = model.DRIVER_VERSION; parameters[8].Value = model.DRIVER_DATE; parameters[9].Value = model.CTRLR_DESC; parameters[10].Value = model.AREA_ID; parameters[11].Value = model.ORDER_VALUE; parameters[12].Value = model.ORG_ID; parameters[13].Value = model.CTRLR_MODEL; parameters[14].Value = model.IS_ENABLE; parameters[15].Value = model.ENABLE_BUTTON_RECORD; parameters[16].Value = model.ID; parameters[17].Value = model.SN_NO; int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters); if (rows > 0) { return(true); } else { return(false); } }
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 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); }
/// <summary> /// 得到一个对象实体 /// </summary> public Maticsoft.Model.SMT_CONTROLLER_INFO DataRowToModel(DataRow row) { Maticsoft.Model.SMT_CONTROLLER_INFO model = new Maticsoft.Model.SMT_CONTROLLER_INFO(); if (row != null) { if (row["ID"] != null && row["ID"].ToString() != "") { model.ID = decimal.Parse(row["ID"].ToString()); } if (row["SN_NO"] != null) { model.SN_NO = row["SN_NO"].ToString(); } if (row["NAME"] != null) { model.NAME = row["NAME"].ToString(); } if (row["IP"] != null) { model.IP = row["IP"].ToString(); } if (row["PORT"] != null && row["PORT"].ToString() != "") { model.PORT = int.Parse(row["PORT"].ToString()); } if (row["MASK"] != null) { model.MASK = row["MASK"].ToString(); } if (row["GATEWAY"] != null) { model.GATEWAY = row["GATEWAY"].ToString(); } if (row["MAC"] != null) { model.MAC = row["MAC"].ToString(); } if (row["CTRLR_TYPE"] != null && row["CTRLR_TYPE"].ToString() != "") { model.CTRLR_TYPE = int.Parse(row["CTRLR_TYPE"].ToString()); } if (row["DRIVER_VERSION"] != null) { model.DRIVER_VERSION = row["DRIVER_VERSION"].ToString(); } if (row["DRIVER_DATE"] != null && row["DRIVER_DATE"].ToString() != "") { model.DRIVER_DATE = DateTime.Parse(row["DRIVER_DATE"].ToString()); } if (row["CTRLR_DESC"] != null) { model.CTRLR_DESC = row["CTRLR_DESC"].ToString(); } if (row["AREA_ID"] != null && row["AREA_ID"].ToString() != "") { model.AREA_ID = decimal.Parse(row["AREA_ID"].ToString()); } if (row["ORDER_VALUE"] != null && row["ORDER_VALUE"].ToString() != "") { model.ORDER_VALUE = int.Parse(row["ORDER_VALUE"].ToString()); } if (row["ORG_ID"] != null && row["ORG_ID"].ToString() != "") { model.ORG_ID = decimal.Parse(row["ORG_ID"].ToString()); } if (row["CTRLR_MODEL"] != null) { model.CTRLR_MODEL = row["CTRLR_MODEL"].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["ENABLE_BUTTON_RECORD"] != null && row["ENABLE_BUTTON_RECORD"].ToString() != "") { if ((row["ENABLE_BUTTON_RECORD"].ToString() == "1") || (row["ENABLE_BUTTON_RECORD"].ToString().ToLower() == "true")) { model.ENABLE_BUTTON_RECORD = true; } else { model.ENABLE_BUTTON_RECORD = 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); } }
private void DoDelete(DataGridViewRow row) { if (MessageBox.Show("确定删除该控制器?", "提示", MessageBoxButtons.OKCancel) == DialogResult.OK) { CtrlWaiting ctrlWaiting = new CtrlWaiting("正在删除中...", () => { try { Maticsoft.Model.SMT_CONTROLLER_INFO ctrlr = (Maticsoft.Model.SMT_CONTROLLER_INFO)row.Tag; DialogResult dr = DialogResult.No; this.Invoke(new Action(() => { dr = MessageBox.Show("是否清除该控制器权限?", "提示", MessageBoxButtons.YesNo); })); if (dr == DialogResult.Yes) { Controller c = ControllerHelper.ToController(ctrlr); using (IAccessCore ac = new WGAccess()) { try { bool ret = ac.ClearAuthority(c); if (!ret) { this.Invoke(new Action(() => { dr = MessageBox.Show("清除控制器权限失败(控制器可能离线),是否继续删除控制器?", "提示", MessageBoxButtons.YesNo); })); if (dr == DialogResult.No) { return; } } } catch (Exception ex) { log.Error("清除控制器权限失败(控制器可能离线)(删除控制器):", ex); this.Invoke(new Action(() => { dr = MessageBox.Show("清除控制器权限失败(控制器可能离线),是否继续删除控制器?", "提示", MessageBoxButtons.YesNo); })); if (dr == DialogResult.No) { return; } } } } Maticsoft.BLL.SMT_CONTROLLER_INFO ctrlBll = new Maticsoft.BLL.SMT_CONTROLLER_INFO(); ctrlBll.Delete(ctrlr.ID); //置门关联控制器为空 Maticsoft.DBUtility.DbHelperSQL.ExecuteSql("update SMT_DOOR_INFO set CTRL_ID=-1,CTRL_DOOR_INDEX=0 where CTRL_ID=" + ctrlr.ID); SmtLog.Info("设备", "控制器删除:" + ctrlr.IP + "," + ctrlr.NAME); this.Invoke(new Action(() => { dgvCtrlr.Rows.Remove(row); })); } catch (System.Exception ex) { log.Error("删除控制器异常:", ex); WinInfoHelper.ShowInfoWindow(this, "删除失败:" + ex.Message); } }); ctrlWaiting.Show(this); } }