public ActionResult Search(
            DateTime?startTime = null, DateTime?endTime    = null,
            string[] type      = null, string[] id         = null,
            string userId      = null, string[] department = null,
            int page           = 1, int rows = 20)
        {
            var parameter = new UserEvaluationParameter
            {
                StartTime   = startTime,
                EndTime     = endTime,
                Types       = type,
                IDs         = id,
                UserID      = userId,
                Departments = department,
                MigrateType = MigrateType.To,
                Page        = new PageParameter(page, rows)
            };

            ViewBag.List        = Core.UserEvaluationManager.Search(parameter);
            ViewBag.Parameter   = parameter;
            ViewBag.Types       = Core.UserEvaluationManager.GetWindTypes();
            ViewBag.IDs         = Core.UserEvaluationManager.GetWindIds();
            ViewBag.UserIDs     = Core.UserEvaluationManager.GetUserIDs();
            ViewBag.Departments = Core.UserEvaluationManager.GetDepartments();
            return(View());
        }
        public Dictionary <string, Dictionary <string, long> > StatisticWait(UserEvaluationParameter parameter)
        {
            var dict  = new Dictionary <string, Dictionary <string, long> >();
            var query = DB.UserEvaluations.Where(e => e.CallTime.HasValue).AsQueryable();

            if (parameter.StartTime.HasValue)
            {
                query = query.Where(e => e.CallTime >= parameter.StartTime.Value);
            }
            if (parameter.EndTime.HasValue)
            {
                query = query.Where(e => e.CallTime <= parameter.EndTime.Value);
            }

            var list = query.ToList();
            Dictionary <string, List <UserEvaluation> > temp = null;

            switch (parameter.TimeType)
            {
            case TimeType.Day:
                temp = list.GroupBy(e => e.GetNumberTime.ToString("yyyy-MM-dd")).ToDictionary(e => e.Key, e => e.ToList());
                break;

            case TimeType.Month:
                temp = list.GroupBy(e => e.GetNumberTime.ToString("yyyy-MM")).ToDictionary(e => e.Key, e => e.ToList());
                break;
            }
            switch (parameter.Type)
            {
            case StatictType.Type:
                dict = temp.ToDictionary(e => e.Key, e => e.Value.GroupBy(k => string.IsNullOrEmpty(k.WinType) ? "NULL" : k.WinType).ToDictionary(k => k.Key, k => k.Sum(j => j.Seconds) / k.LongCount()));

                break;

            case StatictType.User:
                dict = temp.ToDictionary(e => e.Key, e => e.Value.GroupBy(k => string.IsNullOrEmpty(k.UserID) ? "NULL" : k.UserID).ToDictionary(k => k.Key, k => k.Sum(j => j.Seconds) / k.LongCount()));
                break;

            case StatictType.Win:
                dict = temp.ToDictionary(e => e.Key, e => e.Value.GroupBy(k => string.IsNullOrEmpty(k.WinID) ? "NULL" : k.WinID).ToDictionary(k => k.Key, k => k.Sum(j => j.Seconds) / k.LongCount()));
                break;

            case StatictType.Department:
                dict = temp.ToDictionary(e => e.Key, e => e.Value.GroupBy(k => string.IsNullOrEmpty(k.Department) ? "NULL" : k.Department).ToDictionary(k => k.Key, k => k.Sum(j => j.Seconds) / k.LongCount()));
                break;
            }
            return(dict);
        }
        public ActionResult StatisticWait(
            TimeType?timeType  = null, StatictType?type = null,
            DateTime?startTime = null, DateTime?endTime = null)
        {
            var parameter = new UserEvaluationParameter()
            {
                TimeType  = timeType.HasValue ? timeType.Value : TimeType.Day,
                Type      = type.HasValue ? type.Value : StatictType.Type,
                StartTime = startTime,
                EndTime   = endTime
            };
            var dict = Core.UserEvaluationManager.StatisticWait(parameter);

            ViewBag.Dict      = dict;
            ViewBag.Head      = Extract <string>(dict);
            ViewBag.Parameter = parameter;
            return(View());
        }
        public ActionResult DownloadIndex(
            TimeType?timeType  = null, StatictType?type = null,
            DateTime?startTime = null, DateTime?endTime = null)
        {
            var parameter = new UserEvaluationParameter()
            {
                TimeType  = timeType.HasValue ? timeType.Value : TimeType.Day,
                Type      = type.HasValue ? type.Value : StatictType.Type,
                StartTime = startTime,
                EndTime   = endTime
            };
            var          dict     = Core.UserEvaluationManager.Statistic(parameter);
            IWorkbook    workbook = ExcelManager.Save(dict, parameter, Extract <string>(dict), WinTypeHelper.Dict);
            MemoryStream ms       = new MemoryStream();

            workbook.Write(ms);
            ms.Flush();
            byte[] fileContents = ms.ToArray();
            return(File(fileContents, "application/ms-excel", "统计表.xls"));
        }
        public ActionResult DownloadMigrate(DateTime?startTime      = null, DateTime?endTime = null,
                                            string userId           = null,
                                            MigrateType MigrateType = MigrateType.To)
        {
            var parameter = new UserEvaluationParameter
            {
                StartTime   = startTime,
                EndTime     = endTime,
                UserID      = userId,
                MigrateType = MigrateType
            };
            var          list     = Core.UserEvaluationManager.Search(parameter);
            IWorkbook    workbook = ExcelManager.Save2(list, WinTypeHelper.Dict);
            MemoryStream ms       = new MemoryStream();

            workbook.Write(ms);
            ms.Flush();
            byte[] fileContents = ms.ToArray();
            return(File(fileContents, "application/ms-excel", "转移.xls"));
        }
        public ActionResult Migrate(
            DateTime?startTime      = null, DateTime?endTime = null,
            string userId           = null,
            MigrateType MigrateType = MigrateType.To,
            int page = 1, int rows = 20)
        {
            var parameter = new UserEvaluationParameter
            {
                StartTime   = startTime,
                EndTime     = endTime,
                UserID      = userId,
                MigrateType = MigrateType,
                Page        = new PageParameter(page, rows)
            };

            ViewBag.List      = Core.UserEvaluationManager.Search(parameter);
            ViewBag.UserIDs   = Core.UserEvaluationManager.GetUserIDs();
            ViewBag.Parameter = parameter;
            return(View());
        }
        public List <UserEvaluation> Search(UserEvaluationParameter parameter)
        {
            var query = DB.UserEvaluations.AsQueryable();

            if (parameter.StartTime.HasValue)
            {
                query = query.Where(e => e.CallTime >= parameter.StartTime.Value);
            }
            if (parameter.EndTime.HasValue)
            {
                query = query.Where(e => e.CallTime <= parameter.EndTime.Value);
            }
            if (!string.IsNullOrEmpty(parameter.UserID))
            {
                switch (parameter.MigrateType)
                {
                case MigrateType.To:
                    if (parameter.UserID == "空")
                    {
                        query = query.Where(e => string.IsNullOrEmpty(e.UserID));
                    }
                    else
                    {
                        query = query.Where(e => e.UserID == parameter.UserID);
                    }
                    break;

                case MigrateType.From:
                    if (parameter.UserID == "空")
                    {
                        query = query.Where(e => string.IsNullOrEmpty(e.FromUserID));
                    }
                    else
                    {
                        query = query.Where(e => e.FromUserID == parameter.UserID);
                    }
                    break;
                }
            }


            if (parameter.Types != null && parameter.Types.Length > 0)
            {
                query = query.Where(e => parameter.Types.Contains(e.WinType));
            }

            if (parameter.IDs != null && parameter.IDs.Length > 0)
            {
                if (parameter.IDs.Contains("空"))
                {
                    query = query.Where(e => parameter.IDs.Contains(e.WinID) || string.IsNullOrEmpty(e.WinID));
                }
                else
                {
                    query = query.Where(e => parameter.IDs.Contains(e.WinID));
                }
            }

            if (parameter.Departments != null && parameter.Departments.Length > 0)
            {
                if (parameter.Departments.Contains("空"))
                {
                    query = query.Where(e => parameter.Departments.Contains(e.Department) || string.IsNullOrEmpty(e.Department));
                }
                else
                {
                    query = query.Where(e => parameter.Departments.Contains(e.Department));
                }
            }

            query = query.OrderByDescending(e => e.ID).SetPage(parameter.Page);
            return(query.ToList());
        }
示例#8
0
        public static IWorkbook Save(
            Dictionary <string, Dictionary <string, long> > dict,
            UserEvaluationParameter paramter,
            List <string> heads,
            Dictionary <string, string> headDict)
        {
            if (!System.IO.File.Exists(_modelExcelFilePath))
            {
                return(null);
            }

            IWorkbook workbook = _modelExcelFilePath.OpenExcel();

            if (workbook != null)
            {
                var sheet = workbook.GetSheetAt(0);
                if (sheet != null)
                {
                    var modelrow  = sheet.GetRow(0);
                    var modelcell = modelrow.GetCell(0);
                    modelcell.SetCellValue(string.Format("时间\\{0}", paramter.Type.GetDescription()));
                    var i = 1;
                    foreach (var head in heads)
                    {
                        var cell = GetCell(modelrow, i++, modelcell);
                        if (headDict.ContainsKey(head))
                        {
                            cell.SetCellValue(headDict[head]);
                        }
                        else
                        {
                            cell.SetCellValue(head);
                        }
                    }
                    i = 1;
                    foreach (var entry in dict.OrderByDescending(e => e.Key))
                    {
                        var row = sheet.GetRow(i);
                        if (row == null)
                        {
                            row = sheet.CreateRow(i);
                        }
                        i++;
                        var cell = GetCell(row, 0, modelcell);
                        cell.SetCellValue(entry.Key);
                        var j = 1;
                        foreach (var head in heads)
                        {
                            cell = GetCell(row, j++, modelcell);
                            if (entry.Value.ContainsKey(head))
                            {
                                cell.SetCellValue(entry.Value[head]);
                            }
                            else
                            {
                                cell.SetCellValue("/");
                            }
                        }
                    }
                }
            }
            return(workbook);
        }