25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

986 lines
44 KiB

  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. if (EADateArrangeEntityAboutElective == null)
  195. {
  196. return new List<OpenLessonPlanOfElectiveEntity>();
  197. }
  198. var strSql = new StringBuilder();
  199. 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
  200. left join StuSelectLessonListOfElective c on b.Id=c.OLPEId and c.StuNo=@StuNo
  201. left join StuSelectLessonListOfElectivePre cp on b.Id=cp.OLPEId and cp.StuNo=@StuNo left join LessonInfo leif on b.LessonNo=leif.LessonNo
  202. where not exists ( ");
  203. //不显示与已选课程 相同课程名称相同教师的课程
  204. 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 ");
  205. strSql.Append(" ) ");
  206. strSql.Append(" and a.MajorId is not null and a.Grade is not null ");
  207. strSql.Append(" AND b.AcademicYearNo='" + EADateArrangeEntityAboutElective?.AcademicYearNo + "' and b.Semester='" + EADateArrangeEntityAboutElective?.Semester + "' ");
  208. //学生选课显示‘是否可选’为‘是’的课程信息
  209. strSql.Append(" and b.IsAllowSelect=1 ");
  210. if (!queryParam["StuMajorNo"].IsEmpty())
  211. {
  212. dp.Add("StuMajorNo", queryParam["StuMajorNo"].ToString(), DbType.String);
  213. strSql.Append(" and a.MajorId=@StuMajorNo ");
  214. }
  215. else
  216. {
  217. strSql.Append(" and a.MajorId='' ");
  218. }
  219. if (!queryParam["StuGrade"].IsEmpty())
  220. {
  221. dp.Add("StuGrade", queryParam["StuGrade"].ToString(), DbType.String);
  222. strSql.Append(" and a.Grade=@StuGrade ");
  223. }
  224. else
  225. {
  226. strSql.Append(" and a.Grade='' ");
  227. }
  228. //不显示与已选课程 相同课程名称的课程
  229. //if (EADateArrangeEntityAboutElective != null)
  230. //{
  231. // strSql.Append(" AND b.AcademicYearNo='" + EADateArrangeEntityAboutElective?.AcademicYearNo + "' and b.Semester='" + EADateArrangeEntityAboutElective?.Semester + "'");
  232. // 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)");
  233. //}
  234. //else
  235. //{
  236. // strSql.Append(" AND b.AcademicYearNo='' and b.Semester=''");
  237. //}
  238. if (!queryParam["EmpName"].IsEmpty())
  239. {
  240. dp.Add("EmpName", queryParam["EmpName"].ToString(), DbType.String);
  241. strSql.Append(" AND b.EmpName = @EmpName ");
  242. }
  243. if (!queryParam["LessonName"].IsEmpty())
  244. {
  245. dp.Add("LessonName", "%" + queryParam["LessonName"].ToString() + "%", DbType.String);
  246. strSql.Append(" AND b.LessonName Like @LessonName ");
  247. }
  248. var list = this.BaseRepository("CollegeMIS").FindList<OpenLessonPlanOfElectiveEntity>(strSql.ToString(), dp, pagination);
  249. foreach (var item in list)
  250. {
  251. //模式二:正式选课
  252. var aa = this.BaseRepository("CollegeMIS").FindList<StuSelectLessonListOfElectiveEntity>(x => x.OLPEId == item.Id);
  253. //已报名人数
  254. item.StuNumOfApply = aa.Where(x => (x.Status == 1 || x.Status == 2)).Count();
  255. //模式一:预选课
  256. //var aaa = this.BaseRepository("CollegeMIS").FindList<StuSelectLessonListOfElectivePreEntity>(x => x.OLPEId == item.Id);
  257. ////已报名人数
  258. //item.StuNumOfApplyPre = aaa.Where(x => (x.Status == 1 || x.Status == 2)).Count();
  259. }
  260. return list;
  261. }
  262. catch (Exception ex)
  263. {
  264. if (ex is ExceptionEx)
  265. {
  266. throw;
  267. }
  268. else
  269. {
  270. throw ExceptionEx.ThrowServiceException(ex);
  271. }
  272. }
  273. }
  274. /// <summary>
  275. /// 获取OpenLessonPlanOfElective表实体数据
  276. /// <param name="keyValue">主键</param>
  277. /// <summary>
  278. /// <returns></returns>
  279. public OpenLessonPlanOfElectiveEntity GetOpenLessonPlanOfElectiveEntity(string keyValue)
  280. {
  281. try
  282. {
  283. var opeentity=BaseRepository("CollegeMIS").FindEntity<OpenLessonPlanOfElectiveEntity>(keyValue);
  284. //模式二:正式选课
  285. var aa = this.BaseRepository("CollegeMIS").FindList<StuSelectLessonListOfElectiveEntity>(x => x.OLPEId == opeentity.Id);
  286. //已报名人数
  287. opeentity.StuNumOfApply = aa.Where(x => (x.Status == 1 || x.Status == 2)).Count();
  288. //模式一:预选课
  289. var aaa = this.BaseRepository("CollegeMIS").FindList<StuSelectLessonListOfElectivePreEntity>(x => x.OLPEId == opeentity.Id);
  290. //已报名人数
  291. opeentity.StuNumOfApplyPre = aaa.Where(x => (x.Status == 1 || x.Status == 2)).Count();
  292. return opeentity;
  293. }
  294. catch (Exception ex)
  295. {
  296. if (ex is ExceptionEx)
  297. {
  298. throw;
  299. }
  300. else
  301. {
  302. throw ExceptionEx.ThrowServiceException(ex);
  303. }
  304. }
  305. }
  306. /// <summary>
  307. /// 获取OpenLessonPlan表实体数据
  308. /// <param name="keyValue">主键</param>
  309. /// <summary>
  310. /// <returns></returns>
  311. public OpenLessonPlanOfElectiveEntity GetOpenLessonPlanEntityByJson(string queryJson)
  312. {
  313. try
  314. {
  315. var queryParam = queryJson.ToJObject();
  316. var F_SchoolId = queryParam["F_SchoolId"].ToString();
  317. var AcademicYearNo = queryParam["AcademicYearNo"].ToString();
  318. var Semester = queryParam["Semester"].ToString();
  319. var LessonNo = queryParam["LessonNo"].ToString();
  320. var LessonSection = queryParam["LessonSection"].ToString();
  321. var ClassRoomNo = queryParam["ClassRoomNo"].ToString();
  322. var classInfoEntity = this.BaseRepository("CollegeMIS").FindEntity<ClassroomInfoEntity>(x => x.ClassroomNo == ClassRoomNo);
  323. if (classInfoEntity == null)
  324. {
  325. return new OpenLessonPlanOfElectiveEntity();
  326. }
  327. 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");
  328. }
  329. catch (Exception ex)
  330. {
  331. if (ex is ExceptionEx)
  332. {
  333. throw;
  334. }
  335. else
  336. {
  337. throw ExceptionEx.ThrowServiceException(ex);
  338. }
  339. }
  340. }
  341. /// <summary>
  342. /// 获取StuSelectLessonListEntity表实体数据
  343. /// <param name="keyValue">主键</param>
  344. /// <summary>
  345. /// <returns></returns>
  346. public StuSelectLessonListOfElectiveEntity GetStuSelectLessonListEntityByJson(string queryJson)
  347. {
  348. try
  349. {
  350. var queryParam = queryJson.ToJObject();
  351. var F_SchoolId = queryParam["F_SchoolId"].ToString();
  352. var AcademicYearNo = queryParam["AcademicYearNo"].ToString();
  353. var Semester = queryParam["Semester"].ToString();
  354. var LessonNo = queryParam["LessonNo"].ToString();
  355. var LessonSection = queryParam["LessonSection"].ToString();
  356. var ClassRoomNo = queryParam["ClassRoomNo"].ToString();
  357. var classInfoEntity = this.BaseRepository("CollegeMIS").FindEntity<ClassroomInfoEntity>(x => x.ClassroomNo == ClassRoomNo);
  358. if (classInfoEntity == null)
  359. {
  360. return new StuSelectLessonListOfElectiveEntity();
  361. }
  362. 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);
  363. }
  364. catch (Exception ex)
  365. {
  366. if (ex is ExceptionEx)
  367. {
  368. throw;
  369. }
  370. else
  371. {
  372. throw ExceptionEx.ThrowServiceException(ex);
  373. }
  374. }
  375. }
  376. #endregion
  377. #region 提交数据
  378. /// <summary>
  379. /// 删除实体数据
  380. /// <param name="keyValue">主键</param>
  381. /// <summary>
  382. /// <returns></returns>
  383. public void DeleteEntity(string keyValue)
  384. {
  385. try
  386. {
  387. this.BaseRepository("CollegeMIS").Delete<OpenLessonPlanOfElectiveEntity>(t => t.Id == keyValue);
  388. }
  389. catch (Exception ex)
  390. {
  391. if (ex is ExceptionEx)
  392. {
  393. throw;
  394. }
  395. else
  396. {
  397. throw ExceptionEx.ThrowServiceException(ex);
  398. }
  399. }
  400. }
  401. public void SetUpIsAllowSelect(string keyValue, int IsAllowSelect)
  402. {
  403. try
  404. {
  405. if (keyValue.Contains(","))
  406. {
  407. keyValue = string.Join("','", keyValue.Split(','));
  408. }
  409. string sql = $"update OpenLessonPlanOfElective set IsAllowSelect='{IsAllowSelect}' where Id in ('{keyValue}')";
  410. this.BaseRepository("CollegeMIS").ExecuteBySql(sql);
  411. }
  412. catch (Exception ex)
  413. {
  414. if (ex is ExceptionEx)
  415. {
  416. throw;
  417. }
  418. else
  419. {
  420. throw ExceptionEx.ThrowServiceException(ex);
  421. }
  422. }
  423. }
  424. /// <summary>
  425. /// 删除选修课课程
  426. /// </summary>
  427. /// <param name="keyValue"></param>
  428. public void DeleteElective(string keyValue)
  429. {
  430. var db = this.BaseRepository("CollegeMIS");
  431. try
  432. {
  433. db.BeginTrans();
  434. /*
  435. * ElectiveMajor
  436. [dbo].[OpenLessonPlanOfElective]
  437. [dbo].[OpenLessonPlanOfElectiveChange]
  438. [dbo].[OpenLessonPlanOfElectiveDel]
  439. [dbo].[ArrangeLessonTermOfElective] 课号 老师 上课时间 节次 上课教室 学年学期
  440. */
  441. if (keyValue.Contains(","))
  442. {
  443. keyValue = string.Join("','", keyValue.Split(','));
  444. }
  445. var list = db.FindList<OpenLessonPlanOfElectiveEntity>($"select * from OpenLessonPlanOfElective where Id in ('{keyValue}')");
  446. foreach (var entity in list)
  447. {
  448. var lessonSectionArr = entity.LessonSection.Split(',');
  449. var lessonTimeArr = entity.LessonTime.Split(',');
  450. //选修课课程异动
  451. db.ExecuteBySql($"delete from OpenLessonPlanOfElectiveChange where OLPEId='{entity.Id}'");
  452. for (int i = 0; i < lessonSectionArr.Length; i++)
  453. {
  454. //合班历史记录
  455. db.ExecuteBySql(
  456. $@"delete from OpenLessonPlanOfElectiveDel where AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' and LessonNo='{entity.LessonNo}'
  457. and empno = '{entity.EmpNo}' and ClassRoomNo = '{entity.ClassRoomNo}'
  458. and LessonTime = '{lessonTimeArr[i]}' and LessonSection = '{lessonSectionArr[i]}'");
  459. //选修课排课
  460. db.ExecuteBySql(
  461. $@"delete from ArrangeLessonTermOfElective where AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' and LessonNo='{entity.LessonNo}'
  462. and empno = '{entity.EmpNo}' and ClassRoomNo = '{entity.ClassRoomNo}'
  463. and LessonTime = '{lessonTimeArr[i]}' and LessonSection = '{lessonSectionArr[i]}'");
  464. }
  465. //选课专业
  466. db.ExecuteBySql($"delete from ElectiveMajor where OLPOEId='{entity.Id}'");
  467. //删除选修课课程表
  468. db.ExecuteBySql($"delete from OpenLessonPlanOfElective where Id='{entity.Id}'");
  469. }
  470. db.Commit();
  471. }
  472. catch (Exception ex)
  473. {
  474. db.Rollback();
  475. if (ex is ExceptionEx)
  476. {
  477. throw;
  478. }
  479. else
  480. {
  481. throw ExceptionEx.ThrowServiceException(ex);
  482. }
  483. }
  484. }
  485. /// <summary>
  486. /// 保存实体数据(新增、修改)
  487. /// <param name="keyValue">主键</param>
  488. /// <summary>
  489. /// <returns></returns>
  490. public void SaveEntity(string keyValue, OpenLessonPlanOfElectiveEntity entity)
  491. {
  492. try
  493. {
  494. if (!string.IsNullOrEmpty(keyValue))
  495. {
  496. entity.Modify(keyValue);
  497. this.BaseRepository("CollegeMIS").Update(entity);
  498. }
  499. else
  500. {
  501. entity.Create();
  502. this.BaseRepository("CollegeMIS").Insert(entity);
  503. }
  504. }
  505. catch (Exception ex)
  506. {
  507. if (ex is ExceptionEx)
  508. {
  509. throw;
  510. }
  511. else
  512. {
  513. throw ExceptionEx.ThrowServiceException(ex);
  514. }
  515. }
  516. }
  517. /// <summary>
  518. /// 添加选修课程、合班记录
  519. /// </summary>
  520. /// <param name="keyValue"></param>
  521. /// <param name="entity"></param>
  522. public void AddForm(string keyValue, OpenLessonPlanOfElectiveEntity entity)
  523. {
  524. var db = this.BaseRepository("CollegeMIS");
  525. try
  526. {
  527. db.BeginTrans();
  528. var lesson = db.FindEntity<LessonInfoEntity>(x => x.CheckMark == true && x.LessonNo == entity.LessonNo);
  529. entity.StudyScore = lesson.StudyScore;
  530. entity.Create();
  531. db.Insert(entity);
  532. //添加选修合班记录
  533. ElectiveMergeEntity emEntity = new ElectiveMergeEntity();
  534. emEntity.Create();
  535. emEntity.AcademicYearNo = entity.AcademicYearNo;
  536. emEntity.Semester = entity.Semester;
  537. emEntity.LessonId = lesson.LessonId;
  538. emEntity.LessonNo = entity.LessonNo;
  539. emEntity.LessonName = entity.LessonName;
  540. emEntity.F_SchoolId = LoginUserInfo.Get().companyId;
  541. db.Insert(emEntity);
  542. var lessonSection = entity.LessonSection.Split(',');
  543. for (int i = 0; i < lessonSection.Length; i++)
  544. {
  545. //合班明细
  546. ElectiveMergeItemEntity emItemEntity = new ElectiveMergeItemEntity();
  547. emItemEntity.Create();
  548. emItemEntity.EmId = emEntity.EMId;
  549. emItemEntity.OLPOEId = entity.Id;
  550. emItemEntity.LessonSection = lessonSection[i];
  551. emItemEntity.LessonTime = entity.LessonTime.Split(',')[i];
  552. emItemEntity.EmpNo = entity.EmpNo;
  553. emItemEntity.EmpName = entity.EmpName;
  554. emItemEntity.ClassRoomNo = entity.ClassRoomNo;
  555. emItemEntity.ClassRoomName = entity.ClassRoomName;
  556. db.Insert(emItemEntity);
  557. }
  558. db.Commit();
  559. }
  560. catch (Exception ex)
  561. {
  562. db.Rollback();
  563. if (ex is ExceptionEx)
  564. {
  565. throw;
  566. }
  567. else
  568. {
  569. throw ExceptionEx.ThrowServiceException(ex);
  570. }
  571. }
  572. }
  573. /// <summary>
  574. /// 保存实体数据(新增、修改)
  575. /// <param name="keyValue">主键</param>
  576. /// <summary>
  577. /// <returns></returns>
  578. public void SaveFormOfElective(string keyValue, OpenLessonPlanOfElectiveEntity entity)
  579. {
  580. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  581. try
  582. {
  583. if (!string.IsNullOrEmpty(keyValue))
  584. {
  585. //单个编辑
  586. //entity.Modify(keyValue);
  587. //this.BaseRepository("CollegeMIS").Update(entity);
  588. //多个编辑
  589. var keyValueArr = keyValue.Split(',');
  590. foreach (var item in keyValueArr)
  591. {
  592. var model = db.FindEntity<OpenLessonPlanOfElectiveEntity>(item);
  593. if (model != null)
  594. {
  595. model.OrdinaryScoreScale = entity.OrdinaryScoreScale;
  596. model.TermInScoreScale = entity.TermInScoreScale;
  597. model.TermEndScoreScale = entity.TermEndScoreScale;
  598. model.OtherScoreScale = entity.OtherScoreScale;
  599. model.IsAllowEdit = entity.IsAllowEdit;
  600. db.Update(model);
  601. //修改StuSelectLessonList中的比例
  602. 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 + "' ");
  603. //修改StuScore中的成绩
  604. var beforeList = db.FindList<StuScoreEntity>(x => x.AcademicYearNo == model.AcademicYearNo && x.Semester == model.Semester && x.LessonNo == model.LessonNo && x.LessonSortNo == model.LessonSortNo);
  605. if (beforeList.Any())
  606. {
  607. foreach (var stuScoreItem in beforeList)
  608. {
  609. if (stuScoreItem.Score != null)
  610. {
  611. stuScoreItem.Score = (stuScoreItem.OrdinaryScore * (model.OrdinaryScoreScale / 100) + stuScoreItem.TermInScore * (model.TermInScoreScale / 100) + stuScoreItem.TermEndScore * (model.TermEndScoreScale / 100) + stuScoreItem.OtherScore * (model.OtherScoreScale / 100)).ToDecimal(0);
  612. db.Update(stuScoreItem);
  613. }
  614. }
  615. }
  616. }
  617. }
  618. }
  619. else
  620. {
  621. entity.Create();
  622. db.Insert(entity);
  623. }
  624. db.Commit();
  625. }
  626. catch (Exception ex)
  627. {
  628. db.Rollback();
  629. if (ex is ExceptionEx)
  630. {
  631. throw;
  632. }
  633. else
  634. {
  635. throw ExceptionEx.ThrowServiceException(ex);
  636. }
  637. }
  638. }
  639. /// <summary>
  640. /// 批量设置人数
  641. /// </summary>
  642. /// <param name="keyValue"></param>
  643. /// <param name="StuNumMax"></param>
  644. public void SaveStuNumMax(string keyValue, int StuNumMax)
  645. {
  646. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  647. try
  648. {
  649. string ids = string.Join("','", keyValue.Split(','));
  650. db.ExecuteBySql($"update OpenLessonPlanOfElective set StuNumMax='{StuNumMax}' where Id in ('{ids}')");
  651. db.Commit();
  652. }
  653. catch (Exception ex)
  654. {
  655. db.Rollback();
  656. if (ex is ExceptionEx)
  657. {
  658. throw;
  659. }
  660. else
  661. {
  662. throw ExceptionEx.ThrowServiceException(ex);
  663. }
  664. }
  665. }
  666. /// <summary>
  667. /// 选修课课程--判断是否可以批量管理专业
  668. /// </summary>
  669. /// <param name="list"></param>
  670. /// <returns></returns>
  671. public (bool flag, string str) IsBatchEditMajor(List<OpenLessonPlanOfElectiveEntity> list)
  672. {
  673. try
  674. {
  675. if (list.Select(x => x.AcademicYearNo).Distinct().Count() == 1 && list.Select(x => x.Semester).Distinct().Count() == 1 &&
  676. list.Select(x => x.LessonNo).Distinct().Count() == 1)
  677. {
  678. return (true, "");
  679. }
  680. else
  681. {
  682. return (false, "");
  683. }
  684. }
  685. catch (Exception ex)
  686. {
  687. if (ex is ExceptionEx)
  688. {
  689. throw;
  690. }
  691. else
  692. {
  693. throw ExceptionEx.ThrowServiceException(ex);
  694. }
  695. }
  696. }
  697. #endregion
  698. #region 扩展数据
  699. /// <summary>
  700. /// 获取选课时间管理
  701. /// </summary>
  702. /// <returns></returns>
  703. public EADateArrangeEntity GetEADateArrangeEntityAboutElective()
  704. {
  705. try
  706. {
  707. var semesterAndYear = Common.GetSemesterAndYear();
  708. var strAcademicYear = semesterAndYear.AcademicYearShort;
  709. var strSemester = semesterAndYear.Semester;
  710. var now = DateTime.Now;
  711. //不判断学年学期
  712. return this.BaseRepository("CollegeMIS").FindEntity<EADateArrangeEntity>(x => x.WorkName == "选课" && x.MakeDate <= now && x.EndDate >= now && x.CheckMark == "1");
  713. }
  714. catch (Exception ex)
  715. {
  716. if (ex is ExceptionEx)
  717. {
  718. throw;
  719. }
  720. else
  721. {
  722. throw ExceptionEx.ThrowServiceException(ex);
  723. }
  724. }
  725. }
  726. public IEnumerable<OpenLessonPlanOfElectiveEntity> GetPageListOfMerge(Pagination pagination, string queryJson)
  727. {
  728. try
  729. {
  730. var strSql = new StringBuilder();
  731. strSql.Append("SELECT ");
  732. strSql.Append(@"
  733. t.*
  734. ");
  735. strSql.Append(" FROM OpenLessonPlanOfElective t ");
  736. strSql.Append(" WHERE 1=1 ");
  737. var queryParam = queryJson.ToJObject();
  738. // 虚拟参数
  739. var dp = new DynamicParameters(new { });
  740. if (!queryParam["AcademicYearNo"].IsEmpty())
  741. {
  742. dp.Add("AcademicYearNo", "%" + queryParam["AcademicYearNo"].ToString() + "%", DbType.String);
  743. strSql.Append(" AND t.AcademicYearNo Like @AcademicYearNo ");
  744. }
  745. if (!queryParam["Semester"].IsEmpty())
  746. {
  747. dp.Add("Semester", queryParam["Semester"].ToString(), DbType.String);
  748. strSql.Append(" AND t.Semester = @Semester ");
  749. }
  750. if (!queryParam["LessonNo"].IsEmpty())
  751. {
  752. dp.Add("LessonNo", queryParam["LessonNo"].ToString(), DbType.String);
  753. strSql.Append(" AND t.LessonNo = @LessonNo ");
  754. }
  755. if (!queryParam["LessonName"].IsEmpty())
  756. {
  757. dp.Add("LessonName", queryParam["LessonName"].ToString(), DbType.String);
  758. strSql.Append(" AND t.LessonNo = @LessonName ");
  759. //dp.Add("LessonName", "%" + queryParam["LessonName"].ToString() + "%", DbType.String);
  760. //strSql.Append(" AND t.LessonName Like @LessonName ");
  761. }
  762. var list = new List<OpenLessonPlanOfElectiveEntity>();
  763. if (pagination != null)
  764. {
  765. list = this.BaseRepository("CollegeMIS").FindList<OpenLessonPlanOfElectiveEntity>(strSql.ToString(), dp, pagination).ToList();
  766. }
  767. else
  768. {
  769. list = this.BaseRepository("CollegeMIS").FindList<OpenLessonPlanOfElectiveEntity>(strSql.ToString(), dp).ToList();
  770. }
  771. //选课专业
  772. var majorSql =
  773. @"SELECT t.MajorName,t.MajorNo,a.* FROM ElectiveMajor a left join CdMajor t on a.majorid=t.id";
  774. var electiveMajorList = this.BaseRepository("CollegeMIS").FindList<ElectiveMajorEntity>(majorSql);
  775. foreach (var item in list)
  776. {
  777. //模式二:正式选课
  778. var aa = this.BaseRepository("CollegeMIS").FindList<StuSelectLessonListOfElectiveEntity>(x => x.OLPEId == item.Id);
  779. //已报名人数
  780. item.StuNumOfApply = aa.Where(x => (x.Status == 1 || x.Status == 2)).Count();
  781. //审核通过人数
  782. item.StuNum = aa.Where(x => x.Status == 2).Count();
  783. //选课专业
  784. //var strSql2 = new StringBuilder();
  785. //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 ");
  786. //item.ElectiveMajorList = this.BaseRepository("CollegeMIS").FindList<ElectiveMajorEntity>(strSql2.ToString()).OrderBy(x => x.MajorNo).ThenBy(x => x.Grade).ToList();
  787. //模式一:预选课
  788. var aaa = this.BaseRepository("CollegeMIS").FindList<StuSelectLessonListOfElectivePreEntity>(x => x.OLPEId == item.Id);
  789. //已报名人数
  790. item.StuNumOfApplyPre = aaa.Where(x => (x.Status == 1 || x.Status == 2)).Count();
  791. //审核通过人数
  792. item.StuNumPre = aaa.Where(x => x.Status == 2).Count();
  793. //选课专业
  794. item.ElectiveMajorList = electiveMajorList.Where(x => x.OLPOEId == item.Id).ToList();
  795. }
  796. return list;
  797. }
  798. catch (Exception ex)
  799. {
  800. if (ex is ExceptionEx)
  801. {
  802. throw;
  803. }
  804. else
  805. {
  806. throw ExceptionEx.ThrowServiceException(ex);
  807. }
  808. }
  809. }
  810. /// <summary>
  811. /// 选修课课程异动
  812. /// <param name="keyValue">主键</param>
  813. /// <summary>
  814. /// <returns></returns>
  815. public void DoElectiveChange(OpenLessonPlanOfElectiveChangeEntity entity)
  816. {
  817. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  818. try
  819. {
  820. //OpenLessonPlanOfElective,StuSelectLessonListOfElective,StuSelectLessonListOfElectivePre,
  821. //ElectiveMergeItem,ElectiveMerge,OpenLessonPlanOfElectiveDel,ArrangeLessonTermOfElective
  822. var OLPEIdOne = entity.OLPEId;
  823. var EmId = db.FindEntity<ElectiveMergeItemEntity>(x => x.OLPOEId == OLPEIdOne)?.EmId;
  824. var OLPEIdTwo = db.FindEntity<ElectiveMergeItemEntity>(x => x.EmId == EmId && x.OLPOEId != OLPEIdOne).OLPOEId;
  825. var lessonInfoEntity = db.FindEntity<LessonInfoEntity>(x => x.LessonNo == entity.AfterLessonNo);
  826. //选修课开课计划
  827. 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}' ");
  828. //学生选课表
  829. 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}' ");
  830. db.ExecuteBySql($"update StuSelectLessonListOfElectivePre set LessonNo='{entity.AfterLessonNo}',EmpNo='{entity.AfterEmpNo}',ClassRoomNo='{entity.AfterClassRoomNo}' where OLPEId='{OLPEIdOne}' ");
  831. //选修合班明细
  832. db.ExecuteBySql($"update ElectiveMergeItem set EmpNo='{entity.AfterEmpNo}',EmpName='{entity.AfterEmpName}',ClassRoomNo='{entity.AfterClassRoomNo}',ClassRoomName='{entity.AfterClassRoomName}' where EmId='{EmId}' ");
  833. //合班合并结果
  834. db.ExecuteBySql($"update ElectiveMerge set LessonId='{lessonInfoEntity?.LessonId}',LessonNo='{entity.AfterLessonNo}',LessonName='{entity.AfterLessonName}' where EMId='{EmId}' ");
  835. //合班异动数据记录
  836. 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}' ");
  837. //选修课程表
  838. 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}' ");
  839. db.Commit();
  840. }
  841. catch (Exception ex)
  842. {
  843. db.Rollback();
  844. if (ex is ExceptionEx)
  845. {
  846. throw;
  847. }
  848. else
  849. {
  850. throw ExceptionEx.ThrowServiceException(ex);
  851. }
  852. }
  853. }
  854. /// <summary>
  855. /// 初始化学生选课情况
  856. /// </summary>
  857. /// <param name="keyvalue"></param>
  858. public void InitStuSelectLesson(string keyvalue)
  859. {
  860. try
  861. {
  862. }
  863. catch (Exception ex)
  864. {
  865. if (ex is ExceptionEx)
  866. {
  867. throw;
  868. }
  869. else
  870. {
  871. throw ExceptionEx.ThrowServiceException(ex);
  872. }
  873. }
  874. }
  875. #endregion
  876. /// <summary>
  877. /// 保存StuSelectLessonList中的成绩比例
  878. /// <param name="keyValue">主键</param>
  879. /// <summary>
  880. /// <returns></returns>
  881. public void SaveStuSelectLessonListScaleByJson(string queryJson, StuSelectLessonListOfElectiveEntity entity)
  882. {
  883. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  884. try
  885. {
  886. var queryParam = queryJson.ToJObject();
  887. var F_SchoolId = queryParam["F_SchoolId"].ToString();
  888. var AcademicYearNo = queryParam["AcademicYearNo"].ToString();
  889. var Semester = queryParam["Semester"].ToString();
  890. var LessonNo = queryParam["LessonNo"].ToString();
  891. var ClassRoomNo = queryParam["ClassRoomNo"].ToString();
  892. var LessonSection = queryParam["LessonSection"].ToString();
  893. var classInfoEntity = db.FindEntity<ClassroomInfoEntity>(x => x.ClassroomNo == ClassRoomNo);
  894. if (classInfoEntity != null)
  895. {
  896. 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' ");
  897. 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' ");
  898. //修改StuScore中的成绩
  899. 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);
  900. if (beforeList.Any())
  901. {
  902. foreach (var stuScoreItem in beforeList)
  903. {
  904. if (stuScoreItem.Score != null)
  905. {
  906. stuScoreItem.Score = (stuScoreItem.OrdinaryScore * (entity.OrdinaryScoreScale / 100) + stuScoreItem.TermInScore * (entity.TermInScoreScale / 100) + stuScoreItem.TermEndScore * (entity.TermEndScoreScale / 100) + stuScoreItem.OtherScore * (entity.OtherScoreScale / 100)).ToDecimal(0);
  907. db.Update(stuScoreItem);
  908. }
  909. }
  910. }
  911. }
  912. db.Commit();
  913. }
  914. catch (Exception ex)
  915. {
  916. db.Rollback();
  917. if (ex is ExceptionEx)
  918. {
  919. throw;
  920. }
  921. else
  922. {
  923. throw ExceptionEx.ThrowServiceException(ex);
  924. }
  925. }
  926. }
  927. }
  928. }