GraduationStandardServices.cs 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Linq.Expressions;
  6. using Bowin.Common.Linq.Entity;
  7. using Bowin.Common.Linq;
  8. using EMIS.Entities;
  9. using EMIS.ViewModel;
  10. using EMIS.ViewModel.UniversityManage.SpecialtyClassManage;
  11. using EMIS.ViewModel.Students;
  12. using EMIS.ViewModel.CultureplanManage.PlanManagement;
  13. using EMIS.ViewModel.EducationManagement;
  14. using EMIS.ViewModel.GraduationManage.GraduationSetting;
  15. using EMIS.DataLogic.SystemDAL;
  16. using EMIS.DataLogic.GraduationManage.GraduationSetting;
  17. using EMIS.CommonLogic.StudentManage.StudentStatistics;
  18. namespace EMIS.CommonLogic.GraduationManage.GraduationSetting
  19. {
  20. public class GraduationStandardServices : BaseServices, IGraduationStandardServices
  21. {
  22. public GraduationStandardDAL GraduationStandardDAL { get; set; }
  23. public IInSchoolSettingServices InSchoolSettingServices { get; set; }
  24. /// <summary>
  25. /// 查询对应的毕业标准信息View
  26. /// </summary>
  27. /// <param name="configuretView"></param>
  28. /// <param name="gradSchoolyearID"></param>
  29. /// <param name="campusID"></param>
  30. /// <param name="collegeID"></param>
  31. /// <param name="yearID"></param>
  32. /// <param name="standardID"></param>
  33. /// <param name="educationID"></param>
  34. /// <param name="learningformID"></param>
  35. /// <param name="learnSystem"></param>
  36. /// <param name="inSchoolStatus"></param>
  37. /// <param name="pageIndex"></param>
  38. /// <param name="pageSize"></param>
  39. /// <returns></returns>
  40. public IGridResultSet<GraduationStandardView> GetGraduationStandardViewGrid(ConfiguretView configuretView, Guid? gradSchoolyearID,
  41. Guid? campusID, Guid? collegeID, int? yearID, int? standardID, int? educationID, int? learningformID, string learnSystem,
  42. int? inSchoolStatus, int pageIndex, int pageSize)
  43. {
  44. //毕业标准
  45. Expression<Func<ER_GraduationStandard, bool>> expGraduationStandard = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
  46. //执行计划(只对已提交状态进行统计)
  47. Expression<Func<EM_ExecutablePlan, bool>> expExecutablePlan = (x => true);
  48. expExecutablePlan = expExecutablePlan.And(x => x.RecordStatus == (int)EM_ExecuteStatus.Submited);
  49. //学生信息
  50. Expression<Func<CF_Student, bool>> expStudent = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
  51. if (inSchoolStatus != null && inSchoolStatus > -1)
  52. {
  53. var inschoolStatusList = InSchoolSettingServices.GetInschoolStatusList(true);
  54. if (inSchoolStatus == 1)
  55. {
  56. //表示在校
  57. expStudent = expStudent.And(x => inschoolStatusList.Contains(x.InSchoolStatusID));
  58. }
  59. if (inSchoolStatus == 0)
  60. {
  61. //不在校
  62. expStudent = expStudent.And(x => !inschoolStatusList.Contains(x.InSchoolStatusID));
  63. }
  64. }
  65. var query = GraduationStandardDAL.GetGraduationStandardViewQueryable(expGraduationStandard, expExecutablePlan, expStudent);
  66. if (gradSchoolyearID.HasValue)
  67. {
  68. query = query.Where(x => x.GraduatingSemesterID == gradSchoolyearID);
  69. }
  70. if (campusID.HasValue)
  71. {
  72. query = query.Where(x => x.CampusID == campusID);
  73. }
  74. if (collegeID.HasValue)
  75. {
  76. query = query.Where(x => x.CollegeID == collegeID);
  77. }
  78. if (yearID.HasValue)
  79. {
  80. query = query.Where(x => x.SchoolyearID == yearID);
  81. }
  82. if (standardID.HasValue)
  83. {
  84. query = query.Where(x => x.StandardID == standardID);
  85. }
  86. if (educationID.HasValue)
  87. {
  88. query = query.Where(x => x.EducationID == educationID);
  89. }
  90. if (learningformID.HasValue)
  91. {
  92. query = query.Where(x => x.LearningformID == learningformID);
  93. }
  94. if (!string.IsNullOrEmpty(learnSystem) && learnSystem != "-1")
  95. {
  96. var LearnSystems = Convert.ToDecimal(learnSystem);
  97. query = query.Where(x => x.LearnSystem == LearnSystems);
  98. }
  99. //查询条件
  100. if (!string.IsNullOrEmpty(configuretView.ConditionValue))
  101. {
  102. query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim());
  103. }
  104. return this.GetQueryByDataRangeByCollege(query)
  105. .OrderBy(x => x.CollegeNo.Length).ThenBy(x => x.CollegeNo)
  106. .ThenBy(x => x.StandardID).ThenBy(x => x.EducationID)
  107. .ThenBy(x => x.LearningformID).ThenBy(x => x.LearnSystem)
  108. .ThenBy(x => x.SchoolyearID)
  109. .ToGridResultSet<GraduationStandardView>(pageIndex, pageSize);
  110. }
  111. /// <summary>
  112. /// 查询对应的毕业标准信息List
  113. /// </summary>
  114. /// <param name="configuretView"></param>
  115. /// <param name="gradSchoolyearID"></param>
  116. /// <param name="campusID"></param>
  117. /// <param name="collegeID"></param>
  118. /// <param name="yearID"></param>
  119. /// <param name="standardID"></param>
  120. /// <param name="educationID"></param>
  121. /// <param name="learningformID"></param>
  122. /// <param name="learnSystem"></param>
  123. /// <param name="inSchoolStatus"></param>
  124. /// <returns></returns>
  125. public List<GraduationStandardView> GetGraduationStandardViewList(ConfiguretView configuretView, Guid? gradSchoolyearID,
  126. Guid? campusID, Guid? collegeID, int? yearID, int? standardID, int? educationID, int? learningformID, string learnSystem,
  127. int? inSchoolStatus)
  128. {
  129. //毕业标准
  130. Expression<Func<ER_GraduationStandard, bool>> expGraduationStandard = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
  131. //执行计划(只对已提交状态进行统计)
  132. Expression<Func<EM_ExecutablePlan, bool>> expExecutablePlan = (x => true);
  133. expExecutablePlan = expExecutablePlan.And(x => x.RecordStatus == (int)EM_ExecuteStatus.Submited);
  134. //学生信息
  135. Expression<Func<CF_Student, bool>> expStudent = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
  136. if (inSchoolStatus != null && inSchoolStatus > -1)
  137. {
  138. var inschoolStatusList = InSchoolSettingServices.GetInschoolStatusList(true);
  139. if (inSchoolStatus == 1)
  140. {
  141. //表示在校
  142. expStudent = expStudent.And(x => inschoolStatusList.Contains(x.InSchoolStatusID));
  143. }
  144. if (inSchoolStatus == 0)
  145. {
  146. //不在校
  147. expStudent = expStudent.And(x => !inschoolStatusList.Contains(x.InSchoolStatusID));
  148. }
  149. }
  150. var query = GraduationStandardDAL.GetGraduationStandardViewQueryable(expGraduationStandard, expExecutablePlan, expStudent);
  151. if (gradSchoolyearID.HasValue)
  152. {
  153. query = query.Where(x => x.GraduatingSemesterID == gradSchoolyearID);
  154. }
  155. if (campusID.HasValue)
  156. {
  157. query = query.Where(x => x.CampusID == campusID);
  158. }
  159. if (collegeID.HasValue)
  160. {
  161. query = query.Where(x => x.CollegeID == collegeID);
  162. }
  163. if (yearID.HasValue)
  164. {
  165. query = query.Where(x => x.SchoolyearID == yearID);
  166. }
  167. if (standardID.HasValue)
  168. {
  169. query = query.Where(x => x.StandardID == standardID);
  170. }
  171. if (educationID.HasValue)
  172. {
  173. query = query.Where(x => x.EducationID == educationID);
  174. }
  175. if (learningformID.HasValue)
  176. {
  177. query = query.Where(x => x.LearningformID == learningformID);
  178. }
  179. if (!string.IsNullOrEmpty(learnSystem) && learnSystem != "-1")
  180. {
  181. var LearnSystems = Convert.ToDecimal(learnSystem);
  182. query = query.Where(x => x.LearnSystem == LearnSystems);
  183. }
  184. //查询条件
  185. if (!string.IsNullOrEmpty(configuretView.ConditionValue))
  186. {
  187. query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim());
  188. }
  189. return this.GetQueryByDataRangeByCollege(query)
  190. .OrderBy(x => x.CollegeNo.Length).ThenBy(x => x.CollegeNo)
  191. .ThenBy(x => x.StandardID).ThenBy(x => x.EducationID)
  192. .ThenBy(x => x.LearningformID).ThenBy(x => x.LearnSystem)
  193. .ThenBy(x => x.SchoolyearID)
  194. .ToList();
  195. }
  196. /// <summary>
  197. /// 根据毕业标准ID查询对应的毕业标准信息GraduationStandardView
  198. /// </summary>
  199. /// <param name="GraduationStandardID"></param>
  200. /// <returns></returns>
  201. public GraduationStandardView GetGraduationStandardView(Guid? GraduationStandardID)
  202. {
  203. try
  204. {
  205. var query = GraduationStandardDAL.GetGraduationStandardViewQueryable(x => x.GraduationStandardID == GraduationStandardID)
  206. .SingleOrDefault();
  207. return query;
  208. }
  209. catch (Exception ex)
  210. {
  211. throw new Exception(ex.Message);
  212. }
  213. }
  214. /// <summary>
  215. /// 毕业标准生成
  216. /// 注:年级专业对应的学生人数大于0
  217. /// </summary>
  218. /// <param name="GraduatingSemesterID"></param>
  219. /// <param name="collegeID"></param>
  220. /// <returns></returns>
  221. public string GraduationStandardGenerate(Guid? GraduatingSemesterID, Guid? collegeID)
  222. {
  223. try
  224. {
  225. //查询课程类型设置信息List
  226. var courseTypeSelectCourseTypeList = GraduationStandardDAL.CourseTypeSelectCourseTypeRepository
  227. .GetList(x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE).ToList();
  228. if (courseTypeSelectCourseTypeList == null || courseTypeSelectCourseTypeList.Count() <= 0)
  229. {
  230. throw new Exception("课程类型设置未配置,请配置。");
  231. }
  232. //毕业标准
  233. Expression<Func<CF_Grademajor, bool>> expGrademajor = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
  234. if (GraduatingSemesterID.HasValue)
  235. {
  236. //毕业学期
  237. expGrademajor = expGrademajor.And(x => x.GraduateSchoolyearID == GraduatingSemesterID);
  238. }
  239. //学生信息
  240. Expression<Func<CF_Student, bool>> expStudent = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
  241. var query = GraduationStandardDAL.GetGrademajorViewQueryable(expGrademajor, expStudent);
  242. if (collegeID.HasValue)
  243. {
  244. //院系所
  245. query = query.Where(x => x.CollegeID == collegeID);
  246. }
  247. //年级专业对应的学生人数大于0
  248. query = query.Where(x => x.StudentCount > 0);
  249. //查询对应的年级专业信息grademajorViewList(注:数据范围)
  250. var grademajorViewList = this.GetQueryByDataRangeByCollege(query).ToList();
  251. //年级专业IDList
  252. var grademajorIDList = grademajorViewList.Select(x => x.GrademajorID).ToList();
  253. //查询对应的毕业标准信息graduationStandardList
  254. var graduationStandardList = GraduationStandardDAL.GraduationStandardRepository
  255. .GetList(x => grademajorIDList.Contains((Guid)x.GrademajorID)).ToList();
  256. int insert = 0;
  257. int update = 0;
  258. string tipMessage = null;
  259. List<ER_GraduationStandard> graduationStandardInList = new List<ER_GraduationStandard>();
  260. List<ER_GraduationStandard> graduationStandardUpList = new List<ER_GraduationStandard>();
  261. foreach (var grademajorID in grademajorIDList)
  262. {
  263. //根据年级专业ID查询对应的毕业标准信息
  264. var graduationStandard = graduationStandardList
  265. .Where(x => x.GrademajorID == grademajorID).SingleOrDefault();
  266. if (graduationStandard == null)
  267. {
  268. ER_GraduationStandard newGraduationStandard = new ER_GraduationStandard();
  269. newGraduationStandard.GraduationStandardID = Guid.NewGuid();
  270. newGraduationStandard.GrademajorID = grademajorID;
  271. newGraduationStandard.RequireCourseCount = 0;
  272. newGraduationStandard.GraduationCredit = 0;
  273. SetNewStatus(newGraduationStandard);
  274. graduationStandardInList.Add(newGraduationStandard);
  275. insert++;
  276. }
  277. else
  278. {
  279. SetModifyStatus(graduationStandard);
  280. graduationStandardUpList.Add(graduationStandard);
  281. update++;
  282. }
  283. }
  284. //批量插入
  285. UnitOfWork.BulkInsert<ER_GraduationStandard>(graduationStandardInList);
  286. if (graduationStandardUpList != null && graduationStandardUpList.Count() > 0)
  287. {
  288. //批量更新
  289. UnitOfWork.BatchUpdate<ER_GraduationStandard>(graduationStandardUpList);
  290. }
  291. if (insert > 0 && update <= 0)
  292. {
  293. tipMessage = insert + "条";
  294. }
  295. else
  296. {
  297. tipMessage = insert + "条,更新成功" + update + "条";
  298. }
  299. return tipMessage;
  300. }
  301. catch (Exception ex)
  302. {
  303. throw new Exception(ex.Message);
  304. }
  305. }
  306. /// <summary>
  307. /// 编辑(新增、修改,业务主键:年级专业ID)
  308. /// </summary>
  309. /// <param name="graduationStandardView"></param>
  310. public void GraduationStandardEdit(GraduationStandardView graduationStandardView)
  311. {
  312. try
  313. {
  314. //查询课程类型设置信息List
  315. var courseTypeSelectCourseTypeList = GraduationStandardDAL.CourseTypeSelectCourseTypeRepository
  316. .GetList(x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE).ToList();
  317. if (courseTypeSelectCourseTypeList == null || courseTypeSelectCourseTypeList.Count() <= 0)
  318. {
  319. throw new Exception("课程类型设置未配置,请配置。");
  320. }
  321. //查询数据库进行验证
  322. var graduationStandardVerification = GraduationStandardDAL.GraduationStandardRepository
  323. .GetList(x => x.GraduationStandardID != graduationStandardView.GraduationStandardID
  324. && x.GrademajorID == graduationStandardView.GrademajorID).SingleOrDefault();
  325. if (graduationStandardVerification == null)
  326. {
  327. //数据有误验证
  328. if (graduationStandardView.GraduationStandardID != Guid.Empty)
  329. {
  330. var graduationStandard = GraduationStandardDAL.GraduationStandardRepository
  331. .GetList(x => x.GraduationStandardID == graduationStandardView.GraduationStandardID)
  332. .SingleOrDefault();
  333. if (graduationStandard == null)
  334. {
  335. throw new Exception("数据有误,请核查");
  336. }
  337. else
  338. {
  339. //表示修改
  340. graduationStandard.RequireCourseCount = graduationStandardView.RequireCourseCount;
  341. graduationStandard.GraduationCredit = graduationStandardView.GraduationCredit;
  342. SetModifyStatus(graduationStandard);
  343. }
  344. }
  345. else
  346. {
  347. //表示新增
  348. ER_GraduationStandard graduationStandard = new ER_GraduationStandard();
  349. graduationStandard.GraduationStandardID = Guid.NewGuid();
  350. graduationStandard.GrademajorID = graduationStandardView.GrademajorID;
  351. graduationStandard.RequireCourseCount = graduationStandardView.RequireCourseCount;
  352. graduationStandard.GraduationCredit = graduationStandardView.GraduationCredit;
  353. SetNewStatus(graduationStandard);
  354. UnitOfWork.Add(graduationStandard);
  355. }
  356. }
  357. else
  358. {
  359. throw new Exception("已存在相同的毕业标准,请核查");
  360. }
  361. //事务提交
  362. UnitOfWork.Commit();
  363. }
  364. catch (Exception ex)
  365. {
  366. throw new Exception(ex.Message);
  367. }
  368. }
  369. /// <summary>
  370. /// 毕业标准批量新增(业务主键:年级专业ID)
  371. /// </summary>
  372. /// <param name="grademajorIDList"></param>
  373. /// <param name="graduationStandardView"></param>
  374. /// <returns></returns>
  375. public string GraduationStandardBatchAdd(List<Guid?> grademajorIDList, GraduationStandardView graduationStandardView)
  376. {
  377. try
  378. {
  379. //查询课程类型设置信息List
  380. var courseTypeSelectCourseTypeList = GraduationStandardDAL.CourseTypeSelectCourseTypeRepository
  381. .GetList(x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE).ToList();
  382. if (courseTypeSelectCourseTypeList == null || courseTypeSelectCourseTypeList.Count() <= 0)
  383. {
  384. throw new Exception("课程类型设置未配置,请配置。");
  385. }
  386. //查询对应的毕业标准信息graduationStandardList
  387. var graduationStandardList = GraduationStandardDAL.GraduationStandardRepository
  388. .GetList(x => grademajorIDList.Contains((Guid)x.GrademajorID)).ToList();
  389. int success = 0; //成功
  390. int fail = 0; //失败
  391. string tipMessage = null; //提示消息
  392. List<ER_GraduationStandard> graduationStandardInList = new List<ER_GraduationStandard>();
  393. foreach (var grademajorID in grademajorIDList)
  394. {
  395. //根据年级专业ID查询对应的毕业标准信息
  396. var graduationStandard = graduationStandardList
  397. .Where(x => x.GrademajorID == grademajorID).SingleOrDefault();
  398. if (graduationStandard == null)
  399. {
  400. ER_GraduationStandard newGraduationStandard = new ER_GraduationStandard();
  401. newGraduationStandard.GraduationStandardID = Guid.NewGuid();
  402. newGraduationStandard.GrademajorID = grademajorID;
  403. newGraduationStandard.RequireCourseCount = graduationStandardView.RequireCourseCount ?? 0;
  404. newGraduationStandard.GraduationCredit = graduationStandardView.GraduationCredit ?? 0;
  405. SetNewStatus(newGraduationStandard);
  406. graduationStandardInList.Add(newGraduationStandard);
  407. success++;
  408. }
  409. else
  410. {
  411. //表示已存在相同的毕业标准信息
  412. fail++;
  413. }
  414. }
  415. //批量插入
  416. UnitOfWork.BulkInsert<ER_GraduationStandard>(graduationStandardInList);
  417. if (success > 0 && fail <= 0)
  418. {
  419. tipMessage = success + "条";
  420. }
  421. else
  422. {
  423. tipMessage = success + "条,失败" + fail + "条,原因:已存在相同的毕业标准信息,请检查";
  424. }
  425. return tipMessage;
  426. }
  427. catch (Exception ex)
  428. {
  429. throw new Exception(ex.Message);
  430. }
  431. }
  432. /// <summary>
  433. /// 查询未新增的毕业标准对应的年级专业信息GrademajorView
  434. /// </summary>
  435. /// <param name="configuretView"></param>
  436. /// <param name="campusID"></param>
  437. /// <param name="collegeID"></param>
  438. /// <param name="schoolyearID"></param>
  439. /// <param name="standardID"></param>
  440. /// <param name="educationID"></param>
  441. /// <param name="learningformID"></param>
  442. /// <param name="learnSystem"></param>
  443. /// <param name="inSchoolStatus"></param>
  444. /// <param name="gradSchoolyearID"></param>
  445. /// <param name="pageIndex"></param>
  446. /// <param name="pageSize"></param>
  447. /// <returns></returns>
  448. public IGridResultSet<GrademajorView> GetGraduationStandardNoAddViewGrid(ConfiguretView configuretView, Guid? campusID,
  449. Guid? collegeID, int? schoolyearID, int? standardID, int? educationID, int? learningformID, string learnSystem,
  450. int? inSchoolStatus, Guid? gradSchoolyearID, int pageIndex, int pageSize)
  451. {
  452. //年级专业信息
  453. Expression<Func<CF_Grademajor, bool>> expGrademajor = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
  454. if (schoolyearID.HasValue)
  455. {
  456. //年级
  457. expGrademajor = expGrademajor.And(x => x.GradeID == schoolyearID);
  458. }
  459. if (gradSchoolyearID.HasValue)
  460. {
  461. //毕业学期
  462. expGrademajor = expGrademajor.And(x => x.GraduateSchoolyearID == gradSchoolyearID);
  463. }
  464. //学生信息
  465. Expression<Func<CF_Student, bool>> expStudent = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
  466. if (inSchoolStatus != null && inSchoolStatus > -1)
  467. {
  468. var inschoolStatusList = InSchoolSettingServices.GetInschoolStatusList(true);
  469. if (inSchoolStatus == 1)
  470. {
  471. //表示在校
  472. expStudent = expStudent.And(x => inschoolStatusList.Contains(x.InSchoolStatusID));
  473. }
  474. if (inSchoolStatus == 0)
  475. {
  476. //不在校
  477. expStudent = expStudent.And(x => !inschoolStatusList.Contains(x.InSchoolStatusID));
  478. }
  479. }
  480. var query = GraduationStandardDAL.GetGraduationStandardViewNoAddQueryable(expGrademajor, expStudent);
  481. if (campusID.HasValue)
  482. {
  483. query = query.Where(x => x.CampusID == campusID);
  484. }
  485. if (collegeID.HasValue)
  486. {
  487. query = query.Where(x => x.CollegeID == collegeID);
  488. }
  489. if (standardID.HasValue)
  490. {
  491. query = query.Where(x => x.StandardID == standardID);
  492. }
  493. if (educationID.HasValue)
  494. {
  495. query = query.Where(x => x.EducationID == educationID);
  496. }
  497. if (learningformID.HasValue)
  498. {
  499. query = query.Where(x => x.LearningformID == learningformID);
  500. }
  501. if (!string.IsNullOrEmpty(learnSystem) && learnSystem != "-1")
  502. {
  503. var LearnSystems = Convert.ToDecimal(learnSystem);
  504. query = query.Where(x => x.LearnSystem == LearnSystems);
  505. }
  506. //查询条件
  507. if (!string.IsNullOrEmpty(configuretView.ConditionValue))
  508. {
  509. query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim());
  510. }
  511. return this.GetQueryByDataRangeByCollege(query).OrderBy(x => x.CollegeCode.Length).ThenBy(x => x.CollegeCode).ThenBy(x => x.StandardID)
  512. .ThenBy(x => x.EducationID).ThenBy(x => x.LearningformID).ThenBy(x => x.LearnSystem).ThenBy(x => x.GradeID).ToGridResultSet<GrademajorView>(pageIndex, pageSize);
  513. }
  514. /// <summary>
  515. /// 查询未新增的毕业标准对应的年级专业信息List
  516. /// </summary>
  517. /// <param name="configuretView"></param>
  518. /// <param name="campusID"></param>
  519. /// <param name="collegeID"></param>
  520. /// <param name="schoolyearID"></param>
  521. /// <param name="standardID"></param>
  522. /// <param name="educationID"></param>
  523. /// <param name="learningformID"></param>
  524. /// <param name="learnSystem"></param>
  525. /// <param name="inSchoolStatus"></param>
  526. /// <param name="gradSchoolyearID"></param>
  527. /// <returns></returns>
  528. public IList<GrademajorView> GetGraduationStandardNoAddViewList(ConfiguretView configuretView, Guid? campusID, Guid? collegeID, int? schoolyearID, int? standardID, int? educationID, int? learningformID, string learnSystem, int? inSchoolStatus, Guid? gradSchoolyearID)
  529. {
  530. //年级专业信息
  531. Expression<Func<CF_Grademajor, bool>> expGrademajor = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
  532. if (schoolyearID.HasValue)
  533. {
  534. //年级
  535. expGrademajor = expGrademajor.And(x => x.GradeID == schoolyearID);
  536. }
  537. if (gradSchoolyearID.HasValue)
  538. {
  539. //毕业学期
  540. expGrademajor = expGrademajor.And(x => x.GraduateSchoolyearID == gradSchoolyearID);
  541. }
  542. //学生信息
  543. Expression<Func<CF_Student, bool>> expStudent = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
  544. if (inSchoolStatus != null && inSchoolStatus > -1)
  545. {
  546. var inschoolStatusList = InSchoolSettingServices.GetInschoolStatusList(true);
  547. if (inSchoolStatus == 1)
  548. {
  549. //表示在校
  550. expStudent = expStudent.And(x => inschoolStatusList.Contains(x.InSchoolStatusID));
  551. }
  552. if (inSchoolStatus == 0)
  553. {
  554. //不在校
  555. expStudent = expStudent.And(x => !inschoolStatusList.Contains(x.InSchoolStatusID));
  556. }
  557. }
  558. var query = GraduationStandardDAL.GetGraduationStandardViewNoAddQueryable(expGrademajor, expStudent);
  559. if (campusID.HasValue)
  560. {
  561. query = query.Where(x => x.CampusID == campusID);
  562. }
  563. if (collegeID.HasValue)
  564. {
  565. query = query.Where(x => x.CollegeID == collegeID);
  566. }
  567. if (standardID.HasValue)
  568. {
  569. query = query.Where(x => x.StandardID == standardID);
  570. }
  571. if (educationID.HasValue)
  572. {
  573. query = query.Where(x => x.EducationID == educationID);
  574. }
  575. if (learningformID.HasValue)
  576. {
  577. query = query.Where(x => x.LearningformID == learningformID);
  578. }
  579. if (!string.IsNullOrEmpty(learnSystem) && learnSystem != "-1")
  580. {
  581. var LearnSystems = Convert.ToDecimal(learnSystem);
  582. query = query.Where(x => x.LearnSystem == LearnSystems);
  583. }
  584. //查询条件
  585. if (!string.IsNullOrEmpty(configuretView.ConditionValue))
  586. {
  587. query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim());
  588. }
  589. return this.GetQueryByDataRangeByCollege(query).OrderBy(x => x.CollegeCode.Length).ThenBy(x => x.CollegeCode).ThenBy(x => x.StandardID)
  590. .ThenBy(x => x.EducationID).ThenBy(x => x.LearningformID).ThenBy(x => x.LearnSystem).ThenBy(x => x.GradeID).ToList();
  591. }
  592. /// <summary>
  593. /// 删除
  594. /// </summary>
  595. /// <param name="graduationStandardIDs"></param>
  596. /// <returns></returns>
  597. public bool GraduationStandardDelete(List<Guid?> graduationStandardIDs)
  598. {
  599. try
  600. {
  601. UnitOfWork.Delete<ER_GraduationStandard>(x => graduationStandardIDs.Contains(x.GraduationStandardID));
  602. UnitOfWork.Commit();
  603. return true;
  604. }
  605. catch (Exception ex)
  606. {
  607. throw new Exception(ex.Message);
  608. }
  609. }
  610. /// <summary>
  611. /// 查询毕业标准对应的专业计划信息SpecialtyPlanView
  612. /// </summary>
  613. /// <param name="configuretView"></param>
  614. /// <param name="graduationStandardID"></param>
  615. /// <param name="schoolyearID"></param>
  616. /// <param name="courseTypeID"></param>
  617. /// <param name="starttermID"></param>
  618. /// <param name="isMainCourse"></param>
  619. /// <param name="handleModeID"></param>
  620. /// <param name="pageIndex"></param>
  621. /// <param name="pageSize"></param>
  622. /// <returns></returns>
  623. public IGridResultSet<SpecialtyPlanView> GetSpecialtyPlanViewGrid(ConfiguretView configuretView, Guid? graduationStandardID,
  624. Guid? schoolyearID, int? courseTypeID, int? starttermID, int? isMainCourse, int? handleModeID, int pageIndex, int pageSize)
  625. {
  626. //毕业标准
  627. Expression<Func<ER_GraduationStandard, bool>> expGraduationStandard = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
  628. expGraduationStandard = expGraduationStandard.And(x => x.GraduationStandardID == graduationStandardID);
  629. var query = GraduationStandardDAL.GetSpecialtyPlanViewQueryable(expGraduationStandard);
  630. if (schoolyearID.HasValue)
  631. {
  632. query = query.Where(x => x.SchoolyearID == schoolyearID);
  633. }
  634. if (courseTypeID.HasValue)
  635. {
  636. query = query.Where(x => x.CourseTypeID == courseTypeID);
  637. }
  638. if (starttermID.HasValue)
  639. {
  640. query = query.Where(x => x.StarttermID == starttermID);
  641. }
  642. if (isMainCourse.HasValue)
  643. {
  644. //可否学位课程
  645. if (isMainCourse.Value == (int)CF_GeneralPurpose.IsYes)
  646. {
  647. query = query.Where(x => x.IsMainCourse == true);
  648. }
  649. if (isMainCourse.Value == (int)CF_GeneralPurpose.IsNo)
  650. {
  651. query = query.Where(x => x.IsMainCourse != true);
  652. }
  653. }
  654. if (handleModeID.HasValue)
  655. {
  656. query = query.Where(x => x.HandleModeID == handleModeID);
  657. }
  658. //查询条件
  659. if (!string.IsNullOrEmpty(configuretView.ConditionValue))
  660. {
  661. query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim());
  662. }
  663. return this.GetQueryByDataRangeByCollege(query)
  664. .OrderBy(x => x.SchoolyearCode.Length).ThenBy(x => x.SchoolyearCode)
  665. .ThenBy(x => x.CourseCode.Length).ThenBy(x => x.CourseCode)
  666. .ToGridResultSet<SpecialtyPlanView>(pageIndex, pageSize);
  667. }
  668. /// <summary>
  669. /// 查询毕业标准对应的专业计划信息List
  670. /// </summary>
  671. /// <param name="configuretView"></param>
  672. /// <param name="graduationStandardID"></param>
  673. /// <param name="schoolyearID"></param>
  674. /// <param name="courseTypeID"></param>
  675. /// <param name="starttermID"></param>
  676. /// <param name="isMainCourse"></param>
  677. /// <param name="handleModeID"></param>
  678. /// <returns></returns>
  679. public IList<SpecialtyPlanView> GetSpecialtyPlanViewList(ConfiguretView configuretView, Guid? graduationStandardID,
  680. Guid? schoolyearID, int? courseTypeID, int? starttermID, int? isMainCourse, int? handleModeID)
  681. {
  682. //毕业标准
  683. Expression<Func<ER_GraduationStandard, bool>> expGraduationStandard = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
  684. expGraduationStandard = expGraduationStandard.And(x => x.GraduationStandardID == graduationStandardID);
  685. var query = GraduationStandardDAL.GetSpecialtyPlanViewQueryable(expGraduationStandard);
  686. if (schoolyearID.HasValue)
  687. {
  688. query = query.Where(x => x.SchoolyearID == schoolyearID);
  689. }
  690. if (courseTypeID.HasValue)
  691. {
  692. query = query.Where(x => x.CourseTypeID == courseTypeID);
  693. }
  694. if (starttermID.HasValue)
  695. {
  696. query = query.Where(x => x.StarttermID == starttermID);
  697. }
  698. if (isMainCourse.HasValue)
  699. {
  700. //可否学位课程
  701. if (isMainCourse.Value == (int)CF_GeneralPurpose.IsYes)
  702. {
  703. query = query.Where(x => x.IsMainCourse == true);
  704. }
  705. if (isMainCourse.Value == (int)CF_GeneralPurpose.IsNo)
  706. {
  707. query = query.Where(x => x.IsMainCourse != true);
  708. }
  709. }
  710. if (handleModeID.HasValue)
  711. {
  712. query = query.Where(x => x.HandleModeID == handleModeID);
  713. }
  714. //查询条件
  715. if (!string.IsNullOrEmpty(configuretView.ConditionValue))
  716. {
  717. query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim());
  718. }
  719. return this.GetQueryByDataRangeByCollege(query)
  720. .OrderBy(x => x.SchoolyearCode.Length).ThenBy(x => x.SchoolyearCode)
  721. .ThenBy(x => x.CourseCode.Length).ThenBy(x => x.CourseCode)
  722. .ToList();
  723. }
  724. /// <summary>
  725. /// 查询毕业标准对应的执行计划信息ExecutablePlanView
  726. /// </summary>
  727. /// <param name="configuretView"></param>
  728. /// <param name="graduationStandardID"></param>
  729. /// <param name="schoolyearID"></param>
  730. /// <param name="courseTypeID"></param>
  731. /// <param name="starttermID"></param>
  732. /// <param name="isMainCourse"></param>
  733. /// <param name="handleModeID"></param>
  734. /// <param name="executablePlanStatus"></param>
  735. /// <param name="pageIndex"></param>
  736. /// <param name="pageSize"></param>
  737. /// <returns></returns>
  738. public IGridResultSet<ExecutablePlanView> GetExecutablePlanViewGrid(ConfiguretView configuretView, Guid? graduationStandardID,
  739. Guid? schoolyearID, int? courseTypeID, int? starttermID, int? isMainCourse, int? handleModeID, int? executablePlanStatus, int pageIndex, int pageSize)
  740. {
  741. //毕业标准
  742. Expression<Func<ER_GraduationStandard, bool>> expGraduationStandard = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
  743. expGraduationStandard = expGraduationStandard.And(x => x.GraduationStandardID == graduationStandardID);
  744. var query = GraduationStandardDAL.GetExecutablePlanViewQueryable(expGraduationStandard);
  745. if (schoolyearID.HasValue)
  746. {
  747. query = query.Where(x => x.SchoolyearID == schoolyearID);
  748. }
  749. if (courseTypeID.HasValue)
  750. {
  751. query = query.Where(x => x.CourseTypeID == courseTypeID);
  752. }
  753. if (starttermID.HasValue)
  754. {
  755. query = query.Where(x => x.StarttermID == starttermID);
  756. }
  757. if (isMainCourse.HasValue)
  758. {
  759. //可否学位课程
  760. if (isMainCourse.Value == (int)CF_GeneralPurpose.IsYes)
  761. {
  762. query = query.Where(x => x.IsMainCourse == true);
  763. }
  764. if (isMainCourse.Value == (int)CF_GeneralPurpose.IsNo)
  765. {
  766. query = query.Where(x => x.IsMainCourse != true);
  767. }
  768. }
  769. if (handleModeID.HasValue)
  770. {
  771. query = query.Where(x => x.HandleModeID == handleModeID);
  772. }
  773. if (executablePlanStatus.HasValue)
  774. {
  775. //执行计划状态
  776. query = query.Where(x => x.RecordStatus == executablePlanStatus);
  777. }
  778. //查询条件
  779. if (!string.IsNullOrEmpty(configuretView.ConditionValue))
  780. {
  781. query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim());
  782. }
  783. return this.GetQueryByDataRangeByCollege(query)
  784. .OrderBy(x => x.SchoolyearCode.Length).ThenBy(x => x.SchoolyearCode)
  785. .ThenBy(x => x.CourseCode.Length).ThenBy(x => x.CourseCode)
  786. .ToGridResultSet<ExecutablePlanView>(pageIndex, pageSize);
  787. }
  788. /// <summary>
  789. /// 查询毕业标准对应的执行计划信息List
  790. /// </summary>
  791. /// <param name="configuretView"></param>
  792. /// <param name="graduationStandardID"></param>
  793. /// <param name="schoolyearID"></param>
  794. /// <param name="courseTypeID"></param>
  795. /// <param name="starttermID"></param>
  796. /// <param name="isMainCourse"></param>
  797. /// <param name="handleModeID"></param>
  798. /// <param name="executablePlanStatus"></param>
  799. /// <returns></returns>
  800. public IList<ExecutablePlanView> GetExecutablePlanViewList(ConfiguretView configuretView, Guid? graduationStandardID,
  801. Guid? schoolyearID, int? courseTypeID, int? starttermID, int? isMainCourse, int? handleModeID, int? executablePlanStatus)
  802. {
  803. //毕业标准
  804. Expression<Func<ER_GraduationStandard, bool>> expGraduationStandard = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
  805. expGraduationStandard = expGraduationStandard.And(x => x.GraduationStandardID == graduationStandardID);
  806. var query = GraduationStandardDAL.GetExecutablePlanViewQueryable(expGraduationStandard);
  807. if (schoolyearID.HasValue)
  808. {
  809. query = query.Where(x => x.SchoolyearID == schoolyearID);
  810. }
  811. if (courseTypeID.HasValue)
  812. {
  813. query = query.Where(x => x.CourseTypeID == courseTypeID);
  814. }
  815. if (starttermID.HasValue)
  816. {
  817. query = query.Where(x => x.StarttermID == starttermID);
  818. }
  819. if (isMainCourse.HasValue)
  820. {
  821. //可否学位课程
  822. if (isMainCourse.Value == (int)CF_GeneralPurpose.IsYes)
  823. {
  824. query = query.Where(x => x.IsMainCourse == true);
  825. }
  826. if (isMainCourse.Value == (int)CF_GeneralPurpose.IsNo)
  827. {
  828. query = query.Where(x => x.IsMainCourse != true);
  829. }
  830. }
  831. if (handleModeID.HasValue)
  832. {
  833. query = query.Where(x => x.HandleModeID == handleModeID);
  834. }
  835. if (executablePlanStatus.HasValue)
  836. {
  837. //执行计划状态
  838. query = query.Where(x => x.RecordStatus == executablePlanStatus);
  839. }
  840. //查询条件
  841. if (!string.IsNullOrEmpty(configuretView.ConditionValue))
  842. {
  843. query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim());
  844. }
  845. return this.GetQueryByDataRangeByCollege(query)
  846. .OrderBy(x => x.SchoolyearCode.Length).ThenBy(x => x.SchoolyearCode)
  847. .ThenBy(x => x.CourseCode.Length).ThenBy(x => x.CourseCode)
  848. .ToList();
  849. }
  850. /// <summary>
  851. /// 获取年级专业各在校状态学生
  852. /// </summary>
  853. /// <param name="configuretView"></param>
  854. /// <param name="grademajorID"></param>
  855. /// <param name="inschoolStatus"></param>
  856. /// <param name="pageIndex"></param>
  857. /// <param name="pageSize"></param>
  858. /// <returns></returns>
  859. public IGridResultSet<BaseStudentView> GetGradeMajorStudentViewGrid(ConfiguretView configuretView, Guid? grademajorID,
  860. int? inschoolStatus, int pageIndex, int pageSize)
  861. {
  862. //在校状态
  863. Expression<Func<CF_Student, bool>> expStudent = (x => true);
  864. if (inschoolStatus != null && inschoolStatus > -1)
  865. {
  866. var inschoolStatusList = InSchoolSettingServices.GetInschoolStatusList(true);
  867. if (inschoolStatus == 1)
  868. {
  869. //表示在校
  870. expStudent = expStudent.And(x => inschoolStatusList.Contains(x.InSchoolStatusID));
  871. }
  872. if (inschoolStatus == 0)
  873. {
  874. //不在校
  875. expStudent = expStudent.And(x => !inschoolStatusList.Contains(x.InSchoolStatusID));
  876. }
  877. }
  878. var query = GraduationStandardDAL.GetGradeMajorStudentViewQueryAble(x => x.GrademajorID == grademajorID, expStudent);
  879. //查询条件
  880. if (!string.IsNullOrEmpty(configuretView.ConditionValue))
  881. {
  882. query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim());
  883. }
  884. return this.GetQueryByDataRangeByCollege(query).OrderByDescending(x => x.ClassmajorCode.Length)
  885. .OrderBy(x => x.ClassmajorCode).OrderBy(x => x.LoginID)
  886. .ToGridResultSet<BaseStudentView>(pageIndex, pageSize);
  887. }
  888. /// <summary>
  889. /// 获取年级专业各在校状态学生
  890. /// </summary>
  891. /// <param name="configuretView"></param>
  892. /// <param name="grademajorID"></param>
  893. /// <param name="inschoolStatus"></param>
  894. /// <returns></returns>
  895. public List<BaseStudentView> GetGradeMajorStudentViewGrid(ConfiguretView configuretView, Guid? grademajorID,
  896. int? inschoolStatus)
  897. {
  898. //在校状态
  899. Expression<Func<CF_Student, bool>> expStudent = (x => true);
  900. if (inschoolStatus != null && inschoolStatus > -1)
  901. {
  902. var inschoolStatusList = InSchoolSettingServices.GetInschoolStatusList(true);
  903. if (inschoolStatus == 1)
  904. {
  905. //表示在校
  906. expStudent = expStudent.And(x => inschoolStatusList.Contains(x.InSchoolStatusID));
  907. }
  908. if (inschoolStatus == 0)
  909. {
  910. //不在校
  911. expStudent = expStudent.And(x => !inschoolStatusList.Contains(x.InSchoolStatusID));
  912. }
  913. }
  914. var query = GraduationStandardDAL.GetGradeMajorStudentViewQueryAble(x => x.GrademajorID == grademajorID, expStudent);
  915. //查询条件
  916. if (!string.IsNullOrEmpty(configuretView.ConditionValue))
  917. {
  918. query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim());
  919. }
  920. return this.GetQueryByDataRangeByCollege(query).OrderByDescending(x => x.ClassmajorCode.Length)
  921. .OrderBy(x => x.ClassmajorCode).OrderBy(x => x.LoginID)
  922. .ToList();
  923. }
  924. }
  925. }