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.
 
 
 
 
 
 

676 lines
38 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. if (!queryParam["StuName"].IsEmpty())
  54. {
  55. dp.Add("StuName", "%" + queryParam["StuName"].ToString() + "%", DbType.String);
  56. strSql.Append(" AND s.StuName like @StuName ");
  57. }
  58. //班级班主任/辅导员/系主任
  59. if (!queryParam["ClassManagerNo"].IsEmpty())
  60. {
  61. dp.Add("ClassManagerNo", queryParam["ClassManagerNo"].ToString(), DbType.String);
  62. strSql.Append(" AND (c.ClassDiredctorNo = @ClassManagerNo or c.ClassTutorNo = @ClassManagerNo) ");
  63. ////登录用户是否是系主任:若是,展示大于2天的请假记录;
  64. //var deptDirectorRoleId = Config.GetValue("DeptDirectorRoleId");
  65. //if (deptDirectorRoleId != null)
  66. //{
  67. // var loginInfoRoleIds = LoginUserInfo.Get().roleIds;
  68. // if (loginInfoRoleIds.IndexOf(',') == -1)
  69. // {
  70. // if (loginInfoRoleIds == deptDirectorRoleId)
  71. // {
  72. // strSql.Append(" or t.LeaveDay>2 )");
  73. // }
  74. // else
  75. // {
  76. // strSql.Append(" ) ");
  77. // }
  78. // }
  79. // else
  80. // {
  81. // if (loginInfoRoleIds.Split(',').Contains(deptDirectorRoleId))
  82. // {
  83. // strSql.Append(" or t.LeaveDay>2 )");
  84. // }
  85. // else
  86. // {
  87. // strSql.Append(" ) ");
  88. // }
  89. // }
  90. //}
  91. //else
  92. //{
  93. // strSql.Append(" ) ");
  94. //}
  95. }
  96. return this.BaseRepository("CollegeMIS").FindList<StuLeaveManagementEntity>(strSql.ToString(), dp, pagination);
  97. }
  98. catch (Exception ex)
  99. {
  100. if (ex is ExceptionEx)
  101. {
  102. throw;
  103. }
  104. else
  105. {
  106. throw ExceptionEx.ThrowServiceException(ex);
  107. }
  108. }
  109. }
  110. public IEnumerable<StuLeaveManagementEntity> GetCheckPageList(Pagination pagination, string queryJson)
  111. {
  112. try
  113. {
  114. var strSql = new StringBuilder();
  115. strSql.Append("SELECT t.*,s.StuName as CreateUserName,s.ClassNo,s.DeptNo,s.MajorNo,c.ClassDiredctorNo,c.ClassTutorNo ");
  116. strSql.Append(" FROM StuLeaveManagement t left join StuInfoBasic s on t.CreateUserNo=s.StuNo left join ClassInfo c on s.ClassNo=c.ClassNo ");
  117. strSql.Append(" WHERE 1=1 ");
  118. var queryParam = queryJson.ToJObject();
  119. // 虚拟参数
  120. var dp = new DynamicParameters(new { });
  121. if (!queryParam["LeaveType"].IsEmpty())
  122. {
  123. dp.Add("LeaveType", queryParam["LeaveType"].ToString(), DbType.String);
  124. strSql.Append(" AND t.LeaveType = @LeaveType ");
  125. }
  126. if (!queryParam["CheckStatus"].IsEmpty())
  127. {
  128. dp.Add("CheckStatus", queryParam["CheckStatus"].ToString(), DbType.String);
  129. strSql.Append(" AND t.CheckStatus = @CheckStatus ");
  130. }
  131. if (!queryParam["StuNo"].IsEmpty())
  132. {
  133. dp.Add("StuNo", queryParam["StuNo"].ToString(), DbType.String);
  134. strSql.Append(" AND t.CreateUserNo = @StuNo ");
  135. }
  136. if (!queryParam["StuName"].IsEmpty())
  137. {
  138. dp.Add("StuName", "%" + queryParam["StuName"].ToString() + "%", DbType.String);
  139. strSql.Append(" AND s.StuName like @StuName ");
  140. }
  141. //班级班主任/辅导员/系主任
  142. var ClassManagerNo = LoginUserInfo.Get().account;
  143. if (!string.IsNullOrEmpty(ClassManagerNo))
  144. {
  145. dp.Add("ClassManagerNo", ClassManagerNo, DbType.String);
  146. strSql.Append(" AND (c.ClassDiredctorNo = @ClassManagerNo or c.ClassTutorNo = @ClassManagerNo ");
  147. //登录用户是否是系主任:若是,展示大于2天的请假记录;
  148. var deptDirectorRoleId = Config.GetValue("DeptDirectorRoleId");
  149. if (deptDirectorRoleId != null)
  150. {
  151. var loginInfoRoleIds = LoginUserInfo.Get().roleIds;
  152. if (loginInfoRoleIds.IndexOf(',') == -1)
  153. {
  154. if (loginInfoRoleIds == deptDirectorRoleId)
  155. {
  156. strSql.Append(" or t.LeaveDay>2 )");
  157. }
  158. else
  159. {
  160. strSql.Append(" ) ");
  161. }
  162. }
  163. else
  164. {
  165. if (loginInfoRoleIds.Split(',').Contains(deptDirectorRoleId))
  166. {
  167. strSql.Append(" or t.LeaveDay>2 )");
  168. }
  169. else
  170. {
  171. strSql.Append(" ) ");
  172. }
  173. }
  174. }
  175. else
  176. {
  177. strSql.Append(" ) ");
  178. }
  179. }
  180. return this.BaseRepository("CollegeMIS").FindList<StuLeaveManagementEntity>(strSql.ToString(), dp, pagination);
  181. }
  182. catch (Exception ex)
  183. {
  184. if (ex is ExceptionEx)
  185. {
  186. throw;
  187. }
  188. else
  189. {
  190. throw ExceptionEx.ThrowServiceException(ex);
  191. }
  192. }
  193. }
  194. /// <summary>
  195. /// 获取StuLeaveManagement表实体数据
  196. /// </summary>
  197. /// <param name="keyValue">主键</param>
  198. /// <returns></returns>
  199. public StuLeaveManagementEntity GetStuLeaveManagementEntity(string keyValue)
  200. {
  201. try
  202. {
  203. var data = this.BaseRepository("CollegeMIS").FindEntity<StuLeaveManagementEntity>(keyValue);
  204. if (data != null)
  205. {
  206. var studentlist = this.BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>(x => x.StuNo == data.CreateUserNo).FirstOrDefault();
  207. if (studentlist != null)
  208. {
  209. data.DeptNo = studentlist.DeptNo;
  210. data.MajorNo = studentlist.MajorNo;
  211. data.ClassNo = studentlist.ClassNo;
  212. data.CreateUserName = studentlist.StuName;
  213. }
  214. var classlist = this.BaseRepository("CollegeMIS").FindList<ClassInfoEntity>(x => x.ClassNo == data.ClassNo).FirstOrDefault();
  215. if (classlist != null)
  216. {
  217. data.ClassDiredctorNo = classlist.ClassDiredctorNo;
  218. data.ClassTutorNo = classlist.ClassTutorNo;
  219. }
  220. }
  221. return data;
  222. }
  223. catch (Exception ex)
  224. {
  225. if (ex is ExceptionEx)
  226. {
  227. throw;
  228. }
  229. else
  230. {
  231. throw ExceptionEx.ThrowServiceException(ex);
  232. }
  233. }
  234. }
  235. #endregion
  236. #region 提交数据
  237. /// <summary>
  238. /// 删除实体数据
  239. /// </summary>
  240. /// <param name="keyValue">主键</param>
  241. public void DeleteEntity(string keyValue)
  242. {
  243. try
  244. {
  245. this.BaseRepository("CollegeMIS").Delete<StuLeaveManagementEntity>(t => t.Id == keyValue);
  246. }
  247. catch (Exception ex)
  248. {
  249. if (ex is ExceptionEx)
  250. {
  251. throw;
  252. }
  253. else
  254. {
  255. throw ExceptionEx.ThrowServiceException(ex);
  256. }
  257. }
  258. }
  259. /// <summary>
  260. /// 保存实体数据(新增、修改)
  261. /// </summary>
  262. /// <param name="keyValue">主键</param>
  263. /// <param name="entity">实体</param>
  264. public void SaveEntity(string keyValue, StuLeaveManagementEntity entity)
  265. {
  266. var db = this.BaseRepository("CollegeMIS");
  267. try
  268. {
  269. db.BeginTrans();
  270. if (!string.IsNullOrEmpty(keyValue))
  271. {
  272. entity.Modify(keyValue);
  273. db.Update(entity);
  274. // if (entity.CheckStatus.Trim() == "2" && entity.StartTime != null)
  275. // {
  276. // //请假审核通过后,该学生的对应日期的课表改为请假
  277. // var model = this.BaseRepository("CollegeMIS").FindList<StuLeaveManagementEntity>(
  278. // $"select * from StuLeaveManagement where Id='{keyValue}'").FirstOrDefault();
  279. // //请假开始时间和结束时间
  280. // var startTime = Convert.ToDateTime(model.StartTime?.ToString("yyyy-MM-dd") + " 00:00:00");
  281. // var endTime = Convert.ToDateTime(model.EndTime?.ToString("yyyy-MM-dd") + " 23:59:59");
  282. // //排课数据
  283. // var arrangeLessonTermList = db.FindList<ArrangeLessonTermEntity>($@"select a.*,b.StuName,b.Grade,b.GenderNo from [dbo].[ArrangeLessonTerm] a
  284. //join stuinfobasic b on a.teachclassno=b.classno
  285. //where b.stuno='{model.CreateUserNo}'
  286. //and a.lessondate between '{startTime}' and '{endTime}'");
  287. // var deptList = this.BaseRepository("CollegeMIS").FindList<CdDeptEntity>();
  288. // var majorList = this.BaseRepository("CollegeMIS").FindList<CdMajorEntity>();
  289. // var classInfoList = this.BaseRepository("CollegeMIS").FindList<ClassInfoEntity>();
  290. // var classRoomList = this.BaseRepository("CollegeMIS").FindList<ClassroomInfoEntity>().ToList();
  291. // var lessonSortList = this.BaseRepository("CollegeMIS").FindList<CdLessonSortEntity>().ToList();
  292. // foreach (var arrangeLessonTerm in arrangeLessonTermList)
  293. // {
  294. // StuAttendanceLeaveEntity stuAttendanceLeave = new StuAttendanceLeaveEntity();
  295. // stuAttendanceLeave.AcademicYearNo = arrangeLessonTerm.AcademicYearNo;
  296. // stuAttendanceLeave.Semester = arrangeLessonTerm.Semester;
  297. // stuAttendanceLeave.StuNo = model.CreateUserNo;
  298. // stuAttendanceLeave.StuName = arrangeLessonTerm.StuName;
  299. // stuAttendanceLeave.Grade = arrangeLessonTerm.Grade;
  300. // stuAttendanceLeave.DeptNo = arrangeLessonTerm.DeptNo;
  301. // stuAttendanceLeave.DeptName = deptList.Where(x => x.DeptNo == arrangeLessonTerm.DeptNo)
  302. // .FirstOrDefault()?.DeptName;
  303. // stuAttendanceLeave.MajorNo = arrangeLessonTerm.MajorNo;
  304. // stuAttendanceLeave.MajorName = majorList.Where(x => x.MajorNo == arrangeLessonTerm.MajorNo)
  305. // .FirstOrDefault()?.MajorName;
  306. // stuAttendanceLeave.ClassNo = arrangeLessonTerm.TeachClassNo;
  307. // stuAttendanceLeave.ClassName = classInfoList
  308. // .Where(x => x.ClassNo == arrangeLessonTerm.TeachClassNo).FirstOrDefault()?.ClassName;
  309. // stuAttendanceLeave.LessonNo = arrangeLessonTerm.LessonNo;
  310. // stuAttendanceLeave.LessonName = arrangeLessonTerm.LessonName;
  311. // stuAttendanceLeave.TeachClassNo = arrangeLessonTerm.TeachClassNo;
  312. // stuAttendanceLeave.LessonSortNo = arrangeLessonTerm.LessonSortNo;
  313. // stuAttendanceLeave.LessonSortName = lessonSortList.Find(m => m.LessonSortNo == arrangeLessonTerm.LessonSortNo)?.LessonSortName;
  314. // stuAttendanceLeave.LessonDate = arrangeLessonTerm.LessonDate;
  315. // stuAttendanceLeave.LessonTime = arrangeLessonTerm.LessonTime;
  316. // stuAttendanceLeave.LeaveType = entity.LeaveType;
  317. // stuAttendanceLeave.EmpNo = arrangeLessonTerm.EmpNo;
  318. // stuAttendanceLeave.TecRemark = "按天请假";
  319. // stuAttendanceLeave.UpdateDate = DateTime.Now;
  320. // stuAttendanceLeave.IsCheck = "1";
  321. // stuAttendanceLeave.ClassRoomNo = arrangeLessonTerm.ClassroomNo;
  322. // stuAttendanceLeave.ClassRoomName = classRoomList.FirstOrDefault(x => x.ClassroomNo == arrangeLessonTerm.ClassroomNo)?.ClassroomName;
  323. // //去重
  324. // var isExistModel = this.BaseRepository("CollegeMIS").FindEntity<StuAttendanceLeaveEntity>(x =>
  325. // x.AcademicYearNo == stuAttendanceLeave.AcademicYearNo && x.Semester == stuAttendanceLeave.Semester &&
  326. // x.StuNo == stuAttendanceLeave.StuNo && x.LessonNo == stuAttendanceLeave.LessonNo && x.TeachClassNo == stuAttendanceLeave.TeachClassNo &&
  327. // x.LessonSortNo == stuAttendanceLeave.LessonSortNo && x.LessonDate == stuAttendanceLeave.LessonDate && x.LessonTime == stuAttendanceLeave.LessonTime &&
  328. // x.EmpNo == stuAttendanceLeave.EmpNo && x.ClassRoomNo == stuAttendanceLeave.ClassRoomNo
  329. // );
  330. // if (isExistModel != null)
  331. // {
  332. // stuAttendanceLeave.Modify(isExistModel.ID);
  333. // db.Update(stuAttendanceLeave);
  334. // }
  335. // else
  336. // {
  337. // stuAttendanceLeave.Create();
  338. // db.Insert(stuAttendanceLeave);
  339. // }
  340. // //学生考勤
  341. // StuAttendanceEntity stuAttendanceEntity = new StuAttendanceEntity();
  342. // stuAttendanceEntity.AcademicYearNo = arrangeLessonTerm.AcademicYearNo;
  343. // stuAttendanceEntity.Semester = arrangeLessonTerm.Semester;
  344. // stuAttendanceEntity.StuNo = model.CreateUserNo;
  345. // stuAttendanceEntity.StuName = arrangeLessonTerm.StuName;
  346. // stuAttendanceEntity.Gender = arrangeLessonTerm.GenderNo.ToLower() == "true" ? "男" : "女";
  347. // stuAttendanceEntity.Grade = arrangeLessonTerm.Grade;
  348. // stuAttendanceEntity.DeptNo = arrangeLessonTerm.DeptNo;
  349. // stuAttendanceEntity.DeptName = deptList.Where(x => x.DeptNo == arrangeLessonTerm.DeptNo)
  350. // .FirstOrDefault()?.DeptName;
  351. // stuAttendanceEntity.MajorNo = arrangeLessonTerm.MajorNo;
  352. // stuAttendanceEntity.MajorName = majorList.Where(x => x.MajorNo == arrangeLessonTerm.MajorNo).FirstOrDefault()?.MajorName;
  353. // stuAttendanceEntity.ClassNo = arrangeLessonTerm.TeachClassNo;
  354. // stuAttendanceEntity.ClassName = classInfoList
  355. // .Where(x => x.ClassNo == arrangeLessonTerm.TeachClassNo).FirstOrDefault()?.ClassName;
  356. // stuAttendanceEntity.LessonNo = arrangeLessonTerm.LessonNo;
  357. // stuAttendanceEntity.LessonName = arrangeLessonTerm.LessonName;
  358. // stuAttendanceEntity.TeachClassNo = arrangeLessonTerm.TeachClassNo;
  359. // stuAttendanceEntity.LessonSortNo = arrangeLessonTerm.LessonSortNo;
  360. // stuAttendanceEntity.LessonSortName = lessonSortList.Find(m => m.LessonSortNo == arrangeLessonTerm.LessonSortNo)?.LessonSortName;
  361. // stuAttendanceEntity.LessonDate = arrangeLessonTerm.LessonDate;
  362. // stuAttendanceEntity.PlanWeek = null;
  363. // stuAttendanceEntity.LessonTime = arrangeLessonTerm.LessonTime;
  364. // stuAttendanceEntity.AttendOrNo = "否";
  365. // stuAttendanceEntity.Sort = Convert.ToInt32(entity.LeaveType) == 2 ? "病假" : "事假";
  366. // stuAttendanceEntity.EmpNo = arrangeLessonTerm.EmpNo;
  367. // stuAttendanceEntity.Remark = "按天请假";
  368. // stuAttendanceEntity.CheckMarkDept = "";
  369. // stuAttendanceEntity.CheckMark = "";
  370. // stuAttendanceEntity.InertDate = DateTime.Now;
  371. // stuAttendanceEntity.ClassRoomNo = arrangeLessonTerm.ClassroomNo;
  372. // stuAttendanceEntity.ClassRoomName = classRoomList.FirstOrDefault(x => x.ClassroomNo == arrangeLessonTerm.ClassroomNo)?.ClassroomName;
  373. // //去重
  374. // var isExistModel2 = this.BaseRepository("CollegeMIS").FindEntity<StuAttendanceEntity>(x =>
  375. // x.AcademicYearNo == stuAttendanceEntity.AcademicYearNo && x.Semester == stuAttendanceEntity.Semester && x.StuNo == stuAttendanceEntity.StuNo &&
  376. // x.LessonNo == stuAttendanceEntity.LessonNo && x.TeachClassNo == stuAttendanceEntity.TeachClassNo && x.LessonSortNo == stuAttendanceEntity.LessonSortNo &&
  377. // x.LessonDate == stuAttendanceEntity.LessonDate && x.LessonTime == stuAttendanceEntity.LessonTime && x.EmpNo == stuAttendanceEntity.EmpNo && x.ClassRoomNo == stuAttendanceEntity.ClassRoomNo);
  378. // if (isExistModel2 != null)
  379. // {
  380. // stuAttendanceEntity.Modify(isExistModel2.ID);
  381. // db.Update(stuAttendanceEntity);
  382. // }
  383. // else
  384. // {
  385. // stuAttendanceEntity.Create();
  386. // db.Insert(stuAttendanceEntity);
  387. // }
  388. // }
  389. // }
  390. }
  391. else
  392. {
  393. entity.Create();
  394. db.Insert(entity);
  395. }
  396. db.Commit();
  397. }
  398. catch (Exception ex)
  399. {
  400. db.Rollback();
  401. if (ex is ExceptionEx)
  402. {
  403. throw;
  404. }
  405. else
  406. {
  407. throw ExceptionEx.ThrowServiceException(ex);
  408. }
  409. }
  410. }
  411. /// <summary>
  412. /// 提交
  413. /// </summary>
  414. /// <param name="keyValue"></param>
  415. /// <param name="CheckStatus"></param>
  416. /// <param name="processId"></param>
  417. public void ModifyStatus(string keyValue, string CheckStatus, string processId)
  418. {
  419. var db = this.BaseRepository("CollegeMIS");
  420. try
  421. {
  422. db.BeginTrans();
  423. var entity = db.FindEntity<StuLeaveManagementEntity>(keyValue);
  424. entity.CheckStatus = CheckStatus;
  425. entity.ProcessId = processId;
  426. db.Update(entity);
  427. db.Commit();
  428. }
  429. catch (Exception ex)
  430. {
  431. db.Rollback();
  432. if (ex is ExceptionEx)
  433. {
  434. throw;
  435. }
  436. else
  437. {
  438. throw ExceptionEx.ThrowServiceException(ex);
  439. }
  440. }
  441. }
  442. /// <summary>
  443. /// 审核实体数据
  444. /// </summary>
  445. /// <param name="keyValue">主键</param>
  446. public void ChangeStatusByProcessId(string status, string processId, string userId)
  447. {
  448. var db = this.BaseRepository("CollegeMIS");
  449. try
  450. {
  451. db.BeginTrans();
  452. db.ExecuteBySql("update StuLeaveManagement set CheckStatus='" + status + "',CheckUserId='" + userId + "',CheckTime='" + DateTime.Now + "' where ProcessId='" + processId + "' ");
  453. if (status.Trim() == "2")
  454. {
  455. //请假审核通过后,该学生的对应日期的课表改为请假
  456. var model = db.FindList<StuLeaveManagementEntity>(
  457. $"select * from StuLeaveManagement where ProcessId='{processId}'").FirstOrDefault();
  458. //请假开始时间和结束时间
  459. var startTime = Convert.ToDateTime(model.StartTime?.ToString("yyyy-MM-dd") + " 00:00:00");
  460. var endTime = Convert.ToDateTime(model.EndTime?.ToString("yyyy-MM-dd") + " 23:59:59");
  461. //排课数据
  462. var arrangeLessonTermList = db.FindList<ArrangeLessonTermEntity>($@"select a.*,b.StuName,b.Grade,b.GenderNo from [dbo].[ArrangeLessonTerm] a
  463. join stuinfobasic b on a.teachclassno=b.classno
  464. where b.stuno='{model.CreateUserNo}'
  465. and a.lessondate between '{startTime}' and '{endTime}'");
  466. var deptList = this.BaseRepository("CollegeMIS").FindList<CdDeptEntity>();
  467. var majorList = this.BaseRepository("CollegeMIS").FindList<CdMajorEntity>();
  468. var classInfoList = this.BaseRepository("CollegeMIS").FindList<ClassInfoEntity>();
  469. var classRoomList = this.BaseRepository("CollegeMIS").FindList<ClassroomInfoEntity>().ToList();
  470. var lessonSortList = this.BaseRepository("CollegeMIS").FindList<CdLessonSortEntity>().ToList();
  471. foreach (var arrangeLessonTerm in arrangeLessonTermList)
  472. {
  473. StuAttendanceLeaveEntity stuAttendanceLeave = new StuAttendanceLeaveEntity();
  474. stuAttendanceLeave.AcademicYearNo = arrangeLessonTerm.AcademicYearNo;
  475. stuAttendanceLeave.Semester = arrangeLessonTerm.Semester;
  476. stuAttendanceLeave.StuNo = model.CreateUserNo;
  477. stuAttendanceLeave.StuName = arrangeLessonTerm.StuName;
  478. stuAttendanceLeave.Grade = arrangeLessonTerm.Grade;
  479. stuAttendanceLeave.DeptNo = arrangeLessonTerm.DeptNo;
  480. stuAttendanceLeave.DeptName = deptList.Where(x => x.DeptNo == arrangeLessonTerm.DeptNo)
  481. .FirstOrDefault()?.DeptName;
  482. stuAttendanceLeave.MajorNo = arrangeLessonTerm.MajorNo;
  483. stuAttendanceLeave.MajorName = majorList.Where(x => x.MajorNo == arrangeLessonTerm.MajorNo)
  484. .FirstOrDefault()?.MajorName;
  485. stuAttendanceLeave.ClassNo = arrangeLessonTerm.TeachClassNo;
  486. stuAttendanceLeave.ClassName = classInfoList
  487. .Where(x => x.ClassNo == arrangeLessonTerm.TeachClassNo).FirstOrDefault()?.ClassName;
  488. stuAttendanceLeave.LessonNo = arrangeLessonTerm.LessonNo;
  489. stuAttendanceLeave.LessonName = arrangeLessonTerm.LessonName;
  490. stuAttendanceLeave.TeachClassNo = arrangeLessonTerm.TeachClassNo;
  491. stuAttendanceLeave.LessonSortNo = arrangeLessonTerm.LessonSortNo;
  492. stuAttendanceLeave.LessonSortName = lessonSortList.Find(m => m.LessonSortNo == arrangeLessonTerm.LessonSortNo)?.LessonSortName;
  493. stuAttendanceLeave.LessonDate = arrangeLessonTerm.LessonDate;
  494. stuAttendanceLeave.LessonTime = arrangeLessonTerm.LessonTime;
  495. stuAttendanceLeave.LeaveType = model.LeaveType;
  496. stuAttendanceLeave.EmpNo = arrangeLessonTerm.EmpNo;
  497. stuAttendanceLeave.TecRemark = "按天请假";
  498. stuAttendanceLeave.UpdateDate = DateTime.Now;
  499. stuAttendanceLeave.IsCheck = "1";
  500. stuAttendanceLeave.ClassRoomNo = arrangeLessonTerm.ClassroomNo;
  501. stuAttendanceLeave.ClassRoomName = classRoomList.FirstOrDefault(x => x.ClassroomNo == arrangeLessonTerm.ClassroomNo)?.ClassroomName;
  502. //去重
  503. var isExistModel = this.BaseRepository("CollegeMIS").FindEntity<StuAttendanceLeaveEntity>(x =>
  504. x.AcademicYearNo == stuAttendanceLeave.AcademicYearNo && x.Semester == stuAttendanceLeave.Semester &&
  505. x.StuNo == stuAttendanceLeave.StuNo && x.LessonNo == stuAttendanceLeave.LessonNo && x.TeachClassNo == stuAttendanceLeave.TeachClassNo &&
  506. x.LessonSortNo == stuAttendanceLeave.LessonSortNo && x.LessonDate == stuAttendanceLeave.LessonDate && x.LessonTime == stuAttendanceLeave.LessonTime &&
  507. x.EmpNo == stuAttendanceLeave.EmpNo && x.ClassRoomNo == stuAttendanceLeave.ClassRoomNo
  508. );
  509. if (isExistModel != null)
  510. {
  511. stuAttendanceLeave.Modify(isExistModel.ID);
  512. db.Update(stuAttendanceLeave);
  513. }
  514. else
  515. {
  516. stuAttendanceLeave.Create();
  517. db.Insert(stuAttendanceLeave);
  518. }
  519. //学生考勤
  520. StuAttendanceEntity stuAttendanceEntity = new StuAttendanceEntity();
  521. stuAttendanceEntity.AcademicYearNo = arrangeLessonTerm.AcademicYearNo;
  522. stuAttendanceEntity.Semester = arrangeLessonTerm.Semester;
  523. stuAttendanceEntity.StuNo = model.CreateUserNo;
  524. stuAttendanceEntity.StuName = arrangeLessonTerm.StuName;
  525. stuAttendanceEntity.Gender = arrangeLessonTerm.GenderNo.ToLower() == "true" ? "男" : "女";
  526. stuAttendanceEntity.Grade = arrangeLessonTerm.Grade;
  527. stuAttendanceEntity.DeptNo = arrangeLessonTerm.DeptNo;
  528. stuAttendanceEntity.DeptName = deptList.Where(x => x.DeptNo == arrangeLessonTerm.DeptNo)
  529. .FirstOrDefault()?.DeptName;
  530. stuAttendanceEntity.MajorNo = arrangeLessonTerm.MajorNo;
  531. stuAttendanceEntity.MajorName = majorList.Where(x => x.MajorNo == arrangeLessonTerm.MajorNo).FirstOrDefault()?.MajorName;
  532. stuAttendanceEntity.ClassNo = arrangeLessonTerm.TeachClassNo;
  533. stuAttendanceEntity.ClassName = classInfoList
  534. .Where(x => x.ClassNo == arrangeLessonTerm.TeachClassNo).FirstOrDefault()?.ClassName;
  535. stuAttendanceEntity.LessonNo = arrangeLessonTerm.LessonNo;
  536. stuAttendanceEntity.LessonName = arrangeLessonTerm.LessonName;
  537. stuAttendanceEntity.TeachClassNo = arrangeLessonTerm.TeachClassNo;
  538. stuAttendanceEntity.LessonSortNo = arrangeLessonTerm.LessonSortNo;
  539. stuAttendanceEntity.LessonSortName = lessonSortList.Find(m => m.LessonSortNo == arrangeLessonTerm.LessonSortNo)?.LessonSortName;
  540. stuAttendanceEntity.LessonDate = arrangeLessonTerm.LessonDate;
  541. stuAttendanceEntity.PlanWeek = null;
  542. stuAttendanceEntity.LessonTime = arrangeLessonTerm.LessonTime;
  543. stuAttendanceEntity.AttendOrNo = "否";
  544. stuAttendanceEntity.Sort = Convert.ToInt32(model.LeaveType) == 2 ? "病假" : "事假";
  545. stuAttendanceEntity.EmpNo = arrangeLessonTerm.EmpNo;
  546. stuAttendanceEntity.Remark = "按天请假";
  547. stuAttendanceEntity.CheckMarkDept = "";
  548. stuAttendanceEntity.CheckMark = "";
  549. stuAttendanceEntity.InertDate = DateTime.Now;
  550. stuAttendanceEntity.ClassRoomNo = arrangeLessonTerm.ClassroomNo;
  551. stuAttendanceEntity.ClassRoomName = classRoomList.FirstOrDefault(x => x.ClassroomNo == arrangeLessonTerm.ClassroomNo)?.ClassroomName;
  552. //去重
  553. var isExistModel2 = this.BaseRepository("CollegeMIS").FindEntity<StuAttendanceEntity>(x =>
  554. x.AcademicYearNo == stuAttendanceEntity.AcademicYearNo && x.Semester == stuAttendanceEntity.Semester && x.StuNo == stuAttendanceEntity.StuNo &&
  555. x.LessonNo == stuAttendanceEntity.LessonNo && x.TeachClassNo == stuAttendanceEntity.TeachClassNo && x.LessonSortNo == stuAttendanceEntity.LessonSortNo &&
  556. x.LessonDate == stuAttendanceEntity.LessonDate && x.LessonTime == stuAttendanceEntity.LessonTime && x.EmpNo == stuAttendanceEntity.EmpNo && x.ClassRoomNo == stuAttendanceEntity.ClassRoomNo);
  557. if (isExistModel2 != null)
  558. {
  559. stuAttendanceEntity.Modify(isExistModel2.ID);
  560. db.Update(stuAttendanceEntity);
  561. }
  562. else
  563. {
  564. stuAttendanceEntity.Create();
  565. db.Insert(stuAttendanceEntity);
  566. }
  567. }
  568. }
  569. db.Commit();
  570. }
  571. catch (Exception ex)
  572. {
  573. db.Rollback();
  574. if (ex is ExceptionEx)
  575. {
  576. throw;
  577. }
  578. else
  579. {
  580. throw ExceptionEx.ThrowServiceException(ex);
  581. }
  582. }
  583. }
  584. /// <summary>
  585. ///
  586. /// </summary>
  587. /// <param name="keyValue"></param>
  588. /// <param name="status"></param>
  589. /// <param name="processId"></param>
  590. public void ChangeStatusById(string keyValue, int CheckStatus, string processId)
  591. {
  592. try
  593. {
  594. this.BaseRepository("CollegeMIS").ExecuteBySql($"update stuleavemanagement set ProcessId='{processId}',CheckStatus='{CheckStatus}' where Id='{keyValue}'");
  595. }
  596. catch (Exception ex)
  597. {
  598. if (ex is ExceptionEx)
  599. {
  600. throw;
  601. }
  602. else
  603. {
  604. throw ExceptionEx.ThrowServiceException(ex);
  605. }
  606. }
  607. }
  608. /// <summary>
  609. /// 获取主表实体数据
  610. /// </summary>
  611. /// <param name="processId">流程实例ID</param>
  612. /// <returns></returns>
  613. public StuLeaveManagementEntity GetEntityByProcessId(string processId)
  614. {
  615. try
  616. {
  617. var data = this.BaseRepository("CollegeMIS").FindEntity<StuLeaveManagementEntity>(t => t.ProcessId == processId);
  618. if (data != null)
  619. {
  620. var studentlist = this.BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>(x => x.StuNo == data.CreateUserNo).FirstOrDefault();
  621. if (studentlist != null)
  622. {
  623. data.DeptNo = studentlist.DeptNo;
  624. data.MajorNo = studentlist.MajorNo;
  625. data.ClassNo = studentlist.ClassNo;
  626. data.CreateUserName = studentlist.StuName;
  627. }
  628. var classlist = this.BaseRepository("CollegeMIS").FindList<ClassInfoEntity>(x => x.ClassNo == data.ClassNo).FirstOrDefault();
  629. if (classlist != null)
  630. {
  631. data.ClassDiredctorNo = classlist.ClassDiredctorNo;
  632. data.ClassTutorNo = classlist.ClassTutorNo;
  633. }
  634. }
  635. return data;
  636. }
  637. catch (Exception ex)
  638. {
  639. if (ex is ExceptionEx)
  640. {
  641. throw;
  642. }
  643. else
  644. {
  645. throw ExceptionEx.ThrowServiceException(ex);
  646. }
  647. }
  648. }
  649. #endregion
  650. }
  651. }