private void btnStart_Click(object sender, EventArgs e) { try { if (textBox_login.Text == "") { MessageBox.Show("Вы не ввели логин", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else if (textBox_pw.Text == "") { MessageBox.Show("Вы не ввели пароль", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //Login into Mainframe var login = textBox_login.Text; var password = textBox_pw.Text; //Login for auto testing //login = "******"; //password = "******"; teemApp = new teemtalk.Application(); teemApp.CurrentSession.Name = "Mainframe"; teemApp.CurrentSession.Network.Protocol = ttNetworkProtocol.ProtocolWinsock; teemApp.CurrentSession.Network.Hostname = "mainframe.gb.tntpost.com"; teemApp.CurrentSession.Network.Telnet.Port = 23; teemApp.CurrentSession.Network.Telnet.Name = "IBM-3278-2-E"; teemApp.CurrentSession.Emulation = ttEmulations.IBM3270Emul; teemApp.CurrentSession.Network.Connect(); teemApp.Visible = Properties.Settings.Default.isVisible; var host = teemApp.CurrentSession.Host; var disp = teemApp.CurrentSession.Display; teemApp.CurrentSession.Keyboard.Macros.Add("<VK_RETURN>", "<VK_SEPARATOR>", true); ForAwait(35, 16, "INTERNATIONAL"); host.Send("SM"); host.Send("<ENTER>"); ForAwait(13, 23, "USER ID"); Thread.Sleep(2000); host.Send(login); host.Send("<TAB>"); host.Send(password); host.Send("<ENTER>"); Thread.Sleep(2000); if (teemApp.CurrentSession.Display.CursorCol == 40) { TeemTalkClose(); MessageBox.Show("Вы ввели неверный логин или пароль. Введите правильные данные и нажмите кнопку START", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else if (teemApp.CurrentSession.Display.CursorCol == 35) { TeemTalkClose(); MessageBox.Show("Ваш пароль устарел. Измените пароль в Mainframe, введите правильные данные и нажмите кнопку START", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // Создаем Client Data txt файл string ClientDataPath = @"ClientData"; if (!Directory.Exists(ClientDataPath)) //Если папки нет... { Directory.CreateDirectory(ClientDataPath); //...создадим ее } string ClientDataName = "ClientData_" + DateTime.Now.ToString("ddMMMyy_HHmm", CultureInfo.GetCultureInfo("en-us")) + ".txt"; string destClientData = Path.Combine(ClientDataPath, ClientDataName); StreamWriter ClientData = new StreamWriter(destClientData, true); ClientData.WriteLine("#CS User: "******"Command"); host.Send("2"); host.Send("<ENTER>"); Thread.Sleep(2000); if (teemApp.CurrentSession.Display.CursorCol == 01) { TeemTalkClose(); MessageBox.Show("Пользователь " + login + " уже авторизован в Terminal I. Выйдете из сессии Terminal I и нажмите кнопку START", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } logger.Debug("User:"******"Job Description"); host.Send("<F12>"); Thread.Sleep(500); if (disp.CursorRow != 2) { host.Send("JK04"); } logger.Debug("JK04", this.Text); //LOG host.Send("<ENTER>"); Thread.Sleep(2200); if (teemApp.CurrentSession.Display.CursorCol == 25)// Закрытие всплывающего окна, которое нужно закрыть { host.Send("<F12>"); } //Проверка на возможность доступа в JK04 if (disp.ScreenData[73, 1, 4] != "JK04") { TeemTalkClose(); MessageBox.Show("Пользователь " + login + " не имеет доступа в JK04", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } string ClientName = ""; string Tel1 = ""; string Tel2 = ""; string wrClientName = ""; string wrTel1 = ""; string wrTel2 = ""; do { //btnStop.Enabled = true; if (disp.ScreenData[73, 1, 4] == "JK04" & teemApp.CurrentSession.Display.CursorRow == 11) { ClientName = disp.ScreenData[19, 8, 30]; Tel1 = disp.ScreenData[19, 9, 7]; Tel2 = disp.ScreenData[30, 9, 9]; if (ClientName != wrClientName || Tel1 != wrTel1 || Tel2 != wrTel2) { //string Name = disp.ScreenData[19, 8, 10]; ClientData = new StreamWriter(destClientData, true); ClientData.Write(ClientName + "; "); ClientData.Close(); //string Tel1 = disp.ScreenData[19, 9, 7]; ClientData = new StreamWriter(destClientData, true); ClientData.Write(Tel1 + "; "); ClientData.Close(); //string Tel2 = disp.ScreenData[30, 9, 9]; ClientData = new StreamWriter(destClientData, true); ClientData.WriteLine(Tel2 + ";"); ClientData.Close(); wrClientName = ClientName; wrTel1 = Tel1; wrTel2 = Tel2; } } //if(Stop == true) //{ // break; //} } while (true); //teemApp.Close(); //foreach (Process proc in Process.GetProcessesByName("teem2k")) //{ //proc.Kill(); //} //teemApp.Application.Close(); //Thread.Sleep(1000); //host.Send("<ENTER>"); // Закрываем TeemTalk TeemTalkClose(); logger.Debug("TeemTalkNormalClose", this.Text); //LOG btnStart.Enabled = true; //Открыть текстовый файл Process.Start(destClientData); } catch (Exception ex) { // Вывод сообщения об ошибке logger.Debug(ex.ToString()); } }
public Form1() { InitializeComponent(); int A = 1; do { SqlConnection Сon = null; DataTable dt = null; SqlDataAdapter da = null; // Открытые подключение к базе данных string ConnectionString = "server=10.206.64.75;uid=bpa_ru;" + "pwd=bpAut0mat10n_RUbpAut0mat10n_RU; database=BPA_RU"; Сon = new SqlConnection(ConnectionString); Сon.Open(); // DataSet сохраняет данные в памяти с помощью таблиц данных DataTable DataSet dataSet1 = new DataSet(); // Объект DataAdapter является посредником при взаимодействии базы данных и объекта DataSet string select = String.Format("SELECT COUNT(*) FROM dbo.BPA_RU WHERE InMainframe ='0'"); da = new SqlDataAdapter(select, ConnectionString); da = new SqlDataAdapter(select, ConnectionString); dt = new DataTable(); da.Fill(dt); string R = dt.Rows[0].ItemArray[0].ToString(); int pr = 0; pr = Convert.ToInt32(R); Сon.Close(); if (pr == 0) { Thread.Sleep(5000); } else { try { var login = Properties.Settings.Default.loginMF; var password = Properties.Settings.Default.pwdMF; var consData = DBContext.GetConsStatus(); teemApp = new teemtalk.Application(); teemApp.CurrentSession.Name = "Mainframe"; teemApp.CurrentSession.Network.Protocol = ttNetworkProtocol.ProtocolWinsock; teemApp.CurrentSession.Network.Hostname = "mainframe.gb.tntpost.com"; teemApp.CurrentSession.Network.Telnet.Port = 23; teemApp.CurrentSession.Network.Telnet.Name = "IBM-3278-2-E"; teemApp.CurrentSession.Emulation = ttEmulations.IBM3270Emul; teemApp.CurrentSession.Network.Connect(); teemApp.Visible = Properties.Settings.Default.isVisible;; var host = teemApp.CurrentSession.Host; var disp = teemApp.CurrentSession.Display; ForAwait(35, 16, "INTERNATIONAL"); host.Send("<ENTER>"); host.Send("SM"); host.Send("<ENTER>"); ForAwait(13, 23, "USER ID"); Thread.Sleep(2000); host.Send(login); host.Send("<TAB>"); host.Send(password); host.Send("<ENTER>"); //if (!ForAwait(2, 2, "Command")) goto StartMaimframe; ForAwait(2, 2, "Command"); host.Send("2"); host.Send("<ENTER>"); ForAwait(20, 7, "Job Description"); host.Send("<F12>"); Thread.Sleep(500); if (disp.CursorRow != 2) { host.Send("YL30"); } logger.Debug("YL30", this.Text); //LOG host.Send("<ENTER>"); foreach (DataRow row in consData.Rows) { //ДОПИСАТЬ ЗАБОР ПЕРЕМЕННЫХ ИЗ БАЗЫ1!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! var qty = "1"; //int id = Convert.ToInt32(row["id"].ToString()); var con = row["Nakladnaya TNT"].ToString(); DateTime dateFromBase = row.Field <DateTime>("Date"); var date = dateFromBase.ToString("ddMMMyy", CultureInfo.GetCultureInfo("en-us")); var time = dateFromBase.ToString("HHmm"); var status = row["Status"].ToString(); //var comment = row["Commentary"].ToString(); var eventdepot = row["EventDepot"].ToString(); //дописал //if (comment.Trim() == "") comment = "..."; var delvz = "B"; //Начало подключения к MF ForAwait(15, 2, "Consignment Status Entry"); Thread.Sleep(500); host.Send(status); //Вводим статус logger.Debug(status, this.Text); //LOG Thread.Sleep(500); //костыль if (disp.CursorCol != 28 && disp.CursorCol != 10) { host.Send("<TAB>"); } ForAwaitCol(28); host.Send(date); logger.Debug(date, this.Text); //LOG host.Send("<TAB>"); ForAwaitCol(46); host.Send(time); if (disp.CursorCol != 70 && disp.CursorCol != 46) { host.Send("<TAB>"); } ForAwaitCol(70); Thread.Sleep(500); if (eventdepot == "Москва") { eventdepot = "MS1"; host.Send(eventdepot); } else if (eventdepot == "Владимир" #region VL5_depot || eventdepot == "Ковров-1" || eventdepot == "Вязники" || eventdepot == "Гороховец" || eventdepot == "Дзержинск" #endregion ) { eventdepot = "VL5"; host.Send(eventdepot); } else if (eventdepot == "Н.Новгород Моск."// Уточнение станции!!!! #region GOJ_depot || eventdepot == "Сухобезводно" #endregion ) { eventdepot = "GOJ"; host.Send(eventdepot); } else if (eventdepot == "Киров" #region KI4_depot || eventdepot == "Глазов" || eventdepot == "Балезино" || eventdepot == "Верещагино" #endregion ) { eventdepot = "KI4"; host.Send(eventdepot); } else if (eventdepot == "Пермь" #region RT4_depot || eventdepot == "Ферма" || eventdepot == "Кунгур" #endregion ) { eventdepot = "RT4"; host.Send(eventdepot); } else if (eventdepot == "Екатеринбург-П"// Уточнение станции!!!! #region SVX_depot || eventdepot == "Аксариха" #endregion ) { eventdepot = "SVX"; host.Send(eventdepot); } else if (eventdepot == "Тюмень" #region RT6_depot || eventdepot == "Заводоуковская" || eventdepot == "Омутинская" || eventdepot == "Ишим" || eventdepot == "Называевская" #endregion ) { eventdepot = "RT6"; host.Send(eventdepot); } else if (eventdepot == "Омск-пасс")// Уточнение станции!!!! { eventdepot = "OM4"; host.Send(eventdepot); } else if (eventdepot == "Барабинск") { eventdepot = "BB8"; host.Send(eventdepot); } else if (eventdepot == "Новосибирск-гл."// Уточнение станции!!!! #region OVB_depot || eventdepot == "Тайга" || eventdepot == "Мариинск" || eventdepot == "Боготол" || eventdepot == "Ачинск 1" || eventdepot == "Козулька" #endregion ) { eventdepot = "OVB"; host.Send(eventdepot); } else if (eventdepot == "Красноярск-пасс."// Уточнение станции!!!! #region KJ4_depot || eventdepot == "Базаиха" || eventdepot == "Уяр" || eventdepot == "Заозерная" || eventdepot == "Канск-Енисейский" || eventdepot == "Иланская" || eventdepot == "Решоты" || eventdepot == "Тайшет" || eventdepot == "Нижнеудинск" || eventdepot == "Тулун" || eventdepot == "Зима" || eventdepot == "Черемхово" || eventdepot == "Усолье-Сибирское" || eventdepot == "Ангарск" #endregion ) { eventdepot = "KJ4"; host.Send(eventdepot); } else if (eventdepot == "Иркутск-пасс."// Уточнение станции!!!! #region IK3_depot || eventdepot == "Слюдянка" || eventdepot == "Мысовая" #endregion ) { eventdepot = "IK3"; host.Send(eventdepot); } else if (eventdepot == "Улан-Удэ" #region UU3_depot || eventdepot == "Петр.Завод Чет" ||// Уточнение станции!!!! eventdepot == "Хилок" || eventdepot == "Могзон" || eventdepot == "Кадала" #endregion ) { eventdepot = "UU3"; host.Send(eventdepot); } else if (eventdepot == "Чита 2"// Уточнение станции!!!! #region CT6_depot || eventdepot == "Карымская" || eventdepot == "Шилка пасс." ||// Уточнение станции!!!! eventdepot == "Приисковая" || eventdepot == "Куэнга" || eventdepot == "Чернышевск Заб." ||// Уточнение станции!!!! eventdepot == "Зилово" || eventdepot == "Ксеньевская" || eventdepot == "Могоча" || eventdepot == "Ерофей Павлович" || eventdepot == "Уруша" || eventdepot == "Сковородино" || eventdepot == "Магдагачи" || eventdepot == "Тыгда" || eventdepot == "Шимановская" || eventdepot == "Свободный" || eventdepot == "Белогорск" || eventdepot == "Завитая" || eventdepot == "Бурея" || eventdepot == "Облучье" || eventdepot == "Биробиджан" #endregion ) { eventdepot = "CT6"; host.Send(eventdepot); } else if (eventdepot == "Хабаровск 1"// Уточнение станции!!!! #region KH6_depot || eventdepot == "Вяземская" || eventdepot == "Бикин" || eventdepot == "Лучегорск" || eventdepot == "Дальнереченск 1" || eventdepot == "Ружино" || eventdepot == "Спасск-Дальний" || eventdepot == "Мучная" || eventdepot == "Уссурийск" #endregion ) { eventdepot = "KH6"; host.Send(eventdepot); } else if (eventdepot == "Владивосток") { eventdepot = "VK3"; host.Send(eventdepot); } Thread.Sleep(500); logger.Debug(eventdepot, this.Text); //LOG host.Send("<TAB>"); ForAwaitCol(13); host.Send("<TAB>"); ForAwaitCol(57); //host.Send(date); host.Send("<TAB>"); ForAwaitCol(77); ForAwaitCol(77);//Rems + Если статус OF, то делаем и вводим коммент = статусу OF if (status == "OF") { host.Send("<F4>"); ForAwait(5, 5, "Seq Remarks"); host.Send(status); Thread.Sleep(500); host.Send("<ENTER>"); ForAwaitCol(9); // вторая строка seq remarks host.Send("<F12>"); ForAwaitCol(18); // mode: add - пропускаем host.Send("<F12>"); //возвращаемся в общее меню на позицию REMS+ COL(77) ForAwait(15, 2, "Consignment Status Entry"); // проверяем } host.Send("<TAB>"); host.Send("<ENTER>"); ForAwaitCol(9); host.Send("<F12>"); ForAwaitCol(18); host.Send("<F12>"); ForAwait(15, 2, "Consignment Status Entry"); host.Send("<TAB>"); ForAwaitCol(12);//Runsheet - пропускаем host.Send("<TAB>"); ForAwaitCol(33);//Round no - пропускаем host.Send("<TAB>"); ForAwaitCol(54);// Delv zone - по умолчанию "b" host.Send(delvz); host.Send("<TAB>"); ForAwaitCol(73);// Delv area - пропускаем host.Send("<TAB>"); ForAwaitCol(24);//No of status Entries = 1 host.Send(qty); host.Send("<ENTER>"); ForAwait(1, 10, "01"); host.Send(con); // Con number logger.Debug(con, this.Text); //LOG ForAwaitCol(26); //Позиция после ввода 9 символов номера накладной host.Send("<TAB>"); ForAwaitCol(37);// Статус (повторный вывод) - пропускаем host.Send("<TAB>"); ForAwaitCol(48);// Time - пропускаем host.Send("<TAB>"); ForAwaitCol(58);// Solved - пропускаем host.Send("<TAB>"); ForAwaitCol(64);// Rev date (повторный вывод) - пропускаем host.Send("<TAB>"); ForAwaitCol(17); // Signatory Если статус OK = OK, если OF = "" if (status == "OK") { host.Send(status); } else { host.Send(""); } host.Send("<ENTER>");//концовка и переход обратно к вводу статуса host.Send("<F12>"); host.Send("<ENTER>"); Thread.Sleep(2500); if (disp.ScreenData[15, 2, 9] == "Duplicate") { var checkDepo = ""; short i = 1; do { short col = (Int16)(9 + i); checkDepo = disp.ScreenData[54, col, 3]; if (checkDepo == "MW3" #region depoes || checkDepo == "MW5" || checkDepo == "MW7" || checkDepo == "MOW" || checkDepo == "LED" || checkDepo == "KG7" || checkDepo == "GOJ" || checkDepo == "KUF" || checkDepo == "KZ7" || checkDepo == "RO8" || checkDepo == "KR4" || checkDepo == "SVX" || checkDepo == "IK3" || checkDepo == "OVB" || checkDepo == "KH6" || checkDepo == "VK3" || checkDepo == "AB7" || checkDepo == "AC8" || checkDepo == "AK7" || checkDepo == "AP6" || checkDepo == "AV8" || checkDepo == "BA8" || checkDepo == "BB8" || checkDepo == "BG8" || checkDepo == "BU8" || checkDepo == "BY5" || checkDepo == "CB2" || checkDepo == "CT6" || checkDepo == "EL6" || checkDepo == "IV6" || checkDepo == "IZ8" || checkDepo == "JA5" || checkDepo == "KE5" || checkDepo == "KG5" || checkDepo == "KI4" || checkDepo == "KJ4" || checkDepo == "KM7" || checkDepo == "KN6" || checkDepo == "KU3" || checkDepo == "KU8" || checkDepo == "LI5" || checkDepo == "MK5" || checkDepo == "MU5" || checkDepo == "MV7" || checkDepo == "NC8" || checkDepo == "NH2" || checkDepo == "NV6" || checkDepo == "NZ8" || checkDepo == "OM4" || checkDepo == "OR7" || checkDepo == "OR8" || checkDepo == "PK7" || checkDepo == "PK9" || checkDepo == "PS9" || checkDepo == "PV3" || checkDepo == "PZ6" || checkDepo == "RC6" || checkDepo == "RT4" || checkDepo == "RT6" || checkDepo == "RY2" || checkDepo == "SH5" || checkDepo == "SH6" || checkDepo == "SK9" || checkDepo == "SM2" || checkDepo == "SP5" || checkDepo == "SQ4" || checkDepo == "SR7" || checkDepo == "SU8" || checkDepo == "SY5" || checkDepo == "TB3" || checkDepo == "TO8" || checkDepo == "TU3" || checkDepo == "TV6" || checkDepo == "UF5" || checkDepo == "UK4" || checkDepo == "UL9" || checkDepo == "UU3" || checkDepo == "UV4" || checkDepo == "VL4" || checkDepo == "VL5" || checkDepo == "VN4" || checkDepo == "VO4" || checkDepo == "VO6" || checkDepo == "VO8" || checkDepo == "VY6" || checkDepo == "VY8" || checkDepo == "XS7" || checkDepo == "ZP8" #endregion ) { host.Send(i.ToString()); host.Send("<ENTER>"); break; } i++; } while (checkDepo.Trim() != ""); host.Send("1"); host.Send("<ENTER>"); Thread.Sleep(2500); } ForAwait(15, 2, "Consignment Status Entry"); //DBContext.ChangeRecordStatus(id); } teemApp.Close(); foreach (Process proc in Process.GetProcessesByName("teem2k")) { proc.Kill(); } teemApp.Application.Close(); Thread.Sleep(1000); host.Send("<ENTER>"); } catch (Exception ex) { // Вывод сообщения об ошибке logger.Debug(ex.ToString()); } } }while (A == 1); }
private void btnStart_Click(object sender, EventArgs e) { try { //поиск файла Excel OpenFileDialog ofd = new OpenFileDialog(); ofd.Multiselect = false; ofd.DefaultExt = "*.xls;*.xlsx"; ofd.Filter = "Microsoft Excel (*.xls*)|*.xls*"; ofd.Title = "Выберите документ Excel"; if (ofd.ShowDialog() != DialogResult.OK) { MessageBox.Show("Вы не выбрали файл для открытия", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } string xlFileName = ofd.FileName; //имя нашего Excel файла Excel.Application ObjWorkExcel = new Excel.Application(); //создаём приложение Excel Excel.Workbook ObjWorkBook = ObjWorkExcel.Workbooks.Open(xlFileName); //открываем наш файл Excel.Worksheet ObjWorkSheet = (Excel.Worksheet)ObjWorkBook.Sheets[1]; //получить 1 лист //Login into Mainframe //var login = textBox1.Text; //var password = textBox2.Text; var login = Properties.Settings.Default.loginMF; var password = Properties.Settings.Default.pwdMF; //var consData = DBContext.GetConsStatus(); teemApp = new teemtalk.Application(); teemApp.CurrentSession.Name = "Mainframe"; teemApp.CurrentSession.Network.Protocol = ttNetworkProtocol.ProtocolWinsock; teemApp.CurrentSession.Network.Hostname = "mainframe.gb.tntpost.com"; teemApp.CurrentSession.Network.Telnet.Port = 23; teemApp.CurrentSession.Network.Telnet.Name = "IBM-3278-2-E"; teemApp.CurrentSession.Emulation = ttEmulations.IBM3270Emul; teemApp.CurrentSession.Network.Connect(); teemApp.Visible = Properties.Settings.Default.isVisible; var host = teemApp.CurrentSession.Host; var disp = teemApp.CurrentSession.Display; ForAwait(35, 16, "INTERNATIONAL"); host.Send("SM"); host.Send("<ENTER>"); ForAwait(13, 23, "USER ID"); Thread.Sleep(2000); host.Send(login); host.Send("<TAB>"); host.Send(password); host.Send("<ENTER>"); //if (!ForAwait(2, 2, "Command")) goto StartMaimframe; ForAwait(2, 2, "Command"); host.Send("2"); host.Send("<ENTER>"); ForAwait(20, 7, "Job Description"); host.Send("<F12>"); Thread.Sleep(500); if (disp.CursorRow != 2) { host.Send("JK04"); } logger.Debug("JK04", this.Text); //LOG host.Send("<ENTER>"); var last = ObjWorkSheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell, Type.Missing);//1 ячейку int lastUsedRow = last.Row; //Дата, введенная пользователем в DateSform1 //var DateSform = this.DateSform1.Text; ////DateTime DateS = DateTime.Parse((string) DateSform); //logger.Debug(DateSform, this.Text); //LOG // foreach (DataRow row in consData.Rows) // Старое //for (int i = 2; i <= lastUsedRow; i++) for (int i = 2; i <= lastUsedRow; i++) { // Colnum string colnum = Convert.ToString(i); //string colnum = "1"; // DataS эскпорт //Excel.Range exceldateS = ObjWorkSheet.get_Range("S" + colnum); //object dateS_v = exceldateS.Value2; //if (dateS_v == null || dateS_v is string) //{ // continue; //переход к следующей итерации FOR //} //DateTime dSt = DateTime.FromOADate((double)dateS_v); //string dateS = dSt.ToString("dd.MM.yyyy", CultureInfo.GetCultureInfo("RU-ru")); //if (dateS_v is double) //{ // dSt = DateTime.FromOADate((double)dateS_v); //} //else //{ // DateTime.TryParse((string)dateS_v, out dSt); //} // Done string done = "DONE"; //Если статус Введенная дата есть в ячейке, то цикл продолжается, если нет, то перескакивает к следующему i //if (DateSform == dateS) //{ logger.Debug(colnum, this.Text); //LOG //Объявление переменных //CName - Caller Name var CName = "0"; //TelNo - Telephone No var TelNo = "0"; //SrCrit - Search Criteria из колонки acc (A) var excelSrCrit = ObjWorkSheet.get_Range("A" + colnum, Type.Missing).Value2; string SrCrit = excelSrCrit.ToString(); //Select - Selection var Select = "41"; //SSstat - SS status var SSstat = "BK"; //Con - Connote из колонки CN Number var excelcon = ObjWorkSheet.get_Range("B" + colnum, Type.Missing).Value2; string Con = excelcon.ToString(); //RecName - Receaver Name var excelRecName = ObjWorkSheet.get_Range("C" + colnum, Type.Missing).Value2; string RecName = excelRecName.ToString(); //RecAddr - Receaver Address var excelRecAddr = ObjWorkSheet.get_Range("D" + colnum, Type.Missing).Value2; string RecAddr = excelRecAddr.ToString(); //RecTown - Receaver Town var excelRecTown = ObjWorkSheet.get_Range("E" + colnum, Type.Missing).Value2; string RecTown = excelRecTown.ToString(); //RecPost - Receaver Postcode var excelRecPost = ObjWorkSheet.get_Range("F" + colnum, Type.Missing).Value2; string RecPost = excelRecPost.ToString(); //GdsDesk - GDS Desc var excelGdsDesk = ObjWorkSheet.get_Range("G" + colnum, Type.Missing).Value2; string GdsDesk = excelGdsDesk.ToString(); //WeightKG - Weight KG var excelWeightKG = ObjWorkSheet.get_Range("H" + colnum, Type.Missing).Value2; string WeightKG = excelWeightKG.ToString(); //WeightG - Weight G //Items var excelItems = ObjWorkSheet.get_Range("J" + colnum, Type.Missing).Value2; string Items = excelItems.ToString(); //Length - 10 var Length = "10"; //Widht - 10 var Widht = "10"; //Height - 10 var Height = "10"; //Экспорт даты забора CollDate - Collection Date Excel.Range excelCollDate = ObjWorkSheet.get_Range("K" + colnum); object CollDate_v = excelCollDate.Value2; DateTime dCt = DateTime.FromOADate((double)CollDate_v); string CollDate = dCt.ToString("ddMMMyy", CultureInfo.GetCultureInfo("en-us")); if (CollDate_v is double) { dCt = DateTime.FromOADate((double)CollDate_v); } else { DateTime.TryParse((string)CollDate_v, out dCt); } //CollTime - Collection Time = 1100 var CollTime = "1100"; //CollTimeTo - Collection Time To = 1400 var CollTimeTo = "1400"; //Экспорт даты доставки DelDate - Delivery Date From Excel.Range excelDelDate = ObjWorkSheet.get_Range("L" + colnum); object DelDate_v = excelDelDate.Value2; DateTime dDt = DateTime.FromOADate((double)DelDate_v); string DelDate = dDt.ToString("ddMMMyy", CultureInfo.GetCultureInfo("en-us")); if (DelDate_v is double) { dDt = DateTime.FromOADate((double)DelDate_v); } else { DateTime.TryParse((string)DelDate_v, out dDt); } //DelTime - Delivery Time = 2359 var Deltime = "2359"; //DelTimeTo - Delivery Time To = 2359 var DeltimeTo = "2359"; //Dev - Dev = s var Div = "s"; //Prod - Prod var excelProd = ObjWorkSheet.get_Range("N" + colnum, Type.Missing).Value2; string Prod = excelProd.ToString(); //Payer - Payer var excelPayer = ObjWorkSheet.get_Range("O" + colnum, Type.Missing).Value2; string Payer = excelPayer.ToString(); //Stack - Stackable = y var Stack = "y"; //CMair var CMair = "4"; //CMairVendor - Vendor var excel_CMairVendor = ObjWorkSheet.get_Range("Q" + colnum, Type.Missing).Value2; string CMairVendor = excel_CMairVendor.ToString(); //CMairQt - Quote Amount var excel_CMairQt = ObjWorkSheet.get_Range("R" + colnum, Type.Missing).Value2; string CMairQt = excel_CMairQt.ToString(); //LCLPU var LCLPU = "24"; //LCLPU_Vendor - Vendor var excel_LCLPU_Vendor = ObjWorkSheet.get_Range("T" + colnum, Type.Missing).Value2; string LCLPU_Vendor = excel_LCLPU_Vendor.ToString(); //LCLPU_Qt - Quote Amount var excel_LCLPU_Qt = ObjWorkSheet.get_Range("U" + colnum, Type.Missing).Value2; string LCLPU_Qt = excel_LCLPU_Qt.ToString(); //Insur - Insurance ??????????????? //LocDel - Local Deilvery ??????????????? //Handling ??????????????? //Revao var excelRevao = ObjWorkSheet.get_Range("W" + colnum, Type.Missing).Value2; string Revao; if (excelRevao == null) // Если ячейки пустые, то ничего не вводить { Revao = null; } else { Revao = excelRevao.ToString(); } var Revao_n = "43"; //Disc var excelDisc = ObjWorkSheet.get_Range("X" + colnum, Type.Missing).Value2; string Disc = excelDisc.ToString(); var Disc_n = "7"; ForAwait(20, 1, "Customer Service System"); Thread.Sleep(600); host.Send(CName); // 0 Thread.Sleep(100); //костыль host.Send("<TAB>"); host.Send(TelNo); // 0 Thread.Sleep(100); //костыль host.Send("<TAB>"); host.Send(TelNo); // 0 Thread.Sleep(100); //костыль host.Send("<TAB>"); ForAwaitCol(19); Thread.Sleep(600); host.Send(SrCrit); Thread.Sleep(500); host.Send("<ENTER>"); Thread.Sleep(1000); host.Send("<F12>"); ForAwaitCol(13); Thread.Sleep(600); host.Send(Select); // =41 host.Send("<ENTER>"); ForAwait(31, 8, "SS Status"); Thread.Sleep(600); host.Send(SSstat); // = BK Thread.Sleep(100); ForAwaitCol(62); Thread.Sleep(600); host.Send(Con); // CN Number host.Send("<TAB>"); ForAwaitCol(7); host.Send("<TAB>"); ForAwaitCol(46); host.Send("<F4>"); ForAwaitRow(9); Thread.Sleep(600); host.Send(RecName); // Receaver Name Thread.Sleep(600); host.Send("<TAB>"); ForAwaitRow(10); host.Send(RecAddr); // Receaver Address Thread.Sleep(600); host.Send("<TAB>"); ForAwaitCol(46); host.Send("<TAB>"); ForAwaitRow(11); host.Send("<TAB>"); ForAwaitRow(12); host.Send(RecTown); // Receaver Town Thread.Sleep(600); host.Send("<TAB>"); ForAwaitCol(57); host.Send(RecPost); // Receaver Postcode host.Send("<ENTER>"); Thread.Sleep(1000); host.Send("<TAB>"); ForAwaitCol(7); host.Send("<TAB>"); ForAwaitCol(46); host.Send("<TAB>"); ForAwaitCol(13); host.Send("<TAB>"); ForAwaitCol(50); host.Send(GdsDesk); // GDS Desc host.Send("<TAB>"); ForAwaitCol(14); host.Send(WeightKG); // Weight Только КГ!!!! host.Send("<TAB>"); ForAwaitCol(28); //host.Send(WeightG); host.Send("<TAB>"); ForAwaitCol(55); host.Send("<TAB>"); ForAwaitCol(73); host.Send("<TAB>"); ForAwaitCol(8); host.Send("<TAB>"); ForAwaitCol(20); host.Send(Items); // Items host.Send("<TAB>"); ForAwaitCol(37); host.Send(Length); // =10 host.Send("<TAB>"); ForAwaitCol(53); host.Send(Widht); // =10 host.Send("<TAB>"); ForAwaitCol(70); host.Send(Height); // =10 host.Send("<TAB>"); ForAwaitCol(20); host.Send(CollDate); // Collection Date Thread.Sleep(600); host.Send("<TAB>"); ForAwaitRow(16); host.Send(CollTime); // =1100 Thread.Sleep(600); ForAwaitCol(31); host.Send(CollTimeTo); // =1400 host.Send("<TAB>"); //ForAwaitCol(40); //host.Send("<TAB>"); ForAwaitCol(51); host.Send("<TAB>"); ForAwaitCol(22); host.Send(DelDate); // Delivery Date Thread.Sleep(600); host.Send("<TAB>"); ForAwaitCol(40); host.Send(Deltime); // =2359 Thread.Sleep(600); ForAwaitCol(56); host.Send(DelDate); // Delivery Date Thread.Sleep(600); host.Send("<TAB>"); ForAwaitCol(74); host.Send(DeltimeTo); // =2359 Thread.Sleep(600); ForAwaitCol(7); host.Send(Div); // =s host.Send("<TAB>"); ForAwaitCol(20); host.Send(Prod); // Prod Thread.Sleep(600); host.Send("<TAB>"); ForAwaitCol(37); host.Send("<TAB>"); ForAwaitCol(45); host.Send("<TAB>"); ForAwaitCol(53); host.Send("<TAB>"); ForAwaitCol(61); host.Send("<TAB>"); ForAwaitCol(76); host.Send(Payer); // Payer Thread.Sleep(600); host.Send("<TAB>"); ForAwaitCol(38); host.Send("<TAB>"); ForAwaitCol(76); host.Send("<TAB>"); ForAwaitCol(17); host.Send("<TAB>"); ForAwaitCol(47); host.Send("<TAB>"); ForAwaitCol(13); host.Send(Stack); // =y //Вход в Tariff No ForAwaitCol(48); host.Send("<F10>"); ForAwaitCol(15); host.Send("<F5>"); ForAwaitCol(7); host.Send("<F4>"); if (CMairVendor == null || CMairQt == null) // Если ячейки пустые, то ничего не вводить { } else { ForAwaitCol(23); host.Send(CMair); // =4 host.Send("<ENTER>"); ForAwaitCol(7); host.Send("<TAB>"); ForAwaitCol(15); host.Send(CMairVendor); // CMairVendor Thread.Sleep(600); host.Send("<TAB>"); ForAwaitCol(28); host.Send(CMairQt); // CMairQt Thread.Sleep(600); host.Send("<ENTER>"); } if (LCLPU_Vendor == null || LCLPU_Qt == null) // Если ячейки пустые, то ничего не вводить { } else { ForAwaitCol(7); host.Send("<F4>"); ForAwaitCol(23); host.Send(LCLPU); // =24 host.Send("<ENTER>"); ForAwaitCol(7); host.Send("<TAB>"); ForAwaitCol(15); host.Send(LCLPU_Vendor); // LCLPU_Vendor Thread.Sleep(600); host.Send("<TAB>"); ForAwaitCol(28); host.Send(LCLPU_Qt); // LCLPU_Qt Thread.Sleep(600); host.Send("<ENTER>"); } if (Revao == null) // Если ячейки пустые, то ничего не вводить { } else { ForAwaitCol(7); host.Send("<F4>"); ForAwaitCol(23); host.Send(Revao_n); // =43 host.Send("<ENTER>"); ForAwaitCol(7); host.Send("<TAB>"); ForAwaitCol(15); host.Send("<TAB>"); ForAwaitCol(28); host.Send(Revao); // Revao Thread.Sleep(600); host.Send("<ENTER>"); } if (Disc == null) // Если ячейки пустые, то ничего не вводить { } else { ForAwaitCol(7); host.Send("<F4>"); ForAwaitCol(23); host.Send(Disc_n); // =7 host.Send("<ENTER>"); ForAwaitCol(7); host.Send("<TAB>"); ForAwaitCol(15); host.Send("<TAB>"); ForAwaitCol(28); host.Send(Disc); // Disc Thread.Sleep(600); host.Send("<ENTER>"); } ForAwaitCol(7); host.Send("<F12>"); ForAwaitCol(15); host.Send("<F12>"); Thread.Sleep(600); host.Send("<F12>"); ForAwaitCol(73); host.Send("<ENTER>"); // 1й раз Thread.Sleep(1000); host.Send("<ENTER>"); // 2й раз Thread.Sleep(1000); host.Send("<ENTER>"); // 3й раз Thread.Sleep(1000); host.Send("<ENTER>"); // 4й раз Thread.Sleep(1000); host.Send("<ENTER>"); // 5й раз Thread.Sleep(1000); host.Send("<ENTER>"); // 6й раз ForAwaitCol(62); host.Send("y"); Thread.Sleep(600); host.Send("<ENTER>"); // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // Status // var excelstatus = ObjWorkSheet.get_Range("R" + colnum, Type.Missing).Value2; // string status = excelstatus.ToString(); // // Экспорт даты доставки dateD // Excel.Range exceldateD = ObjWorkSheet.get_Range("Q" + colnum); // object dateD_v = exceldateD.Value2; // // Экспорт даты забора dateZ // Excel.Range exceldateZ = ObjWorkSheet.get_Range("P" + colnum); // object dateZ_v = exceldateZ.Value2; // //Time - Можно по умолчанию вводить "1000" // var time = "1000"; // //Depo - EVENTDEPOT // var eventdepot = "MOW"; // // Consigment номер накладной // var excelcon = ObjWorkSheet.get_Range("N" + colnum, Type.Missing).Value2; // string con_wocheck = excelcon.ToString(); // string con = con_wocheck.Substring(0, 9);// ограничивание накладной по количеству знаков // // количество обрабатываемых накладных за раз (по умолчанию 1) // var qty = "1"; // // Delv zone - по умолчанию "b" // var delvz = "B"; // ForAwait(15, 2, "Consignment Status Entry"); // Thread.Sleep(600); // host.Send(status);//Вводим статус // logger.Debug(status, this.Text); //LOG // Thread.Sleep(600); //костыль // if (disp.CursorCol != 28 && disp.CursorCol != 10) // host.Send("<TAB>"); // ForAwaitCol(28);//Вводим дату доставки, если ОК или дату забора, если OF // if (status == "OK") // { // if (dateD_v == null)// Если даты нет, то переходим к вводу статуса и след. строке // { // host.Send("<F12>"); // continue; //переход к следующей итерации FOR // } // DateTime dDt = DateTime.FromOADate((double)dateD_v); // string dateD = dDt.ToString("ddMMMyy", CultureInfo.GetCultureInfo("en-us")); // if (dateD_v is double) // { // dDt = DateTime.FromOADate((double)dateD_v); // } // else // { // DateTime.TryParse((string)dateD_v, out dDt); // } // host.Send(dateD); // Thread.Sleep(100); // logger.Debug(dateD, this.Text); //LOG // host.Send("<TAB>"); // } // else if(status == "OF") // { // if (dateZ_v == null)// Если даты нет, то переходим к вводу статуса и след. строке // { // host.Send("<F12>"); // continue; //переход к следующей итерации FOR // } // DateTime dZt = DateTime.FromOADate((double)dateZ_v); // string dateZ = dZt.ToString("ddMMMyy", CultureInfo.GetCultureInfo("en-us")); // if (dateZ_v is double) // { // dZt = DateTime.FromOADate((double)dateZ_v); // } // else // { // DateTime.TryParse((string)dateZ_v, out dZt); // } // host.Send(dateZ); // Thread.Sleep(100); // logger.Debug(dateZ, this.Text); //LOG // host.Send("<TAB>"); // } // ForAwaitCol(46);//Вводим время // host.Send(time); // Thread.Sleep(100); // if (disp.CursorCol != 70 && disp.CursorCol != 46) host.Send("<TAB>"); // ForAwaitCol(70);//Вводим депо // Thread.Sleep(3000); // host.Send(eventdepot); // Thread.Sleep(3000); // host.Send("<TAB>"); // Thread.Sleep(100); // ForAwaitCol(13);// Signatory - пропускаем // host.Send("<TAB>"); // ForAwaitCol(57);// REV Date - пропускаем // host.Send("<TAB>"); // ForAwaitCol(77);//Rems + Если статус OF, то делаем и вводим коммент = статусу OF // if (status == "OF") // { // host.Send("<F4>"); // ForAwait(5, 5, "Seq Remarks"); // host.Send(status); // Thread.Sleep(500); // host.Send("<ENTER>"); // ForAwaitCol(9); // вторая строка seq remarks // host.Send("<F12>"); // ForAwaitCol(18);// mode: add - пропускаем // host.Send("<F12>");//возвращаемся в общее меню на позицию REMS+ COL(77) // ForAwait(15, 2, "Consignment Status Entry");// проверяем // } // host.Send("<TAB>"); // ForAwaitCol(12);//Runsheet - пропускаем // host.Send("<TAB>"); // ForAwaitCol(33);//Round no - пропускаем // host.Send("<TAB>"); // ForAwaitCol(54);// Delv zone - по умолчанию "b" // host.Send(delvz); // host.Send("<TAB>"); // ForAwaitCol(73);// Delv area - пропускаем // host.Send("<TAB>"); // ForAwaitCol(24);//No of status Entries = 1 // host.Send(qty); // host.Send("<ENTER>"); // ForAwait(1, 10, "01"); // host.Send(con); // Con number // logger.Debug(con, this.Text); //LOG // ForAwaitCol(26);//Позиция после ввода 9 символов номера накладной // host.Send("<TAB>"); // ForAwaitCol(37);// Статус (повторный вывод) - пропускаем // host.Send("<TAB>"); // ForAwaitCol(48);// Time - пропускаем // host.Send("<TAB>"); // ForAwaitCol(58);// Solved - пропускаем // host.Send("<TAB>"); // ForAwaitCol(64);// Rev date (повторный вывод) - пропускаем // host.Send("<TAB>"); // ForAwaitCol(17); // Signatory Если статус OK = OK, если OF = "" // if (status == "OK") // { // host.Send(status); // } // else // { // host.Send(""); // } // host.Send("<ENTER>");//концовка и переход обратно к вводу статуса // host.Send("<F12>"); // host.Send("<ENTER>"); // Thread.Sleep(2500); // ForAwait(15, 2, "Consignment Status Entry"); // // DBContext.ChangeRecordStatus(id); // // Запись в ячейку даты внесения статуса отметки DONE // //ObjWorkSheet.Cells[18, i] = done; // //ObjWorkExcel.Interactive = false; // //ObjWorkBook.Save(); // //ObjWorkExcel.Interactive = true; // logger.Debug(done, this.Text); //LOG ////} ////else ////{ //// continue; //переход к следующей итерации FOR ////} //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// } // Закрываем TeemTalk teemApp.Close(); foreach (Process proc in Process.GetProcessesByName("teem2k")) { proc.Kill(); } //teemApp.Application.Close(); Thread.Sleep(1000); //host.Send("<ENTER>"); //Закрываем Excel ObjWorkBook.Close(true); ObjWorkExcel.Quit(); foreach (Process proc in Process.GetProcessesByName("excel")) { proc.Kill(); } MessageBox.Show("Данные внесены", "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } catch (Exception ex) { // Вывод сообщения об ошибке logger.Debug(ex.ToString()); } }
private void btnStart_Click(object sender, EventArgs e) { var login = Properties.Settings.Default.loginMF; var password = Properties.Settings.Default.pwdMF; var consData = DBContext.GetConsStatus(); teemApp = new teemtalk.Application(); teemApp.CurrentSession.Name = "Mainframe"; teemApp.CurrentSession.Network.Protocol = ttNetworkProtocol.ProtocolWinsock; teemApp.CurrentSession.Network.Hostname = "mainframe.gb.tntpost.com"; teemApp.CurrentSession.Network.Telnet.Port = 23; teemApp.CurrentSession.Network.Telnet.Name = "IBM-3278-2-E"; teemApp.CurrentSession.Emulation = ttEmulations.IBM3270Emul; teemApp.CurrentSession.Network.Connect(); teemApp.Visible = Properties.Settings.Default.isVisible;; var host = teemApp.CurrentSession.Host; var disp = teemApp.CurrentSession.Display; ForAwait(35, 16, "INTERNATIONAL"); host.Send("SM"); host.Send("<ENTER>"); ForAwait(13, 23, "USER ID"); host.Send(login); host.Send("<TAB>"); host.Send(password); host.Send("<ENTER>"); //if (!ForAwait(2, 2, "Command")) goto StartMaimframe; ForAwait(2, 2, "Command"); host.Send("2"); host.Send("<ENTER>"); ForAwait(20, 7, "Job Description"); host.Send("<F12>"); if (disp.CursorRow != 2) { host.Send("YL30"); } host.Send("<ENTER>"); foreach (DataRow row in consData.Rows) { var qty = "1"; int id = Convert.ToInt32(row["id"].ToString()); var con = row["Consignment"].ToString(); DateTime dateFromBase = row.Field <DateTime>("Date"); var date = dateFromBase.ToString("ddMMMyy", CultureInfo.GetCultureInfo("en-us")); var time = dateFromBase.ToString("HHmm"); var status = row["Code"].ToString(); var comment = row["Commentary"].ToString(); var eventdepot = row["EventDepot"].ToString(); //дописал if (comment.Trim() == "") { comment = "..."; } ForAwait(15, 2, "Consignment Status Entry"); host.Send(status); Thread.Sleep(2000); //костыль if (disp.CursorCol != 28 && disp.CursorCol != 10) { host.Send("<TAB>"); } ForAwaitCol(28); host.Send(date); host.Send("<TAB>"); ForAwaitCol(46); host.Send(time); if (disp.CursorCol != 70 && disp.CursorCol != 46) { host.Send("<TAB>"); } ForAwaitCol(70); host.Send(eventdepot); //поменял host.Send("<TAB>"); ForAwaitCol(13); host.Send("<TAB>"); ForAwaitCol(57); //host.Send(date); host.Send("<TAB>"); ForAwaitCol(77); host.Send("<F4>"); ForAwait(5, 5, "Seq Remarks"); host.Send(comment); host.Send("<ENTER>"); ForAwaitCol(9); host.Send("<F12>"); ForAwaitCol(18); host.Send("<F12>"); ForAwait(15, 2, "Consignment Status Entry"); host.Send("<TAB>"); ForAwaitCol(12); host.Send("<TAB>"); ForAwaitCol(33); host.Send("<TAB>"); ForAwaitCol(54); host.Send("<TAB>"); ForAwaitCol(73); host.Send("<TAB>"); ForAwaitCol(24); host.Send(qty); host.Send("<ENTER>"); ForAwait(1, 10, "01"); host.Send(con); host.Send("<ENTER>"); ForAwaitRow(22); host.Send("<F12>"); ForAwait(2, 23, "HIT ENTER"); host.Send("<ENTER>"); Thread.Sleep(2000); if (disp.ScreenData[15, 2, 9] == "Duplicate") { var checkDepo = ""; short i = 1; do { short col = (Int16)(9 + i); checkDepo = disp.ScreenData[54, col, 3]; if (checkDepo == "MW3" || checkDepo == "MW5" || checkDepo == "MW7" || checkDepo == "MOW" || checkDepo == "LED" || checkDepo == "KG7" || checkDepo == "GOJ" || checkDepo == "KUF" || checkDepo == "KZ7" || checkDepo == "RO8" || checkDepo == "KR4" || checkDepo == "SVX" || checkDepo == "IK3" || checkDepo == "OVB" || checkDepo == "KH6" || checkDepo == "VK3" || checkDepo == "AB7" || checkDepo == "AC8" || checkDepo == "AK7" || checkDepo == "AP6" || checkDepo == "AV8" || checkDepo == "BA8" || checkDepo == "BB8" || checkDepo == "BG8" || checkDepo == "BU8" || checkDepo == "BY5" || checkDepo == "CB2" || checkDepo == "CT6" || checkDepo == "EL6" || checkDepo == "IV6" || checkDepo == "IZ8" || checkDepo == "JA5" || checkDepo == "KE5" || checkDepo == "KG5" || checkDepo == "KI4" || checkDepo == "KJ4" || checkDepo == "KM7" || checkDepo == "KN6" || checkDepo == "KU3" || checkDepo == "KU8" || checkDepo == "LI5" || checkDepo == "MK5" || checkDepo == "MU5" || checkDepo == "MV7" || checkDepo == "NC8" || checkDepo == "NH2" || checkDepo == "NV6" || checkDepo == "NZ8" || checkDepo == "OM4" || checkDepo == "OR7" || checkDepo == "OR8" || checkDepo == "PK7" || checkDepo == "PK9" || checkDepo == "PS9" || checkDepo == "PV3" || checkDepo == "PZ6" || checkDepo == "RC6" || checkDepo == "RT4" || checkDepo == "RT6" || checkDepo == "RY2" || checkDepo == "SH5" || checkDepo == "SH6" || checkDepo == "SK9" || checkDepo == "SM2" || checkDepo == "SP5" || checkDepo == "SQ4" || checkDepo == "SR7" || checkDepo == "SU8" || checkDepo == "SY5" || checkDepo == "TB3" || checkDepo == "TO8" || checkDepo == "TU3" || checkDepo == "TV6" || checkDepo == "UF5" || checkDepo == "UK4" || checkDepo == "UL9" || checkDepo == "UU3" || checkDepo == "UV4" || checkDepo == "VL4" || checkDepo == "VL5" || checkDepo == "VN4" || checkDepo == "VO4" || checkDepo == "VO6" || checkDepo == "VO8" || checkDepo == "VY6" || checkDepo == "VY8" || checkDepo == "XS7" || checkDepo == "ZP8" ) { host.Send(i.ToString()); host.Send("<ENTER>"); break; } i++; } while (checkDepo.Trim() != ""); host.Send("1"); host.Send("<ENTER>"); Thread.Sleep(2000); } ForAwait(15, 2, "Consignment Status Entry"); DBContext.ChangeRecordStatus(id); } teemApp.Close(); }
private void btnStart_Click(object sender, EventArgs e) { try { //поиск файла Excel OpenFileDialog ofd = new OpenFileDialog(); ofd.Multiselect = false; ofd.DefaultExt = "*.xls;*.xlsx"; ofd.Filter = "Microsoft Excel (*.xls*)|*.xls*"; ofd.Title = "Выберите документ Excel"; if (ofd.ShowDialog() != DialogResult.OK) { MessageBox.Show("Вы не выбрали файл для открытия", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } string xlFileName = ofd.FileName; //имя нашего Excel файла Excel.Application ObjWorkExcel = new Excel.Application(); //создаём приложение Excel Excel.Workbook ObjWorkBook = ObjWorkExcel.Workbooks.Open(xlFileName); //открываем наш файл Excel.Worksheet ObjWorkSheet = (Excel.Worksheet)ObjWorkBook.Sheets[3]; //получить 3 лист //Login into Mainframe //var login = textBox1.Text; //var password = textBox2.Text; var login = Properties.Settings.Default.loginMF; var password = Properties.Settings.Default.pwdMF; //var consData = DBContext.GetConsStatus(); teemApp = new teemtalk.Application(); teemApp.CurrentSession.Name = "Mainframe"; teemApp.CurrentSession.Network.Protocol = ttNetworkProtocol.ProtocolWinsock; teemApp.CurrentSession.Network.Hostname = "mainframe.gb.tntpost.com"; teemApp.CurrentSession.Network.Telnet.Port = 23; teemApp.CurrentSession.Network.Telnet.Name = "IBM-3278-2-E"; teemApp.CurrentSession.Emulation = ttEmulations.IBM3270Emul; teemApp.CurrentSession.Network.Connect(); teemApp.Visible = Properties.Settings.Default.isVisible; var host = teemApp.CurrentSession.Host; var disp = teemApp.CurrentSession.Display; ForAwait(35, 16, "INTERNATIONAL"); host.Send("SM"); host.Send("<ENTER>"); ForAwait(13, 23, "USER ID"); Thread.Sleep(2000); host.Send(login); host.Send("<TAB>"); host.Send(password); host.Send("<ENTER>"); //if (!ForAwait(2, 2, "Command")) goto StartMaimframe; ForAwait(2, 2, "Command"); host.Send("2"); host.Send("<ENTER>"); ForAwait(20, 7, "Job Description"); host.Send("<F12>"); Thread.Sleep(500); if (disp.CursorRow != 2) { host.Send("YL30"); } logger.Debug("YL30", this.Text); //LOG host.Send("<ENTER>"); // Загрузка определенного excel файла //Excel.Application ObjWorkExcel = new Excel.Application(); //открыть эксель // Excel.Workbook ObjWorkBook = ObjWorkExcel.Workbooks.Open(@"D:\Projects\Status_changer\Nissan SPR project SPS 1.xlsx", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); //открыть файл // Excel.Worksheet ObjWorkSheet = (Excel.Worksheet)ObjWorkBook.Sheets[3]; //получить 3 лист var last = ObjWorkSheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell, Type.Missing);//1 ячейку int lastUsedRow = last.Row; //Дата, введенная пользователем в DateSform1 var DateSform = this.DateSform1.Text; //DateTime DateS = DateTime.Parse((string) DateSform); logger.Debug(DateSform, this.Text); //LOG // foreach (DataRow row in consData.Rows) // Старое for (int i = 2; i <= lastUsedRow; i++) { // Colnum string colnum = Convert.ToString(i); // DataS эскпорт Excel.Range exceldateS = ObjWorkSheet.get_Range("S" + colnum); object dateS_v = exceldateS.Value2; if (dateS_v == null || dateS_v is string) { continue; //переход к следующей итерации FOR } DateTime dSt = DateTime.FromOADate((double)dateS_v); string dateS = dSt.ToString("dd.MM.yyyy", CultureInfo.GetCultureInfo("RU-ru")); if (dateS_v is double) { dSt = DateTime.FromOADate((double)dateS_v); } else { DateTime.TryParse((string)dateS_v, out dSt); } // Done string done = "_____DONE_____"; //Если статус Введенная дата есть в ячейке, то цикл продолжается, если нет, то перескакивает к следующему i if (DateSform == dateS) { logger.Debug(colnum, this.Text); //LOG // Status var excelstatus = ObjWorkSheet.get_Range("R" + colnum, Type.Missing).Value2; string status = excelstatus.ToString(); // Экспорт даты доставки dateD Excel.Range exceldateD = ObjWorkSheet.get_Range("Q" + colnum); object dateD_v = exceldateD.Value2; // Экспорт даты забора dateZ Excel.Range exceldateZ = ObjWorkSheet.get_Range("P" + colnum); object dateZ_v = exceldateZ.Value2; //Time - Можно по умолчанию вводить "1000" var time = "1000"; //Depo - EVENTDEPOT var eventdepot = "MOW"; // Consigment номер накладной var excelcon = ObjWorkSheet.get_Range("N" + colnum, Type.Missing).Value2; string con_wocheck = excelcon.ToString(); string con = con_wocheck.Substring(0, 9);// ограничивание накладной по количеству знаков // количество обрабатываемых накладных за раз (по умолчанию 1) var qty = "1"; // Delv zone - по умолчанию "b" var delvz = "B"; ForAwait(15, 2, "Consignment Status Entry"); Thread.Sleep(600); host.Send(status); //Вводим статус logger.Debug(status, this.Text); //LOG Thread.Sleep(600); //костыль if (disp.CursorCol != 28 && disp.CursorCol != 10) { host.Send("<TAB>"); } ForAwaitCol(28);//Вводим дату доставки, если ОК или дату забора, если OF if (status == "OK") { if (dateD_v == null)// Если даты нет, то переходим к вводу статуса и след. строке { host.Send("<F12>"); continue; //переход к следующей итерации FOR } DateTime dDt = DateTime.FromOADate((double)dateD_v); string dateD = dDt.ToString("ddMMMyy", CultureInfo.GetCultureInfo("en-us")); if (dateD_v is double) { dDt = DateTime.FromOADate((double)dateD_v); } else { DateTime.TryParse((string)dateD_v, out dDt); } host.Send(dateD); Thread.Sleep(100); logger.Debug(dateD, this.Text); //LOG host.Send("<TAB>"); } else if (status == "OF") { if (dateZ_v == null)// Если даты нет, то переходим к вводу статуса и след. строке { host.Send("<F12>"); continue; //переход к следующей итерации FOR } DateTime dZt = DateTime.FromOADate((double)dateZ_v); string dateZ = dZt.ToString("ddMMMyy", CultureInfo.GetCultureInfo("en-us")); if (dateZ_v is double) { dZt = DateTime.FromOADate((double)dateZ_v); } else { DateTime.TryParse((string)dateZ_v, out dZt); } host.Send(dateZ); Thread.Sleep(100); logger.Debug(dateZ, this.Text); //LOG host.Send("<TAB>"); } ForAwaitCol(46); //Вводим время host.Send(time); logger.Debug(time, this.Text); //LOG - временно Thread.Sleep(100); if (disp.CursorCol != 70 && disp.CursorCol != 46) { host.Send("<TAB>"); } ForAwaitCol(70);//Вводим депо Thread.Sleep(3000); host.Send(eventdepot); Thread.Sleep(3000); host.Send("<TAB>"); Thread.Sleep(100); ForAwaitCol(13);// Signatory - пропускаем host.Send("<TAB>"); ForAwaitCol(57);// REV Date - пропускаем host.Send("<TAB>"); ForAwaitCol(77);//Rems + Если статус OF, то делаем и вводим коммент = статусу OF if (status == "OF") { host.Send("<F4>"); ForAwait(5, 5, "Seq Remarks"); host.Send(status); Thread.Sleep(500); host.Send("<ENTER>"); ForAwaitCol(9); // вторая строка seq remarks host.Send("<F12>"); ForAwaitCol(18); // mode: add - пропускаем host.Send("<F12>"); //возвращаемся в общее меню на позицию REMS+ COL(77) ForAwait(15, 2, "Consignment Status Entry"); // проверяем } host.Send("<TAB>"); ForAwaitCol(12);//Runsheet - пропускаем host.Send("<TAB>"); ForAwaitCol(33);//Round no - пропускаем host.Send("<TAB>"); ForAwaitCol(54);// Delv zone - по умолчанию "b" host.Send(delvz); host.Send("<TAB>"); ForAwaitCol(73);// Delv area - пропускаем host.Send("<TAB>"); ForAwaitCol(24);//No of status Entries = 1 host.Send(qty); host.Send("<ENTER>"); ForAwait(1, 10, "01"); host.Send(con); // Con number logger.Debug(con, this.Text); //LOG ForAwaitCol(26); //Позиция после ввода 9 символов номера накладной host.Send("<TAB>"); ForAwaitCol(37);// Статус (повторный вывод) - пропускаем host.Send("<TAB>"); ForAwaitCol(48);// Time - пропускаем host.Send("<TAB>"); ForAwaitCol(58);// Solved - пропускаем host.Send("<TAB>"); ForAwaitCol(64);// Rev date (повторный вывод) - пропускаем host.Send("<TAB>"); ForAwaitCol(17); // Signatory Если статус OK = OK, если OF = "" if (status == "OK") { host.Send(status); } else { host.Send(""); } host.Send("<ENTER>");//концовка и переход обратно к вводу статуса host.Send("<F12>"); host.Send("<ENTER>"); Thread.Sleep(2500); if (disp.ScreenData[15, 2, 9] == "Duplicate") { var checkDepo = ""; short j = 1; do { short col = (Int16)(9 + j); checkDepo = disp.ScreenData[54, col, 3]; if (checkDepo == "MW3" #region depoes || checkDepo == "MW5" || checkDepo == "MW7" || checkDepo == "MOW" || checkDepo == "LED" || checkDepo == "KG7" || checkDepo == "GOJ" || checkDepo == "KUF" || checkDepo == "KZ7" || checkDepo == "RO8" || checkDepo == "KR4" || checkDepo == "SVX" || checkDepo == "IK3" || checkDepo == "OVB" || checkDepo == "KH6" || checkDepo == "VK3" || checkDepo == "AB7" || checkDepo == "AC8" || checkDepo == "AK7" || checkDepo == "AP6" || checkDepo == "AV8" || checkDepo == "BA8" || checkDepo == "BB8" || checkDepo == "BG8" || checkDepo == "BU8" || checkDepo == "BY5" || checkDepo == "CB2" || checkDepo == "CT6" || checkDepo == "EL6" || checkDepo == "IV6" || checkDepo == "IZ8" || checkDepo == "JA5" || checkDepo == "KE5" || checkDepo == "KG5" || checkDepo == "KI4" || checkDepo == "KJ4" || checkDepo == "KM7" || checkDepo == "KN6" || checkDepo == "KU3" || checkDepo == "KU8" || checkDepo == "LI5" || checkDepo == "MK5" || checkDepo == "MU5" || checkDepo == "MV7" || checkDepo == "NC8" || checkDepo == "NH2" || checkDepo == "NV6" || checkDepo == "NZ8" || checkDepo == "OM4" || checkDepo == "OR7" || checkDepo == "OR8" || checkDepo == "PK7" || checkDepo == "PK9" || checkDepo == "PS9" || checkDepo == "PV3" || checkDepo == "PZ6" || checkDepo == "RC6" || checkDepo == "RT4" || checkDepo == "RT6" || checkDepo == "RY2" || checkDepo == "SH5" || checkDepo == "SH6" || checkDepo == "SK9" || checkDepo == "SM2" || checkDepo == "SP5" || checkDepo == "SQ4" || checkDepo == "SR7" || checkDepo == "SU8" || checkDepo == "SY5" || checkDepo == "TB3" || checkDepo == "TO8" || checkDepo == "TU3" || checkDepo == "TV6" || checkDepo == "UF5" || checkDepo == "UK4" || checkDepo == "UL9" || checkDepo == "UU3" || checkDepo == "UV4" || checkDepo == "VL4" || checkDepo == "VL5" || checkDepo == "VN4" || checkDepo == "VO4" || checkDepo == "VO6" || checkDepo == "VO8" || checkDepo == "VY6" || checkDepo == "VY8" || checkDepo == "XS7" || checkDepo == "ZP8" #endregion ) { host.Send(j.ToString()); host.Send("<ENTER>"); //break; } j++; } while (checkDepo.Trim() != ""); host.Send("1"); host.Send("<ENTER>"); Thread.Sleep(2000); } ForAwait(15, 2, "Consignment Status Entry"); // DBContext.ChangeRecordStatus(id); // Запись в ячейку даты внесения статуса отметки DONE //ObjWorkSheet.Cells[18, i] = done; //ObjWorkExcel.Interactive = false; //ObjWorkBook.Save(); //ObjWorkExcel.Interactive = true; logger.Debug(done, this.Text); //LOG } else { continue; //переход к следующей итерации FOR } } // Закрываем TeemTalk teemApp.Close(); foreach (Process proc in Process.GetProcessesByName("teem2k")) { proc.Kill(); } //teemApp.Application.Close(); Thread.Sleep(1000); //host.Send("<ENTER>"); //Закрываем Excel ObjWorkBook.Close(true); ObjWorkExcel.Quit(); foreach (Process proc in Process.GetProcessesByName("excel")) { proc.Kill(); } MessageBox.Show("Данные внесены", "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } catch (Exception ex) { // Вывод сообщения об ошибке logger.Debug(ex.ToString()); } }