using System; using System.Collections.Generic; using System.Linq; using System.Text; using EMIS.ViewModel.Specialtyclass; using EMIS.DataLogic.Repositories; using System.Linq.Expressions; using EMIS.Entities; using EMIS.ViewModel; using EMIS.ViewModel.SystemView; using EMIS.ViewModel.Students; namespace EMIS.DataLogic.Common.Specialtyclass { public class FacultymajorDAL { public FacultymajorRepository FacultymajorRepository { get; set; } public CollegeRepository CollegeRepository { get; set; } public GrademajorRepository GrademajorRepository { get; set; } public ClassmajorRepository ClassmajorRepository { get; set; } public StudentRepository StudentRepository { get; set; } public UserRepository UserRepository { get; set; } public DictionaryItemRepository DictionaryItemRepository { get; set; } /// /// 查询对应的院系专业信息View /// /// /// public IQueryable GetFacultymajorViewQueryable(Expression> expFacultymajor) { var query = from fa in FacultymajorRepository.GetList(expFacultymajor) join dicst in DictionaryItemRepository.GetList(x => x.DictionaryCode == DictionaryItem.CF_Standard.ToString()) on fa.StandardID equals dicst.Value into tempst from standard in tempst.DefaultIfEmpty() select new FacultymajorView { FacultymajorID = fa.FacultymajorID, Code = fa.Code, Name = fa.Name, Abbreviation = fa.Abbreviation, EnglishName = fa.EnglishName, NameCode = fa.Name + fa.Code, CampusID = fa.CF_College.CampusID, CampusNo = fa.CF_College.CF_Campus.No, CampusName = fa.CF_College.CF_Campus.Name, CollegeID = fa.CollegeID, CollegeCode = fa.CF_College.No, CollegeName = fa.CF_College.Name, StandardID = fa.StandardID, StandardName = standard.Name, EducationID = fa.EducationID, LearningformID = fa.LearningformID, LearnSystem = fa.LearnSystem, ScienceclassID = fa.ScienceclassID, LearningstyleID = fa.LearningstyleID, LearnPositionID = fa.LearnPositionID, TeacherIdentification = fa.TeacherIdentification, SetTime = fa.SetTime, Remark = fa.Remark, RecordStatus = fa.RecordStatus, CreateUserID = fa.CreateUserID, CreateTime = fa.CreateTime, ModifyUserID = fa.ModifyUserID, ModifyTime = fa.ModifyTime }; return query; } /// /// 查询对应的院系专业信息View(统计对应的年级专业数、学生人数) /// /// /// /// public IQueryable GetFacultymajorViewQueryable(Expression> expFacultymajor, Expression> expStudent) { var query = from fa in FacultymajorRepository.GetList(expFacultymajor) join dicst in DictionaryItemRepository.GetList(x => x.DictionaryCode == DictionaryItem.CF_Standard.ToString()) on fa.StandardID equals dicst.Value into tempst from standard in tempst.DefaultIfEmpty() join gr in ( from gr in GrademajorRepository.Entities group gr by gr.FacultymajorID into ggr select new { FacultymajorID = ggr.Key, GrademajorCount = ggr.Count() } ) on fa.FacultymajorID equals gr.FacultymajorID into tempgr from grfa in tempgr.DefaultIfEmpty() join sc in ( from sc in StudentRepository.GetList(expStudent) group sc by sc.CF_Classmajor.CF_Grademajor.FacultymajorID into gstu select new { FacultymajorID = gstu.Key, StudentCount = gstu.Count() } ) on fa.FacultymajorID equals sc.FacultymajorID into tempstu from stufa in tempstu.DefaultIfEmpty() select new FacultymajorView { FacultymajorID = fa.FacultymajorID, Code = fa.Code, Name = fa.Name, Abbreviation = fa.Abbreviation, EnglishName = fa.EnglishName, NameCode = fa.Name + fa.Code, CampusID = fa.CF_College.CampusID, CampusNo = fa.CF_College.CF_Campus.No, CampusName = fa.CF_College.CF_Campus.Name, CollegeID = fa.CollegeID, CollegeCode = fa.CF_College.No, CollegeName = fa.CF_College.Name, StandardID = fa.StandardID, StandardName = standard.Name, EducationID = fa.EducationID, LearningformID = fa.LearningformID, LearnSystem = fa.LearnSystem, ScienceclassID = fa.ScienceclassID, LearningstyleID = fa.LearningstyleID, LearnPositionID = fa.LearnPositionID, TeacherIdentification = fa.TeacherIdentification, SetTime = fa.SetTime, GrademajorCount = grfa.GrademajorCount == null ? 0 : grfa.GrademajorCount, StudentCount = stufa.StudentCount == null ? 0 : stufa.StudentCount, Remark = fa.Remark, RecordStatus = fa.RecordStatus, CreateUserID = fa.CreateUserID, CreateTime = fa.CreateTime, ModifyUserID = fa.ModifyUserID, ModifyTime = fa.ModifyTime }; return query; } /// /// 查询对应的年级专业信息View(根据院系专业信息,统计各年级专业对应的学生人数) /// /// /// /// public IQueryable GetGrademajorViwQueryable(Expression> expFacultymajor, Expression> expStudent) { var query = from fa in FacultymajorRepository.GetList(expFacultymajor) join gr in GrademajorRepository.Entities on fa.FacultymajorID equals gr.FacultymajorID join sc in ( from sc in StudentRepository.GetList(expStudent) group sc by sc.CF_Classmajor.CF_Grademajor.GrademajorID into g select new { GrademajorID = g.Key, StudentCount = g.Count() } ) on gr.GrademajorID equals sc.GrademajorID into dsc from esc in dsc.DefaultIfEmpty() select new GrademajorView { GrademajorID = gr.GrademajorID, Code = gr.Code, Name = gr.Name, Abbreviation = gr.Abbreviation, FacultymajorID = gr.CF_Facultymajor.FacultymajorID, FacultymajorCode = gr.CF_Facultymajor.Code, FacultymajorName = gr.CF_Facultymajor.Name, CampusID = gr.CF_Facultymajor.CF_College.CampusID, CampusNo = gr.CF_Facultymajor.CF_College.CF_Campus.No, CampusName = gr.CF_Facultymajor.CF_College.CF_Campus.Name, CollegeID = gr.CF_Facultymajor.CollegeID, CollegeCode = gr.CF_Facultymajor.CF_College.No, CollegeName = gr.CF_Facultymajor.CF_College.Name, SchoolyearID = gr.SchoolyearID, SchoolcodeID = gr.SchoolcodeID, StandardID = gr.CF_Facultymajor.StandardID, EducationID = gr.CF_Facultymajor.EducationID, LearningformID = gr.CF_Facultymajor.LearningformID, LearnSystem = gr.CF_Facultymajor.LearnSystem, GraduatingSemesterID = gr.GraduatingSemesterID, Value = gr.CF_Schoolyear.Value, GraduatingSemesterCode = gr.CF_Schoolyear.Code, Professional = gr.Professional, StudentCount = esc.StudentCount == null ? 0 : esc.StudentCount, SchoolAreaID = gr.SchoolAreaID, Remark = gr.Remark, RecordStatus = gr.RecordStatus, CreateUserID = gr.CreateUserID, CreateTime = gr.CreateTime, ModifyUserID = gr.ModifyUserID, ModifyTime = gr.ModifyTime }; return query; } /// /// 查询院系专业所对应的学生信息BaseStudentView /// /// /// /// public IQueryable GetBaseStudentViewQueryable(Expression> expFacultymajor, Expression> exp) { var query = from stu in StudentRepository.GetList(exp) join cl in ClassmajorRepository.Entities on stu.ClassmajorID equals cl.ClassmajorID join gr in GrademajorRepository.Entities on cl.GrademajorID equals gr.GrademajorID join fa in FacultymajorRepository.GetList(expFacultymajor) on gr.FacultymajorID equals fa.FacultymajorID join us in UserRepository.Entities on stu.UserID equals us.UserID select new BaseStudentView { UserID = stu.UserID, LoginID = us.LoginID, StudentNo = stu.StudentCardNo, UserName = us.Name, Sex = stu.Sex, IDNumber = stu.IDNumber, StudentStatus = stu.StudentStatus, InSchoolStatusID = stu.InSchoolStatusID, ClassmajorID = stu.ClassmajorID, ClassmajorCode = cl.No, ClassmajorName = cl.Name, ClassNum = cl.ClassNum == null ? 1 : cl.ClassNum, SchoolyearID = gr.SchoolyearID, GrademajorID = cl.GrademajorID, GrademajorCode = gr.Code, GrademajorName = gr.Name, FacultymajorID = gr.FacultymajorID, FacultymajorCode = fa.Code, FacultymajorName = fa.Name }; return query; } /// /// 查询院系专业对应的学制(Distinct去重) /// /// /// public IQueryable GetLearnSystemQueryable(Expression> exp) { var query = from fa in FacultymajorRepository.GetList(exp) select new FacultymajorView { LearnSystem = fa.LearnSystem, }; return query.Distinct(); } /// /// 查询院系专业对应的专业信息(Distinct去重) /// /// /// public IQueryable GetStandardQueryable(Expression> exp) { var query = from fa in FacultymajorRepository.GetList(exp) join dic in DictionaryItemRepository.Entities.Where(x => x.DictionaryCode == typeof(CF_Standard).Name) on fa.StandardID equals dic.Value select new StandardView { StandardID = fa.StandardID, StandardName = dic.Name }; return query.Distinct(); } } }