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 38 KiB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
2 years ago
4 years ago
2 years ago
4 years ago
2 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
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835
  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> GetPageListElective(Pagination pagination, string queryJson)
  84. {
  85. try
  86. {
  87. var basedbname = BaseRepository().getDbConnection().Database;
  88. var strSql = new StringBuilder();
  89. strSql.Append("select t.*,c.F_FullName as F_School from OpenLessonPlanOfElective t ");
  90. strSql.Append(" left join " + basedbname + ".dbo.LR_Base_Company c on t.F_SchoolId=c.f_CompanyId ");
  91. strSql.Append(" WHERE 1=1 ");
  92. var queryParam = queryJson.ToJObject();
  93. // 虚拟参数
  94. var dp = new DynamicParameters(new { });
  95. if (!queryParam["F_SchoolId"].IsEmpty())
  96. {
  97. dp.Add("F_SchoolId", queryParam["F_SchoolId"].ToString(), DbType.String);
  98. strSql.Append(" AND t.F_SchoolId = @F_SchoolId ");
  99. }
  100. if (!queryParam["F_School"].IsEmpty())
  101. {
  102. dp.Add("F_School", "%" + queryParam["F_School"].ToString() + "%", DbType.String);
  103. strSql.Append(" AND c.F_FullName Like @F_School ");
  104. }
  105. if (!queryParam["AcademicYearNo"].IsEmpty())
  106. {
  107. dp.Add("AcademicYearNo", queryParam["AcademicYearNo"].ToString(), DbType.String);
  108. strSql.Append(" AND t.AcademicYearNo = @AcademicYearNo ");
  109. }
  110. if (!queryParam["Semester"].IsEmpty())
  111. {
  112. dp.Add("Semester", queryParam["Semester"].ToString(), DbType.String);
  113. strSql.Append(" AND t.Semester = @Semester ");
  114. }
  115. if (!queryParam["Grade"].IsEmpty())
  116. {
  117. dp.Add("Grade", queryParam["Grade"].ToString(), DbType.String);
  118. strSql.Append(" AND t.Grade = @Grade ");
  119. }
  120. if (!queryParam["DeptNo"].IsEmpty())
  121. {
  122. dp.Add("DeptNo", queryParam["DeptNo"].ToString(), DbType.String);
  123. strSql.Append(" AND t.DeptNo = @DeptNo ");
  124. }
  125. if (!queryParam["DeptName"].IsEmpty())
  126. {
  127. dp.Add("DeptName", "%" + queryParam["DeptName"].ToString() + "%", DbType.String);
  128. strSql.Append(" AND d.DeptName Like @DeptName ");
  129. }
  130. if (!queryParam["MajorNo"].IsEmpty())
  131. {
  132. dp.Add("MajorNo", queryParam["MajorNo"].ToString(), DbType.String);
  133. strSql.Append(" AND t.MajorNo = @MajorNo ");
  134. }
  135. if (!queryParam["MajorName"].IsEmpty())
  136. {
  137. dp.Add("MajorName", "%" + queryParam["MajorName"].ToString() + "%", DbType.String);
  138. strSql.Append(" AND m.MajorName Like @MajorName ");
  139. }
  140. if (!queryParam["LessonNo"].IsEmpty())
  141. {
  142. dp.Add("LessonNo", queryParam["LessonNo"].ToString(), DbType.String);
  143. strSql.Append(" AND t.LessonNo = @LessonNo ");
  144. }
  145. if (!queryParam["LessonName"].IsEmpty())
  146. {
  147. dp.Add("LessonName", "%" + queryParam["LessonName"].ToString() + "%", DbType.String);
  148. strSql.Append(" AND t.LessonName Like @LessonName ");
  149. }
  150. if (!queryParam["EmpNo"].IsEmpty())
  151. {
  152. dp.Add("EmpNo", "%" + queryParam["EmpNo"].ToString() + "%", DbType.String);
  153. strSql.Append(" AND t.EmpNo Like @EmpNo ");
  154. }
  155. if (!queryParam["ClassRoomNo"].IsEmpty())
  156. {
  157. dp.Add("ClassRoomNo", "%" + queryParam["ClassRoomNo"].ToString() + "%", DbType.String);
  158. strSql.Append(" AND t.ClassRoomNo Like @ClassRoomNo ");
  159. }
  160. return this.BaseRepository("CollegeMIS").FindList<OpenLessonPlanOfElectiveEntity>(strSql.ToString(), dp, pagination);
  161. }
  162. catch (Exception ex)
  163. {
  164. if (ex is ExceptionEx)
  165. {
  166. throw;
  167. }
  168. else
  169. {
  170. throw ExceptionEx.ThrowServiceException(ex);
  171. }
  172. }
  173. }
  174. /// <summary>
  175. /// 获取页面显示列表数据【学子在线-选课中心】
  176. /// <summary>
  177. /// <param name="queryJson">查询参数</param>
  178. /// <returns></returns>
  179. public IEnumerable<OpenLessonPlanOfElectiveEntity> GetPageListOfStudent(Pagination pagination, string queryJson)
  180. {
  181. try
  182. {
  183. var queryParam = queryJson.ToJObject();
  184. // 虚拟参数
  185. var dp = new DynamicParameters(new { });
  186. //学号
  187. if (!queryParam["StuNo"].IsEmpty())
  188. {
  189. dp.Add("StuNo", queryParam["StuNo"].ToString(), DbType.String);
  190. }
  191. //教学工作安排中“选课”工作设置的学年学期
  192. var now = DateTime.Now;
  193. var EADateArrangeEntityAboutElective = this.BaseRepository("CollegeMIS").FindEntity<EADateArrangeEntity>(x => x.WorkName == "选课" && x.MakeDate <= now && x.EndDate >= now && x.CheckMark == "1");
  194. var strSql = new StringBuilder();
  195. 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
  196. left join StuSelectLessonListOfElective c on b.Id=c.OLPEId and c.StuNo=@StuNo
  197. left join StuSelectLessonListOfElectivePre cp on b.Id=cp.OLPEId and cp.StuNo=@StuNo left join LessonInfo leif on b.LessonNo=leif.LessonNo
  198. where not exists ( ");
  199. //不显示与已选课程 相同课程名称相同教师的课程
  200. 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 ");
  201. strSql.Append(" ) ");
  202. strSql.Append(" and a.MajorId is not null and a.Grade is not null ");
  203. strSql.Append(" AND b.AcademicYearNo='" + EADateArrangeEntityAboutElective?.AcademicYearNo + "' and b.Semester='" + EADateArrangeEntityAboutElective?.Semester + "' ");
  204. if (!queryParam["StuMajorNo"].IsEmpty())
  205. {
  206. dp.Add("StuMajorNo", queryParam["StuMajorNo"].ToString(), DbType.String);
  207. strSql.Append(" and a.MajorId=@StuMajorNo ");
  208. }
  209. else
  210. {
  211. strSql.Append(" and a.MajorId='' ");
  212. }
  213. if (!queryParam["StuGrade"].IsEmpty())
  214. {
  215. dp.Add("StuGrade", queryParam["StuGrade"].ToString(), DbType.String);
  216. strSql.Append(" and a.Grade=@StuGrade ");
  217. }
  218. else
  219. {
  220. strSql.Append(" and a.Grade='' ");
  221. }
  222. //不显示与已选课程 相同课程名称的课程
  223. //if (EADateArrangeEntityAboutElective != null)
  224. //{
  225. // strSql.Append(" AND b.AcademicYearNo='" + EADateArrangeEntityAboutElective?.AcademicYearNo + "' and b.Semester='" + EADateArrangeEntityAboutElective?.Semester + "'");
  226. // 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)");
  227. //}
  228. //else
  229. //{
  230. // strSql.Append(" AND b.AcademicYearNo='' and b.Semester=''");
  231. //}
  232. if (!queryParam["EmpName"].IsEmpty())
  233. {
  234. dp.Add("EmpName", queryParam["EmpName"].ToString(), DbType.String);
  235. strSql.Append(" AND b.EmpName = @EmpName ");
  236. }
  237. if (!queryParam["LessonName"].IsEmpty())
  238. {
  239. dp.Add("LessonName", "%" + queryParam["LessonName"].ToString() + "%", DbType.String);
  240. strSql.Append(" AND b.LessonName Like @LessonName ");
  241. }
  242. var list = this.BaseRepository("CollegeMIS").FindList<OpenLessonPlanOfElectiveEntity>(strSql.ToString(), dp, pagination);
  243. foreach (var item in list)
  244. {
  245. //模式二:正式选课
  246. var aa = this.BaseRepository("CollegeMIS").FindList<StuSelectLessonListOfElectiveEntity>(x => x.OLPEId == item.Id);
  247. //已报名人数
  248. item.StuNumOfApply = aa.Where(x => (x.Status == 1 || x.Status == 2)).Count();
  249. //模式一:预选课
  250. var aaa = this.BaseRepository("CollegeMIS").FindList<StuSelectLessonListOfElectivePreEntity>(x => x.OLPEId == item.Id);
  251. //已报名人数
  252. item.StuNumOfApplyPre = aaa.Where(x => (x.Status == 1 || x.Status == 2)).Count();
  253. }
  254. return list;
  255. }
  256. catch (Exception ex)
  257. {
  258. if (ex is ExceptionEx)
  259. {
  260. throw;
  261. }
  262. else
  263. {
  264. throw ExceptionEx.ThrowServiceException(ex);
  265. }
  266. }
  267. }
  268. /// <summary>
  269. /// 获取OpenLessonPlanOfElective表实体数据
  270. /// <param name="keyValue">主键</param>
  271. /// <summary>
  272. /// <returns></returns>
  273. public OpenLessonPlanOfElectiveEntity GetOpenLessonPlanOfElectiveEntity(string keyValue)
  274. {
  275. try
  276. {
  277. return this.BaseRepository("CollegeMIS").FindEntity<OpenLessonPlanOfElectiveEntity>(keyValue);
  278. }
  279. catch (Exception ex)
  280. {
  281. if (ex is ExceptionEx)
  282. {
  283. throw;
  284. }
  285. else
  286. {
  287. throw ExceptionEx.ThrowServiceException(ex);
  288. }
  289. }
  290. }
  291. /// <summary>
  292. /// 获取OpenLessonPlan表实体数据
  293. /// <param name="keyValue">主键</param>
  294. /// <summary>
  295. /// <returns></returns>
  296. public OpenLessonPlanOfElectiveEntity GetOpenLessonPlanEntityByJson(string queryJson)
  297. {
  298. try
  299. {
  300. var queryParam = queryJson.ToJObject();
  301. var F_SchoolId = queryParam["F_SchoolId"].ToString();
  302. var AcademicYearNo = queryParam["AcademicYearNo"].ToString();
  303. var Semester = queryParam["Semester"].ToString();
  304. var LessonNo = queryParam["LessonNo"].ToString();
  305. var LessonSection =queryParam["LessonSection"].ToString();
  306. var ClassRoomNo = queryParam["ClassRoomNo"].ToString();
  307. var classInfoEntity = this.BaseRepository("CollegeMIS").FindEntity<ClassroomInfoEntity>(x => x.ClassroomNo == ClassRoomNo);
  308. if (classInfoEntity == null)
  309. {
  310. return new OpenLessonPlanOfElectiveEntity();
  311. }
  312. return this.BaseRepository("CollegeMIS").FindEntity<OpenLessonPlanOfElectiveEntity>(x => x.F_SchoolId == F_SchoolId && x.AcademicYearNo == AcademicYearNo && x.Semester == Semester && x.ClassRoomNo == classInfoEntity.ClassroomNo && x.LessonSection == LessonSection && x.LessonNo == LessonNo && x.LessonSortNo == "2");
  313. }
  314. catch (Exception ex)
  315. {
  316. if (ex is ExceptionEx)
  317. {
  318. throw;
  319. }
  320. else
  321. {
  322. throw ExceptionEx.ThrowServiceException(ex);
  323. }
  324. }
  325. }
  326. /// <summary>
  327. /// 获取StuSelectLessonListEntity表实体数据
  328. /// <param name="keyValue">主键</param>
  329. /// <summary>
  330. /// <returns></returns>
  331. public StuSelectLessonListOfElectiveEntity GetStuSelectLessonListEntityByJson(string queryJson)
  332. {
  333. try
  334. {
  335. var queryParam = queryJson.ToJObject();
  336. var F_SchoolId = queryParam["F_SchoolId"].ToString();
  337. var AcademicYearNo = queryParam["AcademicYearNo"].ToString();
  338. var Semester = queryParam["Semester"].ToString();
  339. var LessonNo = queryParam["LessonNo"].ToString();
  340. var LessonSection = queryParam["LessonSection"].ToString();
  341. var ClassRoomNo = queryParam["ClassRoomNo"].ToString();
  342. var classInfoEntity = this.BaseRepository("CollegeMIS").FindEntity<ClassroomInfoEntity>(x => x.ClassroomNo == ClassRoomNo);
  343. if (classInfoEntity == null)
  344. {
  345. return new StuSelectLessonListOfElectiveEntity();
  346. }
  347. return this.BaseRepository("CollegeMIS").FindEntity<StuSelectLessonListOfElectiveEntity>(x => x.F_SchoolId == F_SchoolId && x.AcademicYearNo == AcademicYearNo && x.Semester == Semester && x.LessonNo == LessonNo && x.LessonSortNo == "2" && x.ClassRoomNo == ClassRoomNo && x.LessonSection == LessonSection);
  348. }
  349. catch (Exception ex)
  350. {
  351. if (ex is ExceptionEx)
  352. {
  353. throw;
  354. }
  355. else
  356. {
  357. throw ExceptionEx.ThrowServiceException(ex);
  358. }
  359. }
  360. }
  361. #endregion
  362. #region 提交数据
  363. /// <summary>
  364. /// 删除实体数据
  365. /// <param name="keyValue">主键</param>
  366. /// <summary>
  367. /// <returns></returns>
  368. public void DeleteEntity(string keyValue)
  369. {
  370. try
  371. {
  372. this.BaseRepository("CollegeMIS").Delete<OpenLessonPlanOfElectiveEntity>(t => t.Id == keyValue);
  373. }
  374. catch (Exception ex)
  375. {
  376. if (ex is ExceptionEx)
  377. {
  378. throw;
  379. }
  380. else
  381. {
  382. throw ExceptionEx.ThrowServiceException(ex);
  383. }
  384. }
  385. }
  386. /// <summary>
  387. /// 保存实体数据(新增、修改)
  388. /// <param name="keyValue">主键</param>
  389. /// <summary>
  390. /// <returns></returns>
  391. public void SaveEntity(string keyValue, OpenLessonPlanOfElectiveEntity entity)
  392. {
  393. try
  394. {
  395. if (!string.IsNullOrEmpty(keyValue))
  396. {
  397. entity.Modify(keyValue);
  398. this.BaseRepository("CollegeMIS").Update(entity);
  399. }
  400. else
  401. {
  402. entity.Create();
  403. this.BaseRepository("CollegeMIS").Insert(entity);
  404. }
  405. }
  406. catch (Exception ex)
  407. {
  408. if (ex is ExceptionEx)
  409. {
  410. throw;
  411. }
  412. else
  413. {
  414. throw ExceptionEx.ThrowServiceException(ex);
  415. }
  416. }
  417. }
  418. /// <summary>
  419. /// 添加选修课程、合班记录
  420. /// </summary>
  421. /// <param name="keyValue"></param>
  422. /// <param name="entity"></param>
  423. public void AddForm(string keyValue, OpenLessonPlanOfElectiveEntity entity)
  424. {
  425. var db = this.BaseRepository("CollegeMIS");
  426. try
  427. {
  428. db.BeginTrans();
  429. var lesson = db.FindEntity<LessonInfoEntity>(x => x.CheckMark == true && x.LessonNo == entity.LessonNo);
  430. entity.StudyScore = lesson.StudyScore;
  431. entity.Create();
  432. db.Insert(entity);
  433. //添加选修合班记录
  434. ElectiveMergeEntity emEntity = new ElectiveMergeEntity();
  435. emEntity.Create();
  436. emEntity.AcademicYearNo = entity.AcademicYearNo;
  437. emEntity.Semester = entity.Semester;
  438. emEntity.LessonId = lesson.LessonId;
  439. emEntity.LessonNo = entity.LessonNo;
  440. emEntity.LessonName = entity.LessonName;
  441. emEntity.F_SchoolId = LoginUserInfo.Get().companyId;
  442. db.Insert(emEntity);
  443. var lessonSection = entity.LessonSection.Split(',');
  444. for (int i = 0; i < lessonSection.Length; i++)
  445. {
  446. //合班明细
  447. ElectiveMergeItemEntity emItemEntity = new ElectiveMergeItemEntity();
  448. emItemEntity.Create();
  449. emItemEntity.EmId = emEntity.EMId;
  450. emItemEntity.OLPOEId = entity.Id;
  451. emItemEntity.LessonSection = lessonSection[i];
  452. emItemEntity.LessonTime = entity.LessonTime.Split(',')[i];
  453. emItemEntity.EmpNo = entity.EmpNo;
  454. emItemEntity.EmpName = entity.EmpName;
  455. emItemEntity.ClassRoomNo = entity.ClassRoomNo;
  456. emItemEntity.ClassRoomName = entity.ClassRoomName;
  457. db.Insert(emItemEntity);
  458. }
  459. db.Commit();
  460. }
  461. catch (Exception ex)
  462. {
  463. db.Rollback();
  464. if (ex is ExceptionEx)
  465. {
  466. throw;
  467. }
  468. else
  469. {
  470. throw ExceptionEx.ThrowServiceException(ex);
  471. }
  472. }
  473. }
  474. /// <summary>
  475. /// 保存实体数据(新增、修改)
  476. /// <param name="keyValue">主键</param>
  477. /// <summary>
  478. /// <returns></returns>
  479. public void SaveFormOfElective(string keyValue, OpenLessonPlanOfElectiveEntity entity)
  480. {
  481. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  482. try
  483. {
  484. if (!string.IsNullOrEmpty(keyValue))
  485. {
  486. //单个编辑
  487. //entity.Modify(keyValue);
  488. //this.BaseRepository("CollegeMIS").Update(entity);
  489. //多个编辑
  490. var keyValueArr = keyValue.Split(',');
  491. foreach (var item in keyValueArr)
  492. {
  493. var model = db.FindEntity<OpenLessonPlanOfElectiveEntity>(item);
  494. if (model != null)
  495. {
  496. model.OrdinaryScoreScale = entity.OrdinaryScoreScale;
  497. model.TermInScoreScale = entity.TermInScoreScale;
  498. model.TermEndScoreScale = entity.TermEndScoreScale;
  499. model.OtherScoreScale = entity.OtherScoreScale;
  500. model.IsAllowEdit = entity.IsAllowEdit;
  501. db.Update(model);
  502. //修改StuSelectLessonList中的比例
  503. db.ExecuteBySql("update StuSelectLessonListOfElective set OrdinaryScoreScale=" + entity.OrdinaryScoreScale + ",TermInScoreScale=" + entity.TermInScoreScale + ",TermEndScoreScale=" + entity.TermEndScoreScale + ",OtherScoreScale=" + entity.OtherScoreScale + " where AcademicYearNo='" + model.AcademicYearNo + "' and Semester='" + model.Semester + "' and LessonNo='" + model.LessonNo + "' and LessonSortNo='" + model.LessonSortNo + "' ");
  504. //修改StuScore中的成绩
  505. var beforeList = db.FindList<StuScoreEntity>(x => x.AcademicYearNo == model.AcademicYearNo && x.Semester == model.Semester && x.LessonNo == model.LessonNo && x.LessonSortNo == model.LessonSortNo);
  506. if (beforeList.Any())
  507. {
  508. foreach (var stuScoreItem in beforeList)
  509. {
  510. if (stuScoreItem.Score != null)
  511. {
  512. stuScoreItem.Score = (stuScoreItem.OrdinaryScore * (model.OrdinaryScoreScale / 100) + stuScoreItem.TermInScore * (model.TermInScoreScale / 100) + stuScoreItem.TermEndScore * (model.TermEndScoreScale / 100) + stuScoreItem.OtherScore * (model.OtherScoreScale / 100)).ToDecimal(0);
  513. db.Update(stuScoreItem);
  514. }
  515. }
  516. }
  517. }
  518. }
  519. }
  520. else
  521. {
  522. entity.Create();
  523. db.Insert(entity);
  524. }
  525. db.Commit();
  526. }
  527. catch (Exception ex)
  528. {
  529. db.Rollback();
  530. if (ex is ExceptionEx)
  531. {
  532. throw;
  533. }
  534. else
  535. {
  536. throw ExceptionEx.ThrowServiceException(ex);
  537. }
  538. }
  539. }
  540. #endregion
  541. #region 扩展数据
  542. /// <summary>
  543. /// 获取选课时间管理
  544. /// </summary>
  545. /// <returns></returns>
  546. public EADateArrangeEntity GetEADateArrangeEntityAboutElective()
  547. {
  548. try
  549. {
  550. var semesterAndYear = Common.GetSemesterAndYear();
  551. var strAcademicYear = semesterAndYear.AcademicYearShort;
  552. var strSemester = semesterAndYear.Semester;
  553. var now = DateTime.Now;
  554. //不判断学年学期
  555. return this.BaseRepository("CollegeMIS").FindEntity<EADateArrangeEntity>(x => x.WorkName == "选课" && x.MakeDate <= now && x.EndDate >= now && x.CheckMark == "1");
  556. }
  557. catch (Exception ex)
  558. {
  559. if (ex is ExceptionEx)
  560. {
  561. throw;
  562. }
  563. else
  564. {
  565. throw ExceptionEx.ThrowServiceException(ex);
  566. }
  567. }
  568. }
  569. public IEnumerable<OpenLessonPlanOfElectiveEntity> GetPageListOfMerge(Pagination pagination, string queryJson)
  570. {
  571. try
  572. {
  573. var strSql = new StringBuilder();
  574. strSql.Append("SELECT ");
  575. strSql.Append(@"
  576. t.Id,
  577. t.AcademicYearNo,
  578. t.Semester,
  579. t.LessonNo,
  580. t.LessonNo as LessonNo2,
  581. t.LessonName,
  582. t.LessonSortNo,
  583. t.LessonSection,
  584. t.LessonTime,
  585. t.StudyScore,
  586. t.EmpNo,
  587. t.EmpNo as EmpNo2,
  588. t.EmpName,
  589. t.ClassRoomNo,
  590. t.ClassRoomName,
  591. t.StuNumMax,
  592. t.StuNum,
  593. t.ModifyTime,
  594. t.ModifyUserId,
  595. t.ModifyUserName
  596. ");
  597. strSql.Append(" FROM OpenLessonPlanOfElective t ");
  598. strSql.Append(" WHERE 1=1 ");
  599. var queryParam = queryJson.ToJObject();
  600. // 虚拟参数
  601. var dp = new DynamicParameters(new { });
  602. if (!queryParam["AcademicYearNo"].IsEmpty())
  603. {
  604. dp.Add("AcademicYearNo", "%" + queryParam["AcademicYearNo"].ToString() + "%", DbType.String);
  605. strSql.Append(" AND t.AcademicYearNo Like @AcademicYearNo ");
  606. }
  607. if (!queryParam["Semester"].IsEmpty())
  608. {
  609. dp.Add("Semester", queryParam["Semester"].ToString(), DbType.String);
  610. strSql.Append(" AND t.Semester = @Semester ");
  611. }
  612. if (!queryParam["LessonNo"].IsEmpty())
  613. {
  614. dp.Add("LessonNo", queryParam["LessonNo"].ToString(), DbType.String);
  615. strSql.Append(" AND t.LessonNo = @LessonNo ");
  616. }
  617. if (!queryParam["LessonName"].IsEmpty())
  618. {
  619. dp.Add("LessonName", "%" + queryParam["LessonName"].ToString() + "%", DbType.String);
  620. strSql.Append(" AND t.LessonName Like @LessonName ");
  621. }
  622. var list = new List<OpenLessonPlanOfElectiveEntity>();
  623. if (pagination != null)
  624. {
  625. list = this.BaseRepository("CollegeMIS").FindList<OpenLessonPlanOfElectiveEntity>(strSql.ToString(), dp, pagination).ToList();
  626. }
  627. else
  628. {
  629. list = this.BaseRepository("CollegeMIS").FindList<OpenLessonPlanOfElectiveEntity>(strSql.ToString(), dp).ToList();
  630. }
  631. //选课专业
  632. var majorSql =
  633. @"SELECT t.MajorName,t.MajorNo,a.* FROM ElectiveMajor a left join CdMajor t on a.majorid=t.id";
  634. var electiveMajorList = this.BaseRepository("CollegeMIS").FindList<ElectiveMajorEntity>(majorSql);
  635. foreach (var item in list)
  636. {
  637. //模式二:正式选课
  638. var aa = this.BaseRepository("CollegeMIS").FindList<StuSelectLessonListOfElectiveEntity>(x => x.OLPEId == item.Id);
  639. //已报名人数
  640. item.StuNumOfApply = aa.Where(x => (x.Status == 1 || x.Status == 2)).Count();
  641. //审核通过人数
  642. item.StuNum = aa.Where(x => x.Status == 2).Count();
  643. //选课专业
  644. //var strSql2 = new StringBuilder();
  645. //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 ");
  646. //item.ElectiveMajorList = this.BaseRepository("CollegeMIS").FindList<ElectiveMajorEntity>(strSql2.ToString()).OrderBy(x => x.MajorNo).ThenBy(x => x.Grade).ToList();
  647. //模式一:预选课
  648. var aaa = this.BaseRepository("CollegeMIS").FindList<StuSelectLessonListOfElectivePreEntity>(x => x.OLPEId == item.Id);
  649. //已报名人数
  650. item.StuNumOfApplyPre = aaa.Where(x => (x.Status == 1 || x.Status == 2)).Count();
  651. //审核通过人数
  652. item.StuNumPre = aaa.Where(x => x.Status == 2).Count();
  653. //选课专业
  654. item.ElectiveMajorList = electiveMajorList.Where(x => x.OLPOEId == item.Id).ToList();
  655. }
  656. return list;
  657. }
  658. catch (Exception ex)
  659. {
  660. if (ex is ExceptionEx)
  661. {
  662. throw;
  663. }
  664. else
  665. {
  666. throw ExceptionEx.ThrowServiceException(ex);
  667. }
  668. }
  669. }
  670. /// <summary>
  671. /// 选修课课程异动
  672. /// <param name="keyValue">主键</param>
  673. /// <summary>
  674. /// <returns></returns>
  675. public void DoElectiveChange(OpenLessonPlanOfElectiveChangeEntity entity)
  676. {
  677. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  678. try
  679. {
  680. //OpenLessonPlanOfElective,StuSelectLessonListOfElective,StuSelectLessonListOfElectivePre,
  681. //ElectiveMergeItem,ElectiveMerge,OpenLessonPlanOfElectiveDel,ArrangeLessonTermOfElective
  682. var OLPEIdOne = entity.OLPEId;
  683. var EmId = db.FindEntity<ElectiveMergeItemEntity>(x => x.OLPOEId == OLPEIdOne)?.EmId;
  684. var OLPEIdTwo = db.FindEntity<ElectiveMergeItemEntity>(x => x.EmId == EmId && x.OLPOEId != OLPEIdOne).OLPOEId;
  685. var lessonInfoEntity = db.FindEntity<LessonInfoEntity>(x => x.LessonNo == entity.AfterLessonNo);
  686. //选修课开课计划
  687. 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}' ");
  688. //学生选课表
  689. 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}' ");
  690. db.ExecuteBySql($"update StuSelectLessonListOfElectivePre set LessonNo='{entity.AfterLessonNo}',EmpNo='{entity.AfterEmpNo}',ClassRoomNo='{entity.AfterClassRoomNo}' where OLPEId='{OLPEIdOne}' ");
  691. //选修合班明细
  692. db.ExecuteBySql($"update ElectiveMergeItem set EmpNo='{entity.AfterEmpNo}',EmpName='{entity.AfterEmpName}',ClassRoomNo='{entity.AfterClassRoomNo}',ClassRoomName='{entity.AfterClassRoomName}' where EmId='{EmId}' ");
  693. //合班合并结果
  694. db.ExecuteBySql($"update ElectiveMerge set LessonId='{lessonInfoEntity?.LessonId}',LessonNo='{entity.AfterLessonNo}',LessonName='{entity.AfterLessonName}' where EMId='{EmId}' ");
  695. //合班异动数据记录
  696. 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}' ");
  697. //选修课程表
  698. 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}' ");
  699. db.Commit();
  700. }
  701. catch (Exception ex)
  702. {
  703. db.Rollback();
  704. if (ex is ExceptionEx)
  705. {
  706. throw;
  707. }
  708. else
  709. {
  710. throw ExceptionEx.ThrowServiceException(ex);
  711. }
  712. }
  713. }
  714. /// <summary>
  715. /// 初始化学生选课情况
  716. /// </summary>
  717. /// <param name="keyvalue"></param>
  718. public void InitStuSelectLesson(string keyvalue)
  719. {
  720. try
  721. {
  722. }
  723. catch (Exception ex)
  724. {
  725. if (ex is ExceptionEx)
  726. {
  727. throw;
  728. }
  729. else
  730. {
  731. throw ExceptionEx.ThrowServiceException(ex);
  732. }
  733. }
  734. }
  735. #endregion
  736. /// <summary>
  737. /// 保存StuSelectLessonList中的成绩比例
  738. /// <param name="keyValue">主键</param>
  739. /// <summary>
  740. /// <returns></returns>
  741. public void SaveStuSelectLessonListScaleByJson(string queryJson, StuSelectLessonListOfElectiveEntity entity)
  742. {
  743. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  744. try
  745. {
  746. var queryParam = queryJson.ToJObject();
  747. var F_SchoolId = queryParam["F_SchoolId"].ToString();
  748. var AcademicYearNo = queryParam["AcademicYearNo"].ToString();
  749. var Semester = queryParam["Semester"].ToString();
  750. var LessonNo = queryParam["LessonNo"].ToString();
  751. var ClassRoomNo = queryParam["ClassRoomNo"].ToString();
  752. var LessonSection = queryParam["LessonSection"].ToString();
  753. var classInfoEntity = db.FindEntity<ClassroomInfoEntity>(x => x.ClassroomNo == ClassRoomNo);
  754. if (classInfoEntity != null)
  755. {
  756. db.ExecuteBySql("update StuSelectLessonListOfElective set OrdinaryScoreScale=" + entity.OrdinaryScoreScale + ",TermInScoreScale=" + entity.TermInScoreScale + ",TermEndScoreScale=" + entity.TermEndScoreScale + ",OtherScoreScale=" + entity.OtherScoreScale + " where F_SchoolId='" + F_SchoolId + "' and AcademicYearNo='" + AcademicYearNo + "' and Semester='" + Semester + "' and LessonSection='" + LessonSection + "' and ClassroomNo='" + classInfoEntity.ClassroomNo + "' and LessonNo='" + LessonNo + "' and LessonSortNo='2' ");
  757. db.ExecuteBySql("update OpenLessonPlanOfElective set OrdinaryScoreScale=" + entity.OrdinaryScoreScale + ",TermInScoreScale=" + entity.TermInScoreScale + ",TermEndScoreScale=" + entity.TermEndScoreScale + ",OtherScoreScale=" + entity.OtherScoreScale + " where F_SchoolId='" + F_SchoolId + "' and AcademicYearNo='" + AcademicYearNo + "' and Semester='" + Semester + "' and LessonSection='" + LessonSection + "' and ClassroomNo='" + classInfoEntity.ClassroomNo + "' and LessonNo='" + LessonNo + "' and LessonSortNo='2' ");
  758. //修改StuScore中的成绩
  759. var beforeList = db.FindList<StuScoreEntity>(x => x.F_SchoolId == F_SchoolId && x.AcademicYearNo == AcademicYearNo && x.Semester == Semester && x.ClassRoomNo == classInfoEntity.ClassroomNo && x.LessonNo == LessonNo && x.LessonSortNo == "2" && x.LessonSection == LessonSection);
  760. if (beforeList.Any())
  761. {
  762. foreach (var stuScoreItem in beforeList)
  763. {
  764. if (stuScoreItem.Score != null)
  765. {
  766. stuScoreItem.Score = (stuScoreItem.OrdinaryScore * (entity.OrdinaryScoreScale / 100) + stuScoreItem.TermInScore * (entity.TermInScoreScale / 100) + stuScoreItem.TermEndScore * (entity.TermEndScoreScale / 100) + stuScoreItem.OtherScore * (entity.OtherScoreScale / 100)).ToDecimal(0);
  767. db.Update(stuScoreItem);
  768. }
  769. }
  770. }
  771. }
  772. db.Commit();
  773. }
  774. catch (Exception ex)
  775. {
  776. db.Rollback();
  777. if (ex is ExceptionEx)
  778. {
  779. throw;
  780. }
  781. else
  782. {
  783. throw ExceptionEx.ThrowServiceException(ex);
  784. }
  785. }
  786. }
  787. }
  788. }