You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

OpenLessonPlanOfElectiveService.cs 20 KiB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457
  1. using Dapper;
  2. using Learun.DataBase.Repository;
  3. using Learun.Util;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Data;
  7. using System.Linq;
  8. using System.Text;
  9. namespace Learun.Application.TwoDevelopment.EducationalAdministration
  10. {
  11. /// <summary>
  12. /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园
  13. /// Copyright (c) 2013-2018 北京泉江科技有限公司
  14. /// 创 建:超级管理员
  15. /// 日 期:2019-05-14 10:02
  16. /// 描 述:选修课课程信息
  17. /// </summary>
  18. public class OpenLessonPlanOfElectiveService : RepositoryFactory
  19. {
  20. #region 获取数据
  21. /// <summary>
  22. /// 获取页面显示列表数据
  23. /// <summary>
  24. /// <param name="queryJson">查询参数</param>
  25. /// <returns></returns>
  26. public IEnumerable<OpenLessonPlanOfElectiveEntity> GetPageList(Pagination pagination, string queryJson)
  27. {
  28. try
  29. {
  30. var strSql = new StringBuilder();
  31. strSql.Append("SELECT t.* ");
  32. strSql.Append(" FROM OpenLessonPlanOfElective t ");
  33. strSql.Append(" WHERE 1=1 and Id not in(select OLPOEId from ElectiveMergeItem)");
  34. var queryParam = queryJson.ToJObject();
  35. // 虚拟参数
  36. var dp = new DynamicParameters(new { });
  37. if (!queryParam["AcademicYearNo"].IsEmpty())
  38. {
  39. dp.Add("AcademicYearNo", "%" + queryParam["AcademicYearNo"].ToString() + "%", DbType.String);
  40. strSql.Append(" AND t.AcademicYearNo Like @AcademicYearNo ");
  41. }
  42. if (!queryParam["Semester"].IsEmpty())
  43. {
  44. dp.Add("Semester", queryParam["Semester"].ToString(), DbType.String);
  45. strSql.Append(" AND t.Semester = @Semester ");
  46. }
  47. if (!queryParam["LessonNo"].IsEmpty())
  48. {
  49. dp.Add("LessonNo", queryParam["LessonNo"].ToString(), DbType.String);
  50. strSql.Append(" AND t.LessonNo = @LessonNo ");
  51. }
  52. if (!queryParam["LessonName"].IsEmpty())
  53. {
  54. dp.Add("LessonName", "%" + queryParam["LessonName"].ToString() + "%", DbType.String);
  55. strSql.Append(" AND t.LessonName Like @LessonName ");
  56. }
  57. if (pagination != null)
  58. {
  59. return this.BaseRepository("CollegeMIS").FindList<OpenLessonPlanOfElectiveEntity>(strSql.ToString(), dp, pagination);
  60. }
  61. else
  62. {
  63. return this.BaseRepository("CollegeMIS").FindList<OpenLessonPlanOfElectiveEntity>(strSql.ToString(), dp);
  64. }
  65. }
  66. catch (Exception ex)
  67. {
  68. if (ex is ExceptionEx)
  69. {
  70. throw;
  71. }
  72. else
  73. {
  74. throw ExceptionEx.ThrowServiceException(ex);
  75. }
  76. }
  77. }
  78. /// <summary>
  79. /// 获取页面显示列表数据【学子在线-选课中心】
  80. /// <summary>
  81. /// <param name="queryJson">查询参数</param>
  82. /// <returns></returns>
  83. public IEnumerable<OpenLessonPlanOfElectiveEntity> GetPageListOfStudent(Pagination pagination, string queryJson)
  84. {
  85. try
  86. {
  87. var queryParam = queryJson.ToJObject();
  88. // 虚拟参数
  89. var dp = new DynamicParameters(new { });
  90. //学号
  91. if (!queryParam["StuNo"].IsEmpty())
  92. {
  93. dp.Add("StuNo", queryParam["StuNo"].ToString(), DbType.String);
  94. }
  95. //教学工作安排中“选课”工作设置的学年学期
  96. var now = DateTime.Now;
  97. var EADateArrangeEntityAboutElective = this.BaseRepository("CollegeMIS").FindEntity<EADateArrangeEntity>(x => x.WorkName == "选课" && x.MakeDate <= now && x.EndDate >= now && x.CheckMark == "1");
  98. var strSql = new StringBuilder();
  99. strSql.Append(@"select b.*,leif.LessonTypeId,c.StuNo,c.StuName,c.Status,cp.Status as StatusPre from ElectiveMajor a left join OpenLessonPlanOfElective b on a.OLPOEId=b.Id
  100. left join StuSelectLessonListOfElective c on b.Id=c.OLPEId and c.StuNo=@StuNo
  101. left join StuSelectLessonListOfElectivePre cp on b.Id=cp.OLPEId and cp.StuNo=@StuNo left join LessonInfo leif on b.LessonNo=leif.LessonNo
  102. where not exists ( ");
  103. //不显示与已选课程 相同课程名称相同教师的课程
  104. strSql.Append(" select * from StuSelectLessonListOfElective s where s.AcademicYearNo='" + EADateArrangeEntityAboutElective?.AcademicYearNo + "' and s.Semester='" + EADateArrangeEntityAboutElective.Semester + "' and s.StuNo=@StuNo and s.Status <>3 and s.LessonName=b.LessonName and s.EmpNo=b.EmpNo and s.OLPEId!=b.Id ");
  105. strSql.Append(" ) ");
  106. strSql.Append(" and a.MajorId is not null and a.Grade is not null ");
  107. strSql.Append(" AND b.AcademicYearNo='" + EADateArrangeEntityAboutElective?.AcademicYearNo + "' and b.Semester='" + EADateArrangeEntityAboutElective?.Semester + "' ");
  108. if (!queryParam["StuMajorNo"].IsEmpty())
  109. {
  110. dp.Add("StuMajorNo", queryParam["StuMajorNo"].ToString(), DbType.String);
  111. strSql.Append(" and a.MajorId=@StuMajorNo ");
  112. }
  113. else
  114. {
  115. strSql.Append(" and a.MajorId='' ");
  116. }
  117. if (!queryParam["StuGrade"].IsEmpty())
  118. {
  119. dp.Add("StuGrade", queryParam["StuGrade"].ToString(), DbType.String);
  120. strSql.Append(" and a.Grade=@StuGrade ");
  121. }
  122. else
  123. {
  124. strSql.Append(" and a.Grade='' ");
  125. }
  126. //不显示与已选课程 相同课程名称的课程
  127. //if (EADateArrangeEntityAboutElective != null)
  128. //{
  129. // strSql.Append(" AND b.AcademicYearNo='" + EADateArrangeEntityAboutElective?.AcademicYearNo + "' and b.Semester='" + EADateArrangeEntityAboutElective?.Semester + "'");
  130. // strSql.Append(" and b.LessonName not in(select LessonName from StuSelectLessonListOfElective where AcademicYearNo='" + EADateArrangeEntityAboutElective?.AcademicYearNo + "' and Semester='" + EADateArrangeEntityAboutElective?.Semester + "' and StuNo='" + queryParam["StuNo"].ToString() + "' and Status<>3)");
  131. //}
  132. //else
  133. //{
  134. // strSql.Append(" AND b.AcademicYearNo='' and b.Semester=''");
  135. //}
  136. if (!queryParam["EmpName"].IsEmpty())
  137. {
  138. dp.Add("EmpName", queryParam["EmpName"].ToString(), DbType.String);
  139. strSql.Append(" AND b.EmpName = @EmpName ");
  140. }
  141. if (!queryParam["LessonName"].IsEmpty())
  142. {
  143. dp.Add("LessonName", "%" + queryParam["LessonName"].ToString() + "%", DbType.String);
  144. strSql.Append(" AND b.LessonName Like @LessonName ");
  145. }
  146. var list = this.BaseRepository("CollegeMIS").FindList<OpenLessonPlanOfElectiveEntity>(strSql.ToString(), dp, pagination);
  147. foreach (var item in list)
  148. {
  149. //模式二:正式选课
  150. var aa = this.BaseRepository("CollegeMIS").FindList<StuSelectLessonListOfElectiveEntity>(x => x.OLPEId == item.Id);
  151. //已报名人数
  152. item.StuNumOfApply = aa.Where(x => (x.Status == 1 || x.Status == 2)).Count();
  153. //模式一:预选课
  154. var aaa = this.BaseRepository("CollegeMIS").FindList<StuSelectLessonListOfElectivePreEntity>(x => x.OLPEId == item.Id);
  155. //已报名人数
  156. item.StuNumOfApplyPre = aaa.Where(x => (x.Status == 1 || x.Status == 2)).Count();
  157. }
  158. return list;
  159. }
  160. catch (Exception ex)
  161. {
  162. if (ex is ExceptionEx)
  163. {
  164. throw;
  165. }
  166. else
  167. {
  168. throw ExceptionEx.ThrowServiceException(ex);
  169. }
  170. }
  171. }
  172. /// <summary>
  173. /// 获取OpenLessonPlanOfElective表实体数据
  174. /// <param name="keyValue">主键</param>
  175. /// <summary>
  176. /// <returns></returns>
  177. public OpenLessonPlanOfElectiveEntity GetOpenLessonPlanOfElectiveEntity(string keyValue)
  178. {
  179. try
  180. {
  181. return this.BaseRepository("CollegeMIS").FindEntity<OpenLessonPlanOfElectiveEntity>(keyValue);
  182. }
  183. catch (Exception ex)
  184. {
  185. if (ex is ExceptionEx)
  186. {
  187. throw;
  188. }
  189. else
  190. {
  191. throw ExceptionEx.ThrowServiceException(ex);
  192. }
  193. }
  194. }
  195. #endregion
  196. #region 提交数据
  197. /// <summary>
  198. /// 删除实体数据
  199. /// <param name="keyValue">主键</param>
  200. /// <summary>
  201. /// <returns></returns>
  202. public void DeleteEntity(string keyValue)
  203. {
  204. try
  205. {
  206. this.BaseRepository("CollegeMIS").Delete<OpenLessonPlanOfElectiveEntity>(t => t.Id == keyValue);
  207. }
  208. catch (Exception ex)
  209. {
  210. if (ex is ExceptionEx)
  211. {
  212. throw;
  213. }
  214. else
  215. {
  216. throw ExceptionEx.ThrowServiceException(ex);
  217. }
  218. }
  219. }
  220. /// <summary>
  221. /// 保存实体数据(新增、修改)
  222. /// <param name="keyValue">主键</param>
  223. /// <summary>
  224. /// <returns></returns>
  225. public void SaveEntity(string keyValue, OpenLessonPlanOfElectiveEntity entity)
  226. {
  227. try
  228. {
  229. if (!string.IsNullOrEmpty(keyValue))
  230. {
  231. entity.Modify(keyValue);
  232. this.BaseRepository("CollegeMIS").Update(entity);
  233. }
  234. else
  235. {
  236. entity.Create();
  237. this.BaseRepository("CollegeMIS").Insert(entity);
  238. }
  239. }
  240. catch (Exception ex)
  241. {
  242. if (ex is ExceptionEx)
  243. {
  244. throw;
  245. }
  246. else
  247. {
  248. throw ExceptionEx.ThrowServiceException(ex);
  249. }
  250. }
  251. }
  252. #endregion
  253. #region 扩展数据
  254. /// <summary>
  255. /// 获取选课时间管理
  256. /// </summary>
  257. /// <returns></returns>
  258. public EADateArrangeEntity GetEADateArrangeEntityAboutElective()
  259. {
  260. try
  261. {
  262. var semesterAndYear = Common.GetSemesterAndYear();
  263. var strAcademicYear = semesterAndYear.AcademicYearShort;
  264. var strSemester = semesterAndYear.Semester;
  265. var now = DateTime.Now;
  266. //不判断学年学期
  267. return this.BaseRepository("CollegeMIS").FindEntity<EADateArrangeEntity>(x => x.WorkName == "选课" && x.MakeDate <= now && x.EndDate >= now && x.CheckMark == "1");
  268. }
  269. catch (Exception ex)
  270. {
  271. if (ex is ExceptionEx)
  272. {
  273. throw;
  274. }
  275. else
  276. {
  277. throw ExceptionEx.ThrowServiceException(ex);
  278. }
  279. }
  280. }
  281. public IEnumerable<OpenLessonPlanOfElectiveEntity> GetPageListOfMerge(Pagination pagination, string queryJson)
  282. {
  283. try
  284. {
  285. var strSql = new StringBuilder();
  286. strSql.Append("SELECT ");
  287. strSql.Append(@"
  288. t.Id,
  289. t.AcademicYearNo,
  290. t.Semester,
  291. t.LessonNo,
  292. t.LessonNo as LessonNo2,
  293. t.LessonName,
  294. t.LessonSortNo,
  295. t.LessonSection,
  296. t.LessonTime,
  297. t.StudyScore,
  298. t.EmpNo,
  299. t.EmpNo as EmpNo2,
  300. t.EmpName,
  301. t.ClassRoomNo,
  302. t.ClassRoomName,
  303. t.StuNumMax,
  304. t.StuNum,
  305. t.ModifyTime,
  306. t.ModifyUserId,
  307. t.ModifyUserName
  308. ");
  309. strSql.Append(" FROM OpenLessonPlanOfElective t ");
  310. strSql.Append(" WHERE 1=1 ");
  311. var queryParam = queryJson.ToJObject();
  312. // 虚拟参数
  313. var dp = new DynamicParameters(new { });
  314. if (!queryParam["AcademicYearNo"].IsEmpty())
  315. {
  316. dp.Add("AcademicYearNo", "%" + queryParam["AcademicYearNo"].ToString() + "%", DbType.String);
  317. strSql.Append(" AND t.AcademicYearNo Like @AcademicYearNo ");
  318. }
  319. if (!queryParam["Semester"].IsEmpty())
  320. {
  321. dp.Add("Semester", queryParam["Semester"].ToString(), DbType.String);
  322. strSql.Append(" AND t.Semester = @Semester ");
  323. }
  324. if (!queryParam["LessonNo"].IsEmpty())
  325. {
  326. dp.Add("LessonNo", queryParam["LessonNo"].ToString(), DbType.String);
  327. strSql.Append(" AND t.LessonNo = @LessonNo ");
  328. }
  329. if (!queryParam["LessonName"].IsEmpty())
  330. {
  331. dp.Add("LessonName", "%" + queryParam["LessonName"].ToString() + "%", DbType.String);
  332. strSql.Append(" AND t.LessonName Like @LessonName ");
  333. }
  334. var list = new List<OpenLessonPlanOfElectiveEntity>();
  335. if (pagination != null)
  336. {
  337. list = this.BaseRepository("CollegeMIS").FindList<OpenLessonPlanOfElectiveEntity>(strSql.ToString(), dp, pagination).ToList();
  338. }
  339. else
  340. {
  341. list = this.BaseRepository("CollegeMIS").FindList<OpenLessonPlanOfElectiveEntity>(strSql.ToString(), dp).ToList();
  342. }
  343. //选课专业
  344. var majorSql =
  345. @"SELECT t.MajorName,t.MajorNo,a.* FROM ElectiveMajor a left join CdMajor t on a.majorid=t.id";
  346. var electiveMajorList = this.BaseRepository("CollegeMIS").FindList<ElectiveMajorEntity>(majorSql);
  347. foreach (var item in list)
  348. {
  349. //模式二:正式选课
  350. var aa = this.BaseRepository("CollegeMIS").FindList<StuSelectLessonListOfElectiveEntity>(x => x.OLPEId == item.Id);
  351. //已报名人数
  352. item.StuNumOfApply = aa.Where(x => (x.Status == 1 || x.Status == 2)).Count();
  353. //审核通过人数
  354. item.StuNum = aa.Where(x => x.Status == 2).Count();
  355. //选课专业
  356. //var strSql2 = new StringBuilder();
  357. //strSql2.Append("select e.Id,e.OLPOEId,e.MajorId,e.Grade,m.MajorNo,m.MajorName from ElectiveMajor e left join CdMajor m on e.MajorId=m.ID where e.OLPOEId='" + item.Id + "' and e.MajorId is not null and e.Grade is not null ");
  358. //item.ElectiveMajorList = this.BaseRepository("CollegeMIS").FindList<ElectiveMajorEntity>(strSql2.ToString()).OrderBy(x => x.MajorNo).ThenBy(x => x.Grade).ToList();
  359. //模式一:预选课
  360. var aaa = this.BaseRepository("CollegeMIS").FindList<StuSelectLessonListOfElectivePreEntity>(x => x.OLPEId == item.Id);
  361. //已报名人数
  362. item.StuNumOfApplyPre = aaa.Where(x => (x.Status == 1 || x.Status == 2)).Count();
  363. //审核通过人数
  364. item.StuNumPre = aaa.Where(x => x.Status == 2).Count();
  365. //选课专业
  366. item.ElectiveMajorList = electiveMajorList.Where(x => x.OLPOEId == item.Id).ToList();
  367. }
  368. return list;
  369. }
  370. catch (Exception ex)
  371. {
  372. if (ex is ExceptionEx)
  373. {
  374. throw;
  375. }
  376. else
  377. {
  378. throw ExceptionEx.ThrowServiceException(ex);
  379. }
  380. }
  381. }
  382. /// <summary>
  383. /// 选修课课程异动
  384. /// <param name="keyValue">主键</param>
  385. /// <summary>
  386. /// <returns></returns>
  387. public void DoElectiveChange(OpenLessonPlanOfElectiveChangeEntity entity)
  388. {
  389. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  390. try
  391. {
  392. //OpenLessonPlanOfElective,StuSelectLessonListOfElective,StuSelectLessonListOfElectivePre,
  393. //ElectiveMergeItem,ElectiveMerge,OpenLessonPlanOfElectiveDel,ArrangeLessonTermOfElective
  394. var OLPEIdOne = entity.OLPEId;
  395. var EmId = db.FindEntity<ElectiveMergeItemEntity>(x => x.OLPOEId == OLPEIdOne)?.EmId;
  396. var OLPEIdTwo = db.FindEntity<ElectiveMergeItemEntity>(x => x.EmId == EmId && x.OLPOEId != OLPEIdOne).OLPOEId;
  397. var lessonInfoEntity = db.FindEntity<LessonInfoEntity>(x => x.LessonNo == entity.AfterLessonNo);
  398. //选修课开课计划
  399. db.ExecuteBySql($"update OpenLessonPlanOfElective set LessonNo='{entity.AfterLessonNo}',LessonName='{entity.AfterLessonName}',EmpNo='{entity.AfterEmpNo}',EmpName='{entity.AfterEmpName}',ClassRoomNo='{entity.AfterClassRoomNo}',ClassRoomName='{entity.AfterClassRoomName}' where Id='{OLPEIdOne}' ");
  400. //学生选课表
  401. db.ExecuteBySql($"update StuSelectLessonListOfElective set LessonNo='{entity.AfterLessonNo}',LessonName='{entity.AfterLessonName}',EmpNo='{entity.AfterEmpNo}',EmpName='{entity.AfterEmpName}',ClassRoomNo='{entity.AfterClassRoomNo}',ClassRoomName='{entity.AfterClassRoomName}' where OLPEId='{OLPEIdOne}' ");
  402. db.ExecuteBySql($"update StuSelectLessonListOfElectivePre set LessonNo='{entity.AfterLessonNo}',EmpNo='{entity.AfterEmpNo}',ClassRoomNo='{entity.AfterClassRoomNo}' where OLPEId='{OLPEIdOne}' ");
  403. //选修合班明细
  404. db.ExecuteBySql($"update ElectiveMergeItem set EmpNo='{entity.AfterEmpNo}',EmpName='{entity.AfterEmpName}',ClassRoomNo='{entity.AfterClassRoomNo}',ClassRoomName='{entity.AfterClassRoomName}' where EmId='{EmId}' ");
  405. //合班合并结果
  406. db.ExecuteBySql($"update ElectiveMerge set LessonId='{lessonInfoEntity?.LessonId}',LessonNo='{entity.AfterLessonNo}',LessonName='{entity.AfterLessonName}' where EMId='{EmId}' ");
  407. //合班异动数据记录
  408. db.ExecuteBySql($"update OpenLessonPlanOfElectiveDel set LessonNo='{entity.AfterLessonNo}',LessonName='{entity.AfterLessonName}',EmpNo='{entity.AfterEmpNo}',EmpName='{entity.AfterEmpName}',ClassRoomNo='{entity.AfterClassRoomNo}',ClassRoomName='{entity.AfterClassRoomName}' where Id='{OLPEIdTwo}' ");
  409. //选修课程表
  410. db.ExecuteBySql($"update ArrangeLessonTermOfElective set LessonNo='{entity.AfterLessonNo}',LessonName='{entity.AfterLessonName}',EmpNo='{entity.AfterEmpNo}',EmpName='{entity.AfterEmpName}',ClassRoomNo='{entity.AfterClassRoomNo}',ClassRoomName='{entity.AfterClassRoomName}' where PaiKeId='{OLPEIdOne}' or PaiKeId='{OLPEIdTwo}' ");
  411. db.Commit();
  412. }
  413. catch (Exception ex)
  414. {
  415. db.Rollback();
  416. if (ex is ExceptionEx)
  417. {
  418. throw;
  419. }
  420. else
  421. {
  422. throw ExceptionEx.ThrowServiceException(ex);
  423. }
  424. }
  425. }
  426. #endregion
  427. }
  428. }