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.
 
 
 
 
 
 

374 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. /// 日 期:2020-11-27 10:05
  16. /// 描 述:学生请假管理
  17. /// </summary>
  18. public class StuLeaveManagementService : 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<StuLeaveManagementEntity> GetPageList(Pagination pagination, string queryJson)
  28. {
  29. try
  30. {
  31. var strSql = new StringBuilder();
  32. strSql.Append("SELECT t.*,s.StuName as CreateUserName,s.ClassNo,s.DeptNo,s.MajorNo,c.ClassDiredctorNo,c.ClassTutorNo ");
  33. strSql.Append(" FROM StuLeaveManagement t left join StuInfoBasic s on t.CreateUserNo=s.StuNo left join ClassInfo c on s.ClassNo=c.ClassNo ");
  34. strSql.Append(" WHERE 1=1 ");
  35. var queryParam = queryJson.ToJObject();
  36. // 虚拟参数
  37. var dp = new DynamicParameters(new { });
  38. if (!queryParam["LeaveType"].IsEmpty())
  39. {
  40. dp.Add("LeaveType", queryParam["LeaveType"].ToString(), DbType.String);
  41. strSql.Append(" AND t.LeaveType = @LeaveType ");
  42. }
  43. if (!queryParam["CheckStatus"].IsEmpty())
  44. {
  45. dp.Add("CheckStatus", queryParam["CheckStatus"].ToString(), DbType.String);
  46. strSql.Append(" AND t.CheckStatus = @CheckStatus ");
  47. }
  48. if (!queryParam["StuNo"].IsEmpty())
  49. {
  50. dp.Add("StuNo", queryParam["StuNo"].ToString(), DbType.String);
  51. strSql.Append(" AND t.CreateUserNo = @StuNo ");
  52. }
  53. //班级班主任/辅导员/系主任
  54. if (!queryParam["ClassManagerNo"].IsEmpty())
  55. {
  56. dp.Add("ClassManagerNo", queryParam["ClassManagerNo"].ToString(), DbType.String);
  57. strSql.Append(" AND (c.ClassDiredctorNo = @ClassManagerNo or c.ClassTutorNo = @ClassManagerNo ");
  58. //登录用户是否是系主任:若是,展示大于2天的请假记录;
  59. var deptDirectorRoleId = Config.GetValue("DeptDirectorRoleId");
  60. if (deptDirectorRoleId != null)
  61. {
  62. var loginInfoRoleIds = LoginUserInfo.Get().roleIds;
  63. if (loginInfoRoleIds.IndexOf(',') == -1)
  64. {
  65. if (loginInfoRoleIds == deptDirectorRoleId)
  66. {
  67. strSql.Append(" or t.LeaveDay>2 )");
  68. }
  69. else
  70. {
  71. strSql.Append(" ) ");
  72. }
  73. }
  74. else
  75. {
  76. if (loginInfoRoleIds.Split(',').Contains(deptDirectorRoleId))
  77. {
  78. strSql.Append(" or t.LeaveDay>2 )");
  79. }
  80. else
  81. {
  82. strSql.Append(" ) ");
  83. }
  84. }
  85. }
  86. else
  87. {
  88. strSql.Append(" ) ");
  89. }
  90. }
  91. return this.BaseRepository("CollegeMIS").FindList<StuLeaveManagementEntity>(strSql.ToString(), dp, pagination);
  92. }
  93. catch (Exception ex)
  94. {
  95. if (ex is ExceptionEx)
  96. {
  97. throw;
  98. }
  99. else
  100. {
  101. throw ExceptionEx.ThrowServiceException(ex);
  102. }
  103. }
  104. }
  105. public IEnumerable<StuLeaveManagementEntity> GetCheckPageList(Pagination pagination, string queryJson)
  106. {
  107. try
  108. {
  109. var strSql = new StringBuilder();
  110. strSql.Append("SELECT t.*,s.StuName as CreateUserName,s.ClassNo,s.DeptNo,s.MajorNo,c.ClassDiredctorNo,c.ClassTutorNo ");
  111. strSql.Append(" FROM StuLeaveManagement t left join StuInfoBasic s on t.CreateUserNo=s.StuNo left join ClassInfo c on s.ClassNo=c.ClassNo ");
  112. strSql.Append(" WHERE 1=1 ");
  113. var queryParam = queryJson.ToJObject();
  114. // 虚拟参数
  115. var dp = new DynamicParameters(new { });
  116. if (!queryParam["LeaveType"].IsEmpty())
  117. {
  118. dp.Add("LeaveType", queryParam["LeaveType"].ToString(), DbType.String);
  119. strSql.Append(" AND t.LeaveType = @LeaveType ");
  120. }
  121. if (!queryParam["CheckStatus"].IsEmpty())
  122. {
  123. dp.Add("CheckStatus", queryParam["CheckStatus"].ToString(), DbType.String);
  124. strSql.Append(" AND t.CheckStatus = @CheckStatus ");
  125. }
  126. if (!queryParam["StuNo"].IsEmpty())
  127. {
  128. dp.Add("StuNo", queryParam["StuNo"].ToString(), DbType.String);
  129. strSql.Append(" AND t.CreateUserNo = @StuNo ");
  130. }
  131. //班级班主任/辅导员/系主任
  132. var ClassManagerNo = LoginUserInfo.Get().account;
  133. if (!string.IsNullOrEmpty(ClassManagerNo))
  134. {
  135. dp.Add("ClassManagerNo", ClassManagerNo, DbType.String);
  136. strSql.Append(" AND (c.ClassDiredctorNo = @ClassManagerNo or c.ClassTutorNo = @ClassManagerNo ");
  137. //登录用户是否是系主任:若是,展示大于2天的请假记录;
  138. var deptDirectorRoleId = Config.GetValue("DeptDirectorRoleId");
  139. if (deptDirectorRoleId != null)
  140. {
  141. var loginInfoRoleIds = LoginUserInfo.Get().roleIds;
  142. if (loginInfoRoleIds.IndexOf(',') == -1)
  143. {
  144. if (loginInfoRoleIds == deptDirectorRoleId)
  145. {
  146. strSql.Append(" or t.LeaveDay>2 )");
  147. }
  148. else
  149. {
  150. strSql.Append(" ) ");
  151. }
  152. }
  153. else
  154. {
  155. if (loginInfoRoleIds.Split(',').Contains(deptDirectorRoleId))
  156. {
  157. strSql.Append(" or t.LeaveDay>2 )");
  158. }
  159. else
  160. {
  161. strSql.Append(" ) ");
  162. }
  163. }
  164. }
  165. else
  166. {
  167. strSql.Append(" ) ");
  168. }
  169. }
  170. return this.BaseRepository("CollegeMIS").FindList<StuLeaveManagementEntity>(strSql.ToString(), dp, pagination);
  171. }
  172. catch (Exception ex)
  173. {
  174. if (ex is ExceptionEx)
  175. {
  176. throw;
  177. }
  178. else
  179. {
  180. throw ExceptionEx.ThrowServiceException(ex);
  181. }
  182. }
  183. }
  184. /// <summary>
  185. /// 获取StuLeaveManagement表实体数据
  186. /// </summary>
  187. /// <param name="keyValue">主键</param>
  188. /// <returns></returns>
  189. public StuLeaveManagementEntity GetStuLeaveManagementEntity(string keyValue)
  190. {
  191. try
  192. {
  193. return this.BaseRepository("CollegeMIS").FindEntity<StuLeaveManagementEntity>(keyValue);
  194. }
  195. catch (Exception ex)
  196. {
  197. if (ex is ExceptionEx)
  198. {
  199. throw;
  200. }
  201. else
  202. {
  203. throw ExceptionEx.ThrowServiceException(ex);
  204. }
  205. }
  206. }
  207. #endregion
  208. #region 提交数据
  209. /// <summary>
  210. /// 删除实体数据
  211. /// </summary>
  212. /// <param name="keyValue">主键</param>
  213. public void DeleteEntity(string keyValue)
  214. {
  215. try
  216. {
  217. this.BaseRepository("CollegeMIS").Delete<StuLeaveManagementEntity>(t => t.Id == keyValue);
  218. }
  219. catch (Exception ex)
  220. {
  221. if (ex is ExceptionEx)
  222. {
  223. throw;
  224. }
  225. else
  226. {
  227. throw ExceptionEx.ThrowServiceException(ex);
  228. }
  229. }
  230. }
  231. /// <summary>
  232. /// 保存实体数据(新增、修改)
  233. /// </summary>
  234. /// <param name="keyValue">主键</param>
  235. /// <param name="entity">实体</param>
  236. public void SaveEntity(string keyValue, StuLeaveManagementEntity entity)
  237. {
  238. var db = this.BaseRepository("CollegeMIS");
  239. try
  240. {
  241. db.BeginTrans();
  242. if (!string.IsNullOrEmpty(keyValue))
  243. {
  244. entity.Modify(keyValue);
  245. db.Update(entity);
  246. if (entity.CheckStatus.Trim() == "1" && entity.StartTime != null)
  247. {
  248. //请假审核通过后,该学生的对应日期的课表改为请假
  249. var model = db.FindList<StuLeaveManagementEntity>(
  250. $"select * from StuLeaveManagement where Id='{keyValue}'").FirstOrDefault();
  251. //请假开始时间和结束时间
  252. var startTime = Convert.ToDateTime(model.StartTime?.ToString("yyyy-MM-dd") + " 00:00:00");
  253. var endTime = Convert.ToDateTime(model.EndTime?.ToString("yyyy-MM-dd") + " 23:59:59");
  254. //排课数据
  255. var arrangeLessonTermList = db.FindList<ArrangeLessonTermEntity>($@"select a.*,b.StuName,b.Grade,b.GenderNo from [dbo].[ArrangeLessonTerm] a
  256. join stuinfobasic b on a.teachclassno=b.classno
  257. where b.stuno='{model.CreateUserNo}'
  258. and a.lessondate between '{startTime}' and '{endTime}'");
  259. var deptList = db.FindList<CdDeptEntity>();
  260. var majorList = db.FindList<CdMajorEntity>();
  261. var classInfoList = db.FindList<ClassInfoEntity>();
  262. var classRoomList = db.FindList<ClassroomInfoEntity>().ToList();
  263. var lessonSortList = db.FindList<CdLessonSortEntity>().ToList();
  264. foreach (var arrangeLessonTerm in arrangeLessonTermList)
  265. {
  266. StuAttendanceLeaveEntity stuAttendanceLeave = new StuAttendanceLeaveEntity();
  267. stuAttendanceLeave.Create();
  268. stuAttendanceLeave.AcademicYearNo = arrangeLessonTerm.AcademicYearNo;
  269. stuAttendanceLeave.Semester = arrangeLessonTerm.Semester;
  270. stuAttendanceLeave.StuNo = model.CreateUserNo;
  271. stuAttendanceLeave.StuName = arrangeLessonTerm.StuName;
  272. stuAttendanceLeave.Grade = arrangeLessonTerm.Grade;
  273. stuAttendanceLeave.DeptNo = arrangeLessonTerm.DeptNo;
  274. stuAttendanceLeave.DeptName = deptList.Where(x => x.DeptNo == arrangeLessonTerm.DeptNo)
  275. .FirstOrDefault()?.DeptName;
  276. stuAttendanceLeave.MajorNo = arrangeLessonTerm.MajorNo;
  277. stuAttendanceLeave.MajorName = majorList.Where(x => x.MajorNo == arrangeLessonTerm.MajorNo)
  278. .FirstOrDefault()?.MajorName;
  279. stuAttendanceLeave.ClassNo = arrangeLessonTerm.TeachClassNo;
  280. stuAttendanceLeave.ClassName = classInfoList
  281. .Where(x => x.ClassNo == arrangeLessonTerm.TeachClassNo).FirstOrDefault()?.ClassName;
  282. stuAttendanceLeave.LessonNo = arrangeLessonTerm.LessonNo;
  283. stuAttendanceLeave.LessonName = arrangeLessonTerm.LessonName;
  284. stuAttendanceLeave.TeachClassNo = arrangeLessonTerm.TeachClassNo;
  285. stuAttendanceLeave.LessonSortNo = arrangeLessonTerm.LessonSortNo;
  286. stuAttendanceLeave.LessonSortName = lessonSortList.Find(m => m.LessonSortNo == arrangeLessonTerm.LessonSortNo)?.LessonSortName;
  287. stuAttendanceLeave.LessonDate = arrangeLessonTerm.LessonDate;
  288. stuAttendanceLeave.LessonTime = arrangeLessonTerm.LessonTime;
  289. stuAttendanceLeave.LeaveType = "1";
  290. stuAttendanceLeave.EmpNo = arrangeLessonTerm.EmpNo;
  291. stuAttendanceLeave.ClassRoomNo = arrangeLessonTerm.ClassroomNo;
  292. stuAttendanceLeave.UpdateDate = DateTime.Now;
  293. stuAttendanceLeave.IsCheck = "1";
  294. stuAttendanceLeave.TecRemark = "按天请假";
  295. db.Insert(stuAttendanceLeave);
  296. //学生考勤
  297. StuAttendanceEntity stuAttendanceEntity = new StuAttendanceEntity();
  298. stuAttendanceEntity.AcademicYearNo = arrangeLessonTerm.AcademicYearNo;
  299. stuAttendanceEntity.ClassName = classInfoList
  300. .Where(x => x.ClassNo == arrangeLessonTerm.TeachClassNo).FirstOrDefault()?.ClassName;
  301. stuAttendanceEntity.ClassNo = arrangeLessonTerm.TeachClassNo;
  302. stuAttendanceEntity.DeptName = deptList.Where(x => x.DeptNo == arrangeLessonTerm.DeptNo)
  303. .FirstOrDefault()?.DeptName;
  304. stuAttendanceEntity.DeptNo = arrangeLessonTerm.DeptNo;
  305. stuAttendanceEntity.EmpNo = arrangeLessonTerm.EmpNo;
  306. stuAttendanceEntity.Grade = arrangeLessonTerm.Grade;
  307. stuAttendanceEntity.InertDate = DateTime.Now;
  308. stuAttendanceEntity.LessonDate = arrangeLessonTerm.LessonDate;
  309. stuAttendanceEntity.LessonName = arrangeLessonTerm.LessonName;
  310. stuAttendanceEntity.LessonNo = arrangeLessonTerm.LessonNo;
  311. stuAttendanceEntity.LessonSortName = lessonSortList.Find(m => m.LessonSortNo == arrangeLessonTerm.LessonSortNo)?.LessonSortName;
  312. stuAttendanceEntity.LessonSortNo = arrangeLessonTerm.LessonSortNo;
  313. stuAttendanceEntity.LessonTime = arrangeLessonTerm.LessonTime;
  314. stuAttendanceEntity.MajorName = majorList.Where(x => x.MajorNo == arrangeLessonTerm.MajorNo).FirstOrDefault()?.MajorName;
  315. stuAttendanceEntity.MajorNo = arrangeLessonTerm.MajorNo;
  316. stuAttendanceEntity.PlanWeek = null;
  317. stuAttendanceEntity.Semester = arrangeLessonTerm.Semester;
  318. stuAttendanceEntity.StuName = arrangeLessonTerm.StuName;
  319. stuAttendanceEntity.StuNo = model.CreateUserNo;
  320. stuAttendanceEntity.TeachClassNo = arrangeLessonTerm.TeachClassNo;
  321. stuAttendanceEntity.Sort = "请假";
  322. stuAttendanceEntity.AttendOrNo = "否";
  323. stuAttendanceEntity.ClassRoomName = classRoomList.Find(x => x.ClassroomId.Trim() == arrangeLessonTerm.ClassroomNo.Trim())?.ClassroomName.Trim();
  324. stuAttendanceEntity.ClassRoomNo = arrangeLessonTerm.ClassroomNo;
  325. stuAttendanceEntity.Gender = arrangeLessonTerm.GenderNo.Trim() == "0" ? "女" : "男";
  326. stuAttendanceEntity.CheckMarkDept = "";
  327. stuAttendanceEntity.CheckMark = "";
  328. stuAttendanceEntity.Create();
  329. db.Insert(stuAttendanceEntity);
  330. }
  331. }
  332. }
  333. else
  334. {
  335. entity.Create();
  336. db.Insert(entity);
  337. }
  338. db.Commit();
  339. }
  340. catch (Exception ex)
  341. {
  342. db.Rollback();
  343. if (ex is ExceptionEx)
  344. {
  345. throw;
  346. }
  347. else
  348. {
  349. throw ExceptionEx.ThrowServiceException(ex);
  350. }
  351. }
  352. }
  353. #endregion
  354. }
  355. }