public JsonResult GetSchoolInterviewEntryRateList(QueryBuilder qb) { var year = DateTime.Now.Year.ToString(); string yearQuery = this.Request["year"] ?? ""; if (!string.IsNullOrEmpty(yearQuery)) { year = yearQuery; } var linkSql = " where A.Year = '" + year + "'"; //部门:提过需求的所有的部门 var deptSql = @"SELECT Dept, DeptName FROM S_E_Recruitment_DeptRequirementReport A " + linkSql + " GROUP BY Dept,DeptName"; var deptDt = HRSQLDB.ExecuteDataTable(deptSql); //专业:所有的枚举 var majorDt = GetMajors(); var sumSql = @"SELECT count(1) as Num, Major, Dept, IsPass FROM S_E_Recruitment_Schoolrecruitmentinterview A " + linkSql + " GROUP BY Major, Dept,IsPass"; var sumDt = HRSQLDB.ExecuteDataTable(sumSql); var entrySql = @"select count(1) as Num, A.Dept,A.Major from S_E_Recruitment_Schoolrecruitmentinterview A " + linkSql + @"and (select count(1) as num from T_Employee B where B.Interview = A.ID) != 0 GROUP BY A.dept, A.major"; var entryDt = HRSQLDB.ExecuteDataTable(entrySql); foreach (DataRow dr in majorDt.Rows) { if (!deptDt.Columns.Contains(dr["Major"].ToString())) { deptDt.Columns.Add(dr["Major"].ToString()); deptDt.Columns.Add(dr["Major"].ToString() + "Pass"); deptDt.Columns.Add(dr["Major"].ToString() + "Entry"); } } deptDt.Columns.Add("EntryRate"); //入职率 var result = new List <Dictionary <string, object> >(); var json = JsonHelper.ToJson(deptDt); result = JsonHelper.ToList(json); foreach (var item in result) { foreach (DataRow dr in majorDt.Rows) { var major = dr["Major"].ToString(); var passNumber = sumDt.Compute("sum(Num)", " Dept='" + item.GetValue("Dept") + "' and Major='" + major + "' " + @" and IsPass = '******' "); var entryNumber = entryDt.Compute("sum(Num)", " Dept='" + item.GetValue("Dept") + "' and Major='" + major + "' "); var pass = passNumber == DBNull.Value ? 0 : passNumber; var entry = entryNumber == DBNull.Value ? 0 : entryNumber; item.SetValue(major + "Pass", pass); item.SetValue(major + "Entry", entry); } var deptPassNumber = sumDt.Compute("sum(Num)", " Dept='" + item.GetValue("Dept") + @"' and IsPass = '******' "); var entryPassNumber = entryDt.Compute("sum(Num)", " Dept='" + item.GetValue("Dept") + "' "); var deptPass = deptPassNumber == DBNull.Value ? 0 : deptPassNumber; var entryPass = entryPassNumber == DBNull.Value ? 0 : entryPassNumber; double entryRate = Convert.ToInt32(deptPass) != 0 ? entryRate = Convert.ToDouble(entryPass) / Convert.ToDouble(deptPass) * 100 : 0; //入职率=入职人数/面试审批通过人数 item.SetValue("EntryRate", entryRate.ToString("0.00")); } var dataGrid = new GridData(result); dataGrid.total = qb.TotolCount; return(Json(dataGrid)); }
/// <summary> /// 获取校园招聘面试通过率 /// </summary> /// <returns></returns> public JsonResult GetSchoolInterviewPassRate(QueryBuilder qb) { var year = DateTime.Now.Year.ToString(); string yearQuery = this.Request["year"] ?? ""; if (!string.IsNullOrEmpty(yearQuery)) { year = yearQuery; } var linkSql = " where [Year] = '" + year + "'"; //部门:提过需求的所有的部门 var deptSql = @"SELECT Dept, DeptName FROM S_E_Recruitment_DeptRequirementReport " + linkSql + " GROUP BY Dept,DeptName"; var deptDt = HRSQLDB.ExecuteDataTable(deptSql); //专业:所有的枚举 var majorDt = GetMajors(); //校招面试 var sumSql = @"SELECT count(1) as Num, Major, Dept, IsPass FROM S_E_Recruitment_Schoolrecruitmentinterview " + linkSql + " GROUP BY Major, Dept,IsPass"; var sumDt = HRSQLDB.ExecuteDataTable(sumSql); foreach (DataRow dr in majorDt.Rows) { if (!deptDt.Columns.Contains(dr["Major"].ToString())) { deptDt.Columns.Add(dr["Major"].ToString()); deptDt.Columns.Add(dr["Major"].ToString() + "Pass"); deptDt.Columns.Add(dr["Major"].ToString() + "All"); } } deptDt.Columns.Add("PassRate"); //面试通过率 var result = new List <Dictionary <string, object> >(); var json = JsonHelper.ToJson(deptDt); result = JsonHelper.ToList(json); foreach (var item in result) { double deptPass = 0; double deptAll = 0; foreach (DataRow dr in majorDt.Rows) { var major = dr["Major"].ToString(); var passNumber = sumDt.Compute("sum(Num)", " Dept='" + item.GetValue("Dept") + "' and Major='" + major + "' " + @" and IsPass = '******' "); var allNumber = sumDt.Compute("sum(Num)", " Dept='" + item.GetValue("Dept") + "' and Major='" + major + "' "); var pass = passNumber == DBNull.Value ? 0 : passNumber; var all = allNumber == DBNull.Value ? 0 : allNumber; deptPass += Convert.ToInt32(pass); deptAll += Convert.ToInt32(all); item.SetValue(major + "Pass", pass); item.SetValue(major + "All", all); } double rate = 0; if (deptAll != 0) { rate = (deptPass / deptAll) * 100; } item.SetValue("PassRate", rate.ToString("0.00")); } var dataGrid = new GridData(result); dataGrid.total = qb.TotolCount; return(Json(dataGrid)); }