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.
 
 
 
 
 
 

693 lines
32 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. using System.Threading.Tasks;
  10. using Learun.Application.Base.SystemModule;
  11. using Newtonsoft.Json;
  12. namespace Learun.Application.TwoDevelopment.EducationalAdministration
  13. {
  14. /// <summary>
  15. /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园
  16. /// Copyright (c) 2013-2018 北京泉江科技有限公司
  17. /// 创 建:超级管理员
  18. /// 日 期:2019-04-02 16:44
  19. /// 描 述:学生考勤
  20. /// </summary>
  21. public class StuAttendanceService : RepositoryFactory
  22. {
  23. private DataItemIBLL dataItemIBLL = new DataItemBLL();
  24. private CdMajorIBLL cdMajorIBLL = new CdMajorBLL();
  25. #region 获取数据
  26. /// <summary>
  27. /// 获取页面显示列表数据
  28. /// <summary>
  29. /// <param name="queryJson">查询参数</param>
  30. /// <returns></returns>
  31. public IEnumerable<StuAttendanceEntity> GetPageList(Pagination pagination, string queryJson)
  32. {
  33. try
  34. {
  35. var strSql = new StringBuilder();
  36. strSql.Append("SELECT t.* ");
  37. strSql.Append(" FROM StuAttendance t ");
  38. strSql.Append(" WHERE 1=1 ");
  39. var queryParam = queryJson.ToJObject();
  40. // 虚拟参数
  41. var dp = new DynamicParameters(new { });
  42. if (!queryParam["AcademicYearNo"].IsEmpty())
  43. {
  44. dp.Add("AcademicYearNo", queryParam["AcademicYearNo"].ToString(), DbType.String);
  45. strSql.Append(" and t.AcademicYearNo=@AcademicYearNo ");
  46. }
  47. if (!queryParam["Semester"].IsEmpty())
  48. {
  49. dp.Add("Semester", queryParam["Semester"].ToString(), DbType.String);
  50. strSql.Append(" and t.Semester=@Semester ");
  51. }
  52. if (!queryParam["ClassNo"].IsEmpty())
  53. {
  54. dp.Add("ClassNo", queryParam["ClassNo"].ToString(), DbType.String);
  55. strSql.Append(" and t.ClassNo = @ClassNo ");
  56. }
  57. if (!queryParam["LessonNo"].IsEmpty())
  58. {
  59. dp.Add("LessonNo", queryParam["LessonNo"].ToString(), DbType.String);
  60. strSql.Append(" and t.LessonNo = @LessonNo ");
  61. }
  62. if (!queryParam["EmpNo"].IsEmpty())
  63. {
  64. dp.Add("EmpNo", queryParam["EmpNo"].ToString(), DbType.String);
  65. strSql.Append(" and t.EmpNo = @EmpNo ");
  66. }
  67. return this.BaseRepository("CollegeMIS").FindList<StuAttendanceEntity>(strSql.ToString(), dp, pagination);
  68. }
  69. catch (Exception ex)
  70. {
  71. if (ex is ExceptionEx)
  72. {
  73. throw;
  74. }
  75. else
  76. {
  77. throw ExceptionEx.ThrowServiceException(ex);
  78. }
  79. }
  80. }
  81. /// <summary>
  82. /// 获取页面显示列表数据
  83. /// <summary>
  84. /// <param name="queryJson">查询参数</param>
  85. /// <returns></returns>
  86. public IEnumerable<StuAttendanceEntity> GetPageListOfUnrecord(Pagination pagination, string queryJson)
  87. {
  88. try
  89. {
  90. var strSql = new StringBuilder();
  91. var queryParam = queryJson.ToJObject();
  92. // 虚拟参数
  93. var dp = new DynamicParameters(new { });
  94. strSql.Append(@"(
  95. select distinct t.AcademicYearNo,t.Semester,t.DeptNo,t.MajorNo,t.ClassNo,t.LessonNo,t.LessonName,t.LessonSortNo,t.EmpNo
  96. ,a.LessonDate,a.LessonTime
  97. from StuSelectLessonList t
  98. left join ArrangeLessonTerm a on t.AcademicYearNo=a.AcademicYearNo and t.Semester=a.Semester and t.LessonNo=a.LessonNo and t.EmpNo=a.EmpNo
  99. where t.StuNo not in (select sa.StuNo from StuAttendance sa where sa.AcademicYearNo=t.AcademicYearNo and sa.Semester=t.Semester and sa.ClassNo=t.ClassNo and sa.LessonNo=t.LessonNo and sa.EmpNo=t.EmpNo and sa.LessonSortNo=t.LessonSortNo)");
  100. if (!queryParam["AcademicYearNo"].IsEmpty())
  101. {
  102. dp.Add("AcademicYearNo", queryParam["AcademicYearNo"].ToString(), DbType.String);
  103. strSql.Append(" and t.AcademicYearNo=@AcademicYearNo ");
  104. }
  105. if (!queryParam["Semester"].IsEmpty())
  106. {
  107. dp.Add("Semester", queryParam["Semester"].ToString(), DbType.String);
  108. strSql.Append(" and t.Semester=@Semester ");
  109. }
  110. if (!queryParam["ClassNo"].IsEmpty())
  111. {
  112. dp.Add("ClassNo", queryParam["ClassNo"].ToString(), DbType.String);
  113. strSql.Append(" and t.ClassNo = @ClassNo ");
  114. }
  115. if (!queryParam["StartTime"].IsEmpty())
  116. {
  117. dp.Add("StartTime", queryParam["StartTime"].ToDate(), DbType.DateTime);
  118. strSql.Append(" and a.LessonDate >= @StartTime ");
  119. }
  120. if (!queryParam["EndTime"].IsEmpty())
  121. {
  122. dp.Add("EndTime", queryParam["EndTime"].ToDate(), DbType.DateTime);
  123. strSql.Append(" and a.LessonDate <= @EndTime ");
  124. }
  125. strSql.Append(") union ( ");
  126. strSql.Append(@"select distinct t.AcademicYearNo,t.Semester,t.DeptNo,t.MajorNo,t.ClassNo,t.LessonNo,t.LessonName,t.LessonSortNo,t.EmpNo
  127. ,a.LessonDate,a.LessonSection as LessonTime
  128. from StuSelectLessonListOfElective t
  129. left join ArrangeLessonTermOfElective a on t.AcademicYearNo=a.AcademicYearNo and t.Semester=a.Semester and t.LessonNo=a.LessonNo and t.EmpNo=a.EmpNo and t.ClassRoomNo=a.ClassRoomNo
  130. where t.StuNo not in (select sa.StuNo from StuAttendance sa where sa.AcademicYearNo=t.AcademicYearNo and sa.Semester=t.Semester and sa.ClassNo=t.ClassNo and sa.LessonNo=t.LessonNo and sa.EmpNo=t.EmpNo and sa.LessonSortNo=t.LessonSortNo and sa.ClassRoomNo=t.ClassRoomNo and sa.LessonTime in (t.LessonSection))
  131. and t.Status=2");
  132. if (!queryParam["AcademicYearNo"].IsEmpty())
  133. {
  134. dp.Add("AcademicYearNo", queryParam["AcademicYearNo"].ToString(), DbType.String);
  135. strSql.Append(" and t.AcademicYearNo=@AcademicYearNo ");
  136. }
  137. if (!queryParam["Semester"].IsEmpty())
  138. {
  139. dp.Add("Semester", queryParam["Semester"].ToString(), DbType.String);
  140. strSql.Append(" and t.Semester=@Semester ");
  141. }
  142. if (!queryParam["ClassNo"].IsEmpty())
  143. {
  144. dp.Add("ClassNo", queryParam["ClassNo"].ToString(), DbType.String);
  145. strSql.Append(" and t.ClassNo = @ClassNo ");
  146. }
  147. if (!queryParam["StartTime"].IsEmpty())
  148. {
  149. dp.Add("StartTime", queryParam["StartTime"].ToDate(), DbType.DateTime);
  150. strSql.Append(" and a.LessonDate >= @StartTime ");
  151. }
  152. if (!queryParam["EndTime"].IsEmpty())
  153. {
  154. dp.Add("EndTime", queryParam["EndTime"].ToDate(), DbType.DateTime);
  155. strSql.Append(" and a.LessonDate <= @EndTime ");
  156. }
  157. strSql.Append(" )");
  158. return this.BaseRepository("CollegeMIS").FindList<StuAttendanceEntity>(strSql.ToString(), dp, pagination);
  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. public IEnumerable<StuAttendanceEntity> GetAllList()
  173. {
  174. try
  175. {
  176. return this.BaseRepository("CollegeMIS").FindList<StuAttendanceEntity>();
  177. }
  178. catch (Exception ex)
  179. {
  180. if (ex is ExceptionEx)
  181. {
  182. throw;
  183. }
  184. else
  185. {
  186. throw ExceptionEx.ThrowServiceException(ex);
  187. }
  188. }
  189. }
  190. /// <summary>
  191. /// 获取StuAttendance表实体数据
  192. /// <param name="keyValue">主键</param>
  193. /// <summary>
  194. /// <returns></returns>
  195. public StuAttendanceEntity GetStuAttendanceEntity(string keyValue)
  196. {
  197. try
  198. {
  199. //return this.BaseRepository("CollegeMIS").FindEntity<StuAttendanceEntity>(keyValue);
  200. var keyvalue = Convert.ToInt32(keyValue);
  201. return this.BaseRepository("CollegeMIS").FindEntity<StuAttendanceEntity>(keyvalue);
  202. }
  203. catch (Exception ex)
  204. {
  205. if (ex is ExceptionEx)
  206. {
  207. throw;
  208. }
  209. else
  210. {
  211. throw ExceptionEx.ThrowServiceException(ex);
  212. }
  213. }
  214. }
  215. internal List<StuAttendanceEntity> GetStuInfo(string academicYear, string semester, string lessonNo, string empNo, string classRoomNum, string lessonTime, DateTime lessonDate, string teachClassNo)
  216. {
  217. try
  218. {
  219. return this.BaseRepository("CollegeMIS").FindList<StuAttendanceEntity>(a => a.AcademicYearNo == academicYear && a.Semester == semester && a.LessonNo == lessonNo && a.EmpNo == empNo && a.ClassRoomNo == classRoomNum && a.LessonTime == lessonTime && a.LessonDate == lessonDate && a.TeachClassNo == teachClassNo).ToList();
  220. }
  221. catch (Exception ex)
  222. {
  223. if (ex is ExceptionEx)
  224. {
  225. throw;
  226. }
  227. else
  228. {
  229. throw ExceptionEx.ThrowServiceException(ex);
  230. }
  231. }
  232. }
  233. internal List<StuAttendanceEntity> GetStuLessonInfo(string account)
  234. {
  235. try
  236. {
  237. return this.BaseRepository("CollegeMIS").FindList<StuAttendanceEntity>(a => a.StuNo == account).ToList();
  238. }
  239. catch (Exception ex)
  240. {
  241. if (ex is ExceptionEx)
  242. {
  243. throw;
  244. }
  245. else
  246. {
  247. throw ExceptionEx.ThrowServiceException(ex);
  248. }
  249. }
  250. }
  251. /// <summary>
  252. /// 考勤统计
  253. /// <summary>
  254. /// <param name="queryJson">查询参数</param>
  255. /// <returns></returns>
  256. public IEnumerable<StuAttendanceEntity> GetAttendanceStatisticPageList(Pagination pagination, string queryJson)
  257. {
  258. try
  259. {
  260. var queryParam = queryJson.ToJObject();
  261. var dp = new DynamicParameters(new { });
  262. var strSql = new StringBuilder();
  263. strSql.Append("select t.AcademicYearNo,t.Semester,t.StuNo,t.StuName,count(a.ALTId) as totalCourse,");
  264. strSql.Append(" (select count(sa.ID) from StuAttendance sa where sa.AcademicYearNo=t.AcademicYearNo and sa.Semester=t.Semester and sa.StuNo=t.StuNo and sa.AttendOrNo='是') as attendanceCourse ");
  265. strSql.Append(" from StuSelectLessonList t ");
  266. strSql.Append(" left join ArrangeLessonTerm a on t.AcademicYearNo=a.AcademicYearNo and t.Semester=a.Semester and t.LessonNo=a.LessonNo and t.EmpNo=a.EmpNo ");
  267. strSql.Append(" where 1=1 ");
  268. if (!queryParam["AcademicYearNo"].IsEmpty())
  269. {
  270. dp.Add("AcademicYearNo", queryParam["AcademicYearNo"].ToString(), DbType.String);
  271. strSql.Append(" and t.AcademicYearNo=@AcademicYearNo ");
  272. }
  273. if (!queryParam["Semester"].IsEmpty())
  274. {
  275. dp.Add("Semester", queryParam["Semester"].ToString(), DbType.String);
  276. strSql.Append(" and t.Semester=@Semester ");
  277. }
  278. if (!queryParam["StuNo"].IsEmpty())
  279. {
  280. dp.Add("StuNo", "%" + queryParam["StuNo"].ToString() + "%", DbType.String);
  281. strSql.Append(" and t.StuNo like @StuNo ");
  282. }
  283. if (!queryParam["StuName"].IsEmpty())
  284. {
  285. dp.Add("StuName", "%" + queryParam["StuName"].ToString() + "%", DbType.String);
  286. strSql.Append(" and t.StuName like @StuName ");
  287. }
  288. strSql.Append(" group by t.AcademicYearNo,t.Semester,t.StuNo,t.StuName ");
  289. // 虚拟参数
  290. return this.BaseRepository("CollegeMIS").FindList<StuAttendanceEntity>(strSql.ToString(), dp, pagination);
  291. }
  292. catch (Exception ex)
  293. {
  294. if (ex is ExceptionEx)
  295. {
  296. throw;
  297. }
  298. else
  299. {
  300. throw ExceptionEx.ThrowServiceException(ex);
  301. }
  302. }
  303. }
  304. /// <summary>
  305. /// 全校学生课程考勤
  306. /// <summary>
  307. /// <param name="queryJson">查询参数</param>
  308. /// <returns></returns>
  309. public IEnumerable<StuAttendanceEntity> GetAttendancePageList(Pagination pagination, string queryJson)
  310. {
  311. try
  312. {
  313. var queryParam = queryJson.ToJObject();
  314. var dp = new DynamicParameters(new { });
  315. var strSql = new StringBuilder();
  316. strSql.Append(@"select s.AcademicYearNo,s.Semester,s.DeptNo,s.MajorNo,s.ClassNo,s.LessonNo,s.EmpNo,s.LessonSortNo,s.StuNo,s.StuName,a.AttendOrNo,a.Sort from StuSelectLessonList s
  317. left join StuAttendance a on s.AcademicYearNo = a.AcademicYearNo and s.Semester = a.Semester and s.DeptNo = a.DeptNo and s.MajorNo = a.MajorNo and s.ClassNo = a.ClassNo and s.LessonNo = a.LessonNo and s.EmpNo = a.EmpNo and s.LessonSortNo = a.LessonSortNo and s.StuNo = a.StuNo
  318. where 1=1 ");
  319. if (!queryParam["AcademicYearNo"].IsEmpty())
  320. {
  321. dp.Add("AcademicYearNo", queryParam["AcademicYearNo"].ToString(), DbType.String);
  322. strSql.Append(" and s.AcademicYearNo=@AcademicYearNo ");
  323. }
  324. if (!queryParam["Semester"].IsEmpty())
  325. {
  326. dp.Add("Semester", queryParam["Semester"].ToString(), DbType.String);
  327. strSql.Append(" and s.Semester=@Semester ");
  328. }
  329. if (!queryParam["DeptNo"].IsEmpty())
  330. {
  331. dp.Add("DeptNo", queryParam["DeptNo"].ToString(), DbType.String);
  332. strSql.Append(" and s.DeptNo=@DeptNo ");
  333. }
  334. if (!queryParam["MajorNo"].IsEmpty())
  335. {
  336. dp.Add("MajorNo", queryParam["MajorNo"].ToString(), DbType.String);
  337. strSql.Append(" and s.MajorNo=@MajorNo ");
  338. }
  339. if (!queryParam["LessonNo"].IsEmpty())
  340. {
  341. dp.Add("LessonNo", queryParam["LessonNo"].ToString(), DbType.String);
  342. strSql.Append(" and s.LessonNo=@LessonNo ");
  343. }
  344. if (!queryParam["EmpNo"].IsEmpty())
  345. {
  346. dp.Add("EmpNo", queryParam["EmpNo"].ToString(), DbType.String);
  347. strSql.Append(" and s.EmpNo=@EmpNo ");
  348. }
  349. if (!queryParam["StuNo"].IsEmpty())
  350. {
  351. dp.Add("StuNo", "%" + queryParam["StuNo"].ToString() + "%", DbType.String);
  352. strSql.Append(" and s.StuNo like @StuNo ");
  353. }
  354. if (!queryParam["StuName"].IsEmpty())
  355. {
  356. dp.Add("StuName", "%" + queryParam["StuName"].ToString() + "%", DbType.String);
  357. strSql.Append(" and s.StuName like @StuName ");
  358. }
  359. strSql.Append(" union ");
  360. strSql.Append(@"select s.AcademicYearNo,s.Semester,s.DeptNo,s.MajorNo,s.ClassNo,s.LessonNo,s.EmpNo,s.LessonSortNo,s.StuNo,s.StuName,a.AttendOrNo,a.Sort from StuSelectLessonListOfElective s
  361. left join StuAttendance a on s.AcademicYearNo=a.AcademicYearNo and s.Semester=a.Semester and s.DeptNo=a.DeptNo and s.MajorNo=a.MajorNo and s.ClassNo=a.ClassNo and s.LessonNo=a.LessonNo and s.EmpNo=a.EmpNo and s.LessonSortNo=a.LessonSortNo and s.ClassRoomNo=a.ClassRoomNo and a.LessonTime in (s.LessonSection) and s.StuNo=a.StuNo and s.Status=2
  362. where 1=1 ");
  363. if (!queryParam["AcademicYearNo"].IsEmpty())
  364. {
  365. dp.Add("AcademicYearNo", queryParam["AcademicYearNo"].ToString(), DbType.String);
  366. strSql.Append(" and s.AcademicYearNo=@AcademicYearNo ");
  367. }
  368. if (!queryParam["Semester"].IsEmpty())
  369. {
  370. dp.Add("Semester", queryParam["Semester"].ToString(), DbType.String);
  371. strSql.Append(" and s.Semester=@Semester ");
  372. }
  373. if (!queryParam["DeptNo"].IsEmpty())
  374. {
  375. dp.Add("DeptNo", queryParam["DeptNo"].ToString(), DbType.String);
  376. strSql.Append(" and s.DeptNo=@DeptNo ");
  377. }
  378. if (!queryParam["MajorNo"].IsEmpty())
  379. {
  380. dp.Add("MajorNo", queryParam["MajorNo"].ToString(), DbType.String);
  381. strSql.Append(" and s.MajorNo=@MajorNo ");
  382. }
  383. if (!queryParam["LessonNo"].IsEmpty())
  384. {
  385. dp.Add("LessonNo", queryParam["LessonNo"].ToString(), DbType.String);
  386. strSql.Append(" and s.LessonNo=@LessonNo ");
  387. }
  388. if (!queryParam["EmpNo"].IsEmpty())
  389. {
  390. dp.Add("EmpNo", queryParam["EmpNo"].ToString(), DbType.String);
  391. strSql.Append(" and s.EmpNo=@EmpNo ");
  392. }
  393. if (!queryParam["StuNo"].IsEmpty())
  394. {
  395. dp.Add("StuNo", "%" + queryParam["StuNo"].ToString() + "%", DbType.String);
  396. strSql.Append(" and s.StuNo like @StuNo ");
  397. }
  398. if (!queryParam["StuName"].IsEmpty())
  399. {
  400. dp.Add("StuName", "%" + queryParam["StuName"].ToString() + "%", DbType.String);
  401. strSql.Append(" and s.StuName like @StuName ");
  402. }
  403. // 虚拟参数
  404. return this.BaseRepository("CollegeMIS").FindList<StuAttendanceEntity>(strSql.ToString(), dp, pagination);
  405. }
  406. catch (Exception ex)
  407. {
  408. if (ex is ExceptionEx)
  409. {
  410. throw;
  411. }
  412. else
  413. {
  414. throw ExceptionEx.ThrowServiceException(ex);
  415. }
  416. }
  417. }
  418. /// <summary>
  419. /// 按条件查找同一门课的考勤信息
  420. /// <summary>
  421. /// <returns></returns>
  422. public StuAttendanceEntity GetStuAttendanceEntityByQuery(StuAttendanceLeaveEntity entity)
  423. {
  424. try
  425. {
  426. return this.BaseRepository("CollegeMIS").FindEntity<StuAttendanceEntity>(x => x.StuNo == entity.StuNo && x.AcademicYearNo == entity.AcademicYearNo && x.Semester == entity.Semester && x.DeptNo == entity.DeptNo && x.MajorNo == entity.MajorNo && x.ClassNo == entity.ClassNo && x.LessonNo == entity.LessonNo && x.LessonSortNo == entity.LessonSortNo && x.LessonDate == entity.LessonDate && x.LessonTime == entity.LessonTime && x.EmpNo == entity.EmpNo && x.ClassRoomNo == entity.ClassRoomNo);
  427. }
  428. catch (Exception ex)
  429. {
  430. if (ex is ExceptionEx)
  431. {
  432. throw;
  433. }
  434. else
  435. {
  436. throw ExceptionEx.ThrowServiceException(ex);
  437. }
  438. }
  439. }
  440. #endregion
  441. #region 提交数据
  442. /// <summary>
  443. /// 删除实体数据
  444. /// <param name="keyValue">主键</param>
  445. /// <summary>
  446. /// <returns></returns>
  447. public void DeleteEntity(string keyValue)
  448. {
  449. try
  450. {
  451. //this.BaseRepository("CollegeMIS").Delete<StuAttendanceEntity>(t => t.StuAttendanceNo == keyValue);
  452. this.BaseRepository("CollegeMIS").Delete<StuAttendanceEntity>(t => t.ID == keyValue);
  453. }
  454. catch (Exception ex)
  455. {
  456. if (ex is ExceptionEx)
  457. {
  458. throw;
  459. }
  460. else
  461. {
  462. throw ExceptionEx.ThrowServiceException(ex);
  463. }
  464. }
  465. }
  466. /// <summary>
  467. /// 保存实体数据(新增、修改)
  468. /// <param name="keyValue">主键</param>
  469. /// <summary>
  470. /// <returns></returns>
  471. public void SaveEntity(string keyValue, StuAttendanceEntity entity)
  472. {
  473. try
  474. {
  475. if (!string.IsNullOrEmpty(keyValue))
  476. {
  477. entity.Modify(keyValue);
  478. this.BaseRepository("CollegeMIS").Update(entity);
  479. }
  480. else
  481. {
  482. entity.Create();
  483. this.BaseRepository("CollegeMIS").Insert(entity);
  484. }
  485. }
  486. catch (Exception ex)
  487. {
  488. if (ex is ExceptionEx)
  489. {
  490. throw;
  491. }
  492. else
  493. {
  494. throw ExceptionEx.ThrowServiceException(ex);
  495. }
  496. }
  497. }
  498. #endregion
  499. /// <summary>
  500. /// 提交课程考勤
  501. /// </summary>
  502. /// <param name="kqType"></param>
  503. /// <param name="lessonTime"></param>
  504. /// <param name="lessonDate"></param>
  505. /// <param name="dataJson"></param>
  506. /// <returns></returns>
  507. public async Task<bool> AttendanceApply(string kqType, string lessonTime, string lessonDate, string classRoomNo, string dataJson, decimal? attenScore, string attenCondition)
  508. {
  509. var kqEntity = dataItemIBLL.GetDetailListByParentId("ktkqlx", "0").Find(a => a.F_ItemValue == kqType);
  510. var data = JsonConvert.DeserializeObject<List<StuSelectLessonListEntity>>(dataJson);
  511. if (data.Any())
  512. {
  513. var majorList = BaseRepository("CollegeMIS").FindList<CdMajorEntity>().ToList();
  514. var deptList = BaseRepository("CollegeMIS").FindList<CdDeptEntity>().ToList();
  515. var classList = BaseRepository("CollegeMIS").FindList<ClassInfoEntity>().ToList();
  516. var lessonSortList = BaseRepository("CollegeMIS").FindList<CdLessonSortEntity>().ToList();
  517. var classRoomList = BaseRepository("CollegeMIS").FindList<ClassroomInfoEntity>().ToList();
  518. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  519. try
  520. {
  521. foreach (var stuSelectLessonListEntity in data)
  522. {
  523. var model = new StuAttendanceEntity();
  524. model.AcademicYearNo = stuSelectLessonListEntity.AcademicYearNo;
  525. model.Semester = stuSelectLessonListEntity.Semester;
  526. model.StuNo = stuSelectLessonListEntity.StuNo;
  527. model.StuName = stuSelectLessonListEntity.StuName;
  528. model.Gender = stuSelectLessonListEntity.GenderNo == "0" ? "女" : "男";
  529. model.Grade = stuSelectLessonListEntity.Grade;
  530. model.DeptNo = stuSelectLessonListEntity.DeptNo;
  531. model.DeptName = deptList.Find(m => m.DeptNo == stuSelectLessonListEntity.DeptNo)?.DeptName;
  532. model.MajorNo = stuSelectLessonListEntity.MajorNo;
  533. model.MajorName = majorList.Find(m => m.MajorNo == stuSelectLessonListEntity.MajorNo)?.MajorName;
  534. model.ClassNo = stuSelectLessonListEntity.ClassNo;
  535. model.ClassName = classList.Find(m => m.ClassNo == stuSelectLessonListEntity.ClassNo)?.ClassName;
  536. model.LessonNo = stuSelectLessonListEntity.LessonNo;
  537. model.LessonName = stuSelectLessonListEntity.LessonName;
  538. model.TeachClassNo = stuSelectLessonListEntity.TeachClassNo;
  539. model.LessonSortNo = stuSelectLessonListEntity.LessonSortNo;
  540. model.LessonSortName = lessonSortList
  541. .Find(m => m.LessonSortNo == stuSelectLessonListEntity.LessonSortNo)?.LessonSortName;
  542. model.LessonDate = DateTime.Parse(lessonDate);
  543. model.LessonTime = stuSelectLessonListEntity.LessonSortNo == "2" ? db.FindEntity<StuSelectLessonListOfElectiveEntity>(x => x.Id == stuSelectLessonListEntity.StuSelectLessonListOfElectiveId)?.LessonSection : lessonTime;
  544. model.AttendOrNo = kqEntity.F_Description;
  545. model.Sort = kqEntity.F_ItemName;
  546. model.AttenScore = attenScore.HasValue ? attenScore.Value : 0;
  547. model.AttenCondition = attenCondition;
  548. model.EmpNo = stuSelectLessonListEntity.EmpNo;
  549. model.CheckMarkDept = "0";
  550. model.CheckMark = "0";
  551. model.InertDate = DateTime.Now;
  552. model.ClassRoomNo = classRoomNo;
  553. model.ClassRoomName = classRoomList.Find(x => x.ClassroomId.Trim() == classRoomNo.Trim())?.ClassroomName.Trim();
  554. //var ifExistModel = BaseRepository("CollegeMIS").FindEntity<StuAttendanceEntity>(m =>
  555. // m.EmpNo == model.EmpNo && m.AcademicYearNo == model.AcademicYearNo &&
  556. // m.Semester == model.Semester && m.StuNo == model.StuNo &&
  557. // m.TeachClassNo == model.TeachClassNo);
  558. if (!string.IsNullOrEmpty(stuSelectLessonListEntity.StuAttendanceNo))
  559. {
  560. model.Modify(stuSelectLessonListEntity.StuAttendanceNo);
  561. db.Update(model);
  562. }
  563. else
  564. {
  565. model.Create();
  566. db.Insert(model);
  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. return true;
  585. }
  586. public async Task<bool> AttendanceApply(string lessonTime, string lessonDate, string classRoomNo, string dataJson, decimal? attenScore, string attenCondition)
  587. {
  588. var kqList = dataItemIBLL.GetDetailListByParentId("ktkqlx", "0");
  589. var data = JsonConvert.DeserializeObject<List<StuSelectLessonListEntity>>(dataJson);
  590. if (data.Any())
  591. {
  592. var majorList = BaseRepository("CollegeMIS").FindList<CdMajorEntity>().ToList();
  593. var deptList = BaseRepository("CollegeMIS").FindList<CdDeptEntity>().ToList();
  594. var classList = BaseRepository("CollegeMIS").FindList<ClassInfoEntity>().ToList();
  595. var lessonSortList = BaseRepository("CollegeMIS").FindList<CdLessonSortEntity>().ToList();
  596. var classRoomList = BaseRepository("CollegeMIS").FindList<ClassroomInfoEntity>().ToList();
  597. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  598. try
  599. {
  600. foreach (var stuSelectLessonListEntity in data)
  601. {
  602. var kqEntity = kqList.Find(a => a.F_ItemValue == stuSelectLessonListEntity.kqType);
  603. var model = new StuAttendanceEntity();
  604. model.AcademicYearNo = stuSelectLessonListEntity.AcademicYearNo;
  605. model.Semester = stuSelectLessonListEntity.Semester;
  606. model.StuNo = stuSelectLessonListEntity.StuNo;
  607. model.StuName = stuSelectLessonListEntity.StuName;
  608. model.Gender = stuSelectLessonListEntity.GenderNo == "0" ? "女" : "男";
  609. model.Grade = stuSelectLessonListEntity.Grade;
  610. model.DeptNo = stuSelectLessonListEntity.DeptNo;
  611. model.DeptName = deptList.Find(m => m.DeptNo == stuSelectLessonListEntity.DeptNo)?.DeptName;
  612. model.MajorNo = stuSelectLessonListEntity.MajorNo;
  613. model.MajorName = majorList.Find(m => m.MajorNo == stuSelectLessonListEntity.MajorNo)?.MajorName;
  614. model.ClassNo = stuSelectLessonListEntity.ClassNo;
  615. model.ClassName = classList.Find(m => m.ClassNo == stuSelectLessonListEntity.ClassNo)?.ClassName;
  616. model.LessonNo = stuSelectLessonListEntity.LessonNo;
  617. model.LessonName = stuSelectLessonListEntity.LessonName;
  618. model.TeachClassNo = stuSelectLessonListEntity.TeachClassNo;
  619. model.LessonSortNo = stuSelectLessonListEntity.LessonSortNo;
  620. model.LessonSortName = lessonSortList
  621. .Find(m => m.LessonSortNo == stuSelectLessonListEntity.LessonSortNo)?.LessonSortName;
  622. model.LessonDate = DateTime.Parse(lessonDate);
  623. model.LessonTime = stuSelectLessonListEntity.LessonSortNo == "2" ? db.FindEntity<StuSelectLessonListOfElectiveEntity>(x => x.Id == stuSelectLessonListEntity.StuSelectLessonListOfElectiveId)?.LessonSection : lessonTime;
  624. model.AttendOrNo = kqEntity.F_Description;
  625. model.Sort = kqEntity.F_ItemName;
  626. model.AttenScore = attenScore.HasValue ? attenScore.Value : 0;
  627. model.AttenCondition = attenCondition;
  628. model.EmpNo = stuSelectLessonListEntity.EmpNo;
  629. model.CheckMarkDept = "0";
  630. model.CheckMark = "0";
  631. model.InertDate = DateTime.Now;
  632. model.ClassRoomNo = classRoomNo;
  633. model.ClassRoomName = classRoomList.Find(x => x.ClassroomId.Trim() == classRoomNo.Trim())?.ClassroomName.Trim();
  634. //var ifExistModel = BaseRepository("CollegeMIS").FindEntity<StuAttendanceEntity>(m =>
  635. // m.EmpNo == model.EmpNo && m.AcademicYearNo == model.AcademicYearNo &&
  636. // m.Semester == model.Semester && m.StuNo == model.StuNo &&
  637. // m.TeachClassNo == model.TeachClassNo);
  638. if (!string.IsNullOrEmpty(stuSelectLessonListEntity.StuAttendanceNo))
  639. {
  640. model.Modify(stuSelectLessonListEntity.StuAttendanceNo);
  641. db.Update(model);
  642. }
  643. else
  644. {
  645. model.Create();
  646. db.Insert(model);
  647. }
  648. }
  649. db.Commit();
  650. }
  651. catch (Exception ex)
  652. {
  653. db.Rollback();
  654. if (ex is ExceptionEx)
  655. {
  656. throw;
  657. }
  658. else
  659. {
  660. throw ExceptionEx.ThrowServiceException(ex);
  661. }
  662. }
  663. }
  664. return true;
  665. }
  666. }
  667. }