private void FrmAlarmSetting_Load(object sender, EventArgs e)
        {
            CtrlWaiting waiting = new CtrlWaiting(() =>
            {
                var ctrls = ControllerHelper.GetList("IS_ENABLE=1", true);
                foreach (var ctrl in ctrls)
                {
                    Maticsoft.BLL.SMT_ALARM_SETTING alarmBll = new Maticsoft.BLL.SMT_ALARM_SETTING();
                    var alarmSettings = alarmBll.GetModelList("CTRL_ID=" + ctrl.ID);
                    if (alarmSettings.Count == 0)
                    {
                        Maticsoft.Model.SMT_ALARM_SETTING alarmSetting = new Maticsoft.Model.SMT_ALARM_SETTING();
                        alarmSetting.CTRL_FORCE_PWD        = "889988";
                        alarmSetting.CTRL_ID               = ctrl.ID;
                        alarmSetting.ENABLE_CLOSED_TIMEOUT = false;
                        alarmSetting.ENABLE_FIRE           = false;
                        alarmSetting.ENABLE_FORCE_ACCESS   = false;
                        alarmSetting.ENABLE_FORCE_CARD     = false;
                        alarmSetting.ENABLE_FORCE_CLOSE    = false;
                        alarmSetting.ENABLE_FORCE_PWD      = false;
                        alarmSetting.ENABLE_INVALID_CARD   = false;
                        alarmSetting.ENABLE_STEAL          = false;
                        alarmSetting.ID = -1;
                        alarmSetting.NOT_CLOSED_TIMEOUT = 25;
                        alarmSetting.ID = alarmBll.Add(alarmSetting);
                        alarmSettings.Add(alarmSetting);
                    }
                    this.Invoke(new Action(() =>
                    {
                        DoShow(ctrl, alarmSettings[0]);
                    }));
                }
            });

            waiting.Show(this);
        }
        private void DoApply(bool upload = false, bool isclose = false)
        {
            List <Maticsoft.Model.SMT_ALARM_SETTING> settings = new List <Maticsoft.Model.SMT_ALARM_SETTING>();

            foreach (DataGridViewRow item in dgvData.Rows)
            {
                Maticsoft.Model.SMT_ALARM_SETTING alarmSetting = (Maticsoft.Model.SMT_ALARM_SETTING)item.Tag;
                alarmSetting.CTRL_FORCE_PWD        = tbForcePwd.Text.Trim();
                alarmSetting.ENABLE_FORCE_PWD      = (bool)selectRow.Cells[2].Value;
                alarmSetting.ENABLE_CLOSED_TIMEOUT = (bool)selectRow.Cells[3].Value;
                alarmSetting.ENABLE_FORCE_ACCESS   = (bool)selectRow.Cells[4].Value;
                alarmSetting.ENABLE_FORCE_CLOSE    = (bool)selectRow.Cells[5].Value;
                alarmSetting.ENABLE_INVALID_CARD   = (bool)selectRow.Cells[6].Value;
                alarmSetting.ENABLE_FIRE           = (bool)selectRow.Cells[7].Value;
                alarmSetting.ENABLE_STEAL          = (bool)selectRow.Cells[8].Value;
                alarmSetting.ENABLE_FORCE_CARD     = (bool)selectRow.Cells[9].Value;
                if (iUnClosedTimeOut.ValueObject == null)
                {
                    alarmSetting.NOT_CLOSED_TIMEOUT = 25;
                }
                else
                {
                    alarmSetting.NOT_CLOSED_TIMEOUT = iUnClosedTimeOut.Value;
                }
                settings.Add(alarmSetting);
            }
            Maticsoft.Model.SMT_ALARM_SETTING selectSetting = null;
            if (selectRow != null)
            {
                selectSetting = (Maticsoft.Model.SMT_ALARM_SETTING)selectRow.Tag;
            }
            List <Maticsoft.Model.SMT_ALARM_CONNECT> conns = new List <Maticsoft.Model.SMT_ALARM_CONNECT>();

            if (selectSetting != null)
            {
                for (int i = 0; i < ports.Count; i++)
                {
                    Maticsoft.Model.SMT_ALARM_CONNECT conn = ports[i].AlarmConnect;
                    if (conn != null)
                    {
                        conn.OUT_PORT = i + 1;
                        conn.CTRL_ID  = selectSetting.CTRL_ID;
                        conns.Add(conn);
                    }
                }
            }


            CtrlWaiting waiting = new CtrlWaiting(() =>
            {
                try
                {
                    Maticsoft.BLL.SMT_ALARM_SETTING settingBll = new Maticsoft.BLL.SMT_ALARM_SETTING();
                    foreach (var item in settings)
                    {
                        settingBll.Update(item);
                    }
                    if (selectSetting != null)
                    {
                        Maticsoft.DBUtility.DbHelperSQL.ExecuteSql("delete from SMT_ALARM_CONNECT where CTRL_ID=" + selectSetting.CTRL_ID);
                        Maticsoft.BLL.SMT_ALARM_CONNECT connBll = new Maticsoft.BLL.SMT_ALARM_CONNECT();
                        foreach (var item in conns)
                        {
                            item.ID = connBll.Add(item);
                        }
                    }
                    if (upload)
                    {
                        //上传
                        UploadPrivate.UploadAlarmSetting(settings);
                    }
                    WinInfoHelper.ShowInfoWindow(this, "保存成功!");
                    if (isclose)
                    {
                        this.BeginInvoke(new Action(() =>
                        {
                            this.Close();
                        }));
                    }
                }
                catch (Exception ex)
                {
                    WinInfoHelper.ShowInfoWindow(this, "保存报警设置异常!" + ex.Message);
                    log.Error("保存报警设置异常:", ex);
                }
            });

            waiting.Show(this);
        }