Пример #1
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);
        }
Пример #2
0
        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;
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
            }
        }
Пример #5
0
        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);
        }
Пример #6
0
        /// <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));
            }
        }
Пример #7
0
        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);
            }
        }
Пример #8
0
        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;
        }
Пример #9
0
 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);
 }
Пример #10
0
 public FrmAddOrModifyCtrlr(Maticsoft.Model.SMT_CONTROLLER_INFO ctrlr)
 {
     InitializeComponent();
     this._ctrlr = ctrlr;
     if (this._ctrlr != null)
     {
         this.Text = "修改控制器";
     }
     else
     {
         this.Text = "添加控制器";
     }
 }
Пример #11
0
        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);
        }
Пример #12
0
 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);
 }
Пример #13
0
        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);
        }
Пример #14
0
        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);
        }
Пример #15
0
        /// <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);
            }
        }
Пример #16
0
        /// <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);
            }
        }
Пример #17
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);
        }
Пример #18
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);
        }
Пример #19
0
 /// <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);
 }
Пример #20
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);
            }
        }
Пример #21
0
 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);
     }
 }