Esempio n. 1
0
        private void LogoffToolStripMenuItem_Click(object sender, EventArgs e)
        {
            tmr.Stop();
            bool tmp_login_ok = false;
            bool tmp_exit = false;

            hidewin = false;

            this.TopMost = prop.Mod_operator_top_most;

            this.TopMost = false;

            if (closeCounter())
            {

                if (!tmp_exit)
                {
                    // открываем окно запроса пользователя
                    PSA.Lib.Interface.frmLogin fLogin = new PSA.Lib.Interface.frmLogin();
                    // спрашиваем пока не угадает пароль или не надоест угадывать
                    while (!tmp_login_ok)
                    {
                        switch (fLogin.ShowDialog())
                        {
                            case DialogResult.Cancel:
                                {
                                    tmp_login_ok = true;
                                    tmp_exit = true;
                                    break;
                                }
                            case DialogResult.OK:
                                {
                                    tmp_login_ok = true;
                                    if (fLogin.usr.prmCanLoginOperator)
                                    {
                                        this.Show();
                                    }
                                    else
                                    {
                                        tmp_exit = true;
                                        MessageBox.Show("Доступ в модуль оператора заперщен!", "Вход в программу", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                    }
                                    break;
                                }
                        }
                    }
                    if (!tmp_exit)
                    {
                        // если мы уже тут, значит пароль все же угадали
                        // Получаем данные о пользователе
                        usr = fLogin.usr;
                        this.Text = "Оператор - " + usr.Name + " - Photoland System Automation " + Application.ProductVersion;

                        //запрашиваем машину и бумагу
                        this.TopMost = false;
                        frmSelectMashineAndPaper f = new frmSelectMashineAndPaper();
                        f.db_connection = this.db_connection;
                        f.ShowDialog();
                        this.TopMost = prop.Mod_operator_top_most;
                        if (f.DialogResult == System.Windows.Forms.DialogResult.OK)
                        {
                            usr.Id_Mashine = f.txtMashine.SelectedValue.ToString();
                            usr.Mashine = f.txtMashine.Text;
                            //usr.Id_Paper = f.txtPaper.SelectedValue.ToString();
                            //usr.Paper = f.txtPaper.Text;

                            lblMashine.Text = usr.Mashine.Trim();
                            //lblPaper.Text = usr.Paper.Trim();
                            // Показываем окно
                            this.Focus();

                            SqlCommand _counter_cmd = new SqlCommand();
                            _counter_cmd.Connection = db_connection;
                            _counter_cmd.CommandTimeout = 9000;
                            _counter_cmd.CommandText = "SELECT id_counter, id_mashine, id_user, name_user, c1, c1date, c2, c2date, c0 " +
                                                        "FROM dbo.counters " +
                                                        "WHERE (id_counter = " +
                                                        "(SELECT MAX(id_counter) AS id " +
                                                        "FROM dbo.counters AS counters_1 " +
                                                        "WHERE (id_mashine = '" + usr.Id_Mashine.Trim() + "')))";
                            SqlDataAdapter _counter_da = new SqlDataAdapter(_counter_cmd);
                            DataTable _counter_tbl = new DataTable();
                            _counter_da.Fill(_counter_tbl);
                            bool stop = false;
                            if (_counter_tbl.Rows.Count > 0)
                            {
                                if ((_counter_tbl.Rows[0]["c2"].ToString() == "") && (_counter_tbl.Rows[0]["c2date"].ToString() == ""))
                                {
                                    if (MessageBox.Show("Прошлый счетчик, открытый " + _counter_tbl.Rows[0]["c1date"].ToString() +
                                        " пользователем " + _counter_tbl.Rows[0]["name_user"].ToString().Trim() + " не был закрыт!\n" +
                                        "Автоматически закрываем значением " + f.txtCounter.Value.ToString() + "?", "Закрытие счетчика",
                                        MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                                    {
                                        _counter_cmd.CommandText = "UPDATE [counters] SET c2 = " + f.txtCounter.Value.ToString() +
                                            ", c2date = getdate(), c0 = 0 " +
                                            "WHERE id_counter = " + _counter_tbl.Rows[0]["id_counter"].ToString();
                                        _counter_cmd.ExecuteNonQuery();
                                    }
                                    else
                                    {
                                        stop = true;
                                    }
                                }
                            }
                            if (!stop)
                            {
                                _counter_cmd.CommandText = "INSERT INTO [counters] (id_mashine, id_user, name_user, c1, c1date) VALUES ('" +
                                    usr.Id_Mashine + "', " + usr.Id_user + ", '" + usr.Name.Trim() + "', " + f.txtCounter.Value.ToString() +
                                    ", getdate())";
                                _counter_cmd.ExecuteNonQuery();
                                _counter1 = long.Parse(f.txtCounter.Value.ToString());
                                _counter1Date = DateTime.Now;
                                recalcCounter(true);

                                if (!usr.prmCanDelEditBrak)
                                {
                                    btnDelBrak.Enabled = false;
                                    btnEditBrak.Enabled = false;
                                }

                                if (prop.Fly_window_operator)
                                {
                                    this.Top = (-1) * (this.Height - 10);
                                }

                                // заполняем таблицу заказов
                                FillOrderList();

                                // заполняем таблицу "браков"
                                FillTehAction();

                                FillCounters();

                                ClearOrders();

                                hidewin = true;
                            }
                            else
                            {
                                globalexit = true;
                                Application.Exit();
                            }
                        }
                        else
                        {
                            globalexit = true;
                            Application.Exit();
                        }
                    }
                    else
                    {
                        globalexit = true;
                        Application.Exit();
                    }
                }
                else
                {
                    globalexit = true;
                    Application.Exit();
                }
            }
            this.TopMost = prop.Mod_operator_top_most;
            tmr.Start();
        }
Esempio n. 2
0
        private void btnChangePaper_Click(object sender, EventArgs e)
        {
            if (CheckState(db_connection))
            {
                tmr.Stop();
                this.TopMost = false;
                if (closeCounter())
                {
                    frmSelectMashineAndPaper f = new frmSelectMashineAndPaper();
                    f.db_connection = db_connection;
                    f._id_mashine = usr.Id_Mashine;
                    //f._id_paper = usr.Id_Paper;
                    f.ShowDialog();
                    if (f.DialogResult == System.Windows.Forms.DialogResult.OK)
                    {
                        usr.Id_Mashine = f.txtMashine.SelectedValue.ToString();
                        usr.Mashine = f.txtMashine.Text;
                        //usr.Id_Paper = f.txtPaper.SelectedValue.ToString();
                        //usr.Paper = f.txtPaper.Text;

                        SqlCommand _counter_cmd = new SqlCommand();
                        _counter_cmd.Connection = db_connection;
                        _counter_cmd.CommandTimeout = 9000;
                        _counter_cmd.CommandText = "SELECT id_counter, id_mashine, id_user, name_user, c1, c1date, c2, c2date, c0 " +
                                                    "FROM dbo.counters " +
                                                    "WHERE (id_counter = " +
                                                    "(SELECT MAX(id_counter) AS id " +
                                                    "FROM dbo.counters AS counters_1 " +
                                                    "WHERE (id_mashine = '" + usr.Id_Mashine.Trim() + "')))";
                        SqlDataAdapter _counter_da = new SqlDataAdapter(_counter_cmd);
                        DataTable _counter_tbl = new DataTable();
                        _counter_da.Fill(_counter_tbl);
                        if (_counter_tbl.Rows.Count > 0)
                        {
                            if ((_counter_tbl.Rows[0]["c2"].ToString() == "") && (_counter_tbl.Rows[0]["c2date"].ToString() == ""))
                            {
                                MessageBox.Show("Прошлый счетчик, открытый " + _counter_tbl.Rows[0]["c1date"].ToString() +
                                    " пользователем " + _counter_tbl.Rows[0]["name_user"].ToString().Trim() + " не был закрыт!\n" +
                                    "Автоматически закрываем значением " + f.txtCounter.Value.ToString());
                                _counter_cmd.CommandText = "UPDATE [counters] SET c2 = " + f.txtCounter.Value.ToString() +
                                    ", c2date = getdate(), c0 = 0 " +
                                    "WHERE id_counter = " + _counter_tbl.Rows[0]["id_counter"].ToString();
                                _counter_cmd.ExecuteNonQuery();
                            }
                        }
                        _counter_cmd.CommandText = "INSERT INTO [counters] (id_mashine, id_user, name_user, c1, c1date) VALUES ('" +
                            usr.Id_Mashine + "', " + usr.Id_user + ", '" + usr.Name.Trim() + "', " + f.txtCounter.Value.ToString() +
                            ", getdate())";
                        _counter_cmd.ExecuteNonQuery();
                        _counter1 = long.Parse(f.txtCounter.Value.ToString());
                        _counter1Date = DateTime.Now;
                        recalcCounter(true);

                        lblMashine.Text = usr.Mashine.Trim();
                        //lblPaper.Text = usr.Paper.Trim();
                    }
                    else
                    {
                        hidewin = false;
                        globalexit = true;
                        this.Close();
                    }
                }
                this.TopMost = prop.Mod_operator_top_most;
                tmr.Start();
            }
        }
Esempio n. 3
0
        private void frmMain_Load(object sender, EventArgs e)
        {
            try
            {
                StreamWriter sw = new StreamWriter(prop.Dir_export + "\\Operator_" + Environment.MachineName + "_" + Environment.UserName + ".info", false, Encoding.GetEncoding(1251));
                sw.Write("Date:         " + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString() +
                         "\nMashine:      " + Environment.MachineName +
                         "\nUser:         "******"\nOperator mod: " + Application.ProductVersion);
                sw.Close();
            }
            catch
            {
            }

            if (!Checking.checkVersion(Modules.Operator, Application.ProductVersion))
                if (MessageBox.Show("Внимание! Существует более новая версия модуля!\nУстановить обновление?", "Контроль обновлений", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
                    System.Diagnostics.Process.Start(System.Environment.GetCommandLineArgs()[0].Substring(
                                                    0,
                                                    System.Environment.GetCommandLineArgs()[0].LastIndexOf('\\')
                                                    ) + "\\PSA.Update.cmd");

            bool tmp_login_ok = false;
            bool tmp_exit = false;
            if(!PSA.Lib.Util.Semaphore.semInventory)
            {
            tmr.Interval = prop.UpdateOrderTableInOperator*1000;
            tmr.Stop();

            hidewin = false;

            this.TopMost = prop.Mod_operator_top_most;

            // Проверяем, если есть ограничение на запуск одной копии и программа уже запущена
            if ((app.Search_twin()) && (prop.Run_one_copy_oprator))
            {
                // То выдаем сообщение и закрываем программу
                MessageBox.Show("Программа уже запущена!");
                globalexit = true;
                Application.Exit();
            }
            else
            {
                this.TopMost = false;
                // Если ограничение на запуск одной копии пройдено, то продолжаем...
                // Открываем соединение с базой
                try
                {
                    db_connection.ConnectionString = prop.Connection_string;
                    db_connection.Open();
                }
                catch (Exception ex)
                {
                    ErrorNfo.WriteErrorInfo(ex);
                    // Если не удалось подключиться к базе, то
                    // выдаем сообщение об ошибке и открываем форму
                    // подключения к базе данных
                    MessageBox.Show("Ошибка подключения к базе данных!\n" + ex.Message + "\n" + ex.Source + "\nПроверьте настройки подключения!", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    try
                    {
                        this.TopMost = false;
                        frmSetup fOptions = new frmSetup();
                        fOptions.ShowDialog();
                        prop = new PSA.Lib.Util.Settings();
                        // Опять пробуем подключиться к базе
                        db_connection.ConnectionString = prop.Connection_string;
                        db_connection.Open();
                        this.TopMost = prop.Mod_operator_top_most;

                    }
                    catch (Exception exc)
                    {
                        ErrorNfo.WriteErrorInfo(exc);
                        // Если после второй попытки не удалось подключиться, то закрываем программу.
                        MessageBox.Show("Ошибка подключения к базе данных!\n" + exc.Message + "\n" + exc.Source, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        tmp_exit = true;
                    }
                }

                if (!tmp_exit)
                {
                    // открываем окно запроса пользователя
                    PSA.Lib.Interface.frmLogin fLogin = new PSA.Lib.Interface.frmLogin();
                    // спрашиваем пока не угадает пароль или не надоест угадывать
                    while (!tmp_login_ok)
                    {
                        switch (fLogin.ShowDialog())
                        {
                            case DialogResult.Cancel:
                                {
                                    tmp_login_ok = true;
                                    tmp_exit = true;
                                    break;
                                }
                            case DialogResult.OK:
                                {
                                    tmp_login_ok = true;
                                    if (fLogin.usr.prmCanLoginOperator)
                                    {
                                        this.Show();
                                    }
                                    else
                                    {
                                        tmp_exit = true;
                                        MessageBox.Show("Доступ в модуль оператора заперщен!", "Вход в программу", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                    }
                                    break;
                                }
                        }
                    }
                    if (!tmp_exit)
                    {
                        // если мы уже тут, значит пароль все же угадали
                        // Получаем данные о пользователе
                        usr = fLogin.usr;
                        this.Text = "Оператор - " + usr.Name + " - Photoland System Automation " + Application.ProductVersion;

                        txtDateCounter1.Value = DateTime.Now.AddDays(-10);
                        txtDateCounter2.Value = DateTime.Now;

                        //запрашиваем машину и бумагу
                        this.TopMost = false;
                        frmSelectMashineAndPaper f = new frmSelectMashineAndPaper();
                        f.db_connection = this.db_connection;
                        f.ShowDialog();
                        this.TopMost = prop.Mod_operator_top_most;
                        if (f.DialogResult == System.Windows.Forms.DialogResult.OK)
                        {
                            usr.Id_Mashine = f.txtMashine.SelectedValue.ToString();
                            usr.Mashine = f.txtMashine.Text;
                            //usr.Id_Paper = f.txtPaper.SelectedValue.ToString();
                            //usr.Paper = f.txtPaper.Text;

                            SqlCommand _counter_cmd = new SqlCommand();
                            _counter_cmd.Connection = db_connection;
                            _counter_cmd.CommandTimeout = 9000;
                            _counter_cmd.CommandText = "SELECT id_counter, id_mashine, id_user, name_user, c1, c1date, c2, c2date, c0 " +
                                                        "FROM dbo.counters " +
                                                        "WHERE (id_counter = " +
                                                        "(SELECT MAX(id_counter) AS id " +
                                                        "FROM dbo.counters AS counters_1 " +
                                                        "WHERE (id_mashine = '" + usr.Id_Mashine.Trim() + "')))";
                            SqlDataAdapter _counter_da = new SqlDataAdapter(_counter_cmd);
                            DataTable _counter_tbl = new DataTable();
                            _counter_da.Fill(_counter_tbl);
                            bool stop = false;
                            if (_counter_tbl.Rows.Count > 0)
                            {
                                if ((_counter_tbl.Rows[0]["c2"].ToString() == "") && (_counter_tbl.Rows[0]["c2date"].ToString() == ""))
                                {
                                    if (MessageBox.Show("Прошлый счетчик, открытый " + _counter_tbl.Rows[0]["c1date"].ToString() +
                                        " пользователем " + _counter_tbl.Rows[0]["name_user"].ToString().Trim() + " не был закрыт!\n" +
                                        "Автоматически закрываем значением " + f.txtCounter.Value.ToString() + "?", "Закрытие счетчика",
                                        MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                                    {
                                        _counter_cmd.CommandText = "UPDATE [counters] SET c2 = " + f.txtCounter.Value.ToString() +
                                            ", c2date = getdate(), c0 = (SELECT(ISNULL((" +
                                "SELECT SUM(CASE tech_defect " +
                                            "WHEN 0 THEN actual_quantity " +
                                            "WHEN 1 THEN defect_quantity " +
                                            "WHEN 2 THEN defect_quantity " +
                                            "WHEN 3 THEN defect_quantity " +
                                            "WHEN 4 THEN 0 " +
                                            "WHEN 5 THEN defect_quantity " +
                                            "WHEN 6 THEN defect_quantity " +
                                            "WHEN 7 THEN 0 " +
                                            "WHEN 8 THEN defect_quantity " +
                                            "WHEN 9 THEN 0 " +
                                            "WHEN 10 THEN 0 " +
                                            "END)" +
                                                    "FROM dbo.orderbody " +
                                                    "WHERE (datework >= " +
                                                        "(SELECT c1date " +
                                                        "FROM dbo.counters " +
                                                        "WHERE (id_counter = " + _counter_tbl.Rows[0]["id_counter"].ToString() +
                                                        "))) AND (datework <= GETDATE()) AND (id_user_work = " +
                                                            usr.Id_user + ") AND (id_mashine = N'" + usr.Id_Mashine.Trim() + "')" +
                                                    "), 0))) " +
                                            "WHERE id_counter = " + _counter_tbl.Rows[0]["id_counter"].ToString();
                                        _counter_cmd.ExecuteNonQuery();
                                    }
                                    else
                                    {
                                        stop = true;
                                    }
                                }
                            }
                            if (!stop)
                            {
                                _counter_cmd.CommandText = "INSERT INTO [counters] (id_mashine, id_user, name_user, c1, c1date) VALUES ('" +
                                    usr.Id_Mashine + "', " + usr.Id_user + ", '" + usr.Name.Trim() + "', " + f.txtCounter.Value.ToString() +
                                    ", getdate())";
                                _counter_cmd.ExecuteNonQuery();
                                _counter1 = long.Parse(f.txtCounter.Value.ToString());
                                _counter1Date = DateTime.Now;
                                recalcCounter(true);

                                lblMashine.Text = usr.Mashine.Trim();
                                //lblPaper.Text = usr.Paper.Trim();
                                // Показываем окно
                                this.Focus();

                                if (!usr.prmCanDelEditBrak)
                                {
                                    btnDelBrak.Enabled = false;
                                    btnEditBrak.Enabled = false;
                                    btnEditBrak1.Enabled = false;
                                    btnDelBrak1.Enabled = false;
                                }

                                if (prop.Fly_window_operator)
                                {
                                    this.Top = (-1) * (this.Height - 10);
                                }

                                // заполняем фильтры
                                FillFilter();

                                // заполняем таблицу заказов
                                FillOrderList();

                                // заполняем таблицу "браков"
                                FillTehAction();
                                FillDiscardTable();

                                FillCounters();

                                hidewin = true;

                                ClearOrders();

                                tmr.Start();
                            }
                            else
                            {
                                globalexit = true;
                                Application.Exit();
                            }
                        }
                        else
                        {
                            globalexit = true;
                            Application.Exit();
                        }
                    }
                    else
                    {
                        globalexit = true;
                        Application.Exit();
                    }
                }
                else
                {
                    globalexit = true;
                    Application.Exit();
                }
                this.TopMost = prop.Mod_operator_top_most;
            }
            }
            else
            {

                MessageBox.Show("В момент проведения инвентаризации вход в модуль запрещен!", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                globalexit = true;
                hidewin = false;
                Application.Exit();
            }
        }