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.
 
 
 
 
 
 

425 lines
24 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-09-26 10:47
  16. /// 描 述:教学调度
  17. /// </summary>
  18. public class ArrangeLessonTermAttemperService : RepositoryFactory
  19. {
  20. #region 获取数据
  21. /// <summary>
  22. /// 获取页面显示列表数据
  23. /// <summary>
  24. /// <param name="queryJson">查询参数</param>
  25. /// <returns></returns>
  26. public IEnumerable<ArrangeLessonTermAttemperEntity> GetPageList(Pagination pagination, string queryJson)
  27. {
  28. try
  29. {
  30. var strSql = new StringBuilder();
  31. strSql.Append("SELECT t.* ");
  32. strSql.Append(" FROM ArrangeLessonTermAttemper t ");
  33. strSql.Append(" WHERE 1=1 ");
  34. var queryParam = queryJson.ToJObject();
  35. // 虚拟参数
  36. var dp = new DynamicParameters(new { });
  37. if (!queryParam["AttemperType"].IsEmpty())
  38. {
  39. dp.Add("AttemperType", queryParam["AttemperType"].ToString(), DbType.String);
  40. strSql.Append(" AND t.AttemperType = @AttemperType ");
  41. }
  42. if (!queryParam["AttemperTimeType"].IsEmpty())
  43. {
  44. dp.Add("AttemperTimeType", queryParam["AttemperTimeType"].ToString(), DbType.String);
  45. strSql.Append(" AND t.AttemperTimeType = @AttemperTimeType ");
  46. }
  47. if (!queryParam["F_SchoolId"].IsEmpty())
  48. {
  49. dp.Add("F_SchoolId", queryParam["F_SchoolId"].ToString(), DbType.String);
  50. strSql.Append(" AND t.F_SchoolId = @F_SchoolId ");
  51. }
  52. if (!queryParam["AcademicYearNo"].IsEmpty())
  53. {
  54. dp.Add("AcademicYearNo", queryParam["AcademicYearNo"].ToString(), DbType.String);
  55. strSql.Append(" AND t.AcademicYearNo = @AcademicYearNo ");
  56. }
  57. if (!queryParam["Semester"].IsEmpty())
  58. {
  59. dp.Add("Semester", queryParam["Semester"].ToString(), DbType.String);
  60. strSql.Append(" AND t.Semester = @Semester ");
  61. }
  62. if (!queryParam["DeptNo"].IsEmpty())
  63. {
  64. dp.Add("DeptNo", queryParam["DeptNo"].ToString(), DbType.String);
  65. strSql.Append(" AND t.DeptNo = @DeptNo ");
  66. }
  67. if (!queryParam["MajorNo"].IsEmpty())
  68. {
  69. dp.Add("MajorNo", queryParam["MajorNo"].ToString(), DbType.String);
  70. strSql.Append(" AND t.MajorNo = @MajorNo ");
  71. }
  72. if (!queryParam["LessonNo"].IsEmpty())
  73. {
  74. dp.Add("LessonNo", queryParam["LessonNo"].ToString(), DbType.String);
  75. strSql.Append(" AND t.LessonNo = @LessonNo ");
  76. }
  77. if (!queryParam["TeachClassNo"].IsEmpty())
  78. {
  79. dp.Add("TeachClassNo", queryParam["TeachClassNo"].ToString(), DbType.String);
  80. strSql.Append(" AND t.TeachClassNo = @TeachClassNo ");
  81. }
  82. if (!queryParam["EmpNo"].IsEmpty())
  83. {
  84. dp.Add("EmpNo", queryParam["EmpNo"].ToString(), DbType.String);
  85. strSql.Append(" AND (t.EmpNo = @EmpNo or t.NewEmpNo=@EmpNo) ");
  86. }
  87. return this.BaseRepository("CollegeMIS").FindList<ArrangeLessonTermAttemperEntity>(strSql.ToString(), dp, pagination);
  88. }
  89. catch (Exception ex)
  90. {
  91. if (ex is ExceptionEx)
  92. {
  93. throw;
  94. }
  95. else
  96. {
  97. throw ExceptionEx.ThrowServiceException(ex);
  98. }
  99. }
  100. }
  101. /// <summary>
  102. /// 获取ArrangeLessonTermAttemper表实体数据
  103. /// <param name="keyValue">主键</param>
  104. /// <summary>
  105. /// <returns></returns>
  106. public ArrangeLessonTermAttemperEntity GetArrangeLessonTermAttemperEntity(string keyValue)
  107. {
  108. try
  109. {
  110. return this.BaseRepository("CollegeMIS").FindEntity<ArrangeLessonTermAttemperEntity>(keyValue);
  111. }
  112. catch (Exception ex)
  113. {
  114. if (ex is ExceptionEx)
  115. {
  116. throw;
  117. }
  118. else
  119. {
  120. throw ExceptionEx.ThrowServiceException(ex);
  121. }
  122. }
  123. }
  124. /// <summary>
  125. /// 获取主表实体数据
  126. /// <param name="processId">流程实例ID</param>
  127. /// <summary>
  128. /// <returns></returns>
  129. public ArrangeLessonTermAttemperEntity GetEntityByProcessId(string processId)
  130. {
  131. try
  132. {
  133. return this.BaseRepository("CollegeMIS").FindEntity<ArrangeLessonTermAttemperEntity>(t => t.ProcessId == processId);
  134. }
  135. catch (Exception ex)
  136. {
  137. if (ex is ExceptionEx)
  138. {
  139. throw;
  140. }
  141. else
  142. {
  143. throw ExceptionEx.ThrowServiceException(ex);
  144. }
  145. }
  146. }
  147. #endregion
  148. #region 提交数据
  149. /// <summary>
  150. /// 删除实体数据
  151. /// <param name="keyValue">主键</param>
  152. /// <summary>
  153. /// <returns></returns>
  154. public void DeleteEntity(string keyValue)
  155. {
  156. try
  157. {
  158. this.BaseRepository("CollegeMIS").Delete<ArrangeLessonTermAttemperEntity>(t => t.Id == keyValue);
  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. /// 保存实体数据(新增、修改)
  174. /// <param name="keyValue">主键</param>
  175. /// <summary>
  176. /// <returns></returns>
  177. public void SaveEntity(string keyValue, ArrangeLessonTermAttemperEntity entity)
  178. {
  179. try
  180. {
  181. if (!string.IsNullOrEmpty(keyValue))
  182. {
  183. entity.Modify(keyValue);
  184. this.BaseRepository("CollegeMIS").Update(entity);
  185. }
  186. else
  187. {
  188. entity.Create();
  189. this.BaseRepository("CollegeMIS").Insert(entity);
  190. }
  191. }
  192. catch (Exception ex)
  193. {
  194. if (ex is ExceptionEx)
  195. {
  196. throw;
  197. }
  198. else
  199. {
  200. throw ExceptionEx.ThrowServiceException(ex);
  201. }
  202. }
  203. }
  204. #endregion
  205. #region 扩展数据
  206. /// <summary>
  207. /// 提交课程异动记录
  208. /// </summary>
  209. /// <param name="keyValue">课程异动表主键</param>
  210. /// <param name="status">审核状态</param>
  211. /// <param name="processId">流程Id</param>
  212. public void ModifyStatus(string keyValue, int status, string processId)
  213. {
  214. try
  215. {
  216. var now = DateTime.Now;
  217. var entity = this.BaseRepository("CollegeMIS").FindEntity<ArrangeLessonTermAttemperEntity>(x => x.Id == keyValue);
  218. if (entity != null)
  219. {
  220. entity.Status = status;
  221. entity.ProcessId = processId;
  222. entity.SubmitTime = now;
  223. entity.CheckStatus = 1;
  224. this.BaseRepository("CollegeMIS").Update(entity);
  225. }
  226. }
  227. catch (Exception ex)
  228. {
  229. if (ex is ExceptionEx)
  230. {
  231. throw;
  232. }
  233. else
  234. {
  235. throw ExceptionEx.ThrowServiceException(ex);
  236. }
  237. }
  238. }
  239. /// <summary>
  240. /// 修改课程异动表的审核状态
  241. /// </summary>
  242. /// <param name="status">审核状态</param>
  243. /// <param name="processId">流程Id</param>
  244. public void ModifyStatusByProcessId(int status, string processId)
  245. {
  246. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  247. var now = DateTime.Now;
  248. var loginUserInfo = LoginUserInfo.Get();
  249. try
  250. {
  251. var entity = db.FindEntity<ArrangeLessonTermAttemperEntity>(x => x.ProcessId == processId);
  252. if (entity != null)
  253. {
  254. //审核通过
  255. if (status == 2)
  256. {
  257. if (entity.AttemperType == "01") //调课
  258. {
  259. //ArrangeLessonTerm
  260. //var ArrangeLessonTermList = db.FindList<ArrangeLessonTermEntity>(x => x.F_SchoolId == entity.F_SchoolId && x.AcademicYearNo == entity.AcademicYearNo && x.Semester == entity.Semester && x.DeptNo == entity.DeptNo && x.MajorNo == entity.MajorNo && x.LessonNo == entity.LessonNo && x.TeachClassNo.Contains(entity.TeachClassNo) && x.EmpNo == entity.EmpNo && x.ClassroomNo == entity.ClassroomNo && x.LessonDate >= entity.AttemperStartTime && x.LessonDate <= entity.AttemperEndTime);
  261. var ArrangeLessonTermList = db.FindList<ArrangeLessonTermEntity>(x => x.AcademicYearNo == entity.AcademicYearNo && x.Semester == entity.Semester && x.DeptNo == entity.DeptNo && x.MajorNo == entity.MajorNo && x.LessonNo == entity.LessonNo && x.TeachClassNo.Contains(entity.TeachClassNo) && x.EmpNo == entity.EmpNo && x.ClassroomNo == entity.ClassroomNo && x.LessonDate >= entity.AttemperStartTime && x.LessonDate <= entity.AttemperEndTime);
  262. if (ArrangeLessonTermList.Any())
  263. {
  264. foreach (var item in ArrangeLessonTermList)
  265. {
  266. if (!string.IsNullOrEmpty(entity.NewEmpNo))
  267. {
  268. item.EmpNo = entity.NewEmpNo;
  269. item.EmpName = db.FindEntity<EmpInfoEntity>(x => x.EmpNo == entity.NewEmpNo)?.EmpName;
  270. }
  271. if (!string.IsNullOrEmpty(entity.NewClassroomNo))
  272. {
  273. item.ClassroomNo = entity.NewClassroomNo;
  274. }
  275. db.Update(item);
  276. }
  277. }
  278. if (entity.AttemperTimeType == "01") //永久
  279. {
  280. if (!string.IsNullOrEmpty(entity.NewEmpNo))
  281. {
  282. //TeachClass
  283. //db.ExecuteBySql($"update TeachClass set EmpNo='{entity.NewEmpNo}' where F_SchoolId='{entity.F_SchoolId}' and AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' and DeptNo='{entity.DeptNo}' and MajorNo='{entity.MajorNo}' and LessonNo='{entity.LessonNo}' and TeachClassNo='{entity.TeachClassNo}' and EmpNo='{entity.EmpNo}' ");
  284. db.ExecuteBySql($"update TeachClass set EmpNo='{entity.NewEmpNo}' where AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' and DeptNo='{entity.DeptNo}' and MajorNo='{entity.MajorNo}' and LessonNo='{entity.LessonNo}' and TeachClassNo='{entity.TeachClassNo}' and EmpNo='{entity.EmpNo}' ");
  285. //StuSelectLessonList
  286. //db.ExecuteBySql($"update StuSelectLessonList set EmpNo='{entity.NewEmpNo}' where F_SchoolId='{entity.F_SchoolId}' and AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' and DeptNo='{entity.DeptNo}' and MajorNo='{entity.MajorNo}' and LessonNo='{entity.LessonNo}' and TeachClassNo='{entity.TeachClassNo}' and EmpNo='{entity.EmpNo}' ");
  287. db.ExecuteBySql($"update StuSelectLessonList set EmpNo='{entity.NewEmpNo}' where AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' and DeptNo='{entity.DeptNo}' and MajorNo='{entity.MajorNo}' and LessonNo='{entity.LessonNo}' and TeachClassNo='{entity.TeachClassNo}' and EmpNo='{entity.EmpNo}' ");
  288. //StuScore
  289. //db.ExecuteBySql($"update StuScore set EmpNo='{entity.NewEmpNo}' where F_SchoolId='{entity.F_SchoolId}' and AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' and DeptNo='{entity.DeptNo}' and MajorNo='{entity.MajorNo}' and LessonNo='{entity.LessonNo}' and TeachClassNo='{entity.TeachClassNo}' and EmpNo='{entity.EmpNo}' and LessonSortNo='1' ");
  290. db.ExecuteBySql($"update StuScore set EmpNo='{entity.NewEmpNo}' where AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' and DeptNo='{entity.DeptNo}' and MajorNo='{entity.MajorNo}' and LessonNo='{entity.LessonNo}' and TeachClassNo='{entity.TeachClassNo}' and EmpNo='{entity.EmpNo}' and LessonSortNo='1' ");
  291. //EmpReportCard
  292. //todo:分校区版初始化成绩时,初始化学生成绩未赋值F_SchoolId,初始化教师成绩单未赋值F_SchoolId
  293. //db.ExecuteBySql($"update EmpReportCard set EmpNo='{entity.NewEmpNo}',EmpName='{db.FindEntity<EmpInfoEntity>(x => x.EmpNo == entity.NewEmpNo)?.EmpName}' where F_SchoolId='{entity.F_SchoolId}' and AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' and LessonNo='{entity.LessonNo}' and ClassNo='{entity.TeachClassNo}' and EmpNo='{entity.EmpNo}' and LessonSortNo='1' ");
  294. db.ExecuteBySql($"update EmpReportCard set EmpNo='{entity.NewEmpNo}',EmpName='{db.FindEntity<EmpInfoEntity>(x => x.EmpNo == entity.NewEmpNo)?.EmpName}' where AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' and LessonNo='{entity.LessonNo}' and ClassNo='{entity.TeachClassNo}' and EmpNo='{entity.EmpNo}' and LessonSortNo='1' ");
  295. }
  296. }
  297. }
  298. else if (entity.AttemperType == "02") //停课
  299. {
  300. //ArrangeLessonTerm
  301. //db.ExecuteBySql($"update ArrangeLessonTerm set CheckMark='0' where F_SchoolId='{entity.F_SchoolId}' and AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' and DeptNo='{entity.DeptNo}' and MajorNo='{entity.MajorNo}' and LessonNo='{entity.LessonNo}' and TeachClassNo like '%{entity.TeachClassNo}%' and EmpNo='{entity.EmpNo}' and ClassroomNo='{entity.ClassroomNo}' ");
  302. db.ExecuteBySql($"update ArrangeLessonTerm set CheckMark='0' where AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' and DeptNo='{entity.DeptNo}' and MajorNo='{entity.MajorNo}' and LessonNo='{entity.LessonNo}' and TeachClassNo like '%{entity.TeachClassNo}%' and EmpNo='{entity.EmpNo}' and ClassroomNo='{entity.ClassroomNo}' ");
  303. //StuSelectLessonList
  304. //db.ExecuteBySql($"update StuSelectLessonList set CheckMark='0' where F_SchoolId='{entity.F_SchoolId}' and AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' and DeptNo='{entity.DeptNo}' and MajorNo='{entity.MajorNo}' and LessonNo='{entity.LessonNo}' and TeachClassNo='{entity.TeachClassNo}' and EmpNo='{entity.EmpNo}' ");
  305. db.ExecuteBySql($"update StuSelectLessonList set CheckMark='0' where AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' and DeptNo='{entity.DeptNo}' and MajorNo='{entity.MajorNo}' and LessonNo='{entity.LessonNo}' and TeachClassNo='{entity.TeachClassNo}' and EmpNo='{entity.EmpNo}' ");
  306. }
  307. else if (entity.AttemperType == "03") //对调
  308. {
  309. //ArrangeLessonTerm
  310. //var ArrangeLessonTermList = this.BaseRepository("CollegeMIS").FindList<ArrangeLessonTermEntity>(x => x.F_SchoolId == entity.F_SchoolId && x.AcademicYearNo == entity.AcademicYearNo && x.Semester == entity.Semester && x.DeptNo == entity.DeptNo && x.MajorNo == entity.MajorNo && x.LessonNo == entity.LessonNo && x.TeachClassNo.Contains(entity.TeachClassNo) && x.EmpNo == entity.EmpNo && x.ClassroomNo == entity.ClassroomNo);
  311. var ArrangeLessonTermList = this.BaseRepository("CollegeMIS").FindList<ArrangeLessonTermEntity>(x => x.AcademicYearNo == entity.AcademicYearNo && x.Semester == entity.Semester && x.DeptNo == entity.DeptNo && x.MajorNo == entity.MajorNo && x.LessonNo == entity.LessonNo && x.TeachClassNo.Contains(entity.TeachClassNo) && x.EmpNo == entity.EmpNo && x.ClassroomNo == entity.ClassroomNo);
  312. //var NewArrangeLessonTermList = this.BaseRepository("CollegeMIS").FindList<ArrangeLessonTermEntity>(x => x.F_SchoolId == entity.F_SchoolId && x.AcademicYearNo == entity.AcademicYearNo && x.Semester == entity.Semester && x.DeptNo == entity.NewDeptNo && x.MajorNo == entity.NewMajorNo && x.LessonNo == entity.NewLessonNo && x.TeachClassNo.Contains(entity.NewTeachClassNo) && x.EmpNo == entity.NewEmpNo && x.ClassroomNo == entity.NewClassroomNo);
  313. var NewArrangeLessonTermList = this.BaseRepository("CollegeMIS").FindList<ArrangeLessonTermEntity>(x => x.AcademicYearNo == entity.AcademicYearNo && x.Semester == entity.Semester && x.DeptNo == entity.NewDeptNo && x.MajorNo == entity.NewMajorNo && x.LessonNo == entity.NewLessonNo && x.TeachClassNo.Contains(entity.NewTeachClassNo) && x.EmpNo == entity.NewEmpNo && x.ClassroomNo == entity.NewClassroomNo);
  314. if (ArrangeLessonTermList.Any() && NewArrangeLessonTermList.Any())
  315. {
  316. var oldEntity = ArrangeLessonTermList.FirstOrDefault();
  317. var newEntity = NewArrangeLessonTermList.FirstOrDefault();
  318. var oldEntityTemp = new ArrangeLessonTermEntity()
  319. {
  320. DeptNo = oldEntity.DeptNo,
  321. MajorNo = oldEntity.MajorNo,
  322. LessonNo = oldEntity.LessonNo,
  323. LessonName = oldEntity.LessonName,
  324. TeachClassNo = oldEntity.TeachClassNo,
  325. TeachClassSn = oldEntity.TeachClassSn,
  326. EmpNo = oldEntity.EmpNo,
  327. EmpName = oldEntity.EmpName,
  328. LessonSortNo = oldEntity.LessonSortNo,
  329. StuSortNo = oldEntity.StuSortNo,
  330. JoinLessonNum = oldEntity.JoinLessonNum,
  331. RelatedClassNo = oldEntity.RelatedClassNo,
  332. ClassroomNo = oldEntity.ClassroomNo,
  333. Remark = oldEntity.Remark,
  334. CheckMark = oldEntity.CheckMark,
  335. RecordMark = oldEntity.RecordMark,
  336. };
  337. foreach (var item in ArrangeLessonTermList)
  338. {
  339. item.DeptNo = newEntity.DeptNo;
  340. item.MajorNo = newEntity.MajorNo;
  341. item.LessonNo = newEntity.LessonNo;
  342. item.LessonName = newEntity.LessonName;
  343. item.TeachClassNo = newEntity.TeachClassNo;
  344. item.TeachClassSn = newEntity.TeachClassSn;
  345. item.EmpNo = newEntity.EmpNo;
  346. item.EmpName = newEntity.EmpName;
  347. item.LessonSortNo = newEntity.LessonSortNo;
  348. item.StuSortNo = newEntity.StuSortNo;
  349. item.JoinLessonNum = newEntity.JoinLessonNum;
  350. item.RelatedClassNo = newEntity.RelatedClassNo;
  351. item.ClassroomNo = newEntity.ClassroomNo;
  352. item.Remark = newEntity.Remark;
  353. item.CheckMark = newEntity.CheckMark;
  354. item.RecordMark = newEntity.RecordMark;
  355. db.Update(item);
  356. }
  357. foreach (var newitem in NewArrangeLessonTermList)
  358. {
  359. newitem.DeptNo = oldEntityTemp.DeptNo;
  360. newitem.MajorNo = oldEntityTemp.MajorNo;
  361. newitem.LessonNo = oldEntityTemp.LessonNo;
  362. newitem.LessonName = oldEntityTemp.LessonName;
  363. newitem.TeachClassNo = oldEntityTemp.TeachClassNo;
  364. newitem.TeachClassSn = oldEntityTemp.TeachClassSn;
  365. newitem.EmpNo = oldEntityTemp.EmpNo;
  366. newitem.EmpName = oldEntityTemp.EmpName;
  367. newitem.LessonSortNo = oldEntityTemp.LessonSortNo;
  368. newitem.StuSortNo = oldEntityTemp.StuSortNo;
  369. newitem.JoinLessonNum = oldEntityTemp.JoinLessonNum;
  370. newitem.RelatedClassNo = oldEntityTemp.RelatedClassNo;
  371. newitem.ClassroomNo = oldEntityTemp.ClassroomNo;
  372. newitem.Remark = oldEntityTemp.Remark;
  373. newitem.CheckMark = oldEntityTemp.CheckMark;
  374. newitem.RecordMark = oldEntityTemp.RecordMark;
  375. db.Update(newitem);
  376. }
  377. }
  378. }
  379. }
  380. //更新课程异动表的审核状态
  381. entity.Status = 1;
  382. entity.CheckStatus = status;
  383. entity.CheckUserId = loginUserInfo.userId;
  384. entity.CheckUserName = loginUserInfo.realName;
  385. entity.CheckTime = now;
  386. db.Update(entity);
  387. }
  388. db.Commit();
  389. }
  390. catch (Exception ex)
  391. {
  392. db.Rollback();
  393. if (ex is ExceptionEx)
  394. {
  395. throw;
  396. }
  397. else
  398. {
  399. throw ExceptionEx.ThrowServiceException(ex);
  400. }
  401. }
  402. }
  403. #endregion
  404. }
  405. }