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.
 
 
 
 
 
 

670 lines
31 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. #endregion
  419. #region 提交数据
  420. /// <summary>
  421. /// 删除实体数据
  422. /// <param name="keyValue">主键</param>
  423. /// <summary>
  424. /// <returns></returns>
  425. public void DeleteEntity(string keyValue)
  426. {
  427. try
  428. {
  429. //this.BaseRepository("CollegeMIS").Delete<StuAttendanceEntity>(t => t.StuAttendanceNo == keyValue);
  430. this.BaseRepository("CollegeMIS").Delete<StuAttendanceEntity>(t => t.ID == keyValue);
  431. }
  432. catch (Exception ex)
  433. {
  434. if (ex is ExceptionEx)
  435. {
  436. throw;
  437. }
  438. else
  439. {
  440. throw ExceptionEx.ThrowServiceException(ex);
  441. }
  442. }
  443. }
  444. /// <summary>
  445. /// 保存实体数据(新增、修改)
  446. /// <param name="keyValue">主键</param>
  447. /// <summary>
  448. /// <returns></returns>
  449. public void SaveEntity(string keyValue, StuAttendanceEntity entity)
  450. {
  451. try
  452. {
  453. if (!string.IsNullOrEmpty(keyValue))
  454. {
  455. entity.Modify(keyValue);
  456. this.BaseRepository("CollegeMIS").Update(entity);
  457. }
  458. else
  459. {
  460. entity.Create();
  461. this.BaseRepository("CollegeMIS").Insert(entity);
  462. }
  463. }
  464. catch (Exception ex)
  465. {
  466. if (ex is ExceptionEx)
  467. {
  468. throw;
  469. }
  470. else
  471. {
  472. throw ExceptionEx.ThrowServiceException(ex);
  473. }
  474. }
  475. }
  476. #endregion
  477. /// <summary>
  478. /// 提交课程考勤
  479. /// </summary>
  480. /// <param name="kqType"></param>
  481. /// <param name="lessonTime"></param>
  482. /// <param name="lessonDate"></param>
  483. /// <param name="dataJson"></param>
  484. /// <returns></returns>
  485. public async Task<bool> AttendanceApply(string kqType, string lessonTime, string lessonDate, string classRoomNo, string dataJson, decimal? attenScore, string attenCondition)
  486. {
  487. var kqEntity = dataItemIBLL.GetDetailListByParentId("ktkqlx", "0").Find(a => a.F_ItemValue == kqType);
  488. var data = JsonConvert.DeserializeObject<List<StuSelectLessonListEntity>>(dataJson);
  489. if (data.Any())
  490. {
  491. var majorList = BaseRepository("CollegeMIS").FindList<CdMajorEntity>().ToList();
  492. var deptList = BaseRepository("CollegeMIS").FindList<CdDeptEntity>().ToList();
  493. var classList = BaseRepository("CollegeMIS").FindList<ClassInfoEntity>().ToList();
  494. var lessonSortList = BaseRepository("CollegeMIS").FindList<CdLessonSortEntity>().ToList();
  495. var classRoomList = BaseRepository("CollegeMIS").FindList<ClassroomInfoEntity>().ToList();
  496. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  497. try
  498. {
  499. foreach (var stuSelectLessonListEntity in data)
  500. {
  501. var model = new StuAttendanceEntity();
  502. model.AcademicYearNo = stuSelectLessonListEntity.AcademicYearNo;
  503. model.Semester = stuSelectLessonListEntity.Semester;
  504. model.StuNo = stuSelectLessonListEntity.StuNo;
  505. model.StuName = stuSelectLessonListEntity.StuName;
  506. model.Gender = stuSelectLessonListEntity.GenderNo == "0" ? "女" : "男";
  507. model.Grade = stuSelectLessonListEntity.Grade;
  508. model.DeptNo = stuSelectLessonListEntity.DeptNo;
  509. model.DeptName = deptList.Find(m => m.DeptNo == stuSelectLessonListEntity.DeptNo)?.DeptName;
  510. model.MajorNo = stuSelectLessonListEntity.MajorNo;
  511. model.MajorName = majorList.Find(m => m.MajorNo == stuSelectLessonListEntity.MajorNo)?.MajorName;
  512. model.ClassNo = stuSelectLessonListEntity.ClassNo;
  513. model.ClassName = classList.Find(m => m.ClassNo == stuSelectLessonListEntity.ClassNo)?.ClassName;
  514. model.LessonNo = stuSelectLessonListEntity.LessonNo;
  515. model.LessonName = stuSelectLessonListEntity.LessonName;
  516. model.TeachClassNo = stuSelectLessonListEntity.TeachClassNo;
  517. model.LessonSortNo = stuSelectLessonListEntity.LessonSortNo;
  518. model.LessonSortName = lessonSortList
  519. .Find(m => m.LessonSortNo == stuSelectLessonListEntity.LessonSortNo)?.LessonSortName;
  520. model.LessonDate = DateTime.Parse(lessonDate);
  521. model.LessonTime = stuSelectLessonListEntity.LessonSortNo == "2" ? db.FindEntity<StuSelectLessonListOfElectiveEntity>(x => x.Id == stuSelectLessonListEntity.StuSelectLessonListOfElectiveId)?.LessonSection : lessonTime;
  522. model.AttendOrNo = kqEntity.F_Description;
  523. model.Sort = kqEntity.F_ItemName;
  524. model.AttenScore = attenScore.HasValue ? attenScore.Value : 0;
  525. model.AttenCondition = attenCondition;
  526. model.EmpNo = stuSelectLessonListEntity.EmpNo;
  527. model.CheckMarkDept = "0";
  528. model.CheckMark = "0";
  529. model.InertDate = DateTime.Now;
  530. model.ClassRoomNo = classRoomNo;
  531. model.ClassRoomName = classRoomList.Find(x => x.ClassroomId.Trim() == classRoomNo.Trim())?.ClassroomName.Trim();
  532. //var ifExistModel = BaseRepository("CollegeMIS").FindEntity<StuAttendanceEntity>(m =>
  533. // m.EmpNo == model.EmpNo && m.AcademicYearNo == model.AcademicYearNo &&
  534. // m.Semester == model.Semester && m.StuNo == model.StuNo &&
  535. // m.TeachClassNo == model.TeachClassNo);
  536. if (!string.IsNullOrEmpty(stuSelectLessonListEntity.StuAttendanceNo))
  537. {
  538. model.Modify(stuSelectLessonListEntity.StuAttendanceNo);
  539. db.Update(model);
  540. }
  541. else
  542. {
  543. model.Create();
  544. db.Insert(model);
  545. }
  546. }
  547. db.Commit();
  548. }
  549. catch (Exception ex)
  550. {
  551. db.Rollback();
  552. if (ex is ExceptionEx)
  553. {
  554. throw;
  555. }
  556. else
  557. {
  558. throw ExceptionEx.ThrowServiceException(ex);
  559. }
  560. }
  561. }
  562. return true;
  563. }
  564. public async Task<bool> AttendanceApply(string lessonTime, string lessonDate, string classRoomNo, string dataJson, decimal? attenScore, string attenCondition)
  565. {
  566. var kqList = dataItemIBLL.GetDetailListByParentId("ktkqlx", "0");
  567. var data = JsonConvert.DeserializeObject<List<StuSelectLessonListEntity>>(dataJson);
  568. if (data.Any())
  569. {
  570. var majorList = BaseRepository("CollegeMIS").FindList<CdMajorEntity>().ToList();
  571. var deptList = BaseRepository("CollegeMIS").FindList<CdDeptEntity>().ToList();
  572. var classList = BaseRepository("CollegeMIS").FindList<ClassInfoEntity>().ToList();
  573. var lessonSortList = BaseRepository("CollegeMIS").FindList<CdLessonSortEntity>().ToList();
  574. var classRoomList = BaseRepository("CollegeMIS").FindList<ClassroomInfoEntity>().ToList();
  575. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  576. try
  577. {
  578. foreach (var stuSelectLessonListEntity in data)
  579. {
  580. var kqEntity = kqList.Find(a => a.F_ItemValue == stuSelectLessonListEntity.kqType);
  581. var model = new StuAttendanceEntity();
  582. model.AcademicYearNo = stuSelectLessonListEntity.AcademicYearNo;
  583. model.Semester = stuSelectLessonListEntity.Semester;
  584. model.StuNo = stuSelectLessonListEntity.StuNo;
  585. model.StuName = stuSelectLessonListEntity.StuName;
  586. model.Gender = stuSelectLessonListEntity.GenderNo == "0" ? "女" : "男";
  587. model.Grade = stuSelectLessonListEntity.Grade;
  588. model.DeptNo = stuSelectLessonListEntity.DeptNo;
  589. model.DeptName = deptList.Find(m => m.DeptNo == stuSelectLessonListEntity.DeptNo)?.DeptName;
  590. model.MajorNo = stuSelectLessonListEntity.MajorNo;
  591. model.MajorName = majorList.Find(m => m.MajorNo == stuSelectLessonListEntity.MajorNo)?.MajorName;
  592. model.ClassNo = stuSelectLessonListEntity.ClassNo;
  593. model.ClassName = classList.Find(m => m.ClassNo == stuSelectLessonListEntity.ClassNo)?.ClassName;
  594. model.LessonNo = stuSelectLessonListEntity.LessonNo;
  595. model.LessonName = stuSelectLessonListEntity.LessonName;
  596. model.TeachClassNo = stuSelectLessonListEntity.TeachClassNo;
  597. model.LessonSortNo = stuSelectLessonListEntity.LessonSortNo;
  598. model.LessonSortName = lessonSortList
  599. .Find(m => m.LessonSortNo == stuSelectLessonListEntity.LessonSortNo)?.LessonSortName;
  600. model.LessonDate = DateTime.Parse(lessonDate);
  601. model.LessonTime = stuSelectLessonListEntity.LessonSortNo == "2" ? db.FindEntity<StuSelectLessonListOfElectiveEntity>(x => x.Id == stuSelectLessonListEntity.StuSelectLessonListOfElectiveId)?.LessonSection : lessonTime;
  602. model.AttendOrNo = kqEntity.F_Description;
  603. model.Sort = kqEntity.F_ItemName;
  604. model.AttenScore = attenScore.HasValue ? attenScore.Value : 0;
  605. model.AttenCondition = attenCondition;
  606. model.EmpNo = stuSelectLessonListEntity.EmpNo;
  607. model.CheckMarkDept = "0";
  608. model.CheckMark = "0";
  609. model.InertDate = DateTime.Now;
  610. model.ClassRoomNo = classRoomNo;
  611. model.ClassRoomName = classRoomList.Find(x => x.ClassroomId.Trim() == classRoomNo.Trim())?.ClassroomName.Trim();
  612. //var ifExistModel = BaseRepository("CollegeMIS").FindEntity<StuAttendanceEntity>(m =>
  613. // m.EmpNo == model.EmpNo && m.AcademicYearNo == model.AcademicYearNo &&
  614. // m.Semester == model.Semester && m.StuNo == model.StuNo &&
  615. // m.TeachClassNo == model.TeachClassNo);
  616. if (!string.IsNullOrEmpty(stuSelectLessonListEntity.StuAttendanceNo))
  617. {
  618. model.Modify(stuSelectLessonListEntity.StuAttendanceNo);
  619. db.Update(model);
  620. }
  621. else
  622. {
  623. model.Create();
  624. db.Insert(model);
  625. }
  626. }
  627. db.Commit();
  628. }
  629. catch (Exception ex)
  630. {
  631. db.Rollback();
  632. if (ex is ExceptionEx)
  633. {
  634. throw;
  635. }
  636. else
  637. {
  638. throw ExceptionEx.ThrowServiceException(ex);
  639. }
  640. }
  641. }
  642. return true;
  643. }
  644. }
  645. }