private DataTable checkRows(DataTable rowsTable) { // atlieka eilučių tikrinimo darbą DataTable resultTable = new DataTable(); resultTable.Columns.Add("id", typeof(int)); resultTable.Columns.Add("errorMsg", typeof(string)); foreach (DataRow drow in rowsTable.Rows) { int id = Convert.ToInt32(drow["id"]); VietosKodas vk; // preliminarus patikrinimas try { vk = new VietosKodas(drow); } catch (InvalidDuomenysException ide) { resultTable.Rows.Add(id, ide.Message); continue; } catch (InvalidKodasException ike) { resultTable.Rows.Add(id, ike.Message); continue; } catch (Exception ex) { resultTable.Rows.Add(id, ex.Message); continue; } // patikrinimas, nagrinėjant kodą try { VietosKodasParser.parseSuvirinimas(vk); } catch (InvalidKodasException ike) { resultTable.Rows.Add(id, ike.Message); continue; } catch (Exception ex) { resultTable.Rows.Add(id, ex.Message); continue; } resultTable.Rows.Add(id, ""); } return(resultTable); }
public Suvirinimas(DataRow row) { id = Convert.ToInt32(row["id"]); data = (DateTime)row["aktas_data"]; vieta = new Vieta(); try { vieta = VietosKodasParser.parseSuvirinimas(new VietosKodas(row)); } catch (InvalidDuomenysException invd) { errMsg = invd.Message; } catch (InvalidKodasException invk) { errMsg = invk.Message; } catch (Exception ex) { errMsg = ex.Message; } finally { // nežinau, kaip pagaminamas Vieta vieta: // jeigu tiesiog surašomi laukai į mąsyvą, tai čia užtektų vieta.toString(), // o jeigu ten kažkas dar tikrinama, tuomet esant netinkamam vietos kodui, man // nepagamintų objekto Vieta ir tas savo ruožtų neduotų vieta.toString(); this.strVietosKodas = string.Format("{0}{1}.{2}{3}{4}{5}.{6}{7}.{8}{9}.{10}", row["k11"], row["k12"], row["k21"], row["k22"], row["k23"], row["k24"], row["k31"], row["k32"], row["k41"], row["k42"], row["k51"]); } aktoNr = row["aktas_Nr"].ToString(); suvirintojas = new Suvirintojas(row["suvirintojo_vardas"].ToString(), row["suvirintojo_kodas"].ToString(), row["suvirintojo_įmonė"].ToString()); operatorius = new Operatorius(row["operatoriaus_vardas"].ToString(), Convert.ToInt32(row["operatoriaus_kodas"])); kelioMeistras = new KMFilialo(row["kelio_meistro_vardas"].ToString(), row["kelio_meistro_meistrija"].ToString()); begioTipas = row["bėgio_tipas"].ToString(); begioTemperatura = Convert.ToInt32(row["salyg_begioTemp"]); protarpis = Convert.ToInt32(row["begis_protarpisMm"]); }
private Dictionary <string, string> generateDicByDataRow(DataRow drow) { Dictionary <string, string> bkdata = new Dictionary <string, string>(); // paprasti bkdata.Add("akto_data", ((DateTime)drow["aktas_data"]).ToString("yyyy-MM-dd")); bkdata.Add("akto_nr", drow["aktas_nr"].ToString()); bkdata.Add("begio_tipas", drow["begio_tipas"].ToString()); bkdata.Add("formos_gm", drow["medz_formaGamMetai"].ToString()); bkdata.Add("misinio_gm", drow["medz_misinGamMetai"].ToString()); bkdata.Add("kas_virino", drow["padalinys"].ToString()); bkdata.Add("misinio_kodas", drow["misinys"].ToString()); bkdata.Add("partijos_nr", drow["medz_misinPartNr"].ToString()); bkdata.Add("porcijos_nr", drow["medz_misinPorcNr"].ToString()); bkdata.Add("filialo_KM", drow["KM_vardas"].ToString()); bkdata.Add("temp_begio", drow["salyg_begioTemp"].ToString()); bkdata.Add("temp_oro", drow["salyg_oroTemp"].ToString()); bkdata.Add("protarpis", drow["begis_protarpisMm"].ToString()); bkdata.Add("suvirintojo_kodas", drow["suvirintojas_kodas"].ToString()); bkdata.Add("suvirintojo_padalinys", drow["virino_padalinys"].ToString()); bkdata.Add("suvirintojo_vardas", drow["suvirintojas"].ToString()); // sąlyginiai if ((bool)drow["arRangovas"]) { bkdata.Add("statusas", "rangovo įmonės pavadinimas"); } else { bkdata.Add("statusas", "struktūrinio padalinio pavadinimas"); } if ((bool)drow["salyg_arSausa"]) { bkdata.Add("sausa_dregna", "sausa"); } else { bkdata.Add("sausa_dregna", "drėgna"); } if (((bool)drow["tikrin_arDefektas"])) { bkdata.Add("ar_defektas", "defekto kodas"); bkdata.Add("defekto_kodas", drow["tikrin_defKodas"].ToString()); // sandūrą aprašantis tekstas kapojamas į tris dalis ir kiekviena priskiriama // atskirai akto eilutei. Jeigu tekstas netelpa į tris dalis (apie 250 simbolių), // jis nukandamas. string[] eilutes = new string[3]; splitString(drow["tikrin_sanduruCharakter"].ToString(), ref eilutes); bkdata.Add("sanduros_charakteristika_0", eilutes[0]); bkdata.Add("sanduros_charakteristika_1", eilutes[1]); bkdata.Add("sanduros_charakteristika_2", eilutes[2]); } else { bkdata.Add("ar_defektas", "defektų nenustatyta"); bkdata.Add("defekto_kodas", "---"); bkdata.Add("sanduros_charakteristika_0", "---"); } // sudėtiniai bkdata.Add("nbb_defektoskopas", string.Format("{0}, {1} Nr. {2}", drow["df_kodas"].ToString(), drow["df_tipas"].ToString(), drow["df_nr"].ToString())); bkdata.Add("nbb_operatorius", string.Format("{0}, {1}", drow["operatorius_kodas"].ToString(), drow["operatorius"].ToString())); bkdata.Add("sutvarke", string.Format("{0}, {1} {2}", drow["sutvarke_padalinys"].ToString(), drow["sutvarke_vadovasPareigos"].ToString(), drow["sutvarke_vadovas"].ToString())); bkdata.Add("nelygumai", string.Format("{0} / {1}", getStringOfSignedDec(drow["tikrin_nelygumaiVirsausMm"]), getStringOfSignedDec(drow["tikrin_nelygumaiSonoMm"]))); // prefix - nuo jo priklauso, į katrą lentelę rašys; // kelio kodo lentelėje visi bookmarkai prasideda iš "k", // o iešmo kodo lentelėje visi bookmarkai prasideda iš "i" string prfx; if ((int)drow["k21"] == 8 || (int)drow["k21"] == 9) { prfx = "i"; } else { prfx = "k"; } // vietos kodas bkdata.Add(prfx + "k11", drow["k11"].ToString()); bkdata.Add(prfx + "k12", drow["k12"].ToString()); bkdata.Add(prfx + "k21", drow["k21"].ToString()); bkdata.Add(prfx + "k22", drow["k22"].ToString()); bkdata.Add(prfx + "k23", drow["k23"].ToString()); bkdata.Add(prfx + "k24", drow["k24"].ToString()); bkdata.Add(prfx + "k31", drow["k31"].ToString()); bkdata.Add(prfx + "k32", drow["k32"].ToString()); bkdata.Add(prfx + "k41", drow["k41"].ToString()); bkdata.Add(prfx + "k42", drow["k42"].ToString()); bkdata.Add(prfx + "k51", drow["k51"].ToString()); // parsinamas vietos kodas, kad suprasti, ką koks skaitmuo reiškia Vieta vt = VietosKodasParser.parseSuvirinimas(new VietosKodas(drow)); // vietos kodo aprasymai lentelėse // XX.xxxx.xx.xx.x // jeigu stotis ir jeigu ta stotis didelė - rašomas stoties pavadinimas if (vt.galimosStotys.Count > 0 && vt.galimosStotys[0].kodas != "0") { bkdata.Add(prfx + "k_aprasymas_1_12", "Stotis " + vt.galimosStotys[0].pavadinimas); } // jeigu maža stotis rašomas linijos pavadinimas else if (vt.galimosStotys.Count > 0) { bkdata.Add(prfx + "k_aprasymas_1_12", "Linija " + vt.galimosStotys[0].linija.pavadinimas); } // jeigu tarpstotis else { bkdata.Add(prfx + "k_aprasymas_1_12", "Linija " + vt.tarpstotis.stotis1.linija.pavadinimas); } int b = Convert.ToInt32(drow["k21"]); int f = Convert.ToInt32(drow["k51"]); // xx.Xxxx.xx.xx.x // jeigu iešmas didelėje stotyje if (b == 8) { bkdata.Add(prfx + "k_aprasymas_2_1", "Iešmo kodas didelėje stotyje"); } // jeigu iešmas mažoje stotyje else if (b == 9) { bkdata.Add(prfx + "k_aprasymas_2_1", "Iešmo kodas mažoje stotyje"); } // jeigu didelė stotis arba jeigu trumpas kelias nesvarbu kokioje stotyje else if ((vt.galimosStotys.Count > 0 && vt.galimosStotys[0].kodas != "0") || b == 6 || b == 7) { bkdata.Add(prfx + "k_aprasymas_2_1", "Stoties kelio kodas"); } // jeigu tarpstotis arba jeigu maža stotis ne iešmas ir ne trumpas kelias else { bkdata.Add(prfx + "k_aprasymas_2_1", "Kelio numeris"); } // xx.xXXX.xx.xx.x // visais atvejais, kai nurodyta kelio koordinatė if (vt.koordinate != null) { bkdata.Add(prfx + "k_aprasymas_2_234", "Kelio koordinatės kilometras"); } else // iešmas didelėje stotyje if (b == 8) { bkdata.Add(prfx + "k_aprasymas_2_234", "Iešmo Nr."); } else { bkdata.Add(prfx + "k_aprasymas_2_234", "Stoties kelio Nr."); } // xx.xxxx.XX.xx.x // didelės stoties iešme if (b == 8) { bkdata.Add(prfx + "k_aprasymas_3_12", "00 didelėje stotyje"); } // mažos stoties iešme else if (b == 9) { bkdata.Add(prfx + "k_aprasymas_3_12", "Iešmo Nr. mažoje stotyje"); } // ne iešmas ir nurodyta pilna koordinatė else if (vt.koordinate != null && vt.koordinate.yraPilna) { bkdata.Add(prfx + "k_aprasymas_3_12", "Kelio koordinatės piketas"); } // kai nurodytas atstumas nuo iešmo else if (vt.atstumasNuoIesmo != null) { bkdata.Add(prfx + "k_aprasymas_3_12", "Atstumas nuo iešmo, m"); } // čia būtų toks keistas atvejis, kai nurodyta kelio koordinatė, bet ji nepilna ir tai nėra mažos stoties iešmas else { bkdata.Add(prfx + "k_aprasymas_3_12", ""); // neturėtų būti } // xx.xxxx.xx.XX.x // kai iešmas if (b == 8 || b == 9) { bkdata.Add(prfx + "k_aprasymas_4_12", "Iešmo sandūros Nr."); } // kai nurodyta kelio koordinatė ir ji pilna else if (vt.koordinate != null && vt.koordinate.yraPilna) { bkdata.Add(prfx + "k_aprasymas_4_12", "Atstumas nuo piketinio stulpelio, m"); } // kai nurodytas atstumas nuo iešmo else if (vt.atstumasNuoIesmo != null) { bkdata.Add(prfx + "k_aprasymas_4_12", "Atstumas nuo iešmo, m"); } else { bkdata.Add(prfx + "k_aprasymas_4_12", ""); // neturėtų būti } // xx.xxxx.xx.xx.X // iešme if (b == 8 || b == 9) { bkdata.Add(prfx + "k_aprasymas_5_1", "------------"); } // ne iešme else if (f == 0) { bkdata.Add(prfx + "k_aprasymas_5_1", "Kairioji siūlė"); } // ne iešme else if (f == 9) { bkdata.Add(prfx + "k_aprasymas_5_1", "Dešinioji siūlė"); } else { bkdata.Add(prfx + "k_aprasymas_5_1", ""); // neturėtų būti } return(bkdata); }