/// <summary> /// 查询本电厂各部门的参与率 /// </summary> /// <param name="form"></param> /// <returns></returns> public ActionResult GetDeptCYL(FormCollection form) { try { var user = OperatorProvider.Provider.Current(); //先找到当前用户所在的电厂 var searchDept = new DepartmentBLL().GetList().Where(p => p.ParentId == user.OrganizeId || p.DepartmentId == user.OrganizeId).OrderBy(x => x.EnCode).ToList();//当前电厂与电厂底下的部门数据。分组组装数据用 DataTable dt = new HseObserveBLL().GetDeptCYL(form["Year"], user.OrganizeCode); List <DeptMonthData> data = new List <DeptMonthData>(); var userList = new UserBLL().GetList().Where(p => p.IsPresence == "1"); if (searchDept != null && searchDept.Count > 0) { //组装各个部门的数据 searchDept.ForEach(p => { DeptMonthData deptMonth = new DeptMonthData(form["Year"]); deptMonth.DeptName = p.FullName; //var drItem = dt.Select(" CREATEUSERDEPTCODE LIKE '" + p.EnCode + "%'"); //foreach (DataRow dr in drItem) //{ // decimal userCount = userList.Count(x => x.DepartmentCode.StartsWith(p.EnCode)); //总人数 // var obj = deptMonth.MonthData.FirstOrDefault(x => x.Key == dr["Month"].ToString()); // if (obj != null) // { // //参与度=(已提交卡总数/总人数*周数)*(实际提交人数/总人数)*100% // decimal count = dr["SUBMITCOUNT"] == null ? 0 : Convert.ToDecimal(dr["SUBMITCOUNT"]); //已提交总数 // decimal submitcount = dr["SUBMITUSER"] == null ? 0 : Convert.ToDecimal(dr["SUBMITUSER"]); //已提交人数 (重复提交的人只算一次) // if (userCount > 0)//分母不为0 // { // obj.Value = Math.Round((count / (userCount * 4)) * (submitcount / userCount) * 100, 2);//百分比 // } // } //} #region 新 decimal userCount = userList.Count(x => x.DepartmentCode.StartsWith(p.EnCode)); //当前部门下的总人数 if (userCount > 0) { deptMonth.MonthData.ForEach(x =>//月份循环 { //处理当前部门及子部门的数据 var drItem = dt.Select(" CREATEUSERDEPTCODE LIKE '" + p.EnCode + "%' AND MONTH='" + x.Key + "'"); if (drItem != null && drItem.Length > 0) { decimal submitTotal = 0; //已提交总数 decimal submitUserCount = 0; //已提交人数 (重复提交的人只算一次) foreach (DataRow dr in drItem) { submitTotal += dr["SUBMITCOUNT"] == null ? 0 : Convert.ToDecimal(dr["SUBMITCOUNT"]); submitUserCount += dr["SUBMITUSER"] == null ? 0 : Convert.ToDecimal(dr["SUBMITUSER"]); } //计算百分比 参与度=(已提交卡总数/总人数*周数)*(实际提交人数/总人数)*100% x.Value = Math.Round((submitTotal / (userCount * 4)) * (submitUserCount / userCount) * 100, 2);//百分比 } }); } #endregion data.Add(deptMonth); }); } return(Json(new { Code = 0, Data = data })); } catch (Exception ex) { return(Json(new { Code = -1, ex.Message })); } }
/// <summary> /// 获取列表数据 /// </summary> /// <returns></returns> public ActionResult GetTableData(FormCollection form) { try { dynamic queryJson = JsonConvert.DeserializeObject <ExpandoObject>(Request["queryJson"]); var user = OperatorProvider.Provider.Current(); //先找到当前用户所在的电厂 var searchDept = new DepartmentBLL().GetList().Where(p => p.EnCode.StartsWith(user.OrganizeCode)).OrderBy(x => x.EnCode).ToList();//当前电厂底下的部门数据。分组组装数据用 var parentCode = user.OrganizeCode; DataTable dt = new SelfEvaluateBLL().GetChartsData(queryJson.year, queryJson.month, user.DeptCode); var userList = new UserBLL().GetList(); var treeList = new List <TreeGridEntity>(); if (searchDept != null && searchDept.Count > 0) { //组装各个部门的数据 searchDept.ForEach(p => { TreeGird treeGird = new TreeGird() { Id = p.DepartmentId, Name = p.FullName, ParentId = p.ParentId, DeptId = p.DepartmentId, DeptCode = p.DeptCode, Nature = p.Nature }; decimal userCount = userList.Count(x => x.DepartmentCode.StartsWith(p.EnCode) && x.IsPresence == "1"); //总人数 treeGird.AllUserCount = userCount.ToString();; decimal allCount = 0; var drItem = dt.Select(" DEPTCODE LIKE '" + p.EnCode + "%'"); decimal sbumitUserCount = 0; foreach (DataRow dr in drItem) { allCount += dr["COUNT"] == DBNull.Value ? 0 : Convert.ToDecimal(dr["COUNT"]); //已提交总数 sbumitUserCount += dr["USERCOUNT"] == DBNull.Value ? 0 : Convert.ToDecimal(dr["USERCOUNT"]); //已提交总人数 } treeGird.SubmitCount = allCount.ToString(); treeGird.NotSubmitCount = ((userCount - sbumitUserCount) < 0 ? 0 : (userCount - sbumitUserCount)).ToString(); if (userCount < 1) { treeGird.CYD = "0%"; } else { treeGird.CYD = Math.Round(allCount / userCount * 100, 2).ToString() + "%";//百分比 参与度=已提交/应提交*100% } TreeGridEntity treeGridEntity = new TreeGridEntity() { parentId = treeGird.ParentId, entityJson = JsonConvert.SerializeObject(treeGird), expanded = false, hasChildren = true, id = treeGird.Id, text = treeGird.Name, code = treeGird.CYD }; treeList.Add(treeGridEntity); }); } var FristDpetDetail = searchDept.FirstOrDefault(x => x.EnCode == parentCode); if (FristDpetDetail != null && !user.IsSystem) { var FristDpet = treeList.FirstOrDefault(x => x.id == FristDpetDetail.DepartmentId); if (FristDpet != null) { FristDpet.parentId = "0"; } } return(Content(treeList.TreeJson())); } catch (Exception ex) { return(Error("查询失败:" + ex.Message)); } }