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.
 
 
 
 
 
 

450 lines
18 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 V7.0.6 力软敏捷开发框架
  13. /// Copyright (c) 2013-2020 力软信息技术(苏州)有限公司
  14. /// 创 建:超级管理员
  15. /// 日 期:2021-11-29 11:43
  16. /// 描 述:开课计划
  17. /// </summary>
  18. public class ClassPlanService : RepositoryFactory
  19. {
  20. #region 获取数据
  21. /// <summary>
  22. /// 获取页面显示列表数据
  23. /// </summary>
  24. /// <param name="pagination">查询参数</param>
  25. /// <param name="queryJson">查询参数</param>
  26. /// <returns></returns>
  27. public IEnumerable<OpenLessonPlanEntity> GetPageList(Pagination pagination, string queryJson)
  28. {
  29. try
  30. {
  31. var strSql = new StringBuilder();
  32. strSql.Append("SELECT ");
  33. strSql.Append(@" t.*,l.LessonTypeId ");
  34. strSql.Append(" FROM OpenLessonPlan t ");
  35. strSql.Append(" left join lessoninfo l on t.lessonno=l.lessonno ");
  36. strSql.Append(" WHERE 1=1 and l.CheckMark=1 ");
  37. var queryParam = queryJson.ToJObject();
  38. // 虚拟参数
  39. var dp = new DynamicParameters(new { });
  40. if (!queryParam["F_SchoolId"].IsEmpty())
  41. {
  42. dp.Add("F_SchoolId", queryParam["F_SchoolId"].ToString(), DbType.String);
  43. strSql.Append(" AND t.F_SchoolId = @F_SchoolId ");
  44. }
  45. if (!queryParam["AcademicYearNo"].IsEmpty())
  46. {
  47. dp.Add("AcademicYearNo", queryParam["AcademicYearNo"].ToString(), DbType.String);
  48. strSql.Append(" AND t.AcademicYearNo = @AcademicYearNo ");
  49. }
  50. if (!queryParam["Semester"].IsEmpty())
  51. {
  52. dp.Add("Semester", queryParam["Semester"].ToString(), DbType.String);
  53. strSql.Append(" AND t.Semester = @Semester ");
  54. }
  55. if (!queryParam["DeptNo"].IsEmpty())
  56. {
  57. dp.Add("DeptNo", queryParam["DeptNo"].ToString(), DbType.String);
  58. strSql.Append(" AND t.DeptNo = @DeptNo ");
  59. }
  60. if (!queryParam["MajorNo"].IsEmpty())
  61. {
  62. dp.Add("MajorNo", queryParam["MajorNo"].ToString(), DbType.String);
  63. strSql.Append(" AND t.MajorNo = @MajorNo ");
  64. }
  65. if (!queryParam["Grade"].IsEmpty())
  66. {
  67. dp.Add("Grade", "%" + queryParam["Grade"].ToString() + "%", DbType.String);
  68. strSql.Append(" AND t.Grade Like @Grade ");
  69. }
  70. if (!queryParam["LessonNo"].IsEmpty())
  71. {
  72. dp.Add("LessonNo", queryParam["LessonNo"].ToString(), DbType.String);
  73. strSql.Append(" AND t.LessonNo = @LessonNo ");
  74. }
  75. return this.BaseRepository("CollegeMIS").FindList<OpenLessonPlanEntity>(strSql.ToString(), dp, pagination);
  76. }
  77. catch (Exception ex)
  78. {
  79. if (ex is ExceptionEx)
  80. {
  81. throw;
  82. }
  83. else
  84. {
  85. throw ExceptionEx.ThrowServiceException(ex);
  86. }
  87. }
  88. }
  89. /// <summary>
  90. /// 全校开课计划
  91. /// </summary>
  92. /// <param name="pagination"></param>
  93. /// <param name="queryJson"></param>
  94. /// <returns></returns>
  95. public IEnumerable<OpenLessonPlanEntity> GetPageListForSchool(Pagination pagination, string queryJson)
  96. {
  97. try
  98. {
  99. var strSql = new StringBuilder();
  100. strSql.Append("SELECT ");
  101. strSql.Append(@" t.AcademicYearNo,t.Semester,t.Grade,t.LessonNo,t.LessonName,l.LessonTypeId,t.TeachClassNum,t.WeekLessonHour,t.WeekHourClassroom,t.PracticeHour,t.StartWeek,t.StudyScore,t.Remark,t.MakeDate ");
  102. strSql.Append(" FROM OpenLessonPlan t ");
  103. strSql.Append(" left join lessoninfo l on t.lessonno=l.lessonno ");
  104. strSql.Append(" where l.CheckMark=1 ");
  105. var queryParam = queryJson.ToJObject();
  106. // 虚拟参数
  107. var dp = new DynamicParameters(new { });
  108. if (!queryParam["F_SchoolId"].IsEmpty())
  109. {
  110. dp.Add("F_SchoolId", queryParam["F_SchoolId"].ToString(), DbType.String);
  111. strSql.Append(" AND t.F_SchoolId = @F_SchoolId ");
  112. }
  113. if (!queryParam["AcademicYearNo"].IsEmpty())
  114. {
  115. dp.Add("AcademicYearNo", queryParam["AcademicYearNo"].ToString(), DbType.String);
  116. strSql.Append(" AND t.AcademicYearNo = @AcademicYearNo ");
  117. }
  118. if (!queryParam["Semester"].IsEmpty())
  119. {
  120. dp.Add("Semester", queryParam["Semester"].ToString(), DbType.String);
  121. strSql.Append(" AND t.Semester = @Semester ");
  122. }
  123. if (!queryParam["DeptNo"].IsEmpty())
  124. {
  125. dp.Add("DeptNo", queryParam["DeptNo"].ToString(), DbType.String);
  126. strSql.Append(" AND t.DeptNo = @DeptNo ");
  127. }
  128. if (!queryParam["MajorNo"].IsEmpty())
  129. {
  130. dp.Add("MajorNo", queryParam["MajorNo"].ToString(), DbType.String);
  131. strSql.Append(" AND t.MajorNo = @MajorNo ");
  132. }
  133. if (!queryParam["Grade"].IsEmpty())
  134. {
  135. dp.Add("Grade", "%" + queryParam["Grade"].ToString() + "%", DbType.String);
  136. strSql.Append(" AND t.Grade Like @Grade ");
  137. }
  138. if (!queryParam["LessonNo"].IsEmpty())
  139. {
  140. dp.Add("LessonNo", queryParam["LessonNo"].ToString(), DbType.String);
  141. strSql.Append(" AND t.LessonNo = @LessonNo ");
  142. }
  143. strSql.Append(" group by t.AcademicYearNo,t.Semester,t.Grade,t.LessonNo,t.LessonName,l.LessonTypeId,t.State, t.TeachClassNum, t.WeekLessonHour, t.WeekHourClassroom, t.PracticeHour, t.StartWeek, t.StudyScore, t.Remark,t.MakeDate ");
  144. return this.BaseRepository("CollegeMIS").FindList<OpenLessonPlanEntity>(strSql.ToString(), dp, pagination);
  145. }
  146. catch (Exception ex)
  147. {
  148. if (ex is ExceptionEx)
  149. {
  150. throw;
  151. }
  152. else
  153. {
  154. throw ExceptionEx.ThrowServiceException(ex);
  155. }
  156. }
  157. }
  158. /// <summary>
  159. /// 获取OpenLessonPlan表实体数据
  160. /// </summary>
  161. /// <param name="keyValue">主键</param>
  162. /// <returns></returns>
  163. public OpenLessonPlanEntity GetClassPlanEntity(string keyValue)
  164. {
  165. try
  166. {
  167. return this.BaseRepository("CollegeMIS").FindEntity<OpenLessonPlanEntity>(keyValue.ToInt());
  168. }
  169. catch (Exception ex)
  170. {
  171. if (ex is ExceptionEx)
  172. {
  173. throw;
  174. }
  175. else
  176. {
  177. throw ExceptionEx.ThrowServiceException(ex);
  178. }
  179. }
  180. }
  181. #endregion
  182. #region 提交数据
  183. /// <summary>
  184. /// 删除实体数据
  185. /// </summary>
  186. /// <param name="keyValue">主键</param>
  187. public void DeleteEntity(string keyValue)
  188. {
  189. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  190. try
  191. {
  192. var keyvalue = keyValue.Split(',');
  193. foreach (var items in keyvalue)
  194. {
  195. var OpList = this.BaseRepository("CollegeMIS").FindEntity<OpenLessonPlanEntity>(t => t.ID.ToString() == items);
  196. if (OpList != null)
  197. {
  198. var TeachList = this.BaseRepository("CollegeMIS").FindList<TeachClassEntity>(
  199. x => x.DeptNo == OpList.DeptNo &&
  200. x.MajorNo == OpList.MajorNo &&
  201. x.Grade == OpList.Grade &&
  202. x.Semester == OpList.Semester &&
  203. x.LessonNo == OpList.LessonNo &&
  204. x.AcademicYearNo == OpList.AcademicYearNo
  205. ).ToList();
  206. List<string> StrTeach = null;
  207. if (TeachList.Count > 0)
  208. {
  209. StrTeach = TeachList.Select(x => x.TeachClassNo).ToList();
  210. if (StrTeach.Count() > 0)
  211. {
  212. var LessonList = this.BaseRepository("CollegeMIS").FindList<StuSelectLessonListEntity>(
  213. y => y.DeptNo == OpList.DeptNo &&
  214. y.MajorNo == OpList.MajorNo &&
  215. y.Grade == OpList.Grade &&
  216. y.Semester == OpList.Semester &&
  217. y.LessonNo == OpList.LessonNo &&
  218. y.AcademicYearNo == OpList.AcademicYearNo &&
  219. StrTeach.Contains(y.ClassNo)
  220. );
  221. foreach (var item in LessonList)
  222. {
  223. db.Delete<StuSelectLessonListEntity>(m => m.SelectId == Convert.ToInt32(item.SelectId));
  224. }
  225. foreach (var item in TeachList)
  226. {
  227. db.Delete<TeachClassEntity>(m => m.ID == item.ID);
  228. }
  229. }
  230. }
  231. }
  232. db.Delete<OpenLessonPlanEntity>(m => m.ID.ToString() == items);
  233. }
  234. db.Commit();
  235. }
  236. catch (Exception ex)
  237. {
  238. db.Rollback();
  239. if (ex is ExceptionEx)
  240. {
  241. throw;
  242. }
  243. else
  244. {
  245. throw ExceptionEx.ThrowServiceException(ex);
  246. }
  247. }
  248. }
  249. /// <summary>
  250. /// 保存实体数据(新增、修改)
  251. /// </summary>
  252. /// <param name="keyValue">主键</param>
  253. /// <param name="entity">实体</param>
  254. public void SaveEntity(string keyValue, OpenLessonPlanEntity entity)
  255. {
  256. try
  257. {
  258. if (!string.IsNullOrEmpty(keyValue))
  259. {
  260. entity.Modify(keyValue);
  261. this.BaseRepository("CollegeMIS").Update(entity);
  262. }
  263. else
  264. {
  265. entity.Create();
  266. this.BaseRepository("CollegeMIS").Insert(entity);
  267. }
  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. #endregion
  282. #region 扩展数据
  283. /// <summary>
  284. /// 去重
  285. /// </summary>
  286. /// <param name="ID">主键</param>
  287. /// <param name="School">校区</param>
  288. /// <param name="Year">学年</param>
  289. /// <param name="Semester">学期</param>
  290. /// <param name="Dept">系部</param>
  291. /// <param name="Major">专业</param>
  292. /// <param name="Grade">年级</param>
  293. /// <param name="Lesson">课程</param>
  294. /// <returns></returns>
  295. public OpenLessonPlanEntity GetRepetitions(string School, string Year, string Semester, string Dept,
  296. string Major, string Grade, string Lesson)
  297. {
  298. try
  299. {
  300. return this.BaseRepository("CollegeMIS").FindEntity<OpenLessonPlanEntity>(
  301. x => x.F_SchoolId == School
  302. && x.AcademicYearNo == Year
  303. && x.Semester == Semester
  304. && x.DeptNo == Dept
  305. && x.MajorNo == Major
  306. && x.Grade == Grade
  307. && x.LessonNo == Lesson
  308. );
  309. }
  310. catch (Exception e)
  311. {
  312. Console.WriteLine(e);
  313. throw;
  314. }
  315. }
  316. public void DelRelation(string keyValue)
  317. {
  318. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  319. try
  320. {
  321. var keyvalue = Convert.ToInt32(keyValue);
  322. var OpList = this.BaseRepository("CollegeMIS").FindEntity<OpenLessonPlanEntity>(t => t.ID == keyvalue);
  323. if (OpList != null)
  324. {
  325. var TeachList = this.BaseRepository("CollegeMIS").FindList<TeachClassEntity>(
  326. x => x.DeptNo == OpList.DeptNo &&
  327. x.MajorNo == OpList.MajorNo &&
  328. x.Grade == OpList.Grade &&
  329. x.Semester == OpList.Semester &&
  330. x.LessonNo == OpList.LessonNo &&
  331. x.AcademicYearNo == OpList.AcademicYearNo
  332. ).ToList();
  333. List<string> StrTeach = null;
  334. if (TeachList.Count > 0)
  335. {
  336. StrTeach = TeachList.Select(x => x.TeachClassNo).ToList();
  337. if (StrTeach.Count > 0)
  338. {
  339. var LessonList = this.BaseRepository("CollegeMIS").FindList<StuSelectLessonListEntity>(
  340. y => y.DeptNo == OpList.DeptNo &&
  341. y.MajorNo == OpList.MajorNo &&
  342. y.Grade == OpList.Grade &&
  343. y.Semester == OpList.Semester &&
  344. y.LessonNo == OpList.LessonNo &&
  345. y.AcademicYearNo == OpList.AcademicYearNo &&
  346. StrTeach.Contains(y.ClassNo)
  347. );
  348. foreach (var item in LessonList)
  349. {
  350. db.Delete<StuSelectLessonListEntity>(m => m.SelectId == Convert.ToInt32(item.SelectId));
  351. }
  352. foreach (var item in TeachList)
  353. {
  354. db.Delete<TeachClassEntity>(m => m.ID == item.ID);
  355. }
  356. }
  357. }
  358. }
  359. db.Commit();
  360. }
  361. catch (Exception ex)
  362. {
  363. db.Rollback();
  364. if (ex is ExceptionEx)
  365. {
  366. throw;
  367. }
  368. else
  369. {
  370. throw ExceptionEx.ThrowServiceException(ex);
  371. }
  372. }
  373. }
  374. /// <summary>
  375. /// 获取OpenLessonPlan表实体数据
  376. /// <param name="keyValue">主键</param>
  377. /// <summary>
  378. /// <returns></returns>
  379. public List<OpenLessonPlanEntity> GetListById(string keyValue)
  380. {
  381. try
  382. {
  383. var id = keyValue.Split(',');
  384. return this.BaseRepository("CollegeMIS")
  385. .FindList<OpenLessonPlanEntity>(x => id.Contains(x.ID.ToString())).ToList();
  386. }
  387. catch (Exception ex)
  388. {
  389. if (ex is ExceptionEx)
  390. {
  391. throw;
  392. }
  393. else
  394. {
  395. throw ExceptionEx.ThrowServiceException(ex);
  396. }
  397. }
  398. }
  399. public void SaveEntityList(string keyValue, List<OpenLessonPlanEntity> entity)
  400. {
  401. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  402. try
  403. {
  404. var keyvalue = keyValue.Split(',');
  405. foreach (var item in keyvalue)
  406. {
  407. var entityList = this.BaseRepository("CollegeMIS").FindEntity<OpenLessonPlanEntity>(x => x.ID.ToString() == item);
  408. entityList.State = 1;
  409. db.Update(entityList);
  410. }
  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. }