using System; using System.Collections.Generic; using System.Linq; using System.Text; using EMIS.DataLogic.Repositories; using EMIS.DataLogic.Common.CalendarManage; using EMIS.ViewModel.Students.HighBaseTable; using System.Linq.Expressions; using EMIS.Entities; namespace EMIS.DataLogic.Common.Students.HighBaseTable { public class InschoolOtherStatusDAL { public InschoolOtherStatusRepository InschoolOtherStatusRepository { get; set; } public DictionaryItemRepository DictionaryItemRepository { get; set; } public StudentRepository StudentRepository { get; set; } public StudentProfileRepository StudentProfileRepository { get; set; } public ClassmajorRepository ClassmajorRepository { get; set; } public GrademajorRepository GrademajorRepository { get; set; } public FacultymajorRepository FacultymajorRepository { get; set; } public SchoolyearRepository SchoolyearRepository { get; set; } public RecruitstudentsRepository RecruitstudentsRepository { get; set; } public InSchoolSettingRepository InSchoolSettingRepository { get; set; } public EducationTypeSettingRepository EducationTypeSettingRepository { get; set; } public SchoolYearDAL SchoolYearDAL { get; set; } public StudentReportRepository StudentReportRepository { get; set; } /// /// 少数民族统计 /// /// public IQueryable GetInschoolOtherStatusMinorityCount(int? schoolYear) { //var schYear = SchoolYearDAL.GetSchoolYearQueryable(x => x.IsCurrent).FirstOrDefault().Years; var query = from student in StudentRepository.GetList(x => x.NationID != (int)EMIS.ViewModel.CF_Nation.Han) join inschool in InSchoolSettingRepository.Entities.Where(x => x.IsSelected == true) on student.InSchoolStatusID equals inschool.InSchoolStatusID join profile in StudentProfileRepository.Entities on student.UserID equals profile.UserID join clmajor in ClassmajorRepository.Entities on student.ClassmajorID equals clmajor.ClassmajorID join grmajor in GrademajorRepository.Entities on clmajor.GrademajorID equals grmajor.GrademajorID join famajor in FacultymajorRepository.Entities on grmajor.FacultymajorID equals famajor.FacultymajorID join edutype in EducationTypeSettingRepository.Entities on famajor.EducationID equals edutype.EducationID //join report in // ( // from report in StudentReportRepository.GetList(x => x.RecordStatus > (int)EMIS.ViewModel.SYS_STATUS.UNUSABLE // && x.ReportStatusID == (int)EMIS.ViewModel.CF_ReportStatus.Havetoreportforduty) // join schoolyear in SchoolyearRepository.Entities on report.SchoolyearID equals schoolyear.SchoolyearID // where schoolyear.Years == schoolYear // select report.UserID // ).Distinct() on student.UserID equals report group student by new { student.NationID, edutype.EducationTypeID, } into g select new InschoolOtherStatusView { EducationTypeID = g.Key.EducationTypeID, Nation = g.Key.NationID, Minority = g.Count() }; return query; } //政治面貌分组统计 public IQueryable GetInschoolOtherStatusPoliticsCount(Expression> exp, int? schoolYear) { var schYear = SchoolYearDAL.GetSchoolYearQueryable(x => x.IsCurrent).FirstOrDefault().Years; var query = from student in StudentRepository.GetList(exp) join inschool in InSchoolSettingRepository.Entities.Where(x => x.IsSelected == true) on student.InSchoolStatusID equals inschool.InSchoolStatusID join profile in StudentProfileRepository.Entities on student.UserID equals profile.UserID join clmajor in ClassmajorRepository.Entities on student.ClassmajorID equals clmajor.ClassmajorID join grmajor in GrademajorRepository.Entities on clmajor.GrademajorID equals grmajor.GrademajorID join famajor in FacultymajorRepository.Entities on grmajor.FacultymajorID equals famajor.FacultymajorID join edutype in EducationTypeSettingRepository.Entities on famajor.EducationID equals edutype.EducationID //join report in // ( // from report in StudentReportRepository.GetList(x => x.RecordStatus > (int)EMIS.ViewModel.SYS_STATUS.UNUSABLE // && x.ReportStatusID == (int)EMIS.ViewModel.CF_ReportStatus.Havetoreportforduty) // join schoolyear in SchoolyearRepository.Entities on report.SchoolyearID equals schoolyear.SchoolyearID // where schoolyear.Years == schoolYear // select report.UserID // ).Distinct() on student.UserID equals report group student by new { student.PoliticsID, edutype.EducationTypeID, } into g select new InschoolOtherStatusView { EducationTypeID = g.Key.EducationTypeID, Politics = g.Key.PoliticsID, PoliticsCount = g.Count() }; return query; } } }