/// <summary> /// 读取示踪剂文件 /// </summary> public void GetTracer(string strPath, string strTrace) { FileStream fs = new FileStream(strPath, FileMode.Open); StreamReader sr = new StreamReader(fs); try { GetTraceJH gtj = new GetTraceJH(); DataTable dtTracerJH = gtj.GetTraceJHMethod(strTrace); DateUtil du = new DateUtil(); //string strStartDate = du.DateTimeCovertToString(DateTime.ParseExact((MainForm.strStartDate), "yyyyMM", null)); //string strEndDate = du.DateTimeCovertToString(DateTime.ParseExact((MainForm.strEndDate), "yyyyMM", null).AddMonths(1)); string strReadLine; string strJH = string.Empty; string strDate = string.Empty; string strTracer = string.Empty; bool isWell = false; bool isRead = false; bool isWater = false; bool isDate = false; List <TracerModel> lstTM = new List <TracerModel>(); List <OilModel> lstOilM = new List <OilModel>(); List <WaterModel> lstWaterM = new List <WaterModel>(); DataTable dtOil = ListToDataTableUtil.ListToDataTable(lstOilM); DataTable dtWater = ListToDataTableUtil.ListToDataTable(lstWaterM); DataTable dtTracer = ListToDataTableUtil.ListToDataTable(lstTM); strReadLine = sr.ReadLine().Replace(":", " ").Replace(",", " "); string trim = strReadLine.Trim(); while (strReadLine != null) { trim = strReadLine.Trim(); string[] strArray = Regex.Split(trim, @"\s+"); if (((strArray.Length == 12) && (strArray[0].Equals("STEP")) && (strArray[8].Equals("REPT"))) || ((strArray.Length == 11) && (strArray[0].Equals("STEP")) && (strArray[7].Equals("REPT")))) { strDate = strArray[strArray.Length - 1]; //isDate = true; //if (strDate.Equals(strStartDate)) //{ // isDate = true; //} if (strDate.Equals("(1-NOV-2014)")) { isDate = true; } //if (strDate.Equals(strEndDate)) //{ // isDate = false; // break; //} } if (isDate) { if (strArray[0].Equals("TRACER") && strArray.Count() == 6 && strArray[5].Equals("PASSIVE") && strArray[3].Equals("WATER") && strArray[4].Equals("PHASE")) { DataRow[] drTracer = dtTracerJH.Select("trace = '" + strArray[2] + "'"); { if (drTracer.Count() > 0) { strTracer = drTracer[0]["smjh"].ToString(); } } } if (((strArray.Count() == 11) && strArray[3].Equals("PROD")) || ((strArray.Count() == 11) && strArray[3].Equals("WINJ")) || ((strArray.Count() == 10) && strArray[0].Equals("BLOCK"))) { if ((strArray.Count() == 11) && strArray[3].Equals("PROD")) { isWater = false; } else if ((strArray.Count() == 11) && strArray[3].Equals("WINJ")) { isWater = true; } if (!strArray[0].Equals("BLOCK")) { strJH = strArray[0]; } isWell = true; while (isWell) { strArray = Regex.Split(trim, @"\s+"); if (strArray[0].Equals("BLOCK")) { if (isWater) { /* * if (!strArray[4].Equals("SHUT")) * { * //if (Convert.ToDouble(strArray[4]) > 0) * //{ * DataRow drTracer = dtTracer.NewRow(); * drTracer["jhy"] = ""; * drTracer["jhs"] = strJH; * * drTracer["mncs"] = Convert.ToDouble(strArray[4]); * drTracer["szj"] = strTracer; * drTracer["szjnd"] = Convert.ToDouble(strArray[7]); * drTracer["ny"] = du.TextDateStringCovertToDateTime(strDate).ToString("yyyyMM"); * drTracer["x"] = Convert.ToInt32(strArray[1]); * drTracer["y"] = Convert.ToInt32(strArray[2]); * drTracer["k"] = Convert.ToInt32(strArray[3]); * dtTracer.Rows.Add(drTracer); * // } * } * else * { * DataRow drTracer = dtTracer.NewRow(); * drTracer["jhy"] = ""; * drTracer["jhs"] = strJH; * * drTracer["mncs"] = Convert.ToDouble(strArray[5]); * drTracer["szj"] = strTracer; * drTracer["szjnd"] = Convert.ToDouble(strArray[8]); * drTracer["ny"] = du.TextDateStringCovertToDateTime(strDate).ToString("yyyyMM"); * drTracer["x"] = Convert.ToInt32(strArray[1]); * drTracer["y"] = Convert.ToInt32(strArray[2]); * drTracer["k"] = Convert.ToInt32(strArray[3]); * dtTracer.Rows.Add(drTracer); * } */ } else { if (!strArray[4].Equals("SHUT")) { //if (Convert.ToDouble(strArray[5]) > 0) //{ DataRow drTracer = dtTracer.NewRow(); drTracer["jhy"] = strJH; drTracer["jhs"] = ""; drTracer["mncs"] = Convert.ToDouble(strArray[5]); drTracer["szj"] = strTracer; drTracer["szjnd"] = Convert.ToDouble(strArray[7]); drTracer["ny"] = du.TextDateStringCovertToDateTime(strDate).ToString("yyyyMM"); drTracer["x"] = Convert.ToInt32(strArray[1]); drTracer["y"] = Convert.ToInt32(strArray[2]); drTracer["k"] = Convert.ToInt32(strArray[3]); dtTracer.Rows.Add(drTracer); //} } else { DataRow drTracer = dtTracer.NewRow(); drTracer["jhy"] = strJH; drTracer["jhs"] = ""; drTracer["mncs"] = Convert.ToDouble(strArray[6]); drTracer["szj"] = strTracer; drTracer["szjnd"] = Convert.ToDouble(strArray[8]); drTracer["ny"] = du.TextDateStringCovertToDateTime(strDate).ToString("yyyyMM"); drTracer["x"] = Convert.ToInt32(strArray[1]); drTracer["y"] = Convert.ToInt32(strArray[2]); drTracer["k"] = Convert.ToInt32(strArray[3]); dtTracer.Rows.Add(drTracer); } } strReadLine = sr.ReadLine(); if (strReadLine != null) { strReadLine = strReadLine.Replace(":", " ").Replace(",", " "); trim = strReadLine.Trim(); } } else { isWell = false; } } } else { if (trim.Equals("INJECTION REPORT")) { isRead = true; isWater = true; } else if (trim.Equals("PRODUCTION REPORT")) { isRead = true; isWater = false; } else if (trim.Equals("CUMULATIVE PRODUCTION/INJECTION TOTALS")) { isRead = false; } if (isRead) { trim = strReadLine.Trim(); strArray = Regex.Split(trim, @"\s+"); if (isWater) { if ((strArray.Count() >= 12) && (strArray.Count() <= 13)) { if (strArray.Count() == 12 || strArray[4].Equals("SHUT")) { if (strArray[0].Length > 0) { if (!strArray[0].Equals("BLOCK")) { strJH = strArray[0]; } isWell = true; if (strArray[1].Equals("GROUP") || strArray[0].Equals("REPORT")) { isWell = false; } while (isWell) { strArray = Regex.Split(trim, @"\s+"); if (strArray[0].Equals("BLOCK")) { if (!strArray[4].Equals("SHUT")) { DataRow drWater = dtWater.NewRow(); drWater["jh"] = strJH; if (Convert.ToDouble(strArray[5]) < 0) { drWater["rzsl"] = 0; } else { drWater["rzsl"] = Convert.ToDouble(strArray[5]); } drWater["ny"] = du.TextDateStringCovertToDateTime(strDate).ToString("yyyyMM"); drWater["x"] = Convert.ToInt32(strArray[1]); drWater["y"] = Convert.ToInt32(strArray[2]); drWater["bhp"] = Convert.ToDouble(strArray[8]); drWater["k"] = Convert.ToInt32(strArray[3]); dtWater.Rows.Add(drWater); } strReadLine = sr.ReadLine().Replace(":", " ").Replace(",", " "); trim = strReadLine.Trim(); } else { isWell = false; } } } } } } else { if (strArray.Count() >= 16) { if (strArray.Count() == 16 || strArray[4].Equals("SHUT")) { if (strArray[0].Length > 0) { if (!strArray[0].Equals("BLOCK")) { strJH = strArray[0]; } isWell = true; if (strArray[1].Equals("GROUP") || strArray[0].Equals("REPORT")) { isWell = false; } while (isWell) { strArray = Regex.Split(trim, @"\s+"); if (strArray[0].Equals("BLOCK")) { if (!strArray[4].Equals("SHUT")) { DataRow drOil = dtOil.NewRow(); drOil["jh"] = strJH; if (Convert.ToDouble(strArray[7]) < 0) { drOil["rcyl1"] = 0; } else { drOil["rcyl1"] = Convert.ToDouble(strArray[7]); } drOil["hs"] = Convert.ToDouble(strArray[8]); drOil["rcsl"] = Convert.ToDouble(strArray[8]) * Convert.ToDouble(drOil["rcyl1"]); drOil["rcyl"] = Convert.ToDouble(drOil["rcyl1"]) * (1 - Convert.ToDouble(strArray[8])); drOil["ny"] = du.TextDateStringCovertToDateTime(strDate).ToString("yyyyMM"); drOil["x"] = Convert.ToInt32(strArray[1]); drOil["y"] = Convert.ToInt32(strArray[2]); drOil["bhp"] = Convert.ToDouble(strArray[11]); drOil["k"] = Convert.ToInt32(strArray[3]); dtOil.Rows.Add(drOil); } strReadLine = sr.ReadLine().Replace(":", " ").Replace(",", " "); trim = strReadLine.Trim(); } else { isWell = false; } } } } } } } } } strReadLine = sr.ReadLine(); if (strReadLine != null) { strReadLine = strReadLine.Replace(":", " ").Replace(",", " "); } //break; } ConnDatabaseUtil cdu = new ConnDatabaseUtil(); string strTableName = "T_WELL_OIL"; string strSQL = "select count(*) as count from user_tables where table_name = '" + strTableName.ToUpper() + "'"; DataTable dtExist = cdu.SelectDatabase(strSQL); if (Convert.ToInt32(dtExist.Rows[0]["Count"]) > 0) { strSQL = "drop table " + strTableName.ToUpper(); cdu.CreateOrDeleteDatabase(strSQL); } strSQL = "create table " + strTableName.ToUpper() + " (jh VARCHAR2(16), ny VARCHAR2(6), x NUMBER(3), y NUMBER(3), k NUMBER(2), rcsl NUMBER(17, 2), rcyl NUMBER(17, 2), rcyl1 NUMBER(17, 2), hs NUMBER(17, 3), bhp NUMBER(17, 2))"; cdu.CreateOrDeleteDatabase(strSQL); cdu.InsertDatabase(dtOil, strTableName.ToUpper()); strTableName = "T_WELL_WATER"; strSQL = "select count(*) as count from user_tables where table_name = '" + strTableName.ToUpper() + "'"; dtExist = cdu.SelectDatabase(strSQL); if (Convert.ToInt32(dtExist.Rows[0]["Count"]) > 0) { strSQL = "drop table " + strTableName.ToUpper(); cdu.CreateOrDeleteDatabase(strSQL); } strSQL = "create table " + strTableName.ToUpper() + " (jh VARCHAR2(16), ny VARCHAR2(6), x NUMBER(3), y NUMBER(3), k NUMBER(2), rzsl NUMBER(17, 2), bhp NUMBER(17, 2))"; cdu.CreateOrDeleteDatabase(strSQL); cdu.InsertDatabase(dtWater, strTableName.ToUpper()); strTableName = "T_WELL_TRACER"; strSQL = "select count(*) as count from user_tables where table_name = '" + strTableName.ToUpper() + "'"; dtExist = cdu.SelectDatabase(strSQL); if (Convert.ToInt32(dtExist.Rows[0]["Count"]) > 0) { strSQL = "drop table " + strTableName.ToUpper(); cdu.CreateOrDeleteDatabase(strSQL); } strSQL = "create table " + strTableName.ToUpper() + " (jhy VARCHAR2(16), jhs VARCHAR2(16),szj VARCHAR2(16), szjnd NUMBER(17, 5), ny VARCHAR2(6), x NUMBER(3), y NUMBER(3), k NUMBER(2), mncs NUMBER(17, 2))"; cdu.CreateOrDeleteDatabase(strSQL); cdu.InsertDatabase(dtTracer, strTableName.ToUpper()); } catch (Exception) { } finally { sr.Close(); fs.Close(); } }
public void GetLTJInf(string strDate) { DataTable dtOil = new DataTable(); DataTable dtWater = new DataTable(); List <ResultModel> lstRm = new List <ResultModel>(); dtResult = ListToDataTableUtil.ListToDataTable(lstRm); dtOil = cdu.SelectDatabase("select * from yjjh"); for (int i = 0; i < dtOil.Rows.Count; i++) { //DataTable dtSMYJH = ConnDatabaseUtil.SelectDBF("select * from 井号 where 实际井号 = '" + dtOil.Rows[i]["jh"] + "'"); DataTable dtSMYJH = cdu.SelectDatabase("select * from dyjh where sjjh = '" + dtOil.Rows[i]["jh"] + "'"); if (dtSMYJH.Rows.Count > 0) { DataRow[] drJHY = LocationDAL.dtSK.Select("jh = '" + dtSMYJH.Rows[0]["smjh"] + "'"); foreach (DataRow dr in drJHY) { DataTable dtLtjhs = cdu.SelectDatabase("select * from ltk where jh = '" + dtOil.Rows[i]["jh"] + "'"); if (dtLtjhs.Rows.Count > 0) { int dbjs = Convert.ToInt32(dtLtjhs.Rows[0]["dbjs"]); for (int j = 1; j <= dbjs; j++) { DataTable dtIsSJ = cdu.SelectDatabase("select * from sjjh where jh = '" + dtLtjhs.Rows[0]["dbjh" + j] + "'"); if (dtIsSJ.Rows.Count > 0) { //DataTable dtSMSJH = ConnDatabaseUtil.SelectDBF("select * from 井号 where 实际井号 = '" + dtLtjhs.Rows[0]["dbjh" + j] + "'"); DataTable dtSMSJH = cdu.SelectDatabase("select * from dyjh where sjjh = '" + dtLtjhs.Rows[0]["dbjh" + j] + "'"); if (dtSMSJH.Rows.Count > 0) { WellModel jhs = ld.GetSingleLocation(dtSMSJH.Rows[0]["smjh"].ToString(), Convert.ToInt32(dr["k"])); GetLTOilJH(jhs, strDate, dtLtjhs.Rows[0]["dbjh" + j].ToString()); } } } } else { for (int j = 1; j <= connNumber; j++) { string strColumnName = "DBJH" + j; dtLtjhs = cdu.SelectDatabase("select * from LTK where " + strColumnName + " = '" + dtOil.Rows[i]["jh"] + "'"); foreach (DataRow drLtjhs in dtLtjhs.Rows) { DataTable dtIsSJ = cdu.SelectDatabase("select * from sjjh where jh = '" + drLtjhs["jh"] + "'"); if (dtIsSJ.Rows.Count > 0) { //DataTable dtSMSJH = ConnDatabaseUtil.SelectDBF("select * from 井号 where 实际井号 = '" + drLtjhs["jh"] + "'"); DataTable dtSMSJH = cdu.SelectDatabase("select * from dyjh where sjjh = '" + drLtjhs["jh"] + "'"); if (dtSMSJH.Rows.Count > 0) { WellModel jhs = ld.GetSingleLocation(dtSMSJH.Rows[0]["smjh"].ToString(), Convert.ToInt32(dr["k"])); GetLTOilJH(jhs, strDate, drLtjhs["jh"].ToString()); } } } } } } } GC.Collect(); } try { ConnDatabaseUtil cdu = new ConnDatabaseUtil(); string strTableName = "T_WELL_ENDFACTOR"; string strSQL = "select count(*) as count from user_tables where table_name = '" + strTableName.ToUpper() + "'"; DataTable dtExist = cdu.SelectDatabase(strSQL); if (Convert.ToInt32(dtExist.Rows[0]["Count"]) > 0) { strSQL = "drop table " + strTableName.ToUpper(); cdu.CreateOrDeleteDatabase(strSQL); } strSQL = "create table " + strTableName.ToUpper() + " (油井 VARCHAR2(16), 日期 VARCHAR2(6), 层位 NUMBER(2), 水井 VARCHAR2(16), 平均剩余储量 NUMBER(17, 10), 平均圧力 NUMBER(17, 10), 平均含油饱和度 NUMBER(17, 10))"; cdu.CreateOrDeleteDatabase(strSQL); cdu.InsertDatabase(dtResult, strTableName.ToUpper()); } catch (Exception) { } }