protected void iBtnSave_Click(object sender, ImageClickEventArgs e) { Biz_AHPEstDeptStgDatas ahpEstDeptStgDatas = new Biz_AHPEstDeptStgDatas(); DataTable dataTable = new DataTable(); DataRow dr = null; dataTable.Columns.Add("L_STG_REF_ID", typeof(int)); dataTable.Columns.Add("R_STG_REF_ID", typeof(int)); dataTable.Columns.Add("L_POINT", typeof(float)); dataTable.Columns.Add("S_POINT", typeof(int)); dataTable.Columns.Add("R_POINT", typeof(float)); foreach (DataGridItem item in DataGrid1.Items) { dr = dataTable.NewRow(); System.Web.UI.WebControls.Label lblLStgRefID = item.Cells[1].FindControl("lblLStgRefID") as System.Web.UI.WebControls.Label; System.Web.UI.WebControls.Label lblRStgRefID = item.Cells[3].FindControl("lblRStgRefID") as System.Web.UI.WebControls.Label; TextBox txtLPoint = item.Cells[2].FindControl("txtLPoint") as TextBox; TextBox txtSlider = GetTextBox(item.Cells[2], int.Parse(item.Cells[0].Text.ToString()), 50); TextBox txtRPoint = item.Cells[2].FindControl("txtRPoint") as TextBox; dr["L_STG_REF_ID"] = int.Parse(lblLStgRefID.Text); dr["R_STG_REF_ID"] = int.Parse(lblRStgRefID.Text); dr["L_POINT"] = GetDividedPoint(txtLPoint.Text, txtRPoint.Text); dr["S_POINT"] = int.Parse(txtSlider.Text); dr["R_POINT"] = GetDividedPoint(txtRPoint.Text, txtLPoint.Text); dataTable.Rows.Add(dr); } bool isOK = ahpEstDeptStgDatas.AddAHPEstDeptStgDatas(VER_ID , ESTTERM_REF_ID , int.Parse(txtDeptID.Text) , EMP_REF_ID , dataTable); if (isOK) { AHPDataBinding(VER_ID, ESTTERM_REF_ID, int.Parse(txtDeptID.Text)); } else { ltrScript.Text = JSHelper.GetAlertScript("처리가 실패되었습니다.", false); } }
private DataTable GetAHPPointDataTable() { int est_dept_ref_id = int.Parse(txtDeptID.Text); Biz_AHPEstDeptStgDatas ahpEstDept = new Biz_AHPEstDeptStgDatas(); Biz_PDTAndAHPStgEstDeptDatas pdtAhpEstDept = new Biz_PDTAndAHPStgEstDeptDatas(); DataSet ds = pdtAhpEstDept.GetPDTAndAHPEstDeptStgList(VER_ID , ESTTERM_REF_ID , est_dept_ref_id , "Y"); int stg_count = ds.Tables[0].Rows.Count; if (stg_count == 0 || stg_count == 1) { return(null); } DataTable dataTable = new DataTable(); DataRow dr = null; dataTable.Columns.Add("VER_ID", typeof(int)); dataTable.Columns.Add("ESTTERM_REF_ID", typeof(int)); dataTable.Columns.Add("EST_DEPT_REF_ID", typeof(int)); dataTable.Columns.Add("STG_REF_ID", typeof(int)); dataTable.Columns.Add("STG_NAME", typeof(string)); dataTable.Columns.Add("MULTIPLY", typeof(float)); dataTable.Columns.Add("GEOMEAN", typeof(double)); dataTable.Columns.Add("WEIGHT", typeof(float)); dataTable.Columns.Add("SUM", typeof(float)); dataTable.Columns.Add("WS", typeof(double)); dataTable.Columns.Add("CI", typeof(float)); dataTable.Columns.Add("CR", typeof(float)); double total_geomean = 0; foreach (DataRow dataRow in ds.Tables[0].Rows) { double multi_point = ahpEstDept.GetAHPEstDeptStgMultiPlyPoint(VER_ID , ESTTERM_REF_ID , est_dept_ref_id , int.Parse(dataRow["STG_REF_ID"].ToString())); double sum_point = ahpEstDept.GetAHPEstDeptStgSumPoint(VER_ID , ESTTERM_REF_ID , est_dept_ref_id , int.Parse(dataRow["STG_REF_ID"].ToString())); if (multi_point == 0) { return(null); } dr = dataTable.NewRow(); dr["VER_ID"] = VER_ID; dr["ESTTERM_REF_ID"] = ESTTERM_REF_ID; dr["EST_DEPT_REF_ID"] = est_dept_ref_id; dr["STG_REF_ID"] = dataRow["STG_REF_ID"]; dr["STG_NAME"] = dataRow["STG_NAME"]; dr["MULTIPLY"] = multi_point; dr["GEOMEAN"] = Math.Pow((double)multi_point, (double)1 / (double)stg_count); total_geomean += Convert.ToDouble(dr["GEOMEAN"]); dr["WEIGHT"] = 0; dr["SUM"] = sum_point; dr["WS"] = 0; dr["CI"] = 0; dr["CR"] = 0; dataTable.Rows.Add(dr); } double lambda_max = 0; double c_i = 0; double rci = 0; double ratio = 0; float[] rciArr = new float[10]; for (int i = 0; i < dataTable.Rows.Count; i++) { DataRow drRow = dataTable.Rows[i]; drRow["WEIGHT"] = (double)drRow["GEOMEAN"] / total_geomean; drRow["WS"] = double.Parse(drRow["WEIGHT"].ToString()) * double.Parse(drRow["SUM"].ToString()); drRow["WEIGHT"] = Math.Round(double.Parse(drRow["WEIGHT"].ToString()) * 100.00, 2); lambda_max += double.Parse(drRow["WS"].ToString()); } rciArr[0] = 0; rciArr[1] = 0; rciArr[2] = 0.58f; rciArr[3] = 0.9f; rciArr[4] = 1.12f; rciArr[5] = 1.24f; rciArr[6] = 1.32f; rciArr[7] = 1.41f; rciArr[8] = 1.45f; rciArr[9] = 1.49f; c_i = (lambda_max - stg_count) / (stg_count - 1); rci = rciArr[stg_count - 1]; ratio = c_i / rci; for (int i = 0; i < dataTable.Rows.Count; i++) { DataRow drRow = dataTable.Rows[i]; drRow["CI"] = c_i; drRow["CR"] = ratio; } if (Math.Round(c_i * 100.00, 2) > 10) { lblMsg.ForeColor = Color.Red; lblCI.ForeColor = Color.Red; lblCR.ForeColor = Color.Red; lblMsg.Text = "귀하의 선택은 논리적 문제가 있으니<br>재 점검 바랍니다."; } else { lblMsg.ForeColor = Color.Blue; lblCI.ForeColor = Color.Blue; lblCR.ForeColor = Color.Blue; lblMsg.Text = "귀하의 선택은 논리적 일관성이 있습니다."; } lblCI.Text = Convert.ToString(Math.Round(c_i * 100.00, 2)) + "%"; lblCR.Text = Convert.ToString(Math.Round(ratio * 100.00, 2)) + "%"; return(dataTable); }