DifferentDynamicDAL.cs 55 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using EMIS.DataLogic.Repositories;
  6. using EMIS.Entities;
  7. using EMIS.ViewModel.DifferentDynamic;
  8. using System.Linq.Expressions;
  9. using EMIS.DataLogic.Common.CalendarManage;
  10. using EMIS.DataLogic.SystemDAL;
  11. using EMIS.ViewModel;
  12. using EMIS.DataLogic.UniversityManage.SpecialtyClassManage;
  13. using EMIS.Utility;
  14. using EMIS.ViewModel.Students;
  15. using EMIS.ViewModel.ExaminationManage;
  16. namespace EMIS.DataLogic.Common.Students
  17. {
  18. public class DifferentDynamicDAL
  19. {
  20. public DifferentDynamicRepository DifferentDynamicRepository { get; set; }
  21. public DictionaryDAL DictionaryDAL { get; set; }
  22. public UserRepository UserRepository { get; set; }
  23. public StudentRepository StudentRepository { get; set; }
  24. public ClassmajorRepository ClassmajorRepository { get; set; }
  25. public GrademajorRepository GrademajorRepository { get; set; }
  26. public FacultymajorRepository FacultymajorRepository { get; set; }
  27. public CollegeRepository CollegeRepository { get; set; }
  28. public CampusRepository CampusRepository { get; set; }
  29. public SchoolyearRepository SchoolyearRepository { get; set; }
  30. public StudentReportRepository StudentReportRepository { get; set; }
  31. public EducationMissionRepository EducationMissionRepository { get; set; }//教学任务班主表
  32. public EducationSchedulingClassRepository EducationSchedulingClassRepository { get; set; }
  33. public ExaminationPlanRepository ExaminationPlanRepository { get; set; }//考场安排
  34. public EvaluationSettingRepository EvaluationSettingRepository { get; set; }//教学评价
  35. public FinalExaminationRepository FinalExaminationRepository { get; set; } //期末设定
  36. public EducationMissionClassRepository EducationMissionClassRepository { get; set; }
  37. public ExaminationRoomStudentRepository ExaminationRoomStudentRepository { get; set; }
  38. public ExaminationRoomLayoutRepository ExaminationRoomLayoutRepository { get; set; }
  39. public ScoreRepository ScoreRepository { get; set; }
  40. public SpecialtyPlanRepository SpecialtyPlanRepository { get; set; }
  41. public StudentsOrderRepository StudentsOrderRepository { get; set; }
  42. public StudentDistributeRepository StudentDistributeRepository { get; set; }
  43. public ExecutablePlanRepository ExecutablePlanRepository { get; set; }
  44. public DifferentDynamicReportRepository DifferentDynamicReportRepository { get; set; }
  45. public InSchoolSettingRepository InSchoolSettingRepository { get; set; }
  46. public IQueryable<DifferentDynamicView> GetDifferentDynamicQueryable(Expression<Func<CF_DifferentDynamic, bool>> filter,
  47. Expression<Func<CF_Grademajor, bool>> gradeFilter = null,
  48. Expression<Func<CF_Facultymajor, bool>> facultyFilter = null,
  49. Expression<Func<CF_College, bool>> collegeFilter = null)
  50. {
  51. if (gradeFilter == null)
  52. {
  53. gradeFilter = (x => true);
  54. }
  55. if (facultyFilter == null)
  56. {
  57. facultyFilter = (x => true);
  58. }
  59. if (collegeFilter == null)
  60. {
  61. collegeFilter = (x => true);
  62. }
  63. var currentStudentReportQuery = from c in StudentReportRepository.GetList(w => w.CF_Schoolyear.IsCurrent == true)
  64. join d in DictionaryDAL.GetDictionaryItemQuery(DictionaryItem.CF_ReportStatus) on c.ReportStatus equals d.Value
  65. select new
  66. {
  67. c.UserID,
  68. c.ReportStatus,
  69. d.Name,
  70. };
  71. var query = from c in DifferentDynamicRepository.Entities.Where(filter)
  72. join studentUser in UserRepository.Entities on c.UserID equals studentUser.UserID
  73. join student in StudentRepository.Entities on studentUser.UserID equals student.UserID
  74. join studentClass in ClassmajorRepository.Entities on student.ClassmajorID equals studentClass.ClassmajorID
  75. join grade in GrademajorRepository.Entities.Where(gradeFilter) on studentClass.GrademajorID equals grade.GrademajorID
  76. join faculty in FacultymajorRepository.Entities.Where(facultyFilter) on grade.FacultymajorID equals faculty.FacultymajorID
  77. join college in CollegeRepository.Entities.Where(collegeFilter) on faculty.CollegeID equals college.CollegeID
  78. join creator in UserRepository.Entities on c.CreateUserID equals creator.UserID into tmp from creator in tmp.DefaultIfEmpty()
  79. join j1 in ClassmajorRepository.Entities on c.BeforeClassmajorID equals j1.ClassmajorID into jv1
  80. from classmajor in jv1.DefaultIfEmpty()
  81. join aj1 in ClassmajorRepository.Entities on c.AfterClassmajorID equals aj1.ClassmajorID into ajv1
  82. from afterClassmajor in ajv1.DefaultIfEmpty()
  83. join schoolyear in SchoolyearRepository.Entities on c.SchoolyearID equals schoolyear.SchoolyearID
  84. join rd5 in SchoolyearRepository.Entities on c.ReturnSchoolyearID equals rd5.SchoolyearID into dv5
  85. from rschoolyear in dv5.DefaultIfEmpty()
  86. join j2 in currentStudentReportQuery on c.UserID equals j2.UserID into jv2
  87. from currentStudentReport in jv2.DefaultIfEmpty()
  88. select new DifferentDynamicView
  89. {
  90. EntityID = c.StudentChangeID,
  91. Name = studentUser.Name,
  92. SchoolyearID = c.SchoolyearID,
  93. SchoolyearCode = schoolyear.Code,
  94. UserID = c.UserID,
  95. LoginID = studentUser.LoginID,
  96. ApplyTypeID = c.ChangeApplyTypeID,
  97. ApplyRemark = c.Description,
  98. //Source = c.Source,
  99. DifferentDynamicType = c.ChangeTypeID,
  100. //Direction = c.Direction,
  101. AfterClassmajorID = c.AfterClassmajorID,
  102. AfterInSchoolStatusID = c.AfterInSchoolStatusID,
  103. ClassmajorID = c.BeforeClassmajorID,
  104. ClassmajorName = classmajor.Name,
  105. InSchoolStatusID = c.BeforeInSchoolStatusID,
  106. //AfterStandardID = c.AfterStandardID,
  107. AfterStudentStatus = c.AfterStudentStatus,
  108. EntityApprovalStatus = c.ApprovalStatus,
  109. BeginTime = c.ChangeDate,
  110. EndTime = c.ChangeDate,
  111. Reason = c.ChangeReasonID,
  112. Remark = c.Remark,
  113. ReturnSchoolyearID = c.ReturnSchoolyearID,
  114. ReturnSchoolyearCode = rschoolyear.Code,
  115. //StandardID = c.StandardID,
  116. StudentStatus = c.BeforeStudentStatus,
  117. AfterClassmajorName = afterClassmajor.Name,
  118. EntityCreateTime = c.ChangeDate,
  119. EntityApplyDate = c.ChangeDate,
  120. EntityCreateUserID = c.CreateUserID,
  121. CreateUser = creator.Name,
  122. CollegeID = c.CF_Student.CF_Classmajor.CF_Grademajor.CF_Facultymajor.CollegeID,
  123. ReportStatus = currentStudentReport.ReportStatus,
  124. ReportStatusName = currentStudentReport.Name
  125. };
  126. return query;
  127. }
  128. public IQueryable<DifferentDynamicStatisticsView> GetDifferentDynamicStatisticsQueryable(Expression<Func<CF_DifferentDynamic, bool>> filter)
  129. {
  130. var query = from c in DifferentDynamicRepository.GetList(filter)
  131. join d in DictionaryDAL.GetDictionaryItemQuery(typeof(CF_ChangeType).Name) on c.ChangeTypeID equals d.Value
  132. group c by new
  133. {
  134. c.CF_Student.CF_Classmajor.CF_Grademajor.CF_Facultymajor.CF_College.CampusID,
  135. c.CF_Student.CF_Classmajor.CF_Grademajor.CF_Facultymajor.CollegeID,
  136. CollegeName = c.CF_Student.CF_Classmajor.CF_Grademajor.CF_Facultymajor.CF_College.Name,
  137. c.ChangeTypeID,
  138. DifferentDynamicTypeName = d.Name
  139. } into g
  140. select new DifferentDynamicStatisticsView
  141. {
  142. CampusID = g.Key.CampusID,
  143. CollegeID = g.Key.CollegeID,
  144. CollegeName = g.Key.CollegeName,
  145. DifferentDynamicType = g.Key.ChangeTypeID,
  146. DifferentDynamicTypeName = g.Key.DifferentDynamicTypeName,
  147. Quantity = g.Count(),
  148. };
  149. return query;
  150. }
  151. #region 异动审核完成时对于异动前班级对应的记录,删掉那个异动的学生的名单,对于异动后班级对应的记录,增加这个学生的名单
  152. #region 1.0 教学任务
  153. //教学任务
  154. public IQueryable<StudentsView> GetEducationSchedulingClassStudent(Expression<Func<CF_DifferentDynamic, bool>> filter)
  155. {
  156. var query = from df in DifferentDynamicRepository.GetList(filter)
  157. join iss in InSchoolSettingRepository.Entities on df.AfterInSchoolStatusID equals iss.InSchoolStatusID into diss
  158. from iss in diss.DefaultIfEmpty()
  159. join biss in InSchoolSettingRepository.Entities.Where(x => x.IsSelected == true)
  160. on df.BeforeInSchoolStatusID equals biss.InSchoolStatusID
  161. join sy in SchoolyearRepository.Entities on df.SchoolyearID equals sy.SchoolyearID
  162. from em in EducationMissionRepository.Entities.Where(x => x.CF_Schoolyear.Value >= sy.Value)
  163. join emc in EducationMissionClassRepository.Entities on em.EducationMissionID equals emc.EducationMissionID
  164. from emccc in emc.CF_Classmajor.Where(x => x.ClassmajorID == df.BeforeClassmajorID)
  165. join eds in EducationSchedulingClassRepository.Entities on emc.EducationMissionClassID equals eds.EducationMissionClassID
  166. from edscc in eds.CF_Student.Where(x => x.UserID == df.UserID.Value)
  167. where df.AfterClassmajorID != df.BeforeClassmajorID || !(iss.IsSelected ?? false)
  168. select new StudentsView
  169. {
  170. TepTableID = eds.EducationSchedulingClassID,
  171. UserID = df.UserID.Value,
  172. };
  173. return query;
  174. }
  175. #endregion
  176. #region 2.0 考场安排
  177. // 考场安排
  178. public IQueryable<StudentsView> GetExaminationPlanStudent(Expression<Func<CF_DifferentDynamic, bool>> filter)
  179. {
  180. //期末设定、补考设定为未开放及可录入状态的才进行学生信息调整
  181. //对于补考的记录,由于并没有明确的任务班,因此名单无法删除
  182. Expression<Func<EX_ExaminationPlan, bool>> exp =
  183. x => x.RecordStatus != (int)CF_ApprovalStatus.Submitted;
  184. var query = from df in DifferentDynamicRepository.GetList(filter)
  185. join iss in InSchoolSettingRepository.Entities on df.AfterInSchoolStatusID equals iss.InSchoolStatusID into diss
  186. from iss in diss.DefaultIfEmpty()
  187. join biss in InSchoolSettingRepository.Entities.Where(x => x.IsSelected == true) on df.BeforeInSchoolStatusID equals biss.InSchoolStatusID
  188. join sy in SchoolyearRepository.Entities on df.SchoolyearID equals sy.SchoolyearID
  189. from em in EducationMissionRepository.Entities.Where(x => x.CF_Schoolyear.Value >= sy.Value)
  190. //on df.CF_Schoolyear.Value >= schoolYearValue equals em.CF_Schoolyear.Value >= schoolYearValue
  191. join emc in EducationMissionClassRepository.Entities on em.EducationMissionID equals emc.EducationMissionID
  192. from emccc in emc.CF_Classmajor.Where(x => x.ClassmajorID == df.BeforeClassmajorID)
  193. join explan in ExaminationPlanRepository.GetList(exp) on (Guid)emc.EducationMissionID equals (Guid)explan.EducationMissionID
  194. from exStudent in explan.CF_Student.Where(x => x.UserID == df.UserID.Value)
  195. where df.AfterClassmajorID != df.BeforeClassmajorID || !(iss.IsSelected ?? false)
  196. select new StudentsView
  197. {
  198. TepTableID = explan.ExaminationPlanID,
  199. UserID = df.UserID.Value,
  200. };
  201. return query;
  202. }
  203. public IQueryable<StudentsView> GetExaminationRoomStudent(Expression<Func<CF_DifferentDynamic, bool>> filter)
  204. {
  205. //期末设定、补考设定为未开放及可录入状态的才进行学生信息调整
  206. //对于补考的记录,由于并没有明确的任务班,因此名单无法删除
  207. Expression<Func<EX_ExaminationPlan, bool>> exp =
  208. x => x.RecordStatus != (int)CF_ApprovalStatus.Submitted;
  209. var query = from df in DifferentDynamicRepository.GetList(filter)
  210. join iss in InSchoolSettingRepository.Entities on df.AfterInSchoolStatusID equals iss.InSchoolStatusID into diss
  211. from iss in diss.DefaultIfEmpty()
  212. join biss in InSchoolSettingRepository.Entities.Where(x => x.IsSelected == true) on df.AfterInSchoolStatusID equals biss.InSchoolStatusID
  213. join sy in SchoolyearRepository.Entities on df.SchoolyearID equals sy.SchoolyearID
  214. from em in EducationMissionRepository.Entities.Where(x => x.CF_Schoolyear.Value >= sy.Value)
  215. //on df.CF_Schoolyear.Value >= schoolYearValue equals em.CF_Schoolyear.Value >= schoolYearValue
  216. join emc in EducationMissionClassRepository.Entities on em.EducationMissionID equals emc.EducationMissionID
  217. from emccc in emc.CF_Classmajor.Where(x => x.ClassmajorID == df.BeforeClassmajorID)
  218. join explan in ExaminationPlanRepository.GetList(exp) on (Guid)emc.EducationMissionID equals (Guid)explan.EducationMissionID
  219. from exRoomLayout in explan.EX_ExaminationRoomLayout.DefaultIfEmpty()
  220. from exStudent in exRoomLayout.EX_ExaminationRoomStudent.Where(x => x.UserID == df.UserID)
  221. where df.AfterClassmajorID != df.BeforeClassmajorID || !(iss.IsSelected ?? false)
  222. select new StudentsView
  223. {
  224. TepTableID = exStudent.ExaminationRoomStudentID,
  225. UserID = df.UserID.Value,
  226. };
  227. return query;
  228. }
  229. #endregion
  230. #region 3.0 成绩管理
  231. //成绩管理
  232. public IQueryable<StudentsView> GetScoreStudent(Expression<Func<CF_DifferentDynamic, bool>> filter)
  233. {
  234. //期末设定、补考设定为未开放及可录入状态的才进行学生信息调整
  235. var query = from df in DifferentDynamicRepository.GetList(filter)
  236. join iss in InSchoolSettingRepository.Entities on df.AfterInSchoolStatusID equals iss.InSchoolStatusID into diss
  237. from iss in diss.DefaultIfEmpty()
  238. join biss in InSchoolSettingRepository.Entities.Where(x => x.IsSelected == true) on df.BeforeInSchoolStatusID equals biss.InSchoolStatusID
  239. join sy in SchoolyearRepository.Entities on df.SchoolyearID equals sy.SchoolyearID
  240. from em in EducationMissionRepository.Entities.Where(x => x.CF_Schoolyear.Value >= sy.Value)
  241. //on df.CF_Schoolyear.Value >= schoolYearValue equals em.CF_Schoolyear.Value >= schoolYearValue
  242. join emc in EducationMissionClassRepository.Entities on em.EducationMissionID equals emc.EducationMissionID
  243. from emccc in emc.CF_Classmajor.Where(x => x.ClassmajorID == df.BeforeClassmajorID)
  244. from fex in FinalExaminationRepository.Entities.Where(x => (x.ApprovalStatus == (int)CF_ScoreState.CanInput
  245. || x.ApprovalStatus == (int)CF_ScoreState.NoCanInput)
  246. && x.ExaminationType == (int)CF_ExaminationType.FinalExamination && x.EducationMissionID == em.EducationMissionID
  247. && x.CF_Schoolyear.Value >= sy.Value)
  248. //on em.EducationMissionID equals fex.EducationMissionID
  249. from fexcc in fex.ER_FinalExaminationStudent.Where(x => x.UserID == df.UserID.Value)
  250. where df.AfterClassmajorID != df.BeforeClassmajorID || !(iss.IsSelected ?? false)
  251. select new StudentsView
  252. {
  253. TepTableID = fex.FinalExaminationID,
  254. UserID = df.UserID.Value,
  255. };
  256. return query;
  257. }
  258. #endregion
  259. #region 4.0 教学评价
  260. //教学评价
  261. public IQueryable<StudentsView> GetEvaluationSettingStudent(Expression<Func<CF_DifferentDynamic, bool>> filter)
  262. {
  263. //评价设定为未开放状态才进行学生信息调整
  264. Expression<Func<EM_EvaluationSetting, bool>> exp = x => x.OpenStatus == (int)CF_YesOrNoStatus.No;
  265. var query = from df in DifferentDynamicRepository.GetList(filter)
  266. join iss in InSchoolSettingRepository.Entities on df.AfterInSchoolStatusID equals iss.InSchoolStatusID into diss
  267. from iss in diss.DefaultIfEmpty()
  268. join biss in InSchoolSettingRepository.Entities.Where(x => x.IsSelected == true) on df.BeforeInSchoolStatusID equals biss.InSchoolStatusID
  269. join sy in SchoolyearRepository.Entities on df.SchoolyearID equals sy.SchoolyearID
  270. from em in EducationMissionRepository.Entities.Where(x => x.CF_Schoolyear.Value >= sy.Value)
  271. // on df.CF_Schoolyear.Value >= schoolYearValue equals em.CF_Schoolyear.Value >= schoolYearValue
  272. join emc in EducationMissionClassRepository.Entities on em.EducationMissionID equals emc.EducationMissionID
  273. from emccc in emc.CF_Classmajor.Where(x => x.ClassmajorID == df.BeforeClassmajorID)
  274. join eds in EvaluationSettingRepository.GetList(exp) on emc.EducationMissionClassID equals eds.EducationMissionClassID
  275. from edscc in eds.CF_Student.Where(x => x.UserID == df.UserID.Value)
  276. where df.AfterClassmajorID != df.BeforeClassmajorID || !(iss.IsSelected ?? false)
  277. select new StudentsView
  278. {
  279. TepTableID = eds.EvaluationSettingID,
  280. UserID = df.UserID.Value,
  281. };
  282. return query;
  283. }
  284. #endregion
  285. #region 5.0 教学任务Add
  286. //教学任务
  287. public IQueryable<StudentRelateCourseView> GetStudentRelateCourseViewQueryable(Expression<Func<CF_DifferentDynamic, bool>> filter)
  288. {
  289. var sql = (from change in DifferentDynamicRepository.GetList(filter)
  290. join student in StudentRepository.Entities on change.UserID equals student.UserID
  291. join user in UserRepository.Entities on student.UserID equals user.UserID
  292. join classmajor in ClassmajorRepository.Entities on change.AfterClassmajorID equals classmajor.ClassmajorID
  293. join currentYear in SchoolyearRepository.Entities on change.SchoolyearID equals currentYear.SchoolyearID
  294. from schoolyear in SchoolyearRepository.Entities.Where(x => x.Value >= currentYear.Value)
  295. //查出相关的课程
  296. join missionClass in
  297. (
  298. from mission in EducationMissionRepository.Entities
  299. join missionClass in EducationMissionClassRepository.Entities on mission.EducationMissionID equals missionClass.EducationMissionID
  300. from classmajor in missionClass.CF_Classmajor
  301. join schedulingClass in EducationSchedulingClassRepository.Entities on missionClass.EducationMissionClassID equals schedulingClass.EducationMissionClassID
  302. group new { missionClass, schedulingClass }
  303. by new { mission.SchoolyearID, missionClass.CoursematerialID, missionClass.TeachingModeID, classmajor.ClassmajorID, missionClass.OptionalCourseTypeID, missionClass.HandleModeID }
  304. into g
  305. select new
  306. {
  307. g.Key.SchoolyearID,
  308. g.Key.CoursematerialID,
  309. g.Key.ClassmajorID,
  310. g.Key.TeachingModeID,
  311. g.Key.OptionalCourseTypeID,
  312. g.Key.HandleModeID,
  313. SchedulingClassList = g.Select(x => new StudentRelateSchedulingClassView
  314. {
  315. EducationSchedulingClassID = x.schedulingClass.EducationSchedulingClassID,
  316. EducationMissionClassName = x.missionClass.Name,
  317. ClassmajorIDList = x.schedulingClass.CF_Student.Select(w => w.ClassmajorID),
  318. StudentCount = x.schedulingClass.CF_Student.Count(),
  319. MinLoginID = x.schedulingClass.CF_Student.Min(w => w.Sys_User.LoginID),
  320. MaxLoginID = x.schedulingClass.CF_Student.Max(w => w.Sys_User.LoginID)
  321. })
  322. }) on new { SchoolyearID = (Guid?)schoolyear.SchoolyearID, classmajor.ClassmajorID }
  323. equals new { missionClass.SchoolyearID, missionClass.ClassmajorID }
  324. //查已经加入的任务班并排除,防止重复插入
  325. join schedulingClass in
  326. (
  327. from mission in EducationMissionRepository.Entities
  328. join missionClass in EducationMissionClassRepository.Entities on mission.EducationMissionID equals missionClass.EducationMissionID
  329. from classmajor in missionClass.CF_Classmajor
  330. join schedulingClass in EducationSchedulingClassRepository.Entities on missionClass.EducationMissionClassID equals schedulingClass.EducationMissionClassID
  331. from student in schedulingClass.CF_Student
  332. select new { mission.SchoolyearID, missionClass.CoursematerialID, missionClass.TeachingModeID, classmajor.ClassmajorID, missionClass.OptionalCourseTypeID, missionClass.HandleModeID, student.UserID }
  333. ) on new { missionClass.SchoolyearID, missionClass.CoursematerialID, missionClass.TeachingModeID, missionClass.ClassmajorID, missionClass.OptionalCourseTypeID, missionClass.HandleModeID, student.UserID }
  334. equals new { schedulingClass.SchoolyearID, schedulingClass.CoursematerialID, schedulingClass.TeachingModeID, schedulingClass.ClassmajorID, schedulingClass.OptionalCourseTypeID, schedulingClass.HandleModeID, schedulingClass.UserID }
  335. into dschedulingClass
  336. from schedulingClass in dschedulingClass.DefaultIfEmpty()
  337. where schedulingClass.SchoolyearID == null
  338. select new StudentRelateCourseView
  339. {
  340. UserID = student.UserID,
  341. LoginID = user.LoginID,
  342. ClassmajorID = student.ClassmajorID,
  343. SchoolyearID = missionClass.SchoolyearID,
  344. CoursematerialID = missionClass.CoursematerialID,
  345. TeacheModeID = missionClass.TeachingModeID,
  346. OptionalCourseTypeID = missionClass.OptionalCourseTypeID,
  347. HandleModeID = missionClass.HandleModeID,
  348. StudentRelateSchedulingClassViewList = missionClass.SchedulingClassList
  349. });
  350. return sql;
  351. }
  352. //教学任务
  353. public IList<StudentsView> GetEducationSchedulingClassStudentInsert(Expression<Func<CF_DifferentDynamic, bool>> filter)
  354. {
  355. var result = new List<StudentsView>();
  356. //这块只针对必修课,因为只有必修课才会强制必须要上,选修课需要学生自己去报名
  357. #region 情况1:如果找到同班学生,并且该组有学号小于他的人的,加入最后一组
  358. var query1 = from tem in
  359. (from dd in DifferentDynamicRepository.GetList(filter)
  360. join u in UserRepository.Entities on dd.UserID equals u.UserID
  361. join sy in SchoolyearRepository.Entities on dd.SchoolyearID equals sy.SchoolyearID
  362. from em in
  363. (
  364. from em in EducationMissionRepository.Entities
  365. where em.CF_Schoolyear.Value >= sy.Value
  366. select new { em.EducationMissionID, em.SchoolyearID, em.CF_Schoolyear.Value }
  367. )
  368. join emc in EducationMissionClassRepository.GetList(x => x.HandleModeID == (int)CF_HandleMode.RequiredCourse) on em.EducationMissionID equals emc.EducationMissionID
  369. from emcc in emc.CF_Classmajor.Where(x => x.ClassmajorID == dd.AfterClassmajorID)
  370. join esc in EducationSchedulingClassRepository.Entities on emc.EducationMissionClassID equals esc.EducationMissionClassID
  371. from s in esc.CF_Student.Where(x => x.ClassmajorID == dd.AfterClassmajorID)
  372. from su in UserRepository.Entities.Where(x => s.UserID == x.UserID && u.LoginID.CompareTo(x.LoginID) > 0)
  373. group emc by new { ID = dd.StudentChangeID, em.SchoolyearID, emcc.ClassmajorID, emc.CoursematerialID, emc.TeachingModeID } into g
  374. select new
  375. {
  376. g.Key.ID,
  377. g.Key.SchoolyearID,
  378. g.Key.ClassmajorID,
  379. g.Key.CoursematerialID,
  380. g.Key.TeachingModeID,
  381. MinName = g.Min(x => x.Name)
  382. }
  383. )
  384. join dd in DifferentDynamicRepository.Entities on tem.ID equals dd.StudentChangeID
  385. join iss in InSchoolSettingRepository.Entities.Where(x => x.IsSelected == true) on dd.AfterInSchoolStatusID equals iss.InSchoolStatusID
  386. join em in EducationMissionRepository.Entities on tem.SchoolyearID equals em.SchoolyearID
  387. join emc in EducationMissionClassRepository.GetList(x => x.HandleModeID == (int)CF_HandleMode.RequiredCourse)
  388. on new { EducationMissionID = (Guid?)em.EducationMissionID, tem.TeachingModeID, Name = tem.MinName }
  389. equals new { emc.EducationMissionID, emc.TeachingModeID, emc.Name }
  390. join esc in EducationSchedulingClassRepository.Entities on emc.EducationMissionClassID equals esc.EducationMissionClassID
  391. group esc by new { ID = dd.StudentChangeID, dd.UserID, em.SchoolyearID, emc.CoursematerialID, emc.TeachingModeID } into g
  392. select new
  393. {
  394. g.Key.ID,
  395. g.Key.UserID,
  396. g.Key.SchoolyearID,
  397. g.Key.CoursematerialID,
  398. g.Key.TeachingModeID,
  399. MinEducationSchedulingClassID = g.Min(x => x.EducationSchedulingClassID.ToString())
  400. };
  401. result.AddRange(query1.ToList().Select(x => new StudentsView { TepTableID = new Guid(x.MinEducationSchedulingClassID), UserID = x.UserID.Value }).ToList());
  402. #endregion
  403. #region 情况2:如果找到同班学生,并且没有学号小于他的人的,加入第一组
  404. var query2MissionClassQuery = (from tdd in DifferentDynamicRepository.Entities
  405. join sy in SchoolyearRepository.Entities on tdd.SchoolyearID equals sy.SchoolyearID
  406. from em in
  407. (
  408. from em in EducationMissionRepository.Entities
  409. where em.CF_Schoolyear.Value >= sy.Value
  410. select new { em.EducationMissionID, em.SchoolyearID, em.CF_Schoolyear.Value }
  411. )
  412. join emc in EducationMissionClassRepository.GetList(x => x.HandleModeID == (int)CF_HandleMode.RequiredCourse) on em.EducationMissionID equals emc.EducationMissionID
  413. from emcc in emc.CF_Classmajor
  414. join esc in EducationSchedulingClassRepository.Entities on emc.EducationMissionClassID equals esc.EducationMissionClassID
  415. from s in esc.CF_Student
  416. join su in UserRepository.Entities on s.UserID equals su.UserID
  417. where emcc.ClassmajorID == tdd.AfterClassmajorID && s.ClassmajorID == tdd.AfterClassmajorID
  418. group new { emc, su } by new { ID = tdd.StudentChangeID, em.SchoolyearID, emcc.ClassmajorID, emc.CoursematerialID, emc.TeachingModeID } into g
  419. select new
  420. {
  421. g.Key.ID,
  422. g.Key.SchoolyearID,
  423. g.Key.ClassmajorID,
  424. g.Key.CoursematerialID,
  425. g.Key.TeachingModeID,
  426. MinName = g.Max(x => x.emc.Name),
  427. MinLoginID = g.Min(x => x.su.LoginID)
  428. }
  429. );
  430. var query2 = from dd in DifferentDynamicRepository.GetList(filter)
  431. join iss in InSchoolSettingRepository.Entities.Where(x => x.IsSelected == true) on dd.AfterInSchoolStatusID equals iss.InSchoolStatusID
  432. join u in UserRepository.Entities on dd.UserID equals u.UserID
  433. from tem in
  434. query2MissionClassQuery.Where(x => dd.StudentChangeID == x.ID && u.LoginID.CompareTo(x.MinLoginID) < 0)
  435. join em in EducationMissionRepository.Entities on tem.SchoolyearID equals em.SchoolyearID
  436. join emc in EducationMissionClassRepository.GetList(x => x.HandleModeID == (int)CF_HandleMode.RequiredCourse)
  437. on new { EducationMissionID = (Guid?)em.EducationMissionID, tem.TeachingModeID, Name = tem.MinName }
  438. equals new { emc.EducationMissionID, emc.TeachingModeID, emc.Name }
  439. join esc in EducationSchedulingClassRepository.Entities on emc.EducationMissionClassID equals esc.EducationMissionClassID
  440. group esc by new { ID = dd.StudentChangeID, dd.UserID, em.SchoolyearID, emc.CoursematerialID, emc.TeachingModeID } into g
  441. select new
  442. {
  443. g.Key.ID,
  444. g.Key.UserID,
  445. g.Key.SchoolyearID,
  446. g.Key.CoursematerialID,
  447. g.Key.TeachingModeID,
  448. MinEducationSchedulingClassID = g.Max(x => x.EducationSchedulingClassID.ToString())
  449. };
  450. result.AddRange(query2.ToList().Select(x => new StudentsView { TepTableID = new Guid(x.MinEducationSchedulingClassID), UserID = x.UserID.Value }).ToList());
  451. #endregion
  452. #region 情况3:没有找到同班学生,加入最少人的第一组(这种情况通常有人的组都是另一个班的)
  453. var query3MissionClassQuery = (from tdd in DifferentDynamicRepository.Entities
  454. join sy in SchoolyearRepository.Entities on tdd.SchoolyearID equals sy.SchoolyearID
  455. from em in
  456. (
  457. from em in EducationMissionRepository.Entities
  458. where em.CF_Schoolyear.Value >= sy.Value
  459. select new { em.EducationMissionID, em.SchoolyearID, em.CF_Schoolyear.Value }
  460. )
  461. join emc in EducationMissionClassRepository.GetList(x => x.HandleModeID == (int)CF_HandleMode.RequiredCourse) on em.EducationMissionID equals emc.EducationMissionID
  462. from emcc in emc.CF_Classmajor.Where(x => x.ClassmajorID == tdd.AfterClassmajorID)
  463. where !emc.EM_EducationSchedulingClass.SelectMany(x => x.CF_Student).Any(x => x.ClassmajorID == tdd.AfterClassmajorID)
  464. group emc by new { ID = tdd.StudentChangeID, em.SchoolyearID, emcc.ClassmajorID, emc.CoursematerialID, emc.TeachingModeID } into g
  465. select new
  466. {
  467. g.Key.ID,
  468. g.Key.SchoolyearID,
  469. g.Key.ClassmajorID,
  470. g.Key.CoursematerialID,
  471. g.Key.TeachingModeID,
  472. MinStudentCount = g.Min(x => x.EM_EducationSchedulingClass.SelectMany(w => w.CF_Student).Count())
  473. }
  474. );
  475. var query3 = from dd in DifferentDynamicRepository.GetList(filter)
  476. join iss in InSchoolSettingRepository.Entities.Where(x => x.IsSelected == true) on dd.AfterInSchoolStatusID equals iss.InSchoolStatusID
  477. join u in UserRepository.Entities on dd.UserID equals u.UserID
  478. from tem in
  479. query3MissionClassQuery.Where(x => x.ID == dd.StudentChangeID)
  480. join em in EducationMissionRepository.Entities on tem.SchoolyearID equals em.SchoolyearID
  481. join emc in EducationMissionClassRepository.GetList(x => x.HandleModeID == (int)CF_HandleMode.RequiredCourse)
  482. on new { EducationMissionID = (Guid?)em.EducationMissionID, tem.TeachingModeID }
  483. equals new { emc.EducationMissionID, emc.TeachingModeID }
  484. from emccc in emc.CF_Classmajor.Where(x => x.ClassmajorID == tem.ClassmajorID)
  485. join emcsc in
  486. (
  487. from emc in EducationMissionClassRepository.Entities
  488. join esc in EducationSchedulingClassRepository.Entities on emc.EducationMissionClassID equals esc.EducationMissionClassID into desc
  489. from eesc in desc.DefaultIfEmpty()
  490. from esccs in eesc.CF_Student.DefaultIfEmpty()
  491. group esccs by emc.EducationMissionClassID into g
  492. select new { EducationMissionClassID = g.Key, StudentCount = g.Sum(x => x.UserID == null ? 0 : 1) }
  493. ) on new { emc.EducationMissionClassID, StudentCount = tem.MinStudentCount }
  494. equals new { emcsc.EducationMissionClassID, emcsc.StudentCount }
  495. join esc in EducationSchedulingClassRepository.Entities on emc.EducationMissionClassID equals esc.EducationMissionClassID
  496. group esc by new { ID = dd.StudentChangeID, dd.UserID, em.SchoolyearID, emc.CoursematerialID, emc.TeachingModeID } into g
  497. select new
  498. {
  499. g.Key.ID,
  500. g.Key.UserID,
  501. g.Key.SchoolyearID,
  502. g.Key.CoursematerialID,
  503. g.Key.TeachingModeID,
  504. MinEducationSchedulingClassID = g.Min(x => x.EducationSchedulingClassID.ToString())
  505. };
  506. result.AddRange(query3.ToList().Select(x => new StudentsView { TepTableID = new Guid(x.MinEducationSchedulingClassID), UserID = x.UserID.Value }).ToList());
  507. #endregion
  508. //var query = from df in DifferentDynamicRepository.GetList(filter)
  509. // join em in EducationMissionRepository.GetList(x => x.CF_Schoolyear.Value >= schoolYearValue)
  510. // on df.CF_Schoolyear.Value >= schoolYearValue equals em.CF_Schoolyear.Value >= schoolYearValue
  511. // join emc in EducationMissionClassRepository.Entities on em.EducationMissionID equals emc.EducationMissionID
  512. // from emccc in emc.CF_Classmajor.Where(x => x.ClassmajorID == df.AfterClassmajorID)
  513. // join eds in EducationSchedulingClassRepository.Entities on emc.EducationMissionClassID equals eds.EducationMissionClassID
  514. // from edscc in eds.CF_Student.Where(x => x.UserID == df.UserID).DefaultIfEmpty()
  515. // where edscc.UserID == null
  516. // && df.AfterClassmajorID != df.ClassmajorID
  517. // select new StudentsView
  518. // {
  519. // TepTableID = eds.EducationSchedulingClassID,
  520. // UserID = df.UserID,
  521. // };
  522. return result;
  523. }
  524. #endregion
  525. #region 6.0 考场安排Add
  526. // 考场安排
  527. public IQueryable<StudentsView> GetExaminationPlanStudentInsert(Expression<Func<CF_DifferentDynamic, bool>> filter, Expression<Func<EM_EducationMissionClass, bool>> missionClassFilter)
  528. {
  529. var q = (from df in DifferentDynamicRepository.GetList(filter)
  530. join iss in InSchoolSettingRepository.Entities.Where(x => x.IsSelected == true) on df.AfterInSchoolStatusID equals iss.InSchoolStatusID
  531. join sy in SchoolyearRepository.Entities on df.SchoolyearID equals sy.SchoolyearID
  532. from em in EducationMissionRepository.Entities.Where(x => x.CF_Schoolyear.Value >= sy.Value)
  533. //on df.CF_Schoolyear.Value >= schoolYearValue equals em.CF_Schoolyear.Value >= schoolYearValue
  534. join emc in EducationMissionClassRepository.Entities.Where(missionClassFilter) on em.EducationMissionID equals emc.EducationMissionID
  535. join ep in ExaminationPlanRepository.GetList(x => x.RecordStatus == (int)CF_ApprovalStatus.NotSubmitted) on emc.EducationMissionID equals ep.EducationMissionID
  536. //如果有异动后班级,考试计划只插入到该班。(原来有1、2班的数据的话会两个班都插入)
  537. where (df.AfterClassmajorID == null ? 1 == 1 : ep.ClassmajorID == df.AfterClassmajorID)
  538. select new StudentsView
  539. {
  540. TepTableID = ep.ExaminationPlanID,
  541. UserID = df.UserID.Value
  542. }
  543. );
  544. return q;
  545. }
  546. #endregion
  547. #region 7.0 成绩管理Add
  548. //成绩管理
  549. public IQueryable<StudentsView> GetScoreStudentInsert(Expression<Func<CF_DifferentDynamic, bool>> filter, Expression<Func<EM_EducationMissionClass, bool>> missionClassFilter)
  550. {
  551. //期末设定、补考设定为未开放及可录入状态的才进行学生信息调整
  552. var query = from df in DifferentDynamicRepository.GetList(filter)
  553. join iss in InSchoolSettingRepository.Entities.Where(x => x.IsSelected == true) on df.AfterInSchoolStatusID equals iss.InSchoolStatusID
  554. join sy in SchoolyearRepository.Entities on df.SchoolyearID equals sy.SchoolyearID
  555. from em in EducationMissionRepository.Entities.Where(x => x.CF_Schoolyear.Value >= sy.Value)
  556. //on df.CF_Schoolyear.Value >= schoolYearValue equals em.CF_Schoolyear.Value >= schoolYearValue
  557. join emc in EducationMissionClassRepository.Entities.Where(missionClassFilter) on em.EducationMissionID equals emc.EducationMissionID
  558. from emccc in emc.CF_Classmajor.Where(x => x.ClassmajorID == df.AfterClassmajorID)
  559. from fex in FinalExaminationRepository.Entities.Where(x => (
  560. x.ApprovalStatus == (int)CF_ScoreState.CanInput || x.ApprovalStatus == (int)CF_ScoreState.NoCanInput)
  561. && x.ExaminationType == (int)CF_ExaminationType.FinalExamination && x.CF_Schoolyear.Value >= sy.Value
  562. && x.EducationMissionID == em.EducationMissionID)
  563. //on em.EducationMissionID equals fex.EducationMissionID
  564. from fexcc in fex.ER_FinalExaminationStudent.Where(x => x.UserID == df.UserID).DefaultIfEmpty()
  565. where fexcc.UserID == null
  566. select new StudentsView
  567. {
  568. TepTableID = fex.FinalExaminationID,
  569. UserID = df.UserID.Value,
  570. };
  571. return query;
  572. }
  573. #endregion
  574. #region 8.0 教学评价Add
  575. //教学评价
  576. public IQueryable<StudentsView> GetEvaluationSettingStudentInsert(Expression<Func<CF_DifferentDynamic, bool>> filter)
  577. {
  578. //评价设定为未开放状态才进行学生信息调整
  579. Expression<Func<EM_EvaluationSetting, bool>> exp = x => x.OpenStatus == (int)CF_YesOrNoStatus.No;
  580. var query = from df in DifferentDynamicRepository.GetList(filter)
  581. join iss in InSchoolSettingRepository.Entities.Where(x => x.IsSelected == true) on df.AfterInSchoolStatusID equals iss.InSchoolStatusID
  582. join sy in SchoolyearRepository.Entities on df.SchoolyearID equals sy.SchoolyearID
  583. from em in EducationMissionRepository.Entities.Where(x => x.CF_Schoolyear.Value >= sy.Value)
  584. //on df.CF_Schoolyear.Value >= schoolYearValue equals em.CF_Schoolyear.Value >= schoolYearValue
  585. join emc in EducationMissionClassRepository.Entities on em.EducationMissionID equals emc.EducationMissionID
  586. from emccc in emc.CF_Classmajor.Where(x => x.ClassmajorID == df.AfterClassmajorID)
  587. join eds in EvaluationSettingRepository.GetList(exp) on emc.EducationMissionClassID equals eds.EducationMissionClassID
  588. from edscc in eds.CF_Student.Where(x => x.UserID == df.UserID.Value).DefaultIfEmpty()
  589. where edscc.UserID == null
  590. select new StudentsView
  591. {
  592. TepTableID = eds.EvaluationSettingID,
  593. UserID = df.UserID.Value,
  594. };
  595. return query;
  596. }
  597. #endregion
  598. #region 9.0 学生征订
  599. // 学生征订
  600. public IQueryable<ET_StudentsOrder> GetAddStudentsOrder(Expression<Func<CF_DifferentDynamic, bool>> filter)
  601. {
  602. //学生征订未征订状态的才进行信息调整
  603. Expression<Func<ET_StudentsOrder, bool>> exp =
  604. x => x.IsOrdered == false;//未征订
  605. var query = from df in DifferentDynamicRepository.GetList(filter)
  606. join biss in InSchoolSettingRepository.Entities.Where(x => x.IsSelected == true) on df.AfterInSchoolStatusID equals biss.InSchoolStatusID
  607. join ac in ClassmajorRepository.Entities on df.AfterClassmajorID equals ac.ClassmajorID
  608. join sy in SchoolyearRepository.Entities on df.SchoolyearID equals sy.SchoolyearID
  609. from sp in SpecialtyPlanRepository.Entities.Where(x => x.CF_Schoolyear.Value >= sy.Value
  610. && x.GrademajorID == ac.GrademajorID)
  611. join stdOrd in StudentsOrderRepository.GetList(exp) on sp.SpecialtyPlanID equals stdOrd.SpecialtyPlanID
  612. select stdOrd;
  613. return query;
  614. }
  615. public IQueryable<ET_StudentsOrder> GetDecreaseStudentsOrder(Expression<Func<CF_DifferentDynamic, bool>> filter)
  616. {
  617. Expression<Func<ET_StudentsOrder, bool>> exp =
  618. x => x.IsOrdered == false;//未征订
  619. var query = from df in DifferentDynamicRepository.GetList(filter)
  620. join biss in InSchoolSettingRepository.Entities.Where(x => x.IsSelected == true) on df.BeforeInSchoolStatusID equals biss.InSchoolStatusID
  621. join iss in InSchoolSettingRepository.Entities on df.AfterInSchoolStatusID equals iss.InSchoolStatusID into diss
  622. from iss in diss.DefaultIfEmpty()
  623. join c in ClassmajorRepository.Entities on df.BeforeClassmajorID equals c.ClassmajorID
  624. join ac in ClassmajorRepository.Entities on df.AfterClassmajorID equals ac.ClassmajorID into dac
  625. from ac in dac.DefaultIfEmpty()
  626. join sy in SchoolyearRepository.Entities on df.SchoolyearID equals sy.SchoolyearID
  627. from sp in SpecialtyPlanRepository.Entities.Where(x => x.CF_Schoolyear.Value >= sy.Value && x.GrademajorID == c.GrademajorID)
  628. //on df.CF_Schoolyear.Value >= schoolYearValue equals sp.CF_Schoolyear.Value >= schoolYearValue
  629. join stdOrd in StudentsOrderRepository.GetList(exp) on (Guid)sp.SpecialtyPlanID equals (Guid)stdOrd.SpecialtyPlanID
  630. where ac.GrademajorID != c.GrademajorID || !(iss.IsSelected ?? false)
  631. select stdOrd;
  632. return query;
  633. }
  634. #endregion
  635. #region 10.0 学生发放
  636. // 学生发放
  637. public IQueryable<ET_StudentDistribute> GetAddStudentDistribute(Expression<Func<CF_DifferentDynamic, bool>> filter)
  638. {
  639. //学生发放未发放状态的才进行信息调整
  640. Expression<Func<ET_StudentDistribute, bool>> exp =
  641. x => x.RecordStatus == (int)CF_YesOrNoStatus.No;//未发放
  642. var query = from df in DifferentDynamicRepository.GetList(filter)
  643. join biss in InSchoolSettingRepository.Entities.Where(x => x.IsSelected == true) on df.AfterInSchoolStatusID equals biss.InSchoolStatusID
  644. join ac in ClassmajorRepository.Entities on df.AfterClassmajorID equals ac.ClassmajorID
  645. join sy in SchoolyearRepository.Entities on df.SchoolyearID equals sy.SchoolyearID
  646. from sp in SpecialtyPlanRepository.Entities.Where(x => x.CF_Schoolyear.Value >= sy.Value
  647. && x.GrademajorID == ac.GrademajorID)
  648. //on df.CF_Schoolyear.Value >= schoolYearValue equals sp.CF_Schoolyear.Value >= schoolYearValue
  649. join sd in StudentDistributeRepository.GetList(exp) on (Guid)sp.SpecialtyPlanID equals (Guid)sd.SpecialtyPlanID
  650. where df.BeforeClassmajorID != df.AfterClassmajorID
  651. select sd;
  652. return query;
  653. }
  654. public IQueryable<ET_StudentDistribute> GetDecreaseStudentDistribute(Expression<Func<CF_DifferentDynamic, bool>> filter)
  655. {
  656. //学生发放未发放状态的才进行信息调整
  657. Expression<Func<ET_StudentDistribute, bool>> exp =
  658. x => x.RecordStatus == (int)CF_YesOrNoStatus.No;//未发放
  659. var query = from df in DifferentDynamicRepository.GetList(filter)
  660. join biss in InSchoolSettingRepository.Entities.Where(x => x.IsSelected == true) on df.BeforeInSchoolStatusID equals biss.InSchoolStatusID
  661. join iss in InSchoolSettingRepository.Entities on df.AfterInSchoolStatusID equals iss.InSchoolStatusID into diss
  662. from iss in diss.DefaultIfEmpty()
  663. join c in ClassmajorRepository.Entities on df.BeforeClassmajorID equals c.ClassmajorID
  664. join ac in ClassmajorRepository.Entities on df.AfterClassmajorID equals ac.ClassmajorID into dac
  665. from ac in dac.DefaultIfEmpty()
  666. join sy in SchoolyearRepository.Entities on df.SchoolyearID equals sy.SchoolyearID
  667. from sp in SpecialtyPlanRepository.Entities.Where(x => x.CF_Schoolyear.Value >= sy.Value
  668. && x.GrademajorID == c.GrademajorID)
  669. //on df.CF_Schoolyear.Value >= schoolYearValue equals sp.CF_Schoolyear.Value >= schoolYearValue
  670. join sd in StudentDistributeRepository.GetList(exp) on (Guid)sp.SpecialtyPlanID equals (Guid)sd.SpecialtyPlanID
  671. where ac.GrademajorID != c.GrademajorID || !(iss.IsSelected ?? false)
  672. select sd;
  673. return query;
  674. }
  675. #endregion
  676. #endregion
  677. /// <summary>
  678. /// 获取报表下拉(已弃用)
  679. /// </summary>
  680. /// <returns></returns>
  681. //public IQueryable<DifferentDynamicView> GetSelectReport()
  682. //{
  683. // var query = from c in DifferentDynamicReportRepository.GetList(x => true)
  684. // select new DifferentDynamicView
  685. // {
  686. // ReportName = c.Name,
  687. // ReportUrl = c.Url,
  688. // };
  689. // return query;
  690. //}
  691. public IQueryable<StudentReentryView> GetNeedReturnList(Expression<Func<CF_DifferentDynamic, bool>> filter,
  692. int correctEndStatusID,
  693. Expression<Func<CF_Grademajor, bool>> gradeFilter = null,
  694. Expression<Func<CF_Facultymajor, bool>> facultyFilter = null,
  695. Expression<Func<CF_College, bool>> collegeFilter = null)
  696. {
  697. if (gradeFilter == null)
  698. {
  699. gradeFilter = (x => true);
  700. }
  701. if (facultyFilter == null)
  702. {
  703. facultyFilter = (x => true);
  704. }
  705. if (collegeFilter == null)
  706. {
  707. collegeFilter = (x => true);
  708. }
  709. var query = (from change in DifferentDynamicRepository.Entities.Where(filter)
  710. join studentUser in UserRepository.Entities on change.UserID equals studentUser.UserID
  711. join beforeClass in ClassmajorRepository.Entities on change.BeforeClassmajorID equals beforeClass.ClassmajorID
  712. join grade in GrademajorRepository.Entities.Where(gradeFilter) on beforeClass.GrademajorID equals grade.GrademajorID
  713. join faculty in FacultymajorRepository.Entities.Where(facultyFilter) on grade.FacultymajorID equals faculty.FacultymajorID
  714. join college in CollegeRepository.Entities.Where(collegeFilter) on faculty.CollegeID equals college.CollegeID
  715. join campus in CampusRepository.Entities on college.CampusID equals campus.CampusID
  716. join creator in UserRepository.Entities on change.CreateUserID equals creator.UserID into tmp
  717. from creator in tmp.DefaultIfEmpty()
  718. join afterClass in ClassmajorRepository.Entities on change.AfterClassmajorID equals afterClass.ClassmajorID into dafterClass
  719. from afterClassmajor in dafterClass.DefaultIfEmpty()
  720. join reentry in DifferentDynamicRepository.Entities
  721. on new { SchoolyearID = change.ReturnSchoolyearID, UserID = studentUser.UserID, DifferentDynamicType = (int)CF_ChangeType.Reentry, ApprovalStatus = correctEndStatusID }
  722. equals new { SchoolyearID = reentry.SchoolyearID, UserID = reentry.UserID.Value, DifferentDynamicType = reentry.ChangeTypeID.Value, ApprovalStatus = reentry.ApprovalStatus.Value } into dreentry
  723. from reentry in dreentry.DefaultIfEmpty()
  724. where change.ReturnSchoolyearID != null && change.ApprovalStatus == correctEndStatusID
  725. select new StudentReentryView
  726. {
  727. ID = change.StudentChangeID,
  728. UserID = studentUser.UserID,
  729. LoginID = studentUser.LoginID,
  730. UserName = studentUser.Name,
  731. //EndDate = change.EndTime,
  732. DifferentDynamicTypeID = change.ChangeTypeID,
  733. ClassmajorID = change.BeforeClassmajorID,
  734. ClassmajorName = beforeClass.Name,
  735. StudentStatusID = change.BeforeStudentStatus,
  736. AfterClassmajorID = change.AfterClassmajorID,
  737. AfterClassmajorName = afterClassmajor.Name,
  738. AfterStudentStatusID = change.AfterStudentStatus,
  739. ReasonID = change.ChangeReasonID,
  740. IsReentried = (reentry.StudentChangeID != null),
  741. CollegeID = faculty.CollegeID,
  742. CollegeName = college.Name,
  743. CampusID = college.CampusID,
  744. CampusName = campus.Name,
  745. CreateTime = change.CreateTime
  746. });
  747. return query;
  748. }
  749. }
  750. }