using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; using EMIS.Entities; using EMIS.ViewModel; using EMIS.ViewModel.UniversityManage.SpecialtyClassManage; using EMIS.ViewModel.EnrollManage.SpecialtyManage; using EMIS.DataLogic.Repositories; namespace EMIS.DataLogic.EnrollManage.SpecialtyManage { public class RecruitSpecialtyDAL { public RecruitSpecialtyRepository recruitSpecialtyRepository { get; set; } public CollegeRepository collegeRepository { get; set; } public SpecialtyApplyRepository specialtyApplyRepository { get; set; } public SpecialtyRepository specialtyRepository { get; set; } public SpecialtyClassSettingRepository SpecialtyClassSettingRepository { get; set; } public DictionaryItemRepository dictionaryItemRepository { get; set; } public FacultymajorRepository facultymajorRepository { get; set; } public GrademajorRepository grademajorRepository { get; set; } public ClassmajorRepository classmajorRepository { get; set; } public SchoolyearRepository schoolyearRepository { get; set; } public EducationTypeSettingRepository educationTypeSettingRepository { get; set; } /// /// 查询招生专业信息View /// /// /// public IQueryable GetRecruitSpecialtyViewQueryable(Expression> exp) { var query = from rs in recruitSpecialtyRepository.GetList(exp) join sp in specialtyRepository.Entities on rs.SpecialtyID equals sp.SpecialtyID join sc in SpecialtyClassSettingRepository.Entities on rs.SpecialtyID equals sc.SpecialtyID into tempsc from spcs in tempsc.DefaultIfEmpty() join dicst in dictionaryItemRepository.GetList(x => x.DictionaryCode == DictionaryItem.CF_Standard.ToString()) on sp.StandardID equals dicst.Value into tempst from standard in tempst.DefaultIfEmpty() select new RecruitSpecialtyView { RecruitSpecialtyID = rs.RecruitSpecialtyID, SpecialtyApplyID = rs.SpecialtyApplyID, CollegeID = rs.CollegeID, CollegeNo = rs.CF_College.No, CollegeName = rs.CF_College.Name, CampusID = rs.CF_College.CampusID, CampusCode = rs.CF_College.CF_Campus.No, CampusName = rs.CF_College.CF_Campus.Name, SpecialtyID = rs.SpecialtyID, StandardID = sp.StandardID, StandardCode = standard.Code, StandardName = standard.Name, EducationID = sp.EducationID, LearningformID = sp.LearningformID, LearnSystem = sp.LearnSystem, ScienceclassID = sp.ScienceclassID, PropertyID = sp.PropertyID, StandardTitle = sp.StandardTitle, StandardLevel = sp.StandardLevel, GradeID = rs.GradeID, SemesterID = rs.SemesterID, ApprovalStatus = rs.ApprovalStatus, ClassNumber = spcs.ClassNumber ?? 1, isGenerated = rs.isGenerated ?? false, RecordStatus = rs.RecordStatus, Remark = rs.Remark, CreateUserID = rs.CreateUserID, CreateTime = rs.CreateTime, ModifyUserID = rs.ModifyUserID, ModifyTime = rs.ModifyTime }; return query; } /// /// 查询招生专业中未新增的专业信息SpecialtyView /// /// /// /// public IQueryable GetSpecialtyViewNoAddQueryable(Expression> expSpecialty, Expression> expRecruitSpecialty) { var query = from sp in specialtyRepository.GetList(expSpecialty) join stdic in dictionaryItemRepository.GetList(x => x.DictionaryCode == DictionaryItem.CF_Standard.ToString()) on sp.StandardID equals stdic.Value into tempstdic from standard in tempstdic.DefaultIfEmpty() join rs in recruitSpecialtyRepository.GetList(expRecruitSpecialty) on sp.SpecialtyID equals rs.SpecialtyID into temprs from rsp in temprs.DefaultIfEmpty() where rsp.RecruitSpecialtyID == null select new SpecialtyView { SpecialtyID = sp.SpecialtyID, StandardID = sp.StandardID, StandardCode = standard.Code, StandardName = standard.Name, EducationID = sp.EducationID, LearningformID = sp.LearningformID, LearnSystem = sp.LearnSystem, ScienceclassID = sp.ScienceclassID, PropertyID = sp.PropertyID, StandardTitle = sp.StandardTitle, StandardLevel = sp.StandardLevel, RecordStatus = sp.RecordStatus, Remark = sp.Remark, CreateUserID = sp.CreateUserID, CreateTime = sp.CreateTime, ModifyUserID = sp.ModifyUserID, ModifyTime = sp.ModifyTime, }; return query; } /// /// 根据招生专业信息查询对应的院系专业信息(业务主键:专业ID(Value)、培养层次、学习形式、学制、院系所ID) /// /// /// public IQueryable GetFacultymajorByRecruitSpecialty(Expression> expRecruitSpecialty) { var query = from rs in recruitSpecialtyRepository.GetList(expRecruitSpecialty) join col in collegeRepository.Entities on rs.CollegeID equals col.CollegeID join sp in specialtyRepository.Entities on rs.SpecialtyID equals sp.SpecialtyID join fa in facultymajorRepository.Entities on new { sp.StandardID, sp.EducationID, sp.LearningformID, sp.LearnSystem, rs.CollegeID } equals new { fa.StandardID, fa.EducationID, fa.LearningformID, fa.LearnSystem, fa.CollegeID } select new RecruitSpecialtyClassView { RecruitSpecialtyID = rs.RecruitSpecialtyID, CollegeID = rs.CollegeID, CollegeNo = col.No, CollegeName = col.Name, GradeID = rs.GradeID, SpecialtyID = rs.SpecialtyID, StandardID = fa.StandardID, EducationID = fa.EducationID, LearningformID = fa.LearningformID, LearnSystem = fa.LearnSystem, FacultymajorID = fa.FacultymajorID, FacultymajorCode = fa.Code, FacultymajorName = fa.Name, isGenerated = rs.isGenerated ?? false }; return query; } /// /// 根据招生专业信息、院系专业信息查询对应的年级专业信息(业务主键:院系专业ID、年级) /// /// /// /// public IQueryable GetGrademajorByRecruitSpecialty(Expression> expRecruitSpecialty, Expression> expFacultymajor) { var query = from rs in recruitSpecialtyRepository.GetList(expRecruitSpecialty) join col in collegeRepository.Entities on rs.CollegeID equals col.CollegeID join sp in specialtyRepository.Entities on rs.SpecialtyID equals sp.SpecialtyID join fa in facultymajorRepository.GetList(expFacultymajor) on new { sp.StandardID, sp.EducationID, sp.LearningformID, sp.LearnSystem, rs.CollegeID } equals new { fa.StandardID, fa.EducationID, fa.LearningformID, fa.LearnSystem, fa.CollegeID } join gr in grademajorRepository.Entities on new { FacultymajorID = fa.FacultymajorID, GradeID = rs.GradeID, SemesterID = rs.SemesterID } equals new { FacultymajorID = gr.FacultymajorID.Value, GradeID = gr.GradeID, SemesterID = gr.SemesterID } select new RecruitSpecialtyClassView { RecruitSpecialtyID = rs.RecruitSpecialtyID, CollegeID = rs.CollegeID, CollegeNo = col.No, CollegeName = col.Name, GradeID = rs.GradeID, SpecialtyID = rs.SpecialtyID, StandardID = fa.StandardID, EducationID = fa.EducationID, LearningformID = fa.LearningformID, LearnSystem = fa.LearnSystem, FacultymajorID = fa.FacultymajorID, FacultymajorCode = fa.Code, FacultymajorName = fa.Name, GrademajorID = gr.GrademajorID, GrademajorCode = gr.Code, GrademajorName = gr.Name, SemesterID = rs.SemesterID, isGenerated = rs.isGenerated ?? false }; return query; } /// /// 根据招生专业信息、院系专业信息、年级专业信息查询对应的班级信息(业务主键:年级专业ID) /// /// /// /// /// public IQueryable GetClassmajorByRecruitSpecialty(Expression> expRecruitSpecialty, Expression> expFacultymajor, Expression> expGrademajor) { var query = from rs in recruitSpecialtyRepository.GetList(expRecruitSpecialty) join col in collegeRepository.Entities on rs.CollegeID equals col.CollegeID join sp in specialtyRepository.Entities on rs.SpecialtyID equals sp.SpecialtyID join fa in facultymajorRepository.GetList(expFacultymajor) on new { sp.StandardID, sp.EducationID, sp.LearningformID, sp.LearnSystem, rs.CollegeID } equals new { fa.StandardID, fa.EducationID, fa.LearningformID, fa.LearnSystem, fa.CollegeID } join gr in grademajorRepository.GetList(expGrademajor) on new { FacultymajorID = fa.FacultymajorID, GradeID = rs.GradeID, SemesterID = rs.SemesterID } equals new { FacultymajorID = gr.FacultymajorID.Value, GradeID = gr.GradeID, SemesterID = gr.SemesterID } join cl in classmajorRepository.Entities on gr.GrademajorID equals cl.GrademajorID select new RecruitSpecialtyClassView { RecruitSpecialtyID = rs.RecruitSpecialtyID, CollegeID = rs.CollegeID, CollegeNo = col.No, CollegeName = col.Name, GradeID = rs.GradeID, SpecialtyID = rs.SpecialtyID, StandardID = fa.StandardID, EducationID = fa.EducationID, LearningformID = fa.LearningformID, LearnSystem = fa.LearnSystem, FacultymajorID = fa.FacultymajorID, FacultymajorCode = fa.Code, FacultymajorName = fa.Name, GrademajorID = gr.GrademajorID, GrademajorCode = gr.Code, GrademajorName = gr.Name, SemesterID = rs.SemesterID, ClassmajorID = cl.ClassmajorID, ClassmajorNo = cl.No, ClassmajorName = cl.Name, isGenerated = rs.isGenerated ?? false }; return query; } /// /// 根据院系所、学制查询对应的院系专业信息当前MaxCode(院系所、学制分组查询) /// /// /// public IQueryable GetFacultymajorMaxCodeByCollegeLearnSystem(Expression> expFacultymajor) { var query = from fa in facultymajorRepository.GetList(expFacultymajor) group fa by new { fa.CollegeID, fa.LearnSystem } into g select new FacultymajorView { CollegeID = g.Key.CollegeID, LearnSystem = g.Key.LearnSystem, Code = g.Max(x => x.Code) }; return query; } /// /// 根据院系所、年级查询对应的年级专业信息当前MaxCode(院系所、年级分组查询) /// /// /// public IQueryable GetGrademajorMaxCodeByCollegeSchoolyear(Expression> expGrademajor) { var query = from gr in grademajorRepository.GetList(expGrademajor) join fa in facultymajorRepository.Entities on gr.FacultymajorID equals fa.FacultymajorID group gr by new { fa.CollegeID, gr.GradeID } into g select new GrademajorView { CollegeID = g.Key.CollegeID, GradeID = g.Key.GradeID, Code = g.Max(x => x.Code) }; return query; } /// /// 根据年级专业查询对应的班级信息当前MaxCode(年级专业分组查询) /// /// /// public IQueryable GetClassmajorMaxCodeByGrademajor(Expression> expClassmajor) { var query = from cl in classmajorRepository.GetList(expClassmajor) group cl by new { cl.GrademajorID, cl.CF_Grademajor.GradeID, cl.CF_Grademajor.CF_Facultymajor.CollegeID } into g select new ClassmajorView { GrademajorID = g.Key.GrademajorID, CollegeID = g.Key.CollegeID, GradeID = g.Key.GradeID, No = g.Max(x => x.No) }; return query; } } }