Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 
 
 
 

876 rindas
38 KiB

  1. using Dapper;
  2. using Learun.DataBase.Repository;
  3. using Learun.Util;
  4. using Newtonsoft.Json;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Data;
  8. using System.Linq;
  9. using System.Net.Http;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. namespace Learun.Application.TwoDevelopment.EducationalAdministration
  13. {
  14. /// <summary>
  15. /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园
  16. /// Copyright (c) 2013-2018 北京泉江科技有限公司
  17. /// 创 建:超级管理员
  18. /// 日 期:2019-05-24 10:27
  19. /// 描 述:排考数据同步
  20. /// </summary>
  21. public class ArrangeExamTermService : RepositoryFactory
  22. {
  23. private static readonly HttpClient Client;
  24. static ArrangeExamTermService()
  25. {
  26. Client = new HttpClient();
  27. }
  28. #region 获取数据
  29. /// <summary>
  30. /// 获取页面显示列表数据
  31. /// <summary>
  32. /// <param name="queryJson">查询参数</param>
  33. /// <returns></returns>
  34. public IEnumerable<ArrangeExamTermEntity> GetPageList(Pagination pagination, string queryJson)
  35. {
  36. try
  37. {
  38. var strSql = new StringBuilder();
  39. strSql.Append("SELECT ");
  40. strSql.Append(@"
  41. t.AETId,
  42. t.AcademicYearNo,
  43. t.Semester,
  44. t.ExamDate,
  45. t.ExamTime,
  46. t.ExamSection,
  47. t.ClassNo,
  48. t.ClassName,
  49. t.LessonNo,
  50. t.LessonName,
  51. t.LessonSortNo,
  52. t.EmpNo,
  53. t.EmpName,
  54. t.ClassRoomNo,
  55. t.ClassRoomName
  56. ");
  57. strSql.Append(" FROM ArrangeExamTerm t ");
  58. strSql.Append(" WHERE 1=1 ");
  59. var queryParam = queryJson.ToJObject();
  60. // 虚拟参数
  61. var dp = new DynamicParameters(new { });
  62. return this.BaseRepository("CollegeMIS").FindList<ArrangeExamTermEntity>(strSql.ToString(), dp, pagination);
  63. }
  64. catch (Exception ex)
  65. {
  66. if (ex is ExceptionEx)
  67. {
  68. throw;
  69. }
  70. else
  71. {
  72. throw ExceptionEx.ThrowServiceException(ex);
  73. }
  74. }
  75. }
  76. /// <summary>
  77. /// 获取ArrangeExamTerm表实体数据
  78. /// <param name="keyValue">主键</param>
  79. /// <summary>
  80. /// <returns></returns>
  81. public ArrangeExamTermEntity GetArrangeExamTermEntity(string keyValue)
  82. {
  83. try
  84. {
  85. return this.BaseRepository("CollegeMIS").FindEntity<ArrangeExamTermEntity>(keyValue);
  86. }
  87. catch (Exception ex)
  88. {
  89. if (ex is ExceptionEx)
  90. {
  91. throw;
  92. }
  93. else
  94. {
  95. throw ExceptionEx.ThrowServiceException(ex);
  96. }
  97. }
  98. }
  99. /// <summary>
  100. /// 获取ArrangeExamTerm表实体数据
  101. /// <param name="academicYearNo">学年</param>
  102. /// <param name="semester">学期</param>
  103. /// <summary>
  104. /// <returns></returns>
  105. public ArrangeExamTermEntity GetArrangeExamTermEntityByYear(string academicYearNo, string semester)
  106. {
  107. try
  108. {
  109. return this.BaseRepository("CollegeMIS").FindEntity<ArrangeExamTermEntity>(x => x.AcademicYearNo == academicYearNo && x.Semester == semester);
  110. }
  111. catch (Exception ex)
  112. {
  113. if (ex is ExceptionEx)
  114. {
  115. throw;
  116. }
  117. else
  118. {
  119. throw ExceptionEx.ThrowServiceException(ex);
  120. }
  121. }
  122. }
  123. #endregion
  124. #region 提交数据
  125. /// <summary>
  126. /// 删除实体数据
  127. /// <param name="keyValue">主键</param>
  128. /// <summary>
  129. /// <returns></returns>
  130. public void DeleteEntity(string keyValue)
  131. {
  132. try
  133. {
  134. this.BaseRepository("CollegeMIS").Delete<ArrangeExamTermEntity>(t => t.AETId == keyValue);
  135. }
  136. catch (Exception ex)
  137. {
  138. if (ex is ExceptionEx)
  139. {
  140. throw;
  141. }
  142. else
  143. {
  144. throw ExceptionEx.ThrowServiceException(ex);
  145. }
  146. }
  147. }
  148. /// <summary>
  149. /// 保存实体数据(新增、修改)
  150. /// <param name="keyValue">主键</param>
  151. /// <summary>
  152. /// <returns></returns>
  153. public void SaveEntity(string keyValue, ArrangeExamTermEntity entity)
  154. {
  155. try
  156. {
  157. if (!string.IsNullOrEmpty(keyValue))
  158. {
  159. entity.Modify(keyValue);
  160. this.BaseRepository("CollegeMIS").Update(entity);
  161. }
  162. else
  163. {
  164. entity.Create();
  165. this.BaseRepository("CollegeMIS").Insert(entity);
  166. }
  167. }
  168. catch (Exception ex)
  169. {
  170. if (ex is ExceptionEx)
  171. {
  172. throw;
  173. }
  174. else
  175. {
  176. throw ExceptionEx.ThrowServiceException(ex);
  177. }
  178. }
  179. }
  180. #endregion
  181. #region 扩展数据
  182. /// <summary>
  183. /// 2021新排考接口
  184. /// </summary>
  185. /// <param name="entity"></param>
  186. /// <returns></returns>
  187. public async Task<bool> AsyncArrangeExamDataNew(ArrangeLessonTermEntity entity)
  188. {
  189. bool result = false;
  190. try
  191. {
  192. //清空本学年本学期排考数据
  193. var academicYearNo =entity.AcademicYearNo;
  194. var semester =entity.Semester;
  195. var schoolid = entity.F_SchoolId;
  196. this.BaseRepository("CollegeMIS").ExecuteBySql($"delete from ArrangeExamTermNew where AcademicYearNo='{academicYearNo}' and Semester='{semester}' and F_SchoolId='{schoolid}'");
  197. this.BaseRepository("CollegeMIS").ExecuteBySql($"delete from ArrangeExamTermItemNew where AcademicYearNo='{academicYearNo}' and Semester='{semester}' and F_SchoolId='{schoolid}'");
  198. //排考数据处理
  199. var insertList = new List<ArrangeExamTermNewEntity>();
  200. var arrangeExamTermData = (await BaseRepository("CollegeMIS").FindListAsync<ArrangeExamTermNewEntity>()).ToList();
  201. var classinfoData = (await BaseRepository("CollegeMIS").FindListAsync<ClassInfoEntity>()).ToList();
  202. var studentData = (await BaseRepository("CollegeMIS").FindListAsync<StuInfoBasicEntity>()).ToList();
  203. HttpContent httpContent = new StringContent("{\"school\":\"" + entity.F_SchoolId + "\",\"year\":\"" + entity.AcademicYearNo + "\",\"number\":\"" + entity.Semester + "\"}");
  204. httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
  205. var apiData = await Client.PostAsync(Config.GetValue("ArrangeExamAPINew"), httpContent).Result.Content.ReadAsStringAsync();
  206. //明细接口
  207. //Client.PostAsync(Config.GetValue("ArrangeExamItemAPINew"), httpContent);
  208. if (!string.IsNullOrEmpty(apiData))
  209. {
  210. var data = JsonConvert.DeserializeObject<ArrangeExamRoot>(apiData);
  211. if (!data.success)
  212. {
  213. return result;
  214. }
  215. var dataList = data.entity.list;
  216. if (dataList.Any())
  217. {
  218. var insertDataList = new List<ArrangeExamTermNewEntity>();
  219. foreach (var item in dataList)
  220. {
  221. var insertData = new ArrangeExamTermNewEntity
  222. {
  223. AETId = Guid.NewGuid().ToString(),
  224. AcademicYearNo = academicYearNo,
  225. Semester = semester,
  226. F_SchoolId = schoolid,
  227. ExamDate = Convert.ToDateTime(item.date).Date,
  228. ExamTime = Convert.ToDateTime(item.date).ToShortTimeString()+"~"+Convert.ToDateTime(item.time).ToShortTimeString(),
  229. LessonNo =item.lessonNo,
  230. LessonName=item.lessonName,
  231. EmpNo=item.empNo,
  232. EmpName = item.empName,
  233. ClassRoomNo=item.classroomNo,
  234. ClassRoomName = item.classroomName
  235. };
  236. if (arrangeExamTermData.Count(x => x.ExamDate == insertData.ExamDate && x.LessonNo == insertData.LessonNo && x.EmpNo == insertData.EmpNo && x.ClassRoomNo == insertData.ClassRoomNo) == 0
  237. && insertDataList.Count(x => x.ExamDate == insertData.ExamDate && x.LessonNo == insertData.LessonNo && x.EmpNo == insertData.EmpNo && x.ClassRoomNo == insertData.ClassRoomNo) == 0)
  238. {
  239. insertDataList.Add(insertData);
  240. }
  241. }
  242. insertList.AddRange(insertDataList);
  243. result = await BaseRepository("CollegeMIS").InsertAsync(insertList)>0;
  244. }
  245. }
  246. //明细对接
  247. string sql = @"SELECT semester.year AS 'AcademicYearNo',semester.number AS 'Semester',currid.number AS 'LessonNo',currid.name AS 'LessonName',
  248. student.name AS 'StuName',student.number AS 'StuNo',classroom.name 'ClassRoomName',classroom.number AS 'ClassRoomNo',
  249. paikao.time AS 'StartDate',paikao.endtime 'EndDate',a.number 'SitNumber',
  250. (SELECT GROUP_CONCAT(teachername) FROM tb_paikao WHERE currid = a.`currid` AND classroomid = a.`classroom`) AS EmpName,
  251. (SELECT GROUP_CONCAT(number) FROM tb_teacher WHERE id IN
  252. (SELECT teacherid FROM tb_paikao WHERE currid = a.`currid` AND classroomid = a.`classroom`) ) AS EmpNo
  253. FROM tb_studentpaikao a
  254. LEFT JOIN tb_student student ON student.id = a.student
  255. LEFT JOIN tb_classroom classroom ON classroom.id = a.classroom
  256. LEFT JOIN tb_curriculum currid ON currid.id = a.currid
  257. LEFT JOIN tb_semester semester ON semester.id = a.semester
  258. LEFT JOIN tb_paikaorule paikao ON paikao.currid = a.currid where semester.year='"+academicYearNo+ "' and semester.number='"+semester+"'";
  259. var list= BaseRepository("paikeDbString").FindList<ArrangeExamTermItemNewEntity>(sql);
  260. var listsqlserver =new List<ArrangeExamTermItemNewEntity>();
  261. foreach (var item in list)
  262. {
  263. ArrangeExamTermItemNewEntity aetitem = new ArrangeExamTermItemNewEntity();
  264. aetitem.Create();
  265. aetitem.AcademicYearNo = item.AcademicYearNo;
  266. aetitem.Semester = item.Semester;
  267. aetitem.LessonNo = item.LessonNo;
  268. aetitem.LessonName = item.LessonName;
  269. item.ExamDate = Convert.ToDateTime(item.StartDate);
  270. aetitem.ExamDate = item.ExamDate;
  271. item.ExamTime = Convert.ToDateTime(item.StartDate).ToShortTimeString() + "~" + Convert.ToDateTime(item.EndDate).ToShortTimeString();
  272. aetitem.ExamTime = item.ExamTime;
  273. aetitem.ClassNo = item.ClassNo;
  274. aetitem.ClassName = item.ClassName;
  275. aetitem.EmpNo = item.EmpNo;
  276. aetitem.EmpName = item.EmpName;
  277. aetitem.ClassRoomNo = item.ClassRoomNo;
  278. aetitem.ClassRoomName = item.ClassRoomName;
  279. aetitem.F_SchoolId = schoolid;
  280. aetitem.SitNumber = item.SitNumber;
  281. aetitem.StuNo = item.StuNo;
  282. aetitem.StuName = item.StuName;
  283. var classitem = studentData.Find(m => m.StuNo == item.StuNo);
  284. item.ClassNo = classitem?.ClassNo;
  285. aetitem.ClassNo = item.ClassNo;
  286. aetitem.ClassName = classinfoData.Find(m=>m.ClassNo==aetitem.ClassNo)?.ClassName;
  287. listsqlserver.Add(aetitem);
  288. }
  289. BaseRepository("CollegeMIS").Insert(listsqlserver);
  290. }
  291. catch (Exception ex)
  292. {
  293. throw ex;
  294. }
  295. return result;
  296. }
  297. /// <summary>
  298. /// 排考数据同步
  299. /// </summary>
  300. /// <returns></returns>
  301. public async Task<bool> AsyncArrangeExamData()
  302. {
  303. bool result = false;
  304. try
  305. {
  306. //清空本学年本学期排考数据
  307. var academicYearNo = Common.GetSemesterAndYear().AcademicYearShort;
  308. var semester = Common.GetSemesterAndYear().Semester;
  309. this.BaseRepository("CollegeMIS").ExecuteBySql($"delete from ArrangeExamTerm where AcademicYearNo='{academicYearNo}' and Semester='{semester}' ");
  310. //排考结构处理
  311. var insertListOfStructure = new List<ArrangeExamStructureEntity>();
  312. var apiDataOfStructure = await Client.GetStringAsync(Config.GetValue("ArrangeExamStructureAPI"));
  313. if (!string.IsNullOrEmpty(apiDataOfStructure))
  314. {
  315. var data = JsonConvert.DeserializeObject<ArrangeExamRootOfStructure>(apiDataOfStructure);
  316. if (!data.success)
  317. {
  318. return result;
  319. }
  320. var dataList = data.entity.list;
  321. if (dataList.Any())
  322. {
  323. foreach (var item in dataList)
  324. {
  325. var model = this.BaseRepository("CollegeMIS").FindEntity<ArrangeExamStructureEntity>(x => x.StructureId == item.id);
  326. if (model == null)
  327. {
  328. var insertDataOfStructure = new ArrangeExamStructureEntity()
  329. {
  330. Id = Guid.NewGuid().ToString(),
  331. StructureId = item.id,
  332. StartTime = Convert.ToDateTime(item.starttime),
  333. EndTime = Convert.ToDateTime(item.endtime),
  334. MorningNum = Convert.ToInt32(item.morning),
  335. AfternoonNum = Convert.ToInt32(item.afternoon),
  336. NightNum = Convert.ToInt32(item.night),
  337. Time = item.time
  338. };
  339. if (insertListOfStructure.Count(x => x.StructureId == insertDataOfStructure.StructureId) == 0)
  340. {
  341. insertListOfStructure.Add(insertDataOfStructure);
  342. }
  343. }
  344. else
  345. {
  346. model.StartTime = Convert.ToDateTime(item.starttime);
  347. model.EndTime = Convert.ToDateTime(item.endtime);
  348. model.MorningNum = Convert.ToInt32(item.morning);
  349. model.AfternoonNum = Convert.ToInt32(item.afternoon);
  350. model.NightNum = Convert.ToInt32(item.night);
  351. model.Time = item.time;
  352. this.BaseRepository("CollegeMIS").Update<ArrangeExamStructureEntity>(model);
  353. }
  354. }
  355. }
  356. }
  357. var insertResultOfStructure = await BaseRepository("CollegeMIS").InsertAsync(insertListOfStructure);
  358. //排考数据处理
  359. var insertList = new List<ArrangeExamTermEntity>();
  360. var arrangeExamTermData = (await BaseRepository("CollegeMIS").FindListAsync<ArrangeExamTermEntity>()).ToList();
  361. var classRoomInfoData = this.BaseRepository("CollegeMIS").FindList<ClassroomInfoEntity>().ToList();
  362. var lessonData = this.BaseRepository("CollegeMIS").FindList<LessonInfoEntity>().ToList();
  363. //必修数据处理
  364. var apiData = await Client.GetStringAsync(Config.GetValue("ArrangeExamAPI"));
  365. if (!string.IsNullOrEmpty(apiData))
  366. {
  367. var data = JsonConvert.DeserializeObject<ArrangeExamRoot>(apiData);
  368. if (!data.success)
  369. {
  370. return result;
  371. }
  372. var dataList = data.entity.list;
  373. if (dataList.Any())
  374. {
  375. var insertDataList = new List<ArrangeExamTermEntity>();
  376. foreach (var item in dataList)
  377. {
  378. var insertData = new ArrangeExamTermEntity
  379. {
  380. AETId = Guid.NewGuid().ToString(),
  381. PaiKaoId = item.id,
  382. AcademicYearNo = Common.GetSemesterAndYear(item.date).AcademicYearShort,
  383. Semester = Common.GetSemesterAndYear(item.date).Semester,
  384. ExamDate = Convert.ToDateTime(item.date),
  385. ExamTime = item.time,
  386. ExamSection = item.section,
  387. ClassNo = item.classId,
  388. ClassName = item.className,
  389. LessonNo = item.currId,
  390. LessonName = item.currName,
  391. LessonSortNo = lessonData.FirstOrDefault(m => m.LessonNo == item.currId)?.LessonSortNo,
  392. EmpNo = item.teacherId,
  393. EmpName = item.teacherName,
  394. ClassRoomNo = classRoomInfoData.FirstOrDefault(x => x.ClassroomId.Trim() == item.classroomId.Trim())?.ClassroomNo.Trim(),
  395. ClassRoomName = item.classroomName,
  396. StructureId = item.kaoshis
  397. };
  398. if (arrangeExamTermData.Count(x => x.ExamDate == insertData.ExamDate && x.ExamSection == insertData.ExamSection && x.ClassNo == insertData.ClassNo && x.LessonNo == insertData.LessonNo && x.LessonSortNo == insertData.LessonSortNo && x.EmpNo == insertData.EmpNo && x.ClassRoomNo == insertData.ClassRoomNo) == 0
  399. && insertDataList.Count(x => x.ExamDate == insertData.ExamDate && x.ExamSection == insertData.ExamSection && x.ClassNo == insertData.ClassNo && x.LessonNo == insertData.LessonNo && x.LessonSortNo == insertData.LessonSortNo && x.EmpNo == insertData.EmpNo && x.ClassRoomNo == insertData.ClassRoomNo) == 0)
  400. {
  401. insertDataList.Add(insertData);
  402. }
  403. }
  404. insertList.AddRange(insertDataList);
  405. }
  406. }
  407. //选修数据处理
  408. var apiDataOfElective = await Client.GetStringAsync(Config.GetValue("ArrangeExamOfElectiveAPI"));
  409. if (!string.IsNullOrEmpty(apiData))
  410. {
  411. var data = JsonConvert.DeserializeObject<ArrangeExamRoot>(apiDataOfElective);
  412. if (!data.success)
  413. {
  414. return result;
  415. }
  416. var dataList = data.entity.list;
  417. if (dataList.Any())
  418. {
  419. var insertDataList = new List<ArrangeExamTermEntity>();
  420. foreach (var item in dataList)
  421. {
  422. var insertData = new ArrangeExamTermEntity
  423. {
  424. AETId = Guid.NewGuid().ToString(),
  425. PaiKaoId = item.id,
  426. AcademicYearNo = Common.GetSemesterAndYear(item.date).AcademicYearShort,
  427. Semester = Common.GetSemesterAndYear(item.date).Semester,
  428. ExamDate = Convert.ToDateTime(item.date),
  429. ExamTime = item.time,
  430. ExamSection = item.section,
  431. ClassNo = "",
  432. ClassName = "",
  433. LessonNo = item.currId,
  434. LessonName = item.currName,
  435. LessonSortNo = lessonData.FirstOrDefault(m => m.LessonNo == item.currId)?.LessonSortNo,
  436. EmpNo = item.teacherId,
  437. EmpName = item.teacherName,
  438. ClassRoomNo = classRoomInfoData.FirstOrDefault(x => x.ClassroomId.Trim() == item.classroomId.Trim())?.ClassroomNo.Trim(),
  439. ClassRoomName = item.classroomName,
  440. StructureId = item.kaoshis
  441. };
  442. if (arrangeExamTermData.Count(x => x.ExamDate == insertData.ExamDate && x.ExamSection == insertData.ExamSection && x.LessonNo == insertData.LessonNo && x.LessonSortNo == insertData.LessonSortNo && x.EmpNo == insertData.EmpNo && x.ClassRoomNo == insertData.ClassRoomNo) == 0
  443. && insertDataList.Count(x => x.ExamDate == insertData.ExamDate && x.ExamSection == insertData.ExamSection && x.LessonNo == insertData.LessonNo && x.LessonSortNo == insertData.LessonSortNo && x.EmpNo == insertData.EmpNo && x.ClassRoomNo == insertData.ClassRoomNo) == 0)
  444. {
  445. insertDataList.Add(insertData);
  446. }
  447. }
  448. insertList.AddRange(insertDataList);
  449. }
  450. }
  451. var insertResult = await BaseRepository("CollegeMIS").InsertAsync(insertList);
  452. if (insertResultOfStructure > 0 && insertResult > 0)
  453. {
  454. result = true;
  455. }
  456. }
  457. catch (Exception ex)
  458. {
  459. if (ex is ExceptionEx)
  460. {
  461. throw;
  462. }
  463. else
  464. {
  465. throw ExceptionEx.ThrowServiceException(ex);
  466. }
  467. }
  468. return result;
  469. }
  470. internal bool GetAny()
  471. {
  472. try
  473. {
  474. return this.BaseRepository("CollegeMIS").FindList<ArrangeExamTermEntity>().Any();
  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. /// <summary>
  489. /// 考试表
  490. /// </summary>
  491. /// <param name="startDate">查询开始时间</param>
  492. /// <param name="endDate">查询截止时间</param>
  493. /// <param name="classNo">班级号</param>
  494. /// <param name="empNo">监考教师号</param>
  495. /// <returns></returns>
  496. public IEnumerable<TimeTable> GetExamTable(string startDate, string endDate, string classNo, string empNo)
  497. {
  498. try
  499. {
  500. var semesterAndYear = Common.GetSemesterAndYear(startDate);
  501. var strAcademicYear = semesterAndYear.AcademicYearShort;
  502. var strSemester = semesterAndYear.Semester;
  503. var st = Convert.ToDateTime(startDate);
  504. var et = Convert.ToDateTime(endDate);
  505. var arrangeExamTermList = this.BaseRepository("CollegeMIS").FindList<ArrangeExamTermEntity>(x => x.AcademicYearNo == strAcademicYear && x.Semester == strSemester && x.ExamDate >= st && x.ExamDate <= et);
  506. if (!string.IsNullOrEmpty(classNo))
  507. {
  508. arrangeExamTermList = arrangeExamTermList.Where(x => x.ClassNo == classNo);
  509. }
  510. if (!string.IsNullOrEmpty(empNo))
  511. {
  512. arrangeExamTermList = arrangeExamTermList.Where(x => x.EmpNo.Contains(empNo));
  513. }
  514. foreach (var arrangeExamTermItem in arrangeExamTermList)
  515. {
  516. var week = Convert.ToDateTime(arrangeExamTermItem.ExamDate).DayOfWeek.GetHashCode();
  517. if (week == 0)
  518. {
  519. week = 7;
  520. }
  521. arrangeExamTermItem.week = week;
  522. }
  523. var data = arrangeExamTermList.Select(x => new TimeTable()
  524. {
  525. AcademicYear = x.AcademicYearNo,
  526. Semester = x.Semester,
  527. LessonDate = x.ExamDate.HasValue ? x.ExamDate.Value : DateTime.MinValue,
  528. LessonNo = x.LessonNo,
  529. LessonName = x.LessonSortNo == "1" ? x.LessonName : (x.LessonSortNo == "2" ? x.LessonName + "[选修]" : x.LessonName + "[未知]"),
  530. LessonTime = string.Format("{0}{1}", x.week, x.ExamSection),
  531. EmpNo = x.EmpNo,
  532. EmpName = x.EmpName,
  533. TeachClassNo = x.ClassNo,
  534. ClassRoomNo = x.ClassRoomNo,
  535. ClassroomName = x.ClassRoomName,
  536. LessonSortNo = x.LessonSortNo,
  537. ClassName = x.ClassName,
  538. StructureId = x.StructureId
  539. });
  540. return data;
  541. }
  542. catch (Exception ex)
  543. {
  544. if (ex is ExceptionEx)
  545. {
  546. throw;
  547. }
  548. else
  549. {
  550. throw ExceptionEx.ThrowServiceException(ex);
  551. }
  552. }
  553. }
  554. /// <summary>
  555. /// 考试表-选修课【学子在线】
  556. /// </summary>
  557. /// <param name="startDate">查询开始时间</param>
  558. /// <param name="endDate">查询截止时间</param>
  559. /// <param name="stuNo">学号</param>
  560. /// <returns></returns>
  561. public IEnumerable<TimeTable> GetExamTableOfElectiveInStudent(string startDate, string endDate, string stuNo)
  562. {
  563. try
  564. {
  565. var semesterAndYear = Common.GetSemesterAndYear(startDate);
  566. var strAcademicYear = semesterAndYear.AcademicYearShort;
  567. var strSemester = semesterAndYear.Semester;
  568. var st = Convert.ToDateTime(startDate);
  569. var et = Convert.ToDateTime(endDate);
  570. var strSql = new StringBuilder();
  571. strSql.Append("select t.* from ");
  572. strSql.Append(" [dbo].[ArrangeExamTerm] t left join [dbo].[StuSelectLessonListOfElective] s on t.AcademicYearNo=s.AcademicYearNo and t.Semester=s.Semester and t.LessonSortNo=s.LessonSortNo and t.LessonNo=s.LessonNo and s.Status=2 ");
  573. strSql.Append(" and s.StuNo='" + stuNo + "' ");
  574. strSql.Append(" where t.AcademicYearNo='" + strAcademicYear + "' and t.Semester='" + strSemester + "'and t.LessonSortNo='2' and t.ExamDate >= '" + st + "' and t.ExamDate <= '" + et + "' ");
  575. var arrangeExamTermList = this.BaseRepository("CollegeMIS").FindList<ArrangeExamTermEntity>(strSql.ToString());
  576. foreach (var arrangeExamTermItem in arrangeExamTermList)
  577. {
  578. var week = Convert.ToDateTime(arrangeExamTermItem.ExamDate).DayOfWeek.GetHashCode();
  579. if (week == 0)
  580. {
  581. week = 7;
  582. }
  583. arrangeExamTermItem.week = week;
  584. }
  585. var data = arrangeExamTermList.Select(x => new TimeTable()
  586. {
  587. AcademicYear = x.AcademicYearNo,
  588. Semester = x.Semester,
  589. LessonDate = x.ExamDate.HasValue ? x.ExamDate.Value : DateTime.MinValue,
  590. LessonNo = x.LessonNo,
  591. LessonName = x.LessonSortNo == "1" ? x.LessonName : (x.LessonSortNo == "2" ? x.LessonName + "[选修]" : x.LessonName + "[未知]"),
  592. LessonTime = string.Format("{0}{1}", x.week, x.ExamSection),
  593. EmpNo = x.EmpNo,
  594. EmpName = x.EmpName,
  595. TeachClassNo = x.ClassNo,
  596. ClassRoomNo = x.ClassRoomNo,
  597. ClassroomName = x.ClassRoomName,
  598. LessonSortNo = x.LessonSortNo,
  599. ClassName = x.ClassName,
  600. StructureId = x.StructureId
  601. });
  602. return data;
  603. }
  604. catch (Exception ex)
  605. {
  606. if (ex is ExceptionEx)
  607. {
  608. throw;
  609. }
  610. else
  611. {
  612. throw ExceptionEx.ThrowServiceException(ex);
  613. }
  614. }
  615. }
  616. /// <summary>
  617. /// 考试表--班级下拉框信息
  618. /// </summary>
  619. /// <param name="startDate"></param>
  620. /// <returns></returns>
  621. public IEnumerable<SelectModel> GetClassData()
  622. {
  623. try
  624. {
  625. //前三年-后三年
  626. var preYear = DateTime.Now.AddYears(-3).Year;
  627. var nextYear = DateTime.Now.AddYears(3).Year;
  628. var yearList = new List<string>();
  629. for (int i = preYear; i <= nextYear; i++)
  630. {
  631. yearList.Add(string.Format("{0}-{1}", i.ToString().Substring(2), (i + 1).ToString().Substring(2)));
  632. }
  633. var classData = this.BaseRepository("CollegeMIS").FindList<ArrangeExamTermEntity>(x => yearList.Contains(x.AcademicYearNo));
  634. var aa = classData.Where(x => !string.IsNullOrEmpty(x.ClassNo)).Select(x => new { x.ClassNo, x.ClassName }).Distinct().ToList();
  635. var aaa = aa.Select(x => new SelectModel()
  636. {
  637. text = x.ClassName,
  638. value = x.ClassNo
  639. }).OrderBy(x => x.value);
  640. return aaa;
  641. }
  642. catch (Exception ex)
  643. {
  644. if (ex is ExceptionEx)
  645. {
  646. throw;
  647. }
  648. else
  649. {
  650. throw ExceptionEx.ThrowServiceException(ex);
  651. }
  652. }
  653. }
  654. /// <summary>
  655. /// 考试表--教师下拉框信息
  656. /// </summary>
  657. /// <param name="startDate"></param>
  658. /// <returns></returns>
  659. public IEnumerable<SelectModel> GetTeacherData()
  660. {
  661. try
  662. {
  663. //前三年-后三年
  664. var preYear = DateTime.Now.AddYears(-3).Year;
  665. var nextYear = DateTime.Now.AddYears(3).Year;
  666. var yearList = new List<string>();
  667. for (int i = preYear; i <= nextYear; i++)
  668. {
  669. yearList.Add(string.Format("{0}-{1}", i.ToString().Substring(2), (i + 1).ToString().Substring(2)));
  670. }
  671. var teacherData = this.BaseRepository("CollegeMIS").FindList<ArrangeExamTermEntity>(x => yearList.Contains(x.AcademicYearNo));
  672. var aa = new List<SelectModel>();
  673. var aaa = teacherData.Select(x => new { x.EmpNo, x.EmpName }).Distinct().ToList();
  674. foreach (var item in aaa)
  675. {
  676. if (item.EmpNo.IndexOf(',') == -1)//单个教师
  677. {
  678. var model = new SelectModel()
  679. {
  680. text = item.EmpName,
  681. value = item.EmpNo
  682. };
  683. aa.Add(model);
  684. }
  685. else//多个教师
  686. {
  687. var arrEmpNo = item.EmpNo.Split(',');
  688. var arrEmpName = item.EmpName.Split(',');
  689. for (int i = 0; i < arrEmpNo.Length; i++)
  690. {
  691. var model = new SelectModel()
  692. {
  693. text = arrEmpName[i],
  694. value = arrEmpNo[i]
  695. };
  696. aa.Add(model);
  697. }
  698. }
  699. }
  700. var aaaa = aa.Select(x => new { x.text, x.value }).Distinct().ToList();
  701. var aaaaa = aaaa.Select(x => new SelectModel()
  702. {
  703. text = x.text,
  704. value = x.value
  705. }).OrderBy(x => x.value);
  706. return aaaaa;
  707. }
  708. catch (Exception ex)
  709. {
  710. if (ex is ExceptionEx)
  711. {
  712. throw;
  713. }
  714. else
  715. {
  716. throw ExceptionEx.ThrowServiceException(ex);
  717. }
  718. }
  719. }
  720. #endregion
  721. /// <summary>
  722. /// 下拉框模型
  723. /// </summary>
  724. public class SelectModel
  725. {
  726. public string value { get; set; }
  727. public string text { get; set; }
  728. }
  729. #region 排考结构接口数据模型
  730. public class ArrangeExamListOfStructure
  731. {
  732. public string id { get; set; }
  733. public string starttime { get; set; }
  734. public string endtime { get; set; }
  735. public string morning { get; set; }
  736. public string afternoon { get; set; }
  737. public string night { get; set; }
  738. public string time { get; set; }
  739. public string kaoshis { get; set; }
  740. }
  741. public class ArrangeExamEntityOfStructure
  742. {
  743. /// <summary>
  744. /// true
  745. /// </summary>
  746. public string opflag { get; set; }
  747. /// <summary>
  748. /// 1000
  749. /// </summary>
  750. public string opCode { get; set; }
  751. /// <summary>
  752. /// OK!
  753. /// </summary>
  754. public string message { get; set; }
  755. /// <summary>
  756. /// List
  757. /// </summary>
  758. public List<ArrangeExamListOfStructure> list { get; set; }
  759. }
  760. public class ArrangeExamRootOfStructure
  761. {
  762. /// <summary>
  763. /// 操作成功
  764. /// </summary>
  765. public string message { get; set; }
  766. /// <summary>
  767. /// Success
  768. /// </summary>
  769. public bool success { get; set; }
  770. /// <summary>
  771. /// Entity
  772. /// </summary>
  773. public ArrangeExamEntityOfStructure entity { get; set; }
  774. }
  775. #endregion
  776. #region 排考接口数据模型
  777. public class ArrangeExamList
  778. {
  779. public string id { get; set; }
  780. public string classId { get; set; }
  781. public string className { get; set; }
  782. public string currId { get; set; }
  783. public string currName { get; set; }
  784. public string teacherId { get; set; }
  785. public string teacherName { get; set; }
  786. public string section { get; set; }
  787. public string time { get; set; }
  788. public string date { get; set; }
  789. public string classroomId { get; set; }
  790. public string classroomNo { get; set; }
  791. public string classroomName { get; set; }
  792. public string kaoshis { get; set; }
  793. public string lessonNo { get; set; }
  794. public string lessonName { get; set; }
  795. public string empNo { get; set; }
  796. public string empName { get; set; }
  797. }
  798. public class ArrangeExamEntity
  799. {
  800. /// <summary>
  801. /// true
  802. /// </summary>
  803. public string opflag { get; set; }
  804. /// <summary>
  805. /// 1000
  806. /// </summary>
  807. public string opCode { get; set; }
  808. /// <summary>
  809. /// OK!
  810. /// </summary>
  811. public string message { get; set; }
  812. /// <summary>
  813. /// List
  814. /// </summary>
  815. public List<ArrangeExamList> list { get; set; }
  816. }
  817. public class ArrangeExamRoot
  818. {
  819. /// <summary>
  820. /// 操作成功
  821. /// </summary>
  822. public string message { get; set; }
  823. /// <summary>
  824. /// Success
  825. /// </summary>
  826. public bool success { get; set; }
  827. /// <summary>
  828. /// Entity
  829. /// </summary>
  830. public ArrangeExamEntity entity { get; set; }
  831. }
  832. #endregion
  833. }
  834. }