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.
 
 
 
 
 
 

683 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,string starTime,string endTime)
  234. {
  235. try
  236. {
  237. var expression = LinqExtensions.True<StuAttendanceEntity>();
  238. expression = expression.And(a => a.StuNo == account);
  239. if (!string.IsNullOrEmpty(starTime))
  240. {
  241. var aTime = starTime.ToDate();
  242. expression = expression.And(a => a.LessonDate >= aTime);
  243. }
  244. if (!string.IsNullOrEmpty(endTime))
  245. {
  246. var bTime = endTime.ToDate();
  247. expression = expression.And(a => a.LessonDate <= bTime);
  248. }
  249. return this.BaseRepository("CollegeMIS").FindList<StuAttendanceEntity>(expression).ToList();
  250. }
  251. catch (Exception ex)
  252. {
  253. if (ex is ExceptionEx)
  254. {
  255. throw;
  256. }
  257. else
  258. {
  259. throw ExceptionEx.ThrowServiceException(ex);
  260. }
  261. }
  262. }
  263. /// <summary>
  264. /// 考勤统计
  265. /// <summary>
  266. /// <param name="queryJson">查询参数</param>
  267. /// <returns></returns>
  268. public IEnumerable<StuAttendanceEntity> GetAttendanceStatisticPageList(Pagination pagination, string queryJson)
  269. {
  270. try
  271. {
  272. var queryParam = queryJson.ToJObject();
  273. var dp = new DynamicParameters(new { });
  274. var strSql = new StringBuilder();
  275. strSql.Append("select t.AcademicYearNo,t.Semester,t.StuNo,t.StuName,count(a.ALTId) as totalCourse,");
  276. 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 ");
  277. strSql.Append(" from StuSelectLessonList t ");
  278. 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 ");
  279. strSql.Append(" where 1=1 ");
  280. if (!queryParam["AcademicYearNo"].IsEmpty())
  281. {
  282. dp.Add("AcademicYearNo", queryParam["AcademicYearNo"].ToString(), DbType.String);
  283. strSql.Append(" and t.AcademicYearNo=@AcademicYearNo ");
  284. }
  285. if (!queryParam["Semester"].IsEmpty())
  286. {
  287. dp.Add("Semester", queryParam["Semester"].ToString(), DbType.String);
  288. strSql.Append(" and t.Semester=@Semester ");
  289. }
  290. if (!queryParam["StuNo"].IsEmpty())
  291. {
  292. dp.Add("StuNo", "%" + queryParam["StuNo"].ToString() + "%", DbType.String);
  293. strSql.Append(" and t.StuNo like @StuNo ");
  294. }
  295. if (!queryParam["StuName"].IsEmpty())
  296. {
  297. dp.Add("StuName", "%" + queryParam["StuName"].ToString() + "%", DbType.String);
  298. strSql.Append(" and t.StuName like @StuName ");
  299. }
  300. strSql.Append(" group by t.AcademicYearNo,t.Semester,t.StuNo,t.StuName ");
  301. // 虚拟参数
  302. return this.BaseRepository("CollegeMIS").FindList<StuAttendanceEntity>(strSql.ToString(), dp, pagination);
  303. }
  304. catch (Exception ex)
  305. {
  306. if (ex is ExceptionEx)
  307. {
  308. throw;
  309. }
  310. else
  311. {
  312. throw ExceptionEx.ThrowServiceException(ex);
  313. }
  314. }
  315. }
  316. /// <summary>
  317. /// 全校学生课程考勤
  318. /// <summary>
  319. /// <param name="queryJson">查询参数</param>
  320. /// <returns></returns>
  321. public IEnumerable<StuAttendanceEntity> GetAttendancePageList(Pagination pagination, string queryJson)
  322. {
  323. try
  324. {
  325. var queryParam = queryJson.ToJObject();
  326. var dp = new DynamicParameters(new { });
  327. var strSql = new StringBuilder();
  328. 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
  329. 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
  330. where 1=1 ");
  331. if (!queryParam["AcademicYearNo"].IsEmpty())
  332. {
  333. dp.Add("AcademicYearNo", queryParam["AcademicYearNo"].ToString(), DbType.String);
  334. strSql.Append(" and s.AcademicYearNo=@AcademicYearNo ");
  335. }
  336. if (!queryParam["Semester"].IsEmpty())
  337. {
  338. dp.Add("Semester", queryParam["Semester"].ToString(), DbType.String);
  339. strSql.Append(" and s.Semester=@Semester ");
  340. }
  341. if (!queryParam["DeptNo"].IsEmpty())
  342. {
  343. dp.Add("DeptNo", queryParam["DeptNo"].ToString(), DbType.String);
  344. strSql.Append(" and s.DeptNo=@DeptNo ");
  345. }
  346. if (!queryParam["MajorNo"].IsEmpty())
  347. {
  348. dp.Add("MajorNo", queryParam["MajorNo"].ToString(), DbType.String);
  349. strSql.Append(" and s.MajorNo=@MajorNo ");
  350. }
  351. if (!queryParam["LessonNo"].IsEmpty())
  352. {
  353. dp.Add("LessonNo", queryParam["LessonNo"].ToString(), DbType.String);
  354. strSql.Append(" and s.LessonNo=@LessonNo ");
  355. }
  356. if (!queryParam["EmpNo"].IsEmpty())
  357. {
  358. dp.Add("EmpNo", queryParam["EmpNo"].ToString(), DbType.String);
  359. strSql.Append(" and s.EmpNo=@EmpNo ");
  360. }
  361. if (!queryParam["StuNo"].IsEmpty())
  362. {
  363. dp.Add("StuNo", "%" + queryParam["StuNo"].ToString() + "%", DbType.String);
  364. strSql.Append(" and s.StuNo like @StuNo ");
  365. }
  366. if (!queryParam["StuName"].IsEmpty())
  367. {
  368. dp.Add("StuName", "%" + queryParam["StuName"].ToString() + "%", DbType.String);
  369. strSql.Append(" and s.StuName like @StuName ");
  370. }
  371. strSql.Append(" union ");
  372. 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
  373. 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
  374. where 1=1 ");
  375. if (!queryParam["AcademicYearNo"].IsEmpty())
  376. {
  377. dp.Add("AcademicYearNo", queryParam["AcademicYearNo"].ToString(), DbType.String);
  378. strSql.Append(" and s.AcademicYearNo=@AcademicYearNo ");
  379. }
  380. if (!queryParam["Semester"].IsEmpty())
  381. {
  382. dp.Add("Semester", queryParam["Semester"].ToString(), DbType.String);
  383. strSql.Append(" and s.Semester=@Semester ");
  384. }
  385. if (!queryParam["DeptNo"].IsEmpty())
  386. {
  387. dp.Add("DeptNo", queryParam["DeptNo"].ToString(), DbType.String);
  388. strSql.Append(" and s.DeptNo=@DeptNo ");
  389. }
  390. if (!queryParam["MajorNo"].IsEmpty())
  391. {
  392. dp.Add("MajorNo", queryParam["MajorNo"].ToString(), DbType.String);
  393. strSql.Append(" and s.MajorNo=@MajorNo ");
  394. }
  395. if (!queryParam["LessonNo"].IsEmpty())
  396. {
  397. dp.Add("LessonNo", queryParam["LessonNo"].ToString(), DbType.String);
  398. strSql.Append(" and s.LessonNo=@LessonNo ");
  399. }
  400. if (!queryParam["EmpNo"].IsEmpty())
  401. {
  402. dp.Add("EmpNo", queryParam["EmpNo"].ToString(), DbType.String);
  403. strSql.Append(" and s.EmpNo=@EmpNo ");
  404. }
  405. if (!queryParam["StuNo"].IsEmpty())
  406. {
  407. dp.Add("StuNo", "%" + queryParam["StuNo"].ToString() + "%", DbType.String);
  408. strSql.Append(" and s.StuNo like @StuNo ");
  409. }
  410. if (!queryParam["StuName"].IsEmpty())
  411. {
  412. dp.Add("StuName", "%" + queryParam["StuName"].ToString() + "%", DbType.String);
  413. strSql.Append(" and s.StuName like @StuName ");
  414. }
  415. // 虚拟参数
  416. return this.BaseRepository("CollegeMIS").FindList<StuAttendanceEntity>(strSql.ToString(), dp, pagination);
  417. }
  418. catch (Exception ex)
  419. {
  420. if (ex is ExceptionEx)
  421. {
  422. throw;
  423. }
  424. else
  425. {
  426. throw ExceptionEx.ThrowServiceException(ex);
  427. }
  428. }
  429. }
  430. #endregion
  431. #region 提交数据
  432. /// <summary>
  433. /// 删除实体数据
  434. /// <param name="keyValue">主键</param>
  435. /// <summary>
  436. /// <returns></returns>
  437. public void DeleteEntity(string keyValue)
  438. {
  439. try
  440. {
  441. //this.BaseRepository("CollegeMIS").Delete<StuAttendanceEntity>(t => t.StuAttendanceNo == keyValue);
  442. this.BaseRepository("CollegeMIS").Delete<StuAttendanceEntity>(t => t.ID == keyValue);
  443. }
  444. catch (Exception ex)
  445. {
  446. if (ex is ExceptionEx)
  447. {
  448. throw;
  449. }
  450. else
  451. {
  452. throw ExceptionEx.ThrowServiceException(ex);
  453. }
  454. }
  455. }
  456. /// <summary>
  457. /// 保存实体数据(新增、修改)
  458. /// <param name="keyValue">主键</param>
  459. /// <summary>
  460. /// <returns></returns>
  461. public void SaveEntity(string keyValue, StuAttendanceEntity entity)
  462. {
  463. try
  464. {
  465. if (!string.IsNullOrEmpty(keyValue))
  466. {
  467. entity.Modify(keyValue);
  468. this.BaseRepository("CollegeMIS").Update(entity);
  469. }
  470. else
  471. {
  472. entity.Create();
  473. this.BaseRepository("CollegeMIS").Insert(entity);
  474. }
  475. }
  476. catch (Exception ex)
  477. {
  478. if (ex is ExceptionEx)
  479. {
  480. throw;
  481. }
  482. else
  483. {
  484. throw ExceptionEx.ThrowServiceException(ex);
  485. }
  486. }
  487. }
  488. #endregion
  489. /// <summary>
  490. /// 提交课程考勤
  491. /// </summary>
  492. /// <param name="kqType"></param>
  493. /// <param name="lessonTime"></param>
  494. /// <param name="lessonDate"></param>
  495. /// <param name="dataJson"></param>
  496. /// <returns></returns>
  497. public async Task<bool> AttendanceApply(string kqType, string lessonTime, string lessonDate, string classRoomNo, string dataJson, decimal? attenScore, string attenCondition)
  498. {
  499. var kqEntity = dataItemIBLL.GetDetailListByParentId("ktkqlx", "0").Find(a => a.F_ItemValue == kqType);
  500. var data = JsonConvert.DeserializeObject<List<StuSelectLessonListEntity>>(dataJson);
  501. if (data.Any())
  502. {
  503. var majorList = BaseRepository("CollegeMIS").FindList<CdMajorEntity>().ToList();
  504. var deptList = BaseRepository("CollegeMIS").FindList<CdDeptEntity>().ToList();
  505. var classList = BaseRepository("CollegeMIS").FindList<ClassInfoEntity>().ToList();
  506. var lessonSortList = BaseRepository("CollegeMIS").FindList<CdLessonSortEntity>().ToList();
  507. var classRoomList = BaseRepository("CollegeMIS").FindList<ClassroomInfoEntity>().ToList();
  508. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  509. try
  510. {
  511. foreach (var stuSelectLessonListEntity in data)
  512. {
  513. var model = new StuAttendanceEntity();
  514. model.AcademicYearNo = stuSelectLessonListEntity.AcademicYearNo;
  515. model.Semester = stuSelectLessonListEntity.Semester;
  516. model.StuNo = stuSelectLessonListEntity.StuNo;
  517. model.StuName = stuSelectLessonListEntity.StuName;
  518. model.Gender = stuSelectLessonListEntity.GenderNo == "0" ? "女" : "男";
  519. model.Grade = stuSelectLessonListEntity.Grade;
  520. model.DeptNo = stuSelectLessonListEntity.DeptNo;
  521. model.DeptName = deptList.Find(m => m.DeptNo == stuSelectLessonListEntity.DeptNo)?.DeptName;
  522. model.MajorNo = stuSelectLessonListEntity.MajorNo;
  523. model.MajorName = majorList.Find(m => m.MajorNo == stuSelectLessonListEntity.MajorNo)?.MajorName;
  524. model.ClassNo = stuSelectLessonListEntity.ClassNo;
  525. model.ClassName = classList.Find(m => m.ClassNo == stuSelectLessonListEntity.ClassNo)?.ClassName;
  526. model.LessonNo = stuSelectLessonListEntity.LessonNo;
  527. model.LessonName = stuSelectLessonListEntity.LessonName;
  528. model.TeachClassNo = stuSelectLessonListEntity.TeachClassNo;
  529. model.LessonSortNo = stuSelectLessonListEntity.LessonSortNo;
  530. model.LessonSortName = lessonSortList
  531. .Find(m => m.LessonSortNo == stuSelectLessonListEntity.LessonSortNo)?.LessonSortName;
  532. model.LessonDate = DateTime.Parse(lessonDate);
  533. model.LessonTime = stuSelectLessonListEntity.LessonSortNo == "2" ? db.FindEntity<StuSelectLessonListOfElectiveEntity>(x => x.Id == stuSelectLessonListEntity.StuSelectLessonListOfElectiveId)?.LessonSection : lessonTime;
  534. model.AttendOrNo = kqEntity.F_Description;
  535. model.Sort = kqEntity.F_ItemName;
  536. model.AttenScore = attenScore.HasValue ? attenScore.Value : 0;
  537. model.AttenCondition = attenCondition;
  538. model.EmpNo = stuSelectLessonListEntity.EmpNo;
  539. model.CheckMarkDept = "0";
  540. model.CheckMark = "0";
  541. model.InertDate = DateTime.Now;
  542. model.ClassRoomNo = classRoomNo;
  543. model.ClassRoomName = classRoomList.Find(x => x.ClassroomId.Trim() == classRoomNo.Trim())?.ClassroomName.Trim();
  544. //var ifExistModel = BaseRepository("CollegeMIS").FindEntity<StuAttendanceEntity>(m =>
  545. // m.EmpNo == model.EmpNo && m.AcademicYearNo == model.AcademicYearNo &&
  546. // m.Semester == model.Semester && m.StuNo == model.StuNo &&
  547. // m.TeachClassNo == model.TeachClassNo);
  548. if (!string.IsNullOrEmpty(stuSelectLessonListEntity.StuAttendanceNo))
  549. {
  550. model.Modify(stuSelectLessonListEntity.StuAttendanceNo);
  551. db.Update(model);
  552. }
  553. else
  554. {
  555. model.Create();
  556. db.Insert(model);
  557. }
  558. }
  559. db.Commit();
  560. }
  561. catch (Exception ex)
  562. {
  563. db.Rollback();
  564. if (ex is ExceptionEx)
  565. {
  566. throw;
  567. }
  568. else
  569. {
  570. throw ExceptionEx.ThrowServiceException(ex);
  571. }
  572. }
  573. }
  574. return true;
  575. }
  576. public async Task<bool> AttendanceApply(string lessonTime, string lessonDate, string classRoomNo, string dataJson, decimal? attenScore, string attenCondition)
  577. {
  578. var kqList = dataItemIBLL.GetDetailListByParentId("ktkqlx", "0");
  579. var data = JsonConvert.DeserializeObject<List<StuSelectLessonListEntity>>(dataJson);
  580. if (data.Any())
  581. {
  582. var majorList = BaseRepository("CollegeMIS").FindList<CdMajorEntity>().ToList();
  583. var deptList = BaseRepository("CollegeMIS").FindList<CdDeptEntity>().ToList();
  584. var classList = BaseRepository("CollegeMIS").FindList<ClassInfoEntity>().ToList();
  585. var lessonSortList = BaseRepository("CollegeMIS").FindList<CdLessonSortEntity>().ToList();
  586. var classRoomList = BaseRepository("CollegeMIS").FindList<ClassroomInfoEntity>().ToList();
  587. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  588. try
  589. {
  590. foreach (var stuSelectLessonListEntity in data)
  591. {
  592. var kqEntity = kqList.Find(a => a.F_ItemValue == stuSelectLessonListEntity.kqType);
  593. var model = new StuAttendanceEntity();
  594. model.AcademicYearNo = stuSelectLessonListEntity.AcademicYearNo;
  595. model.Semester = stuSelectLessonListEntity.Semester;
  596. model.StuNo = stuSelectLessonListEntity.StuNo;
  597. model.StuName = stuSelectLessonListEntity.StuName;
  598. model.Gender = stuSelectLessonListEntity.GenderNo == "0" ? "女" : "男";
  599. model.Grade = stuSelectLessonListEntity.Grade;
  600. model.DeptNo = stuSelectLessonListEntity.DeptNo;
  601. model.DeptName = deptList.Find(m => m.DeptNo == stuSelectLessonListEntity.DeptNo)?.DeptName;
  602. model.MajorNo = stuSelectLessonListEntity.MajorNo;
  603. model.MajorName = majorList.Find(m => m.MajorNo == stuSelectLessonListEntity.MajorNo)?.MajorName;
  604. model.ClassNo = stuSelectLessonListEntity.ClassNo;
  605. model.ClassName = classList.Find(m => m.ClassNo == stuSelectLessonListEntity.ClassNo)?.ClassName;
  606. model.LessonNo = stuSelectLessonListEntity.LessonNo;
  607. model.LessonName = stuSelectLessonListEntity.LessonName;
  608. model.TeachClassNo = stuSelectLessonListEntity.TeachClassNo;
  609. model.LessonSortNo = stuSelectLessonListEntity.LessonSortNo;
  610. model.LessonSortName = lessonSortList
  611. .Find(m => m.LessonSortNo == stuSelectLessonListEntity.LessonSortNo)?.LessonSortName;
  612. model.LessonDate = DateTime.Parse(lessonDate);
  613. model.LessonTime = stuSelectLessonListEntity.LessonSortNo == "2" ? db.FindEntity<StuSelectLessonListOfElectiveEntity>(x => x.Id == stuSelectLessonListEntity.StuSelectLessonListOfElectiveId)?.LessonSection : lessonTime;
  614. model.AttendOrNo = kqEntity.F_Description;
  615. model.Sort = kqEntity.F_ItemName;
  616. model.AttenScore = attenScore.HasValue ? attenScore.Value : 0;
  617. model.AttenCondition = attenCondition;
  618. model.EmpNo = stuSelectLessonListEntity.EmpNo;
  619. model.CheckMarkDept = "0";
  620. model.CheckMark = "0";
  621. model.InertDate = DateTime.Now;
  622. model.ClassRoomNo = classRoomNo;
  623. model.ClassRoomName = classRoomList.Find(x => x.ClassroomId.Trim() == classRoomNo.Trim())?.ClassroomName.Trim();
  624. //var ifExistModel = BaseRepository("CollegeMIS").FindEntity<StuAttendanceEntity>(m =>
  625. // m.EmpNo == model.EmpNo && m.AcademicYearNo == model.AcademicYearNo &&
  626. // m.Semester == model.Semester && m.StuNo == model.StuNo &&
  627. // m.TeachClassNo == model.TeachClassNo);
  628. if (!string.IsNullOrEmpty(stuSelectLessonListEntity.StuAttendanceNo))
  629. {
  630. model.Modify(stuSelectLessonListEntity.StuAttendanceNo);
  631. db.Update(model);
  632. }
  633. else
  634. {
  635. model.Create();
  636. db.Insert(model);
  637. }
  638. }
  639. db.Commit();
  640. }
  641. catch (Exception ex)
  642. {
  643. db.Rollback();
  644. if (ex is ExceptionEx)
  645. {
  646. throw;
  647. }
  648. else
  649. {
  650. throw ExceptionEx.ThrowServiceException(ex);
  651. }
  652. }
  653. }
  654. return true;
  655. }
  656. }
  657. }