/// <summary> /// 油水井距范围内影响因素 /// </summary> /// <param name="path">读取影响因素文件路径</param> /// <param name="strJHLocation">目标井</param> /// <param name="dbjhLocation">目标连通井</param> /// <param name="fipoilAverage">剩余储量</param> /// <param name="presAverage">平均压力</param> /// <param name="soilAverage">平均含油饱和度</param> /// <param name="permxAverage">平均渗透率</param> /// <param name="presDiff">注采压差</param> public InfFactorModel InfluencingFactors(WellModel strJHLocation, WellModel dbjhLocation, List <decimal> lstPressure, List <decimal> lstSoil, List <decimal> lstFipoil /*, List<decimal> lstKX, List<decimal> lstDCXS, List<decimal> lstPORO*/) { InfFactorModel ifm = new InfFactorModel(); decimal fipoilTotal = 0, presTotal = 0, soilTotal = 0, kxTotal = 0, dcxsTotal = 0, poroTotal = 0; List <WellModel> lstSpacingRange = SpacingRange(strJHLocation, dbjhLocation); int index = 0; for (int i = 0; i < lstSpacingRange.Count; i++) { index = (lstSpacingRange[i].k - 1) * 152 * 223 + ((lstSpacingRange[i].y - 1) * 223 + lstSpacingRange[i].x) - 1; soilTotal += lstSoil[index]; presTotal += lstPressure[index]; fipoilTotal += lstFipoil[index]; //kxTotal += lstKX[index]; //dcxsTotal += lstDCXS[index]; //poroTotal += lstPORO[index]; } ifm.jhy = strJHLocation.jh; ifm.jhs = dbjhLocation.jh; ifm.k = strJHLocation.k; ifm.presAverage = presTotal / lstSpacingRange.Count; ifm.fipoilAverage = fipoilTotal / lstSpacingRange.Count; ifm.soilAverage = soilTotal / lstSpacingRange.Count; //ifm.wellSpacing = WellSpacing(strJHLocation, dbjhLocation); //ifm.kxAverage = kxTotal / lstSpacingRange.Count; //ifm.dcxsAverage = dcxsTotal / lstSpacingRange.Count; //ifm.poroAverage = poroTotal / lstSpacingRange.Count; int jhIndex = 0, dbjhIndex = 0; jhIndex = (strJHLocation.k - 1) * 152 * 223 + ((strJHLocation.y - 1) * 223 + strJHLocation.x) - 1; dbjhIndex = (dbjhLocation.k - 1) * 152 * 223 + ((dbjhLocation.y - 1) * 223 + dbjhLocation.x) - 1; //ifm.yy = lstPressure[jhIndex]; //ifm.sy = lstPressure[dbjhIndex]; //ifm.presDiff = ifm.sy - ifm.yy; return(ifm); }
private void btnSubmit_Click(object sender, EventArgs e) { splashScreenManager1.ShowWaitForm(); splashScreenManager1.SetWaitFormCaption("正在处理数据"); splashScreenManager1.SetWaitFormDescription("请稍后..."); //FileStream fs = new FileStream(txtResultPath.Text, FileMode.Append); //StreamWriter sw = new StreamWriter(fs); //sw.WriteLine("油井 层位 产液 含水 水井 注水 井距 注采压差 平均圧力 平均含油饱和度 平均储量 平均渗透率 平均地层系数"); ReadFilesDAL.ReadFiles(txtFAPath.Text); FactorsAnalysisDAL fad = new FactorsAnalysisDAL(); DataTable dtLtjh = ExcelToDataTableUtil.ExcelToDataTable(txtLTKPath.Text); for (int i = 0; i < dtLtjh.Rows.Count; i++) { DataRow[] drJHY = dtOil.Select("JHY = '" + dtLtjh.Rows[i]["JHY"] + "' AND DATE = '" + strDate + "'"); if (drJHY.Count() > 0) { foreach (DataRow dr in drJHY) { //DataTable dtLtjhy = dtLtjh.Select("JHS = '" + dtLtjh.Rows[i]["JHS"] + "'").CopyToDataTable(); //DataRow[] drJHS = dtWater.Select("JHS = '" + dtLtjh.Rows[i]["JHS"] + "' AND K = " + dr["K"] + " AND DATE = '" + strDate + "'"); DataRow[] drJHS = dtWater.Select("JHS = '" + dtLtjh.Rows[i]["JHS"] + "' AND DATE = '" + strDate + "'"); if (drJHS.Count() > 0) { //for (int j = 0; j < dtLtjhy.Rows.Count; j++) //{ //DataRow[] drOthrJHY = dtOil.Select("JHY = '" + dtLtjhy.Rows[j]["JHY"] + "' AND K = " + dr["K"] + " AND DATE = '" + strDate + "'"); //if (drOthrJHY.Count() > 0) //{ //foreach (DataRow drOthr in drOthrJHY) //{ WellModel jhy = new WellModel(); //jhy.x = Convert.ToInt32(drOthr["X"]); //jhy.y = Convert.ToInt32(drOthr["Y"]); //jhy.k = Convert.ToInt32(drOthr["K"]); //DataRow[] drMNCYE = dtOil.Select("JHY = '" + drOthr["JHY"] + "' AND DATE = '" + strDate + "' AND K = " + dr["k"]); jhy.x = Convert.ToInt32(dr["X"]); jhy.y = Convert.ToInt32(dr["Y"]); jhy.k = Convert.ToInt32(dr["K"]); jhy.mncye = Convert.ToDouble(dr["MNCYE"]); WellModel jhs = new WellModel(); jhs.x = Convert.ToInt32(drJHS[0]["X"]); jhs.y = Convert.ToInt32(drJHS[0]["Y"]); //jhs.k = Convert.ToInt32(drJHS[0]["K"]); jhs.k = Convert.ToInt32(dr["K"]); //DataRow[] drMNCS = dtWater.Select("JHS = '" + dtLtjh.Rows[i]["JHS"] + "' AND DATE = '" + strDate + "' AND K = " + dr["k"]); InfFactorModel ifm = new InfFactorModel(); ifm = fad.InfluencingFactors(jhy, jhs, ReadFilesDAL.lstPressure, ReadFilesDAL.lstSoil, ReadFilesDAL.lstFipoil, ReadFilesDAL.lstKX, ReadFilesDAL.lstDCXS, ReadFilesDAL.lstPORO); DataRow drResult = dtResult.NewRow(); //drResult["序号"] = i + 1; drResult["油井"] = dr["JHY"]; drResult["层位"] = dr["k"]; drResult["产液"] = dr["MNCYE"]; drResult["含水"] = dr["HS"]; drResult["水井"] = drJHS[0]["JHS"]; //drResult["注入量"] = drMNCS[0]["MNCS"]; drResult["井距"] = ifm.wellSpacing; drResult["注采压差"] = ifm.presDiff; drResult["平均圧力"] = ifm.presAverage; drResult["平均含油饱和度"] = ifm.soilAverage; drResult["平均剩余储量"] = ifm.fipoilAverage; drResult["平均渗透率"] = ifm.kxAverage; drResult["平均地层系数"] = ifm.dcxsAverage; drResult["平均孔隙度"] = ifm.poroAverage; dtResult.Rows.Add(drResult); // } //} //} } } } //sw.WriteLine("---------------------------------------------------------------------"); } gridResult.DataSource = dtResult; DevExpress.XtraPrinting.XlsExportOptions options = new DevExpress.XtraPrinting.XlsExportOptions(); gridResult.ExportToXls(txtResultPath.Text); //sw.Close(); //fs.Close(); splashScreenManager1.CloseWaitForm(); DevExpress.XtraEditors.XtraMessageBox.Show("保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); }
private void GetLTOilJH(WellModel jhs, string strDate, string sjjhs) { if (jhs.jh != null) { DataTable dtLtjhy = cdu.SelectDatabase("select * from ltk where jh = '" + sjjhs + "'"); if (dtLtjhy.Rows.Count > 0) { int dbjs = Convert.ToInt32(dtLtjhy.Rows[0]["dbjs"]); for (int j = 1; j <= dbjs; j++) { DataTable dtIsYJ = cdu.SelectDatabase("select * from yjjh where jh = '" + dtLtjhy.Rows[0]["dbjh" + j] + "'"); if (dtIsYJ.Rows.Count > 0) { // DataTable dtSMYJH = ConnDatabaseUtil.SelectDBF("select * from 井号 where 实际井号 = '" + dtLtjhy.Rows[0]["dbjh" + j] + "'"); DataTable dtSMYJH = cdu.SelectDatabase("select * from dyjh where sjjh = '" + dtLtjhy.Rows[0]["dbjh" + j] + "'"); if (dtSMYJH.Rows.Count > 0) { WellModel Othrjhy = ld.GetSingleLocation(dtSMYJH.Rows[0]["smjh"].ToString(), jhs.k); if (Othrjhy.jh != null) { InfFactorModel ifm = new InfFactorModel(); ifm = fad.InfluencingFactors(Othrjhy, jhs, ReadFilesDAL.lstPressure, ReadFilesDAL.lstSoil, ReadFilesDAL.lstFipoil /*, ReadFilesDAL.lstKX, ReadFilesDAL.lstDCXS, ReadFilesDAL.lstPORO*/); DataRow drResult = dtResult.NewRow(); //DataTable dtSJ = cdu.SelectDatabase("select * from sj where jh = '" + jhs.jh + "' and ny = '" + strDate + "' and k = " + jhs.k); //if (dtSJ.Rows.Count > 0) //{ // drResult["注入量"] = dtSJ.Rows[0]["rzsl"]; // drResult["水bhp"] = dtSJ.Rows[0]["bhp"]; //} //DataTable dtYJ = cdu.SelectDatabase("select * from yj where jh = '" + Othrjhy.jh + "' and ny = '" + strDate + "' and k = " + Othrjhy.k); //if (dtYJ.Rows.Count > 0) //{ // drResult["产液"] = dtYJ.Rows[0]["rcyl1"]; // drResult["含水"] = dtYJ.Rows[0]["HS"]; // drResult["产油"] = Convert.ToDouble(dtYJ.Rows[0]["rcyl1"]) * (1 - Convert.ToDouble(dtYJ.Rows[0]["HS"])); // drResult["油bhp"] = dtYJ.Rows[0]["bhp"]; //} drResult["日期"] = strDate; drResult["油井"] = ifm.jhy; drResult["层位"] = ifm.k; drResult["水井"] = ifm.jhs; drResult["平均圧力"] = ifm.presAverage; drResult["平均含油饱和度"] = ifm.soilAverage; drResult["平均剩余储量"] = ifm.fipoilAverage; dtResult.Rows.Add(drResult); } } } } } else { for (int k = 1; k <= connNumber; k++) { string strColumnOilName = "DBJH" + k; dtLtjhy = cdu.SelectDatabase("select * from LTK where " + strColumnOilName + " = '" + sjjhs + "'"); foreach (DataRow drLtjhy in dtLtjhy.Rows) { DataTable dtIsYJ = cdu.SelectDatabase("select * from yjjh where jh = '" + drLtjhy["jh"] + "'"); if (dtIsYJ.Rows.Count > 0) { //DataTable dtSMYJH = ConnDatabaseUtil.SelectDBF("select * from 井号 where 实际井号 = '" + drLtjhy["jh"] + "'"); DataTable dtSMYJH = cdu.SelectDatabase("select * from dyjh where sjjh = '" + drLtjhy["jh"] + "'"); if (dtSMYJH.Rows.Count > 0) { WellModel Othrjhy = ld.GetSingleLocation(dtSMYJH.Rows[0]["smjh"].ToString(), jhs.k); if (Othrjhy.jh != null) { InfFactorModel ifm = new InfFactorModel(); ifm = fad.InfluencingFactors(Othrjhy, jhs, ReadFilesDAL.lstPressure, ReadFilesDAL.lstSoil, ReadFilesDAL.lstFipoil /*, ReadFilesDAL.lstKX, ReadFilesDAL.lstDCXS, ReadFilesDAL.lstPORO*/); DataRow drResult = dtResult.NewRow(); //DataTable dtSJ = cdu.SelectDatabase("select * from sj where jh = '" + jhs.jh + "' and ny = '" + strDate + "' and k = " + jhs.k); //if (dtSJ.Rows.Count > 0) //{ // drResult["注入量"] = dtSJ.Rows[0]["rzsl"]; // drResult["水bhp"] = dtSJ.Rows[0]["bhp"]; //} //DataTable dtYJ = cdu.SelectDatabase("select * from yj where jh = '" + Othrjhy.jh + "' and ny = '" + strDate + "' and k = " + Othrjhy.k); //if (dtYJ.Rows.Count > 0) //{ // drResult["产液"] = dtYJ.Rows[0]["rcyl1"]; // drResult["含水"] = dtYJ.Rows[0]["HS"]; // drResult["产油"] = Convert.ToDouble(dtYJ.Rows[0]["rcyl1"]) * (1 - Convert.ToDouble(dtYJ.Rows[0]["HS"])); // drResult["油bhp"] = dtYJ.Rows[0]["bhp"]; //} drResult["日期"] = strDate; drResult["油井"] = ifm.jhy; drResult["层位"] = ifm.k; drResult["水井"] = ifm.jhs; drResult["平均圧力"] = ifm.presAverage; drResult["平均含油饱和度"] = ifm.soilAverage; drResult["平均剩余储量"] = ifm.fipoilAverage; dtResult.Rows.Add(drResult); } } } } } } GC.Collect(); } }