private void doRowsCheck(List <int> idList) { // atlieka eilutėse esančių kodų patikrinimą ir rezultatų atvaizdavimą string sqlstring = constructSqlStatement(idList); DataTable rowsToCheckTable = createDataTable(sqlstring); if (rowsToCheckTable.Rows.Count == 0) { return; } LGIF.loadData(obtainLgifxmlFileName()); DataTable rowsCheckResult = checkRows(rowsToCheckTable); outputCheckResult(rowsCheckResult); }
private List <AtaskaitosEilute> darytiAtaskaita(DateTime bottomDate, DateTime topDate) { DataTable suvirinimaiTable; string where = string.Empty; if (bottomDate == null && topDate != null) { where = string.Format("WHERE Aktai.aktas_data <= {0} ", DbHelper.FormatDateValue(topDate)); } else if (bottomDate != null && topDate == null) { where = string.Format("WHERE Aktai.aktas_data >= {0} ", DbHelper.FormatDateValue(bottomDate)); } else if (bottomDate != null && topDate != null) { if (bottomDate <= topDate) { where = string.Format("WHERE Aktai.aktas_data >= {0} AND Aktai.aktas_data <= {1} ", DbHelper.FormatDateValue(bottomDate), DbHelper.FormatDateValue(topDate)); } else { where = string.Format("WHERE Aktai.aktas_data >= {0} OR Aktai.aktas_data <= {1} ", DbHelper.FormatDateValue(bottomDate), DbHelper.FormatDateValue(topDate)); } } List <List <Suvirinimas> > sarasai = new List <List <Suvirinimas> >(); StringBuilder sb = new StringBuilder("SELECT "); // sb.Append("Aktai.*, Suvirintojai.*, Operatoriai.*, PadaliniaiSuvirintoju.*, PadaliniaiKelininku.*, Vadovai.*, BegiuTipai.* "); sb.Append("Aktai.aktas_data, Aktai.aktas_padalinysId, "); sb.Append("Aktai.k11, Aktai.k12, Aktai.k21, Aktai.k22, Aktai.k23, Aktai.k24, Aktai.k31, Aktai.k32, Aktai.k41, Aktai.k42, Aktai.k51, "); sb.Append("Aktai.id, Aktai.aktas_Nr, Aktai.salyg_begioTemp, Aktai.begis_protarpisMm, "); sb.Append("PadaliniaiSuvirintoju.pavadinimas AS suvirintojo_įmonė, Suvirintojai.vardas AS suvirintojo_vardas, Suvirintojai.pazymNr AS suvirintojo_kodas, "); sb.Append("Operatoriai.vardas AS operatoriaus_vardas, Operatoriai.id AS operatoriaus_kodas, "); sb.Append("KMFilialo.vardas AS kelio_meistro_vardas, KMFilialo.meistrija AS kelio_meistro_meistrija, "); sb.Append("BegiuTipai.pavadinimas AS bėgio_tipas "); sb.Append("FROM "); sb.Append("((((Aktai LEFT JOIN PadaliniaiSuvirintoju ON Aktai.suvirint_padalinysId=PadaliniaiSuvirintoju.id) "); sb.Append("LEFT JOIN Suvirintojai ON Aktai.suvirint_suvirintojasId=Suvirintojai.id) "); sb.Append("LEFT JOIN Operatoriai ON Aktai.tikrin_operatoriusId=Operatoriai.id) "); sb.Append("LEFT JOIN KMFilialo ON Aktai.aktas_pasiraseKMId=KMFilialo.id) "); sb.Append("LEFT JOIN BegiuTipai ON Aktai.begis_tipasId=BegiuTipai.id "); sb.Append("{0}"); sb.Append("ORDER BY Aktai.aktas_data, Aktai.aktas_padalinysId, Aktai.k11, Aktai.k12, Aktai.k21, Aktai.k22, Aktai.k23, Aktai.k24, Aktai.k31, Aktai.k32, Aktai.k41, Aktai.k42, Aktai.k51;"); string suvirinimaiSql = sb.ToString(); suvirinimaiTable = new DataTable(); try { suvirinimaiTable = DbHelper.FillDataTable(string.Format(suvirinimaiSql, where)); } catch (DbException e) { Msg.ErrorMsg(Messages.DbErrorMsg); throw e; } List <AtaskaitosEilute> ataskaita = new List <AtaskaitosEilute>(); if (suvirinimaiTable.Rows.Count == 0) { return(ataskaita); } // Kartojasi veiksmas - kaskart, kai gaminama nauja ataskaita. // Bet taip pat tai leidžia pakeisti lgif.xml failą neuždarius programos. LGIF.loadData(obtainLgifxmlFileName()); // Imama pirmoji iš DB partempta eilutė, ji tampa cmpRow // ir lyginama su toliau einančiomis. // Kiek laukų lyginti, nustatoma pagal k21 reikšmę: // jeigu k21 yra 9, lyginama 10 laukų, t.y. vietos kodas imamas iki k32 imtinai, // jeigu k21 nėra 9, lyginami 8 laukai, t.y. vietos kodas imamas iki k42 imtinai. // Panašios eilutės grupuojamos į grupeSuvirinimu. // Kada randama nebetinkama eilutė, grupeSuvirinimu įrašoma į sarasai, // pradedama nauja grupeSuvirinimu, paskutinioji (netikusi) eilutė tampa ta, su kuria // lyginamos visos toliau einančios, t.y. cmpRow, // ir ji lyginama su toliau einančiomis. // Resultatas - List sarasai, kuris sudarytas iš List<suvirinimaiTable.Row> DataRow cmpRow = suvirinimaiTable.Rows[0]; int kiekLyginti = kiek(cmpRow); List <Suvirinimas> grupeSuvirinimu = new List <Suvirinimas>(); grupeSuvirinimu.Add(new Suvirinimas(suvirinimaiTable.Rows[0])); // suvirinimai suskirstomi į grupes pagal [data + kas virino + vieta] for (int r = 1; r < suvirinimaiTable.Rows.Count; r++) { if (lygiosEilutės(cmpRow, suvirinimaiTable.Rows[r], kiekLyginti)) { grupeSuvirinimu.Add(new Suvirinimas(suvirinimaiTable.Rows[r])); } else { sarasai.Add(grupeSuvirinimu); grupeSuvirinimu = new List <Suvirinimas>(); grupeSuvirinimu.Add(new Suvirinimas(suvirinimaiTable.Rows[r])); cmpRow = suvirinimaiTable.Rows[r]; kiekLyginti = kiek(cmpRow); } } if (grupeSuvirinimu.Count != 0) { sarasai.Add(grupeSuvirinimu); } // iš kiekvienos suvirinimų grupės padaroma viena ataskaitos eilute ir pridedama prie ataskaitos foreach (List <Suvirinimas> suvirinimuGrupe in sarasai) { try { ataskaita.Add(new AtaskaitosEilute(suvirinimuGrupe)); } catch (Exception e) { List <Suvirinimas> weldingGroup = suvirinimuGrupe; Msg.ErrorMsg(e.Message); } } return(ataskaita); }
private void tsmiGamintiAktusDoc_Click(object sender, EventArgs e) { // patikrinti, ar parinkta eilučių // patikrinti, ar yra šablonas // parinkti outputfolder // iš parinktų eilučių surinkti id // pagal turimus id užpildyti datatable // pasiruošti gaminti aktus: // užkrauti infrastruktūros duomenis LGIF (VietosKodasClasses.cs) // sukurti Logger objektą ir log failą output aplanke (Logger.cs) // paleisti formą su progressbaru // iš kiekvienos datatable eilutės // sukonstruoti failo vardą (reikėtų nukelti į vėliau, kai bus žinoma vieta // iš DataRow gaminti Dictionary<string, string> // iš Dictionary<string, string> gaminti .doc failą // įrašyti į duombazę, kad failas sukurtas // nereikia // įraštyti į log failą apie sukūrimą // jeigu nesėkmingai // log failą įrašyti nesėkmę ir jos priežastį // bet kokiu atveju // padidinti progressbaro užpildymą // išmesti pranešimą, kiek užsakyta ir kiek pagaminta // patikrinti, ar parinkta eilučių int selected = dgvAktai.SelectedRows.Count; if (selected == 0) { Msg.InformationMsg("Aktai gaminami iš parinktų eilučių."); return; } // patikrinti, ar yra šablono failas object docTemplateFileName; try { docTemplateFileName = obtainAktasdotFileName(); } catch { Msg.ErrorMsg(Settings.Default.DotTemplateFileNotChosenError); return; } // parinkti outputfolder string outputFolder = getOutputDirectoryName(); if (outputFolder == "***") { return; } // iš parinktų eilučių surinkti id ir pagaminti WHERE sąlygą SQL užklausai List <string> selectedIds = new List <string>(); foreach (DataGridViewRow rw in dgvAktai.SelectedRows) { selectedIds.Add(rw.Cells["id"].Value.ToString()); } string whereCondition = string.Format("Aktai.id IN ({0})", string.Join(", ", selectedIds)); // pagal turimus id užpildyti datatable string sqlSt = "SELECT "; sqlSt += "Aktai.id, Aktai.aktas_Nr, Aktai.aktas_data, "; sqlSt += "Aktai.k11, Aktai.k12, Aktai.k21, Aktai.k22, Aktai.k23, Aktai.k24, Aktai.k31, Aktai.k32, Aktai.k41, Aktai.k42, Aktai.k51, "; sqlSt += "Aktai.begis_protarpisMm, Aktai.medz_formaGamMetai, Aktai.medz_misinGamMetai, Aktai.medz_misinPartNr, Aktai.medz_misinPorcNr, "; sqlSt += "Aktai.salyg_arSausa, Aktai.salyg_oroTemp, Aktai.salyg_begioTemp, "; sqlSt += "Aktai.tikrin_nelygumaiVirsausMm, Aktai.tikrin_nelygumaiSonoMm, Aktai.tikrin_arDefektas, Aktai.tikrin_defKodas, Aktai.tikrin_sanduruCharakter, "; sqlSt += "Padaliniai.oficPavadinimas AS padalinys, Padaliniai.arRangovas, PadaliniaiSuvirintoju.pavadinimas AS virino_padalinys, "; sqlSt += "PadaliniaiKelininku.pavadinimas AS sutvarke_padalinys, Suvirintojai.vardas AS suvirintojas, Suvirintojai.pazymNr AS suvirintojas_kodas, "; sqlSt += "Operatoriai.id AS operatorius_kodas, Operatoriai.vardas AS operatorius, "; sqlSt += "Vadovai.vardas AS sutvarke_vadovas, Vadovai.pareigos AS sutvarke_vadovasPareigos, "; sqlSt += "Defektoskopai.id AS df_kodas, Defektoskopai.gamyklNr AS df_nr, Defektoskopai.tipas AS df_tipas, "; sqlSt += "BegiuTipai.pavadinimas AS begio_tipas, Misiniai.pavadinimas AS misinys, "; sqlSt += "KMFilialo.vardas AS KM_vardas "; sqlSt += "FROM "; sqlSt += "(((((((((Aktai LEFT JOIN Padaliniai ON Aktai.aktas_padalinysId=Padaliniai.id) "; sqlSt += "LEFT JOIN PadaliniaiSuvirintoju ON Aktai.suvirint_padalinysId=PadaliniaiSuvirintoju.id) "; sqlSt += "LEFT JOIN PadaliniaiKelininku ON Aktai.sutvark_padalinysId=PadaliniaiKelininku.id) "; sqlSt += "LEFT JOIN Suvirintojai ON Aktai.suvirint_suvirintojasId=Suvirintojai.id) "; sqlSt += "LEFT JOIN Operatoriai ON Aktai.tikrin_operatoriusId=Operatoriai.id) "; sqlSt += "LEFT JOIN Defektoskopai ON Aktai.tikrin_defektoskopasId=Defektoskopai.id) "; sqlSt += "LEFT JOIN Vadovai ON Aktai.sutvark_vadovasId=Vadovai.id) "; sqlSt += "LEFT JOIN BegiuTipai ON Aktai.begis_tipasId=BegiuTipai.id) "; sqlSt += "LEFT JOIN Misiniai ON Aktai.medz_misinKodasId=Misiniai.id) "; sqlSt += "LEFT JOIN KMFilialo ON Aktai.aktas_pasiraseKMId=KMFilialo.id "; sqlSt += "WHERE " + whereCondition; sqlSt += "ORDER BY Aktai.id;"; DataTable tableAktai; try { tableAktai = DbHelper.FillDataTable(sqlSt); } catch (DbException) { Msg.ErrorMsg(Messages.DbErrorMsg); return; } // pasiruošti gaminti aktus: Dictionary <string, string> aktoDuomenys; //užkrauti infrastruktūros duomenis LGIF LGIF.loadData(obtainLgifxmlFileName()); //sukurti Logger objektą ir log failą output aplanke Logger logger = new Logger(Path.Combine(outputFolder, "log.txt")); logger.Open(); // parodyti progressbar lblStatus.Visible = lblStatusFilter.Visible = false; int created = 0; progressbar.Visible = true; progressbar.Value = created; progressbar.Maximum = selected; string fileExtension = "doc"; // paleidžiama word programa Word._Application wordApp = new Word.Application(); wordApp.Visible = false; string outputFileName = "phony"; foreach (DataRow dr in tableAktai.Rows) { try { // sukonstruoti failo vardą (reikėtų nukelti į vėliau, kai bus žinoma vieta outputFileName = Path.Combine(outputFolder, string.Format("{0} {1} {2} {3}.{4}", Settings.Default.AktasOutputFileNamePrefix, dr["id"], dr["aktas_Nr"], Convert.ToDateTime(dr["aktas_data"]).ToString("yyyyMMdd"), fileExtension)); // iš DataRow gaminti XmlDocument aktoDuomenys = generateDicByDataRow(dr); // iš XmlDocument gaminti .doc failą createAndSaveAktasDoc(wordApp, aktoDuomenys, outputFileName, docTemplateFileName); // įrašyti į duombazę, kad failas sukurtas //DbHelper.ExecuteNonQuery(string.Format("UPDATE Aktai SET aktas_arAtspausdintas=True WHERE id={0};", dr["id"])); // įraštyti į log failą apie sukūrimą logger.Log(string.Format("sukurtas failas {0}", Path.GetFileName(outputFileName))); } catch (Exception exc) { // log failą įrašyti nesėkmę ir jos priežastį logger.Log(string.Format("nepavyko sukurti failo {0}, priežastis: {1}", Path.GetFileName(outputFileName), exc.Message)); continue; } finally { // padidinti progressbaro užpildymą created++; progressbar.Value = created; } } object dontSaveChanges = Word.WdSaveOptions.wdDoNotSaveChanges; object missing = System.Reflection.Missing.Value; wordApp.Quit(ref dontSaveChanges, ref missing, ref missing); wordApp = null; logger.Close(); progressbar.Visible = false; progressbar.Value = 0; lblStatus.Visible = lblStatusFilter.Visible = true; Msg.InformationMsg("Aktai sukurti, išsaugoti."); }