public List <AreaReportModel> GetReportList(AreaReportFilter filter, out int total, bool isPage = true) { using (DataProvider dp = new DataProvider()) { var list = data.GetReportList(dp, filter, out total, isPage); return(list); } }
public ActionResult GetList(AreaReportFilter filter) { if (filter.ListType == ListType.Personal) { filter.CreateUserId = CurrentUser.Id; } if (filter.ListType == ListType.Auditor) { filter.AuditUserId = CurrentUser.Id; } var data = service.GetReportList(filter, out int total); return(Json(new TableDataModel(total, data))); }
public List <AreaReportModel> GetReportList(DataProvider dp, AreaReportFilter filter, out int total, bool IsPage = true) { string waitsubmit = Model.EnumModel.ReportStatus.WaitSubmit.ToString(); var list = from hr in dp.RM_AreaReport.Where(m => !m.IsDel && m.ReportStatus != waitsubmit) join su1 in dp.System_User.Where(m => m.IsDel == false) on hr.CreateUser equals su1.Id join su2 in dp.System_User.Where(m => m.IsDel == false) on hr.AuditUser equals su2.Id into su2c from su2ci in su2c.DefaultIfEmpty() join emp in dp.PM_Employee on hr.CreateUser equals emp.RelateUserId into empc from empci in empc.DefaultIfEmpty() join dep in dp.PM_Department on empci.DepartmentId equals dep.Id into depc from depci in depc.DefaultIfEmpty() select new AreaReportModel() { Id = hr.Id, ReportCode = hr.ReportCode, ReportName = hr.ReportName, ReportTypeString = hr.ReportType, ReportStatusString = hr.ReportStatus, ChargeAmount = hr.ChargeAmount, ChargeStatus = hr.ChargeStatus, SubmitTime = hr.SubmitTime, CreateTime = hr.CreateTime, CreateUser = hr.CreateUser, CreateUserName = su1.TrueName, AuditTime = hr.AuditTime, AuditUser = hr.AuditUser, AuditUserName = su2ci.TrueName, AuditReason = hr.AuditReason, CreateDepName = depci.DepName, ReportEntruster = hr.ReportEntruster, ReportUser = hr.ReportUser, Salesman = hr.Salesman, SignAppraiserText = hr.SignAppraiserText }; if (filter.ReportType.IsNotNullAndCountGtZero()) { list = list.Where(m => filter.ReportType.Contains(m.ReportTypeString)); } if (filter.SignAppraiser.IsNotNullAndCountGtZero()) { list = list.Where(m => dp.RM_ReportDicItem .Where(x => x.DicGroupCode == "SignAppraiser" && x.ReportId == m.Id) .Select(x => x.DicItemId) .Any(x => filter.SignAppraiser.Contains(x))); } if (filter.ReportCode.IsNotNullOrWhiteSpace()) { list = list.Where(m => m.ReportCode.Contains(filter.ReportCode)); } if (filter.SignAppraiserText.IsNotNullOrWhiteSpace()) { list = list.Where(m => m.SignAppraiserText.Contains(filter.SignAppraiserText)); } if (filter.ReportName.IsNotNullOrWhiteSpace()) { list = list.Where(m => m.ReportName.Contains(filter.ReportName)); } if (filter.ChargeStatus.IsNotNullAndCountGtZero()) { list = list.Where(m => filter.ChargeStatus.Contains(m.ChargeStatus)); } if (filter.AuditStatus.IsNotNullAndCountGtZero()) { list = list.Where(m => filter.AuditStatus.Contains(m.ReportStatusString)); } if (filter.CreateUserName.IsNotNullOrWhiteSpace()) { list = list.Where(m => m.CreateUserName.Contains(filter.CreateUserName)); } if (filter.AuditUserName.IsNotNullOrWhiteSpace()) { list = list.Where(m => m.AuditUserName.Contains(filter.AuditUserName)); } if (filter.CreateUserId.HasValue) { list = list.Where(m => m.CreateUser == filter.CreateUserId.Value); } if (filter.AuditUserId.HasValue) { list = list.Where(m => dp.RM_ReportAudit.Where(x => x.ReportId == m.Id) .Select(x => x.AuditId) .Contains(filter.AuditUserId.Value) || dp.PM_Employee.Where(x => (dp.RM_ReportAudit.Where(y => y.ReportId == m.Id) .Select(y => y.AuditId)).Contains(x.DepartmentId.Value)) .Select(x => x.RelateUserId) .Contains(filter.AuditUserId.Value)); } if (filter.CreateBeginTime.HasValue) { list = list.Where(m => m.SubmitTime >= filter.CreateBeginTime.Value); } if (filter.CreateEndTime.HasValue) { list = list.Where(m => m.SubmitTime <= filter.CreateEndTime.Value); } if (filter.AuditBeginTime.HasValue) { list = list.Where(m => m.AuditTime >= filter.AuditBeginTime.Value); } if (filter.AuditEndTime.HasValue) { list = list.Where(m => m.AuditTime <= filter.AuditEndTime.Value); } list = list.OrderBy(m => m.CreateTime); total = list.Count(); List <AreaReportModel> temp; if (IsPage) { temp = list.Skip(filter.Skip).Take(filter.PageSize).ToList(); } else { temp = list.ToList(); } if (temp.IsNotNullAndCountGtZero()) { var reportIdList = temp.Select(m => m.Id); var signAppraiserCollect = (from a in dp.RM_ReportDicItem.Where(m => reportIdList.Contains(m.ReportId) && m.DicGroupCode == "SignAppraiser") join b in dp.System_User on a.DicItemId equals b.Id select new { a.ReportId, SignAppraiserName = b.TrueName }).ToList(); foreach (var hr in temp) { hr.SignAppraiserName = signAppraiserCollect.Where(m => m.ReportId == hr.Id.Value).Select(m => m.SignAppraiserName).ToList(); } } return(temp); }