public Result <List <AttendanceBranchCountView> > GetBranchUserCount(string ProName, string companyId, string startTime, string endTime, string userName, int pageIndex, int pageSize) { Result <List <AttendanceBranchCountView> > result = new Result <List <AttendanceBranchCountView> >(); var query = from a in context.Epm_Project.Where(p => p.IsDelete == false) join b in context.Epm_SignInformation.Where(p => p.IsDelete == false) on a.Id equals b.projectId into temp from tt in temp.DefaultIfEmpty() select new { a, tt, OperateDate = DbFunctions.TruncateTime(tt.SignTime) }; // query = query.OrderByDescending(t => t.a.CompanyName).Where(t => string.IsNullOrEmpty(projectNature) || projectNature.Contains(t.a.ProjectNature)); if (!string.IsNullOrEmpty(companyId)) { query = query.Where(p => p.a.CompanyId.ToString() == companyId); } if (!string.IsNullOrEmpty(startTime)) { DateTime stime = Convert.ToDateTime(startTime); query = query.Where(p => p.tt.SignTime >= stime); } if (!string.IsNullOrEmpty(endTime)) { DateTime stime = Convert.ToDateTime(endTime); query = query.Where(p => p.tt.SignTime <= stime); } if (!string.IsNullOrEmpty(ProName)) { query = query.Where(p => p.a.Name.Contains(ProName)); } if (!string.IsNullOrEmpty(userName)) { query = query.Where(p => p.tt.userName.Contains(userName)); } List <AttendanceBranchCountView> listView = new List <AttendanceBranchCountView>(); var list = query.GroupBy(m => new { m.a.CompanyId, m.a.CompanyName, m.OperateDate, m.a.Name, m.a.Id, m.tt.userId, m.tt.userName }).Select(m => new AttendanceBranchCountView { //sort = i + 1, CompanyId = m.Key.CompanyId.ToString(), CompanyName = m.Key.CompanyName, AttendanceCount = m.Count(),//总考勤人数 dateTime = m.Key.OperateDate.ToString(), Name = m.Key.Name, projectId = m.Key.Id.ToString(), userName = m.Key.userName, userID = m.Key.userId.ToString(), }).ToList(); if (list.Count > 0) { foreach (var item in list) { //if (item.a.Id.ToString()== "1211848000893227008" || item.a.Id.ToString() == "1211872754194845696") //{ AttendanceBranchCountView view = new AttendanceBranchCountView(); view.PreName = item.CompanyName ?? ""; //分公司 view.Name = item.Name ?? ""; //项目名字 view.dateTime = item.dateTime == null ? "" : item.dateTime == "" ? "" : item.dateTime.Substring(0, 11); view.userName = item.userName; //考勤人员 view.RegulationsCount = 1 * 2; // 总考勤次数(人数* 规定打卡次数) view.ActualCount = GetUserAttendanceUserCount(item.projectId, item.userID, view.dateTime); //实际打卡总数 if (view.ActualCount != 0 && view.RegulationsCount != 0) { double percent = Math.Round(view.ActualCount * 1.00 / view.RegulationsCount * 100.0, 4); view.AttendanceRate = percent.ToString() + "%";//得到5.8824% } listView.Add(view); // } } } if (list.Count > 0) { result.AllRowsCount = listView.Count; listView = listView.OrderByDescending(t => t.dateTime).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); result.Data = listView; result.Flag = EResultFlag.Success; } else { result.Data = null; result.Flag = EResultFlag.Failure; } return(result); }
public Result <List <AttendanceBranchCountView> > GetBranchProjectCount(string name, string companyId, string startTime, string endTime, int pageIndex, int pageSize) { Result <List <AttendanceBranchCountView> > result = new Result <List <AttendanceBranchCountView> >(); int num = DataOperateBusiness <Epm_ProjectAttendance> .Get().GetList(p => p.IsDelete == false).OrderBy(p => p.StartTime).GroupBy(p => p.StartTime).Count(); var query = from a in context.Epm_Project.Where(p => p.IsDelete == false) join b in context.Epm_SignInformation.Where(p => p.IsDelete == false) on a.Id equals b.projectId into temp from tt in temp.DefaultIfEmpty() select new { a, tt, OperateDate = DbFunctions.TruncateTime(tt.SignTime) }; if (!string.IsNullOrEmpty(companyId)) { query = query.Where(p => p.a.CompanyId.ToString() == companyId); } if (!string.IsNullOrEmpty(startTime)) { DateTime stime = Convert.ToDateTime(startTime); query = query.Where(p => p.tt.SignTime >= stime); } if (!string.IsNullOrEmpty(endTime)) { DateTime stime = Convert.ToDateTime(endTime); query = query.Where(p => p.tt.SignTime <= stime); } if (!string.IsNullOrEmpty(name)) { query = query.Where(p => p.a.Name.Contains(name)); } List <AttendanceBranchCountView> listView = new List <AttendanceBranchCountView>(); var list = query.GroupBy(m => new { m.a.CompanyId, m.a.CompanyName, m.OperateDate, m.a.Name, m.a.Id }).Select(m => new AttendanceBranchCountView { CompanyId = m.Key.CompanyId.ToString(), CompanyName = m.Key.CompanyName, AttendanceCount = m.Count(),//总考勤人数 dateTime = m.Key.OperateDate.ToString(), Name = m.Key.Name, projectId = m.Key.Id.ToString(), }).ToList(); if (list.Count > 0) { foreach (var item in list) { AttendanceBranchCountView view = new AttendanceBranchCountView(); view.PreName = item.CompanyName ?? ""; view.Name = item.Name ?? "";//项目名字 view.dateTime = item.dateTime == null ? "" : item.dateTime == "" ? "" : item.dateTime.Substring(0, 11); view.AttendanceCount = GetProjectAllActualCount(item.projectId.ToString()); //总考勤人数(每个项目下考勤的人数) view.RegulationsCount = view.AttendanceCount * num; //总考勤次数(人数*规定打卡次数) view.ActualCount = GetProjectActualCount(item.projectId.ToString(), view.dateTime, num); //实际打卡总数 if (view.ActualCount != 0 && view.RegulationsCount != 0) { double percent = Math.Round(view.ActualCount * 1.00 / view.RegulationsCount * 100.0, 4); view.AttendanceRate = percent.ToString() + "%";//得到5.8824% } listView.Add(view); } } if (list.Count > 0) { result.AllRowsCount = listView.Count; listView = listView.OrderByDescending(t => t.dateTime).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); result.Data = listView; result.Flag = EResultFlag.Success; } else { result.Data = null; result.Flag = EResultFlag.Failure; } return(result); }