Пример #1
0
        private void ShowSectionsNew(string currProposal)
        {
            ViewProposal = currProposal;
            ExPanel pnlInfoNew = pnlCurrent.GetControlByName("pnlInfoNew") as ExPanel;

            pnlInfoNew.Controls.Clear();
            //Нужно дойти до контроля расходной
            string        DocType;
            string        IDCB = ""; //ИД контроля расходной
            List <string> SubjectDocs;

            if (!SS.GetSubjectDocs(currProposal, "Счет", out SubjectDocs))
            {
                return;
            }
            //Если пустой, то это счет, а не заявка
            if (SubjectDocs.Count == 0)
            {
                return;
            }
            //Не пустой, ищем контроль расходной или адрес набор
            bool IsFound = false;

            foreach (string CurrentIDDoc in SubjectDocs)
            {
                if (SS.GetDocType(CurrentIDDoc, out DocType))
                {
                    if (DocType == "КонтрольРасходной")
                    {
                        IDCB    = CurrentIDDoc;
                        IsFound = true;
                        break;  //ПОЕХАЛИ ДАЛЬШЕ
                    }
                }
                else
                {
                    return;
                }
            }
            if (!IsFound)
            {
                return;
            }
            Dictionary <string, object> DaemondData = new Dictionary <string, object>();

            if (!SS.GetDoc(currProposal, out DaemondData))
            {
                return;
            }
            Dictionary <string, object> DataMap;
            List <string> CCListID;

            //теперь получаем список всех контролей набора
            if (!SS.GetCCListNew(IDCB, out CCListID, out DataMap))
            {
                return;
            }
            //Тяжелая работа по выводу данных
            List <string> FieldList = new List <string>();
            Dictionary <string, object> DataMapRead;

            FieldList.Add("DESCR");
            const int FieldOnRow = 8; //Число полей на одну строку одного сектора

            Label[,] Lbl = new Label[FieldOnRow, CCListID.Count];
            int      i = 0;
            int      dY;                                       //Это смещение, м/у строками
            int      FirstIndex  = -1;                         //Индекс строки первой комплектации
            int      LastIndex   = -1;                         //Индекс строки последней комплектации
            DateTime MinDate     = new DateTime(2020, 01, 01); //Минимальная дата
            DateTime MaxDate     = new DateTime(1753, 01, 01); //Максимальная дата
            int      MinTime     = 86400;                      //Минимальное время
            int      MaxTime     = 0;                          //Максимальное время
            bool     AllComplete = true;                       //Последнюю комплектацию не имеет смысла считать, если где-то, что-то не скомплектовано

            foreach (string ID in CCListID)
            {
                dY = i * 30;
                //Создадим метки для этого сектора
                for (int j = 0; j < FieldOnRow; j++)
                {
                    Lbl[j, i]           = new Label();
                    Lbl[j, i].Name      = "_dyn" + j.ToString() + i.ToString();
                    Lbl[j, i].BackColor = Color.White;
                    pnlInfoNew.Controls.Add(Lbl[j, i]);
                }

                //ОПРЕДЕЛИМСЯ С СОДЕРЖАНИЕМ И ЦВЕТАМИ ИСХОДЯ ИЗ СОСТОЯНИЯ
                //Ниже используются запросы к БД, не очень красиво, но в целях оптимизации (т.к. заглядывают сюда не всякий раз)
                //Поэтому, если что-то не срастается, то выводим пустые поля, там где несраслось
                if (SQL1S.IsVoidDate((DateTime)DataMap[ID + ".КонтрольНабора.Дата1"]))
                {
                    //ОЖИДАНИЕ НАБОРА
                    Lbl[1, i].Text = ".";
                    Lbl[2, i].Text = "<< ожидание >>";
                    Lbl[3, i].Text = "__:__";
                    Lbl[4, i].Text = "  неопределен";
                    Lbl[5, i].Text = "__:__";
                    //Цвета
                    Lbl[0, i].ForeColor = Color.Red;
                    Lbl[1, i].ForeColor = Color.Red;
                    Lbl[2, i].ForeColor = Color.LightPink;
                    Lbl[3, i].ForeColor = Color.LightGray;
                    Lbl[4, i].ForeColor = Color.LightGray;
                    Lbl[5, i].ForeColor = Color.LightGray;

                    AllComplete = false;
                }
                else if (SQL1S.IsVoidDate((DateTime)DataMap[ID + ".КонтрольНабора.Дата2"]))
                {
                    //В НАБОРЕ
                    Lbl[1, i].Text = "...";
                    if (!SS.GetSCData(DataMap[ID + ".КонтрольНабора.Наборщик"].ToString(), "Сотрудники", FieldList, out DataMapRead, true))
                    {
                        Lbl[2, i].Text = "< не задан >";
                    }
                    else
                    {
                        Lbl[2, i].Text = Helper.GetShortFIO(DataMapRead["DESCR"].ToString());
                    }
                    Lbl[3, i].Text = "(" + ((DateTime)DataMap[ID + ".КонтрольНабора.Дата1"]).ToString("dd.MM") + ") "
                                     + Helper.SecondToString((int)(decimal)DataMap[ID + ".КонтрольНабора.Время1"]) + " - ...";
                    Lbl[4, i].Text = "  неопределен";
                    Lbl[5, i].Text = "__:__";
                    //Цвета
                    Lbl[0, i].ForeColor = Color.Red;
                    Lbl[1, i].ForeColor = Color.Red;
                    Lbl[2, i].ForeColor = Color.Red;
                    Lbl[3, i].ForeColor = Color.Red;
                    Lbl[4, i].ForeColor = Color.LightGray;
                    Lbl[5, i].ForeColor = Color.LightGray;

                    AllComplete = false;
                }
                else if (SQL1S.IsVoidDate((DateTime)DataMap[ID + ".КонтрольНабора.Дата3"]))
                {
                    //НАБРАНА
                    Lbl[1, i].Text = "--";
                    if (!SS.GetSCData(DataMap[ID + ".КонтрольНабора.Наборщик"].ToString(), "Сотрудники", FieldList, out DataMapRead, true))
                    {
                        Lbl[2, i].Text = "< не задан >";
                    }
                    else
                    {
                        Lbl[2, i].Text = Helper.GetShortFIO(DataMapRead["DESCR"].ToString());
                    }
                    Lbl[3, i].Text = "(" + ((DateTime)DataMap[ID + ".КонтрольНабора.Дата2"]).ToString("dd.MM") + ") "
                                     + Helper.SecondToString((int)(decimal)DataMap[ID + ".КонтрольНабора.Время1"]) + " - "
                                     + Helper.SecondToString((int)(decimal)DataMap[ID + ".КонтрольНабора.Время2"]);
                    Lbl[4, i].Text = "<< ожидание >>";
                    Lbl[5, i].Text = "__:__";
                    //Цвета
                    Lbl[0, i].ForeColor = Color.Red;
                    Lbl[1, i].ForeColor = Color.Red;
                    Lbl[2, i].ForeColor = Color.Red;
                    Lbl[3, i].ForeColor = Color.Red;
                    Lbl[4, i].ForeColor = Color.LightPink;
                    Lbl[5, i].ForeColor = Color.LightGray;

                    AllComplete = false;
                }
                else
                {
                    //СКОМПЛЕКТОВАНА
                    DateTime CurrentDate = (DateTime)DataMap[ID + ".КонтрольНабора.Дата3"];
                    int      CurrentTime = (int)(decimal)DataMap[ID + ".КонтрольНабора.Время3"];
                    //Скорректируем максималный момент комплектации
                    if (AllComplete && CurrentDate > MaxDate)
                    {
                        MaxDate   = CurrentDate;
                        MaxTime   = CurrentTime;
                        LastIndex = i;
                    }
                    else if (AllComplete && CurrentDate == MaxDate && CurrentTime > MaxTime)
                    {
                        MaxTime   = CurrentTime;
                        LastIndex = i;
                    }
                    //Скорректируем максималный момент комплектации
                    if (CurrentDate < MinDate)
                    {
                        MinDate    = CurrentDate;
                        MinTime    = CurrentTime;
                        FirstIndex = i;
                    }
                    else if (CurrentDate == MinDate && CurrentTime < MinTime)
                    {
                        MinTime    = CurrentTime;
                        FirstIndex = i;
                    }
                    //собственно рисовалка
                    Lbl[1, i].Text = "+";
                    if (!SS.GetSCData(DataMap[ID + ".КонтрольНабора.Наборщик"].ToString(), "Сотрудники", FieldList, out DataMapRead, true))
                    {
                        Lbl[2, i].Text = "< не задан >";
                    }
                    else
                    {
                        Lbl[2, i].Text = Helper.GetShortFIO(DataMapRead["DESCR"].ToString());
                    }
                    Lbl[3, i].Text = "(" + ((DateTime)DataMap[ID + ".КонтрольНабора.Дата2"]).ToString("dd.MM") + ") "
                                     + Helper.SecondToString((int)(decimal)DataMap[ID + ".КонтрольНабора.Время1"]) + " - "
                                     + Helper.SecondToString((int)(decimal)DataMap[ID + ".КонтрольНабора.Время2"]);
                    if (!SS.GetSCData(DataMap[ID + ".КонтрольНабора.Комплектовщик"].ToString(), "Сотрудники", FieldList, out DataMapRead, true))
                    {
                        Lbl[4, i].Text = "< не задан >";
                    }
                    else
                    {
                        Lbl[4, i].Text = Helper.GetShortFIO(DataMapRead["DESCR"].ToString());
                    }
                    Lbl[5, i].Text = "(" + CurrentDate.ToString("dd.MM") + ") " + Helper.SecondToString(CurrentTime);

                    //Цвета
                    Lbl[0, i].ForeColor = Color.Black;
                    Lbl[1, i].ForeColor = Color.Black;
                    Lbl[2, i].ForeColor = Color.Black;
                    Lbl[3, i].ForeColor = Color.Black;
                    Lbl[4, i].ForeColor = Color.Black;
                    Lbl[5, i].ForeColor = Color.Black;
                }

                //Заголовок
                Lbl[0, i].Font      = FontTahoma14Bold;
                Lbl[0, i].TextAlign = ContentAlignment.TopCenter;
                Lbl[0, i].Location  = new Point(3, 3 + dY);
                Lbl[0, i].Size      = new Size(50, 27);
                if (DataMap[ID + ".КонтрольНабора.Сектор"].ToString() == SQL1S.GetVoidID())
                {
                    //Пустая
                    Lbl[0, i].Text = "Пу";
                }
                else
                {
                    Lbl[0, i].Text = DataMap[DataMap[ID + ".КонтрольНабора.Сектор"] + ".@Сектор.Имя"].ToString().Trim();
                }
                Lbl[0, i].Text += "-" + DataMap[ID + ".КонтрольНабора.НомерЛиста"];

                //Мест погружено
                Lbl[1, i].Font      = FontTahoma9Bold;
                Lbl[1, i].TextAlign = ContentAlignment.TopRight;
                Lbl[1, i].Location  = new Point(56, 3 + dY);
                Lbl[1, i].Size      = new Size(25, 13);
                //Мест всего
                Lbl[7, i].Font      = FontTahoma9Bold;
                Lbl[7, i].TextAlign = ContentAlignment.TopRight;
                Lbl[7, i].Location  = new Point(56, 17 + dY);
                Lbl[7, i].Size      = new Size(25, 13);
                //Наборщик
                Lbl[2, i].Font      = FontTahoma9Regular;
                Lbl[2, i].TextAlign = ContentAlignment.TopLeft;
                Lbl[2, i].Location  = new Point(84, 3 + dY);
                Lbl[2, i].Size      = new Size(112, 13);
                //Время наборщика
                Lbl[3, i].Font      = FontTahoma8Regular;
                Lbl[3, i].TextAlign = ContentAlignment.TopLeft;
                Lbl[3, i].Location  = new Point(199, 3 + dY);
                Lbl[3, i].Size      = new Size(110, 13);
                //Комплектовщик
                Lbl[4, i].Font      = FontTahoma9Regular;
                Lbl[4, i].TextAlign = ContentAlignment.TopLeft;
                Lbl[4, i].Location  = new Point(84, 17 + dY);
                Lbl[4, i].Size      = new Size(112, 13);
                //Время комплектовщика
                Lbl[5, i].Font      = FontTahoma8Regular;
                Lbl[5, i].TextAlign = ContentAlignment.TopLeft;
                Lbl[5, i].Location  = new Point(199, 17 + dY);
                Lbl[5, i].Size      = new Size(77, 13);
                //Количество строк
                Lbl[6, i].Font      = FontTahoma8Bold;
                Lbl[6, i].TextAlign = ContentAlignment.TopRight;
                Lbl[6, i].Location  = new Point(279, 17 + dY);
                Lbl[6, i].Size      = new Size(30, 13);
                Lbl[6, i].Text      = DataMap[ID + ".КонтрольНабора.КолСтрок"].ToString();
                Lbl[6, i].ForeColor = Color.Navy;

                //Места
                Lbl[7, i].Text = DataMap[ID + ".КонтрольНабора.КолМест"].ToString();
                Lbl[1, i].Text = DataMap[ID + ".КонтрольНабора.МестФакт"].ToString();

                if (DataMap[ID + ".КонтрольНабора.КолМест"].ToString() != DataMap[ID + ".КонтрольНабора.МестФакт"].ToString())
                {
                    Lbl[1, i].ForeColor = Color.Red;
                }

                i++;
            }

            //Подкрасим первую и последнюю комплектации
            if (FirstIndex >= 0)
            {
                Lbl[1, FirstIndex].BackColor = Color.PaleGoldenrod;
                Lbl[7, FirstIndex].BackColor = Color.PaleGoldenrod;
            }
            if (AllComplete && LastIndex >= 0)
            {
                Lbl[1, LastIndex].BackColor = Color.PaleGreen;
                Lbl[7, LastIndex].BackColor = Color.PaleGreen;
            }

            pnlInfoNew.BringToFront();

            //Заголовок с информацией по заявке
            if (DaemondData.Count > 0)
            {
                string txt = DaemondData["НомерДок"].ToString() + " (" + ((DateTime)DaemondData["ДатаДок"]).ToString("dd.MM.yy") + ")";
                //Label lblDescr  = pnlCurrent.GetLabelByName("lblDescr");
                //lblDescr.Text = txt;
            }
        }
Пример #2
0
        } // InitSS
        /// <summary>
        /// Здесь будем все инициализировать (форма уже отстроена, только не видно ее)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void FMainOnLoad(object sender, EventArgs e)
        {
            //Text = "zhopa";
            //return;
            InicializeFont();
            CurrWidth = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width;
            //СОЗДАЕМ ПАНЕЛИ
            pnlCurrent = new ExPanel();
            //pnlCurrent.BackColor = SystemColors.ActiveBorder;
            pnlCurrent.BackColor = Color.White;
            pnlCurrent.Location = new Point(0, 16);
            pnlCurrent.Name = "pnlCurrent";
            pnlCurrent.Size = new Size(CurrWidth - 2, 185);
            this.Controls.Add(pnlCurrent);
            pnlCurrent.BringToFront();
            //pnlSections.BackColor = System.Drawing.SystemColors.ActiveBorder;

            //ИНИЦИАЛИЗАЦИЮ РАЗМЕСТИМ ЗДЕСЬ
            DGCellChange = false;
            Text = "WPM " + Vers;
            WindowState = FormWindowState.Maximized;
            ViewMode = Mode.None;
            Screan = 0;
            Br = new Barcode(this, 200);
            Br.BarcodeRead += ReactionBarcode;
            Br.HotKeyEvent += HotKeyEvent;

            //MessageBox.Show();
            //string[] names = Assembly.GetExecutingAssembly().GetModules

            //MessageBox.Show(Assembly.GetExecutingAssembly().Location);
            //MessageBox.Show(Path.GetFullPath(FileName));
            //return;
            //MessageBox.Show("Hyper");
            int CountServers = 2;
            string[] NamesOfServers;
            NamesOfServers = new string[CountServers];
            NamesOfServers[0] = @"192.168.8.4,57068";
            NamesOfServers[1] = @"192.168.8.5,57068";
            //NamesOfServers[0] = @"192.168.8.11\sqlcl1";
            //NamesOfServers[1] = @"192.168.8.12\sqlcl1";
            //DO NOT FORGOT CHANGE PARAMETR: CountServers!!!

            if (false)
            {
                //ТЕСТ ЭКРАНА
                pnlCurrent.Controls.Clear();
                ABaseMode Obj = new Waiting(SS, null);
                //RefillSet_view();
                RefillLayout_view();
                foreach (Control Ctrl in pnlCurrent.Controls)
                {
                    if (Ctrl.GetType().Equals(typeof(Label)))
                    {
                        (Ctrl as Label).Text = "00000000000000000000000000000000000000";
                    }
                    else if (Ctrl.GetType().Equals(typeof(DataGrid)))
                    {
                        (Ctrl as DataGrid).Visible = false;
                    }
                }
                return;
            }



            string FirstServName = GetServName(NamesOfServers[0]);
            InitSS(FirstServName);

            if (!SS.Initialize())
            {
                for (int i = 0; i < CountServers; ++i)
                {
                    if (FirstServName == NamesOfServers[i])
                    {
                        continue;
                    }

                    InitSS(NamesOfServers[i]);
                    if (SS.Initialize())
                    {
                        SaveServName(NamesOfServers[i]);
                        break;
                    }
                }
            }
            if (!SS.Connect)
            {
                MessageBox.Show("Не удалось синхронизовать (версия: " + Vers + ")! ОШИБКА: " + SS.ExcStr);
                Close();
                return;
            }
            View();
            if (SS.DeviceName == null || SS.DeviceName.Trim() == "")
            {
                lblName.Text = Helper.SuckDigits(DeviceID.GetDeviceName());
            }
            else
            {
                lblName.Text = Helper.SuckDigits(SS.DeviceName);
            }
            pnlCurrent.GetLabelByName("lblResult").Text = "";
            lblAction.Width = CurrWidth - 2;
            //lblAction.Font = new Font("Tahoma", CurrWidth < 320 ? 11 : 14, FontStyle.Bold);
            lblName.Location = new Point(CurrWidth - 24, 0);
            lblState.Width = CurrWidth - 2;
            lblState.Font = CurrWidth < 320 ? FontTahoma8Bold : FontTahoma10Bold;
        }