Ejemplo n.º 1
0
        /// <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 }));
            }
        }
Ejemplo n.º 2
0
        /// <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));
            }
        }