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.
 
 
 
 
 
 

3756 lines
186 KiB

  1. using Dapper;
  2. using Learun.Application.Organization;
  3. using Learun.Cache.Base;
  4. using Learun.Cache.Factory;
  5. using Learun.DataBase.Repository;
  6. using Learun.Util;
  7. using Newtonsoft.Json;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Data;
  11. using System.Diagnostics;
  12. using System.Linq;
  13. using System.Net.Http;
  14. using System.Text;
  15. using System.Threading.Tasks;
  16. using static Learun.Application.TwoDevelopment.EducationalAdministration.ArrangeExamTermService;
  17. namespace Learun.Application.TwoDevelopment.EducationalAdministration
  18. {
  19. /// <summary>
  20. /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园
  21. /// Copyright (c) 2013-2018 北京泉江科技有限公司
  22. /// 创 建:超级管理员
  23. /// 日 期:2019-02-27 11:05
  24. /// 描 述:排课
  25. /// </summary>
  26. public class ArrangeLessonTermService : RepositoryFactory
  27. {
  28. #region 缓存定义
  29. private ICache cache = CacheFactory.CaChe();
  30. private string cacheKey = "Learun_adms_excelError_";
  31. #endregion
  32. private static readonly HttpClient Client;
  33. static ArrangeLessonTermService()
  34. {
  35. Client = new HttpClient();
  36. }
  37. #region 构造函数和属性
  38. private string fieldSql;
  39. public ArrangeLessonTermService()
  40. {
  41. fieldSql = @"
  42. t.ALTId,
  43. t.LessonDate,
  44. t.AcademicYearNo,
  45. t.Semester,
  46. t.DeptNo,
  47. t.MajorNo,
  48. t.LessonNo,
  49. t.LessonName,
  50. t.TeachClassNo,
  51. t.TeachClassSn,
  52. t.EmpNo,
  53. t.EmpName,
  54. t.LessonSortNo,
  55. t.StuSortNo,
  56. t.JoinLessonNum,
  57. t.RelatedClassNo,
  58. t.ClassroomNo,
  59. t.LessonTime,
  60. t.Remark,
  61. t.CheckMark,
  62. t.RecordMark
  63. ";
  64. }
  65. #endregion
  66. #region 获取数据
  67. /// <summary>
  68. /// 获取列表数据
  69. /// <summary>
  70. /// <returns></returns>
  71. public IEnumerable<ArrangeLessonTermEntity> GetList(string queryJson)
  72. {
  73. try
  74. {
  75. //参考写法
  76. var queryParam = queryJson.ToJObject();
  77. // 虚拟参数
  78. var dp = new DynamicParameters(new { });
  79. var strSql = new StringBuilder();
  80. strSql.Append("SELECT ");
  81. strSql.Append(fieldSql);
  82. strSql.Append(" FROM ArrangeLessonTerm t where 1=1 ");
  83. if (!queryParam["AcademicYearNo"].IsEmpty())
  84. {
  85. dp.Add("AcademicYearNo", queryParam["AcademicYearNo"].ToString(), DbType.String);
  86. strSql.Append(" AND t.AcademicYearNo = @AcademicYearNo ");
  87. }
  88. if (!queryParam["Semester"].IsEmpty())
  89. {
  90. dp.Add("Semester", queryParam["Semester"].ToString(), DbType.String);
  91. strSql.Append(" AND t.Semester = @Semester ");
  92. }
  93. if (!queryParam["DeptNo"].IsEmpty())
  94. {
  95. dp.Add("DeptNo", queryParam["DeptNo"].ToString(), DbType.String);
  96. strSql.Append(" AND t.DeptNo = @DeptNo ");
  97. }
  98. if (!queryParam["MajorNo"].IsEmpty())
  99. {
  100. dp.Add("MajorNo", queryParam["MajorNo"].ToString(), DbType.String);
  101. strSql.Append(" AND t.MajorNo = @MajorNo ");
  102. }
  103. if (!queryParam["LessonNo"].IsEmpty())
  104. {
  105. dp.Add("LessonNo", queryParam["LessonNo"].ToString(), DbType.String);
  106. strSql.Append(" AND t.LessonNo = @LessonNo ");
  107. }
  108. if (!queryParam["TeachClassNo"].IsEmpty())
  109. {
  110. dp.Add("TeachClassNo", "%" + queryParam["TeachClassNo"].ToString(), DbType.String);
  111. strSql.Append(" AND t.TeachClassNo like @TeachClassNo ");
  112. }
  113. if (!queryParam["EmpNo"].IsEmpty())
  114. {
  115. dp.Add("EmpNo", queryParam["EmpNo"].ToString(), DbType.String);
  116. strSql.Append(" AND t.EmpNo = @EmpNo ");
  117. }
  118. if (!queryParam["ClassroomNo"].IsEmpty())
  119. {
  120. dp.Add("ClassroomNo", queryParam["ClassroomNo"].ToString(), DbType.String);
  121. strSql.Append(" AND t.ClassroomNo = @ClassroomNo ");
  122. }
  123. return this.BaseRepository("CollegeMIS").FindList<ArrangeLessonTermEntity>(strSql.ToString(), dp);
  124. }
  125. catch (Exception ex)
  126. {
  127. if (ex is ExceptionEx)
  128. {
  129. throw;
  130. }
  131. else
  132. {
  133. throw ExceptionEx.ThrowServiceException(ex);
  134. }
  135. }
  136. }
  137. public IEnumerable<ArrangeLessonTermEntity> GetListForTimeTable(string queryJson)
  138. {
  139. try
  140. {
  141. //参考写法
  142. var queryParam = queryJson.ToJObject();
  143. // 虚拟参数
  144. var dp = new DynamicParameters(new { });
  145. var strSql = new StringBuilder();
  146. strSql.Append("SELECT LessonDate,AcademicYearNo,Semester");
  147. strSql.Append(" FROM ArrangeLessonTerm t where 1=1 ");
  148. if (!queryParam["AcademicYearNo"].IsEmpty())
  149. {
  150. dp.Add("AcademicYearNo", queryParam["AcademicYearNo"].ToString(), DbType.String);
  151. strSql.Append(" AND t.AcademicYearNo = @AcademicYearNo ");
  152. }
  153. if (!queryParam["Semester"].IsEmpty())
  154. {
  155. dp.Add("Semester", queryParam["Semester"].ToString(), DbType.String);
  156. strSql.Append(" AND t.Semester = @Semester ");
  157. }
  158. if (!queryParam["DeptNo"].IsEmpty())
  159. {
  160. dp.Add("DeptNo", queryParam["DeptNo"].ToString(), DbType.String);
  161. strSql.Append(" AND t.DeptNo = @DeptNo ");
  162. }
  163. if (!queryParam["MajorNo"].IsEmpty())
  164. {
  165. dp.Add("MajorNo", queryParam["MajorNo"].ToString(), DbType.String);
  166. strSql.Append(" AND t.MajorNo = @MajorNo ");
  167. }
  168. if (!queryParam["LessonNo"].IsEmpty())
  169. {
  170. dp.Add("LessonNo", queryParam["LessonNo"].ToString(), DbType.String);
  171. strSql.Append(" AND t.LessonNo = @LessonNo ");
  172. }
  173. if (!queryParam["TeachClassNo"].IsEmpty())
  174. {
  175. dp.Add("TeachClassNo", "%" + queryParam["TeachClassNo"].ToString(), DbType.String);
  176. strSql.Append(" AND t.TeachClassNo like @TeachClassNo ");
  177. }
  178. if (!queryParam["EmpNo"].IsEmpty())
  179. {
  180. dp.Add("EmpNo", queryParam["EmpNo"].ToString(), DbType.String);
  181. strSql.Append(" AND t.EmpNo = @EmpNo ");
  182. }
  183. if (!queryParam["ClassroomNo"].IsEmpty())
  184. {
  185. dp.Add("ClassroomNo", queryParam["ClassroomNo"].ToString(), DbType.String);
  186. strSql.Append(" AND t.ClassroomNo = @ClassroomNo ");
  187. }
  188. return this.BaseRepository("CollegeMIS").FindList<ArrangeLessonTermEntity>(strSql.ToString(), dp);
  189. }
  190. catch (Exception ex)
  191. {
  192. if (ex is ExceptionEx)
  193. {
  194. throw;
  195. }
  196. else
  197. {
  198. throw ExceptionEx.ThrowServiceException(ex);
  199. }
  200. }
  201. }
  202. internal IEnumerable<ArrangeLessonTermEntity> GetListByEmpNo(List<string> empNos)
  203. {
  204. try
  205. {
  206. return this.BaseRepository("CollegeMIS").FindList<ArrangeLessonTermEntity>(a => empNos.Contains(a.EmpNo)).ToList();
  207. }
  208. catch (Exception ex)
  209. {
  210. if (ex is ExceptionEx)
  211. {
  212. throw;
  213. }
  214. else
  215. {
  216. throw ExceptionEx.ThrowServiceException(ex);
  217. }
  218. }
  219. }
  220. /// <summary>
  221. /// 获取列表分页数据
  222. /// <param name="pagination">分页参数</param>
  223. /// <summary>
  224. /// <returns></returns>
  225. public IEnumerable<ArrangeLessonTermEntity> GetPageList(Pagination pagination, string queryJson)
  226. {
  227. try
  228. {
  229. var strSql = new StringBuilder();
  230. strSql.Append("SELECT ");
  231. strSql.Append(fieldSql);
  232. strSql.Append(" FROM ArrangeLessonTerm t ");
  233. return this.BaseRepository("CollegeMIS").FindList<ArrangeLessonTermEntity>(strSql.ToString(), pagination);
  234. }
  235. catch (Exception ex)
  236. {
  237. if (ex is ExceptionEx)
  238. {
  239. throw;
  240. }
  241. else
  242. {
  243. throw ExceptionEx.ThrowServiceException(ex);
  244. }
  245. }
  246. }
  247. /// <summary>
  248. /// 获取实体数据
  249. /// <param name="keyValue">主键</param>
  250. /// <summary>
  251. /// <returns></returns>
  252. public ArrangeLessonTermEntity GetEntity(string keyValue)
  253. {
  254. try
  255. {
  256. return this.BaseRepository("CollegeMIS").FindEntity<ArrangeLessonTermEntity>(keyValue);
  257. }
  258. catch (Exception ex)
  259. {
  260. if (ex is ExceptionEx)
  261. {
  262. throw;
  263. }
  264. else
  265. {
  266. throw ExceptionEx.ThrowServiceException(ex);
  267. }
  268. }
  269. }
  270. #endregion
  271. #region 提交数据
  272. /// <summary>
  273. /// 删除实体数据
  274. /// <param name="keyValue">主键</param>
  275. /// <summary>
  276. /// <returns></returns>
  277. public void DeleteEntity(string keyValue)
  278. {
  279. try
  280. {
  281. this.BaseRepository("CollegeMIS").Delete<ArrangeLessonTermEntity>(t => t.ALTId == keyValue);
  282. }
  283. catch (Exception ex)
  284. {
  285. if (ex is ExceptionEx)
  286. {
  287. throw;
  288. }
  289. else
  290. {
  291. throw ExceptionEx.ThrowServiceException(ex);
  292. }
  293. }
  294. }
  295. /// <summary>
  296. /// 保存实体数据(新增、修改)
  297. /// <param name="keyValue">主键</param>
  298. /// <summary>
  299. /// <returns></returns>
  300. public void SaveEntity(string keyValue, ArrangeLessonTermEntity entity)
  301. {
  302. try
  303. {
  304. if (!string.IsNullOrEmpty(keyValue))
  305. {
  306. entity.Modify(keyValue);
  307. this.BaseRepository("CollegeMIS").Update(entity);
  308. }
  309. else
  310. {
  311. entity.Create();
  312. this.BaseRepository("CollegeMIS").Insert(entity);
  313. }
  314. }
  315. catch (Exception ex)
  316. {
  317. if (ex is ExceptionEx)
  318. {
  319. throw;
  320. }
  321. else
  322. {
  323. throw ExceptionEx.ThrowServiceException(ex);
  324. }
  325. }
  326. }
  327. internal bool GetAny()
  328. {
  329. try
  330. {
  331. var semesterAndYear = Common.GetSemesterAndYear();
  332. return this.BaseRepository("CollegeMIS").FindList<ArrangeLessonTermEntity>(a => a.AcademicYearNo == semesterAndYear.AcademicYearShort && a.Semester == semesterAndYear.Semester).Any();
  333. }
  334. catch (Exception ex)
  335. {
  336. if (ex is ExceptionEx)
  337. {
  338. throw;
  339. }
  340. else
  341. {
  342. throw ExceptionEx.ThrowServiceException(ex);
  343. }
  344. }
  345. }
  346. #endregion
  347. #region MyRegion
  348. #endregion
  349. /// <summary>
  350. /// 获取相关课程考勤的学生信息
  351. /// </summary>
  352. /// <param name="year"></param>
  353. /// <param name="semester"></param>
  354. /// <param name="empno"></param>
  355. /// <param name="lessonNo"></param>
  356. /// <param name="teachClassNo"></param>
  357. /// <returns></returns>
  358. public IEnumerable<StuSelectLessonListEntity> AttendanceStudents(Pagination pagination, string queryJson)
  359. {
  360. try
  361. {
  362. var queryParam = queryJson.ToJObject();
  363. var strSql = new StringBuilder();
  364. strSql.Append("SELECT ");
  365. strSql.Append(@"
  366. a.[StuNo]
  367. ,a.[DeptNo]
  368. ,a.[MajorNo]
  369. ,a.[ClassNo]
  370. ,a.[StuName]
  371. ,a.[GenderNo]
  372. ,a.[AcademicYearNo]
  373. ,a.[Semester]
  374. ,a.[LessonNo]
  375. ,a.[LessonName]
  376. ,a.[TeachClassNo]
  377. ,a.[LessonSortNo]
  378. ,a.[Grade]
  379. ,a.[ConflictLessonNo]
  380. ,a.[EmpNo]
  381. ,a.[TeachPlanNo],b.ID as StuAttendanceNo,b.AttendOrNo,b.Sort,b.AttenCondition,b.AttenScore,b.LessonDate
  382. ");
  383. strSql.Append(" FROM StuSelectLessonList a left join StuAttendance b on a.AcademicYearNo=b.AcademicYearNo and a.StuNo=b.StuNo and a.Semester=b.Semester and a.EmpNo=b.EmpNo and a.LessonNo=b.LessonNo and a.TeachClassNo=b.TeachClassNo ");
  384. strSql.Append($" and b.LessonTime='{queryParam["lessonTime"]}'");
  385. strSql.Append($" and b.LessonDate='{queryParam["lessonDate"]}'");
  386. strSql.Append(" WHERE 1=1 ");
  387. strSql.Append($"and a.AcademicYearNo='{ queryParam["year"]}' and a.Semester='{queryParam["semester"]}' and a.EmpNo='{queryParam["empno"]}' and a.LessonNo='{queryParam["lessonNo"]}' and a.TeachClassNo='{queryParam["teachClassNo"]}' ");
  388. return this.BaseRepository("CollegeMIS").FindList<StuSelectLessonListEntity>(strSql.ToString(), pagination);
  389. }
  390. catch (Exception ex)
  391. {
  392. if (ex is ExceptionEx)
  393. {
  394. throw;
  395. }
  396. else
  397. {
  398. throw ExceptionEx.ThrowServiceException(ex);
  399. }
  400. }
  401. }
  402. private string strAcademicYear;
  403. private string strSemester;
  404. /// <summary>
  405. /// 同步排课系统数据
  406. /// </summary>
  407. /// <returns></returns>
  408. public async Task<bool> AsyncArrangeLessonData()
  409. {
  410. bool result = false;
  411. try
  412. {
  413. var apiData = await Client.GetStringAsync(Config.GetValue("ArrangeLessonAPI"));
  414. if (!string.IsNullOrEmpty(apiData))
  415. {
  416. var data = JsonConvert.DeserializeObject<Root>(apiData);
  417. var dataList = data.entity.list;
  418. if (dataList.Any())
  419. {
  420. var oldArrangeLessonTermList = (await BaseRepository("CollegeMIS").FindListAsync<ArrangeLessonTermEntity>()).ToList();
  421. var insertDataList = new List<ArrangeLessonTermEntity>();
  422. var lessonData = (await BaseRepository("CollegeMIS").FindListAsync<LessonInfoEntity>()).ToList();
  423. var classData = (await BaseRepository("CollegeMIS").FindListAsync<ClassInfoEntity>()).ToList();
  424. foreach (var item in dataList)
  425. {
  426. var classinfo = classData.FirstOrDefault(m => m.ClassNo == item.paike.clazzId);
  427. var insertData = new ArrangeLessonTermEntity
  428. {
  429. ALTId = Guid.NewGuid().ToString(),
  430. LessonDate = DateTime.Parse(item.times),
  431. AcademicYearNo = item.schoolYear,
  432. Semester = item.paike.semester,
  433. DeptNo = classinfo?.DeptNo,
  434. MajorNo = classinfo?.MajorNo,
  435. LessonNo = item.paike.curriculunId,
  436. LessonName = item.paike.curriculunName,
  437. TeachClassNo = item.paike.curriculunName + item.paike.clazzId,
  438. EmpNo = item.paike.teacherId,
  439. EmpName = item.paike.teacherName,
  440. LessonSortNo = lessonData.FirstOrDefault(m => m.LessonNo == item.paike.curriculunId)?.LessonSortNo,
  441. ClassroomNo = item.paike.classRoomId,
  442. LessonTime = item.paike.week + item.paike.section,
  443. CheckMark = "1",
  444. F_SchoolId = item.schoolId
  445. };
  446. strAcademicYear = insertData.AcademicYearNo;
  447. strSemester = insertData.Semester;
  448. if (oldArrangeLessonTermList.Count(m => m.AcademicYearNo == insertData.AcademicYearNo && m.Semester == insertData.Semester
  449. && m.LessonNo == insertData.LessonNo && m.LessonDate == insertData.LessonDate
  450. && m.DeptNo == insertData.DeptNo && m.MajorNo == insertData.MajorNo
  451. && m.TeachClassNo == insertData.TeachClassNo && m.EmpNo == insertData.EmpNo
  452. && m.ClassroomNo == insertData.ClassroomNo && m.LessonTime == insertData.LessonTime
  453. && m.F_SchoolId == insertData.F_SchoolId) == 0
  454. && insertDataList.Count(m => m.AcademicYearNo == insertData.AcademicYearNo && m.Semester == insertData.Semester
  455. && m.LessonNo == insertData.LessonNo && m.LessonDate == insertData.LessonDate
  456. && m.DeptNo == insertData.DeptNo && m.MajorNo == insertData.MajorNo
  457. && m.TeachClassNo == insertData.TeachClassNo && m.EmpNo == insertData.EmpNo
  458. && m.ClassroomNo == insertData.ClassroomNo && m.LessonTime == insertData.LessonTime
  459. && m.F_SchoolId == insertData.F_SchoolId) == 0)
  460. {
  461. insertDataList.Add(insertData);
  462. }
  463. }
  464. var insertResult = await BaseRepository("CollegeMIS").InsertAsync(insertDataList);
  465. //TeachClass数据处理
  466. var arrangeLessonTermData = (await BaseRepository("CollegeMIS").FindListAsync<ArrangeLessonTermEntity>(@"select AcademicYearNo,Semester,DeptNo,majorno,lessonno,replace(teachclassno,lessonname,'') as teachclassno,empno from [dbo].[ArrangeLessonTerm]
  467. where (AcademicYearNo = '" + strAcademicYear + "') and semester='" + strSemester + @"'
  468. group by AcademicYearNo,Semester,DeptNo,majorno,lessonno,replace(teachclassno,lessonname,'') ,empno ")).ToList();
  469. var TeachClassData = (await BaseRepository("CollegeMIS").FindListAsync<TeachClassEntity>(@"SELECT *
  470. FROM TeachClass
  471. WHERE (AcademicYearNo = '" + strAcademicYear + "') and semester='" + strSemester + "' ")).ToList();
  472. var insertTeachClassDataList = new List<TeachClassEntity>();
  473. if (arrangeLessonTermData.Any())
  474. {
  475. foreach (var altitem in arrangeLessonTermData)
  476. {
  477. var insertTeachClassData = new TeachClassEntity()
  478. {
  479. AcademicYearNo = altitem.AcademicYearNo,
  480. Semester = altitem.Semester,
  481. DeptNo = altitem.DeptNo,
  482. MajorNo = altitem.MajorNo,
  483. LessonNo = altitem.LessonNo,
  484. Grade = classData.FirstOrDefault(m => m.ClassNo == altitem.TeachClassNo)?.Grade,
  485. LessonSortNo = altitem.LessonSortNo,
  486. TeachClassNo = altitem.TeachClassNo,
  487. EmpNo = altitem.EmpNo,
  488. F_SchoolId = altitem.F_SchoolId
  489. };
  490. //非空判断
  491. if (TeachClassData.Count(m => m.AcademicYearNo == insertTeachClassData.AcademicYearNo &&
  492. m.Semester == insertTeachClassData.Semester && m.DeptNo == insertTeachClassData.DeptNo &&
  493. m.MajorNo == insertTeachClassData.MajorNo && m.LessonNo == insertTeachClassData.LessonNo &&
  494. m.Grade == insertTeachClassData.Grade && m.LessonSortNo == insertTeachClassData.LessonSortNo &&
  495. m.TeachClassNo == insertTeachClassData.TeachClassNo && m.EmpNo == insertTeachClassData.EmpNo &&
  496. m.F_SchoolId == insertTeachClassData.F_SchoolId) == 0
  497. && insertTeachClassDataList.Count(m => m.AcademicYearNo == insertTeachClassData.AcademicYearNo &&
  498. m.Semester == insertTeachClassData.Semester && m.DeptNo == insertTeachClassData.DeptNo &&
  499. m.MajorNo == insertTeachClassData.MajorNo && m.LessonNo == insertTeachClassData.LessonNo &&
  500. m.Grade == insertTeachClassData.Grade && m.LessonSortNo == insertTeachClassData.LessonSortNo &&
  501. m.TeachClassNo == insertTeachClassData.TeachClassNo && m.EmpNo == insertTeachClassData.EmpNo &&
  502. m.F_SchoolId == insertTeachClassData.F_SchoolId) == 0)
  503. {
  504. insertTeachClassDataList.Add(insertTeachClassData);
  505. }
  506. }
  507. await BaseRepository("CollegeMIS").InsertAsync(insertTeachClassDataList);
  508. }
  509. //继续openlessonplan同步
  510. await AsyncOpenLessonPlanData();
  511. if (insertResult > 0)
  512. {
  513. result = true;
  514. }
  515. }
  516. }
  517. }
  518. catch (Exception ex)
  519. {
  520. if (ex is ExceptionEx)
  521. {
  522. throw;
  523. }
  524. else
  525. {
  526. throw ExceptionEx.ThrowServiceException(ex);
  527. }
  528. }
  529. return result;
  530. }
  531. /// <summary>
  532. /// 同步专业开课计划数据,学生选课数据
  533. /// </summary>
  534. /// <returns></returns>
  535. public async Task<bool> AsyncOpenLessonPlanData()
  536. {
  537. bool result = false;
  538. try
  539. {
  540. var apiData = await Client.GetStringAsync(Config.GetValue("OpenLessonPlanAPI"));
  541. if (!string.IsNullOrEmpty(apiData))
  542. {
  543. var openLessonPlanData = await BaseRepository("CollegeMIS").FindListAsync<OpenLessonPlanEntity>();
  544. var data = JsonConvert.DeserializeObject<Root>(apiData);
  545. var dataList = data.entity.list;
  546. if (dataList.Any())
  547. {
  548. var insertDataList = new List<OpenLessonPlanEntity>();
  549. var majorData = (await BaseRepository("CollegeMIS").FindListAsync<CdMajorEntity>()).ToList();
  550. var lessonData = (await BaseRepository("CollegeMIS").FindListAsync<LessonInfoEntity>()).ToList();
  551. foreach (var item in dataList)
  552. {
  553. var insertData = new OpenLessonPlanEntity()
  554. {
  555. MakeDate = DateTime.Now,
  556. AcademicYearNo = item.schoolYear,
  557. Semester = item.semester.shangxia,
  558. DeptNo = majorData.Find(m => m.MajorNo == item.majorNumber).DeptNo,
  559. MajorNo = item.majorNumber,
  560. LessonNo = item.curriculumNumber,
  561. LessonName = item.curriculumName,
  562. PartCode = "",
  563. Grade = item.grade,
  564. LessonSortNo = lessonData.FirstOrDefault(m => m.LessonNo == item.curriculumNumber)?.LessonSortNo,
  565. LessonSortDetailNo = lessonData.FirstOrDefault(m => m.LessonNo == item.curriculumNumber)?.LessonSortDetailNo,
  566. StartWeek = 1,
  567. EndWeek = !string.IsNullOrEmpty(item.semester.zhouci) ? Convert.ToInt32(item.semester.zhouci) : 1,
  568. CheckStyleNo = "1",
  569. ScoreRecordStyleNo = "1",
  570. TeachDeptNo = majorData.Find(m => m.MajorNo == item.majorNumber).DeptNo,
  571. StudyScore = lessonData.FirstOrDefault(m => m.LessonNo == item.curriculumNumber)?.StudyScore,
  572. AmendDate = DateTime.Now,
  573. ClassroomType = 1,
  574. ClassroomPracticeType = 99,
  575. CheckMarkDept = "1",
  576. CheckMark = "1",
  577. TestMark = 0,
  578. F_SchoolId = item.schoolId
  579. };
  580. if (openLessonPlanData.Count(m => m.AcademicYearNo == insertData.AcademicYearNo &&
  581. m.Semester == insertData.Semester &&
  582. m.DeptNo == insertData.DeptNo &&
  583. m.MajorNo == insertData.MajorNo &&
  584. m.LessonNo == insertData.LessonNo &&
  585. m.Grade == insertData.Grade &&
  586. m.LessonSortNo == insertData.LessonSortNo &&
  587. m.LessonName == insertData.LessonName &&
  588. m.F_SchoolId == insertData.F_SchoolId) == 0 && insertDataList.Count(m => m.AcademicYearNo == insertData.AcademicYearNo &&
  589. m.Semester == insertData.Semester &&
  590. m.DeptNo == insertData.DeptNo &&
  591. m.MajorNo == insertData.MajorNo &&
  592. m.LessonNo == insertData.LessonNo &&
  593. m.Grade == insertData.Grade &&
  594. m.LessonSortNo == insertData.LessonSortNo &&
  595. m.LessonName == insertData.LessonName &&
  596. m.F_SchoolId == insertData.F_SchoolId) == 0)
  597. {
  598. insertDataList.Add(insertData);
  599. }
  600. }
  601. var insertResult = await BaseRepository("CollegeMIS").InsertAsync(insertDataList);
  602. //学生选课数据
  603. var TeachClassData = (await BaseRepository("CollegeMIS").FindListAsync<TeachClassEntity>(@"SELECT *
  604. FROM TeachClass
  605. WHERE (AcademicYearNo = '" + strAcademicYear + "') and semester='" + strSemester + "' ")).ToList();
  606. var stuinfobasicData = (await BaseRepository("CollegeMIS").FindListAsync<StuInfoBasicEntity>()).ToList();
  607. var stuSelectLessonListEntityData = (await BaseRepository("CollegeMIS").FindListAsync<StuSelectLessonListEntity>()).ToList();
  608. var insertStuSelectLessonListDataList = new List<StuSelectLessonListEntity>();
  609. if (TeachClassData.Any())
  610. {
  611. foreach (var itemteachclass in TeachClassData)
  612. {
  613. var classstulist = stuinfobasicData.Where(m => m.ClassNo == itemteachclass.TeachClassNo)
  614. .ToList();
  615. foreach (var stu in classstulist)
  616. {
  617. var insertDatastuselect = new StuSelectLessonListEntity();
  618. insertDatastuselect.NoticeBookNo = stu.NoticeNo;
  619. insertDatastuselect.StuNo = stu.StuNo;
  620. insertDatastuselect.DeptNo = stu.DeptNo;
  621. insertDatastuselect.ClassNo = stu.ClassNo;
  622. insertDatastuselect.MajorNo = stu.MajorNo;
  623. insertDatastuselect.StuName = stu.StuName;
  624. insertDatastuselect.GenderNo = stu.GenderNo != null && stu.GenderNo.Value ? "1" : "0";
  625. insertDatastuselect.AcademicYearNo = itemteachclass.AcademicYearNo;
  626. insertDatastuselect.Semester = itemteachclass.Semester;
  627. insertDatastuselect.OpenLessonDeptNo = itemteachclass.DeptNo;
  628. insertDatastuselect.OpenLessonMajorNo = itemteachclass.MajorNo;
  629. insertDatastuselect.LessonNo = itemteachclass.LessonNo;
  630. insertDatastuselect.LessonName = lessonData.FirstOrDefault(m => m.LessonNo == itemteachclass.LessonNo)?.LessonName;
  631. insertDatastuselect.PartCode = "";
  632. insertDatastuselect.OrdinaryScoreScale = 1;
  633. insertDatastuselect.TermInScoreScale = 1;
  634. insertDatastuselect.TermEndScoreScale = 1;
  635. insertDatastuselect.OtherScoreScale = 1;
  636. insertDatastuselect.TeachClassNo = stu.ClassNo;
  637. insertDatastuselect.LessonSortNo = lessonData.FirstOrDefault(m => m.LessonNo == itemteachclass.LessonNo)?.LessonSortNo;
  638. insertDatastuselect.StuSortNo = "02";
  639. insertDatastuselect.Grade = stu.Grade;
  640. insertDatastuselect.StudyScore = lessonData.FirstOrDefault(m => m.LessonNo == itemteachclass.LessonNo).StudyScore == null ? 0 : lessonData.FirstOrDefault(m => m.LessonNo == itemteachclass.LessonNo).StudyScore;
  641. insertDatastuselect.TotalStudyHour = lessonData.FirstOrDefault(m => m.LessonNo == itemteachclass.LessonNo).TotalStudyHour == null ? 0 : lessonData.FirstOrDefault(m => m.LessonNo == itemteachclass.LessonNo).TotalStudyHour;
  642. insertDatastuselect.IsInEffect = "1";
  643. insertDatastuselect.EmpNo = itemteachclass.EmpNo;
  644. insertDatastuselect.IsPitchOn = "1";
  645. insertDatastuselect.CheckMark = "0";
  646. insertDatastuselect.InsertTime = DateTime.Now;
  647. insertDatastuselect.F_SchoolId = itemteachclass.F_SchoolId;
  648. if (stuSelectLessonListEntityData.Count(m => m.StuNo == insertDatastuselect.StuNo &&
  649. m.AcademicYearNo == insertDatastuselect.AcademicYearNo &&
  650. m.Semester == insertDatastuselect.Semester &&
  651. m.DeptNo == insertDatastuselect.DeptNo &&
  652. m.MajorNo == insertDatastuselect.MajorNo &&
  653. m.LessonNo == insertDatastuselect.LessonNo &&
  654. m.Grade == insertDatastuselect.Grade &&
  655. m.OpenLessonDeptNo == insertDatastuselect.OpenLessonDeptNo &&
  656. m.OpenLessonMajorNo == insertDatastuselect.OpenLessonMajorNo &&
  657. m.EmpNo == insertDatastuselect.EmpNo && m.ClassNo == insertDatastuselect.ClassNo &&
  658. m.F_SchoolId == insertDatastuselect.F_SchoolId) == 0 &&
  659. insertStuSelectLessonListDataList.Count(m => m.StuNo == insertDatastuselect.StuNo &&
  660. m.AcademicYearNo == insertDatastuselect.AcademicYearNo &&
  661. m.Semester == insertDatastuselect.Semester &&
  662. m.DeptNo == insertDatastuselect.DeptNo &&
  663. m.MajorNo == insertDatastuselect.MajorNo &&
  664. m.LessonNo == insertDatastuselect.LessonNo &&
  665. m.Grade == insertDatastuselect.Grade &&
  666. m.OpenLessonDeptNo == insertDatastuselect.OpenLessonDeptNo &&
  667. m.OpenLessonMajorNo == insertDatastuselect.OpenLessonMajorNo &&
  668. m.EmpNo == insertDatastuselect.EmpNo && m.ClassNo == insertDatastuselect.ClassNo &&
  669. m.F_SchoolId == insertDatastuselect.F_SchoolId) == 0)
  670. {
  671. insertStuSelectLessonListDataList.Add(insertDatastuselect);
  672. }
  673. }
  674. }
  675. await BaseRepository("CollegeMIS").InsertAsync(insertStuSelectLessonListDataList);
  676. }
  677. if (insertResult > 0)
  678. {
  679. result = true;
  680. }
  681. }
  682. }
  683. }
  684. catch (Exception ex)
  685. {
  686. if (ex is ExceptionEx)
  687. {
  688. throw;
  689. }
  690. else
  691. {
  692. throw ExceptionEx.ThrowServiceException(ex);
  693. }
  694. }
  695. return result;
  696. }
  697. /// <summary>
  698. /// 清空当前学期排课数据
  699. /// </summary>
  700. /// <returns></returns>
  701. public async Task<bool> AsyncModifyArrangeLessonData()
  702. {
  703. bool result = false;
  704. try
  705. {
  706. var apiData = await Client.GetStringAsync(Config.GetValue("ModifyArrangeLessonAPI"));
  707. if (!string.IsNullOrEmpty(apiData))
  708. {
  709. var data = JsonConvert.DeserializeObject<Root>(apiData);
  710. if (data.success)
  711. {
  712. var semesterAndYear = Common.GetSemesterAndYear();
  713. var strAcademicYear = semesterAndYear.AcademicYearShort;
  714. var strSemester = semesterAndYear.Semester;
  715. var executeResult = await BaseRepository("CollegeMIS").ExecuteAsyncBySql(
  716. $"delete from ArrangeLessonTerm where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' ");
  717. await BaseRepository("CollegeMIS").ExecuteAsyncBySql(
  718. $"delete from TeachClass where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' ");
  719. await BaseRepository("CollegeMIS").ExecuteAsyncBySql(
  720. $"delete from OpenLessonPlan where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' ");
  721. await BaseRepository("CollegeMIS").ExecuteAsyncBySql(
  722. $"delete from StuSelectLessonList where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' ");
  723. if (executeResult > 0)
  724. {
  725. result = true;
  726. }
  727. }
  728. }
  729. }
  730. catch (Exception ex)
  731. {
  732. if (ex is ExceptionEx)
  733. {
  734. throw;
  735. }
  736. else
  737. {
  738. throw ExceptionEx.ThrowServiceException(ex);
  739. }
  740. }
  741. return result;
  742. }
  743. /// <summary>
  744. /// 按条件同步排课数据
  745. /// </summary>
  746. /// <returns></returns>
  747. public async Task<bool> AsyncArrangeLessonDataByCondition(ArrangeLessonTermEntity entity)
  748. {
  749. bool result = false;
  750. try
  751. {
  752. var lessonData = (await BaseRepository("CollegeMIS").FindListAsync<LessonInfoEntity>()).ToList();
  753. var classData = (await BaseRepository("CollegeMIS").FindListAsync<ClassInfoEntity>()).ToList();
  754. var classroomData = (await BaseRepository("CollegeMIS").FindListAsync<ClassroomInfoEntity>()).ToList();
  755. if (entity.SyncType == "1")
  756. {
  757. var LessonList = BaseRepository("paikeDbString").FindList<paikeList>(
  758. @"SELECT a.week AS 'week', a.section AS 'section',a.timetext AS 'timetext',c.name AS 'classname',c.number AS 'classnumber',
  759. r.name AS 'roomname',r.number AS 'ClassroomNo',t.name AS 'teachername',t.number AS 'teacherNumber', cu.name AS 'curriculunName',
  760. cu.number AS 'curriculunNumber', s.year AS 'year', s.number AS 'semester'
  761. FROM tb_paike a
  762. LEFT JOIN tb_clazz c ON c.id= a.`clazzid`
  763. LEFT JOIN tb_classroom r ON r.id =a.`classroomid`
  764. LEFT JOIN tb_teacher t ON t.id =a.`teacherid`
  765. LEFT JOIN tb_curriculum cu ON cu.id=a.`curriculunid`
  766. LEFT JOIN tb_semester s ON s.id=a.`semester`
  767. WHERE 1=1 AND c.number IS NOT NULL AND s.year = '" + entity.AcademicYearNo + "' AND s.number ='" + entity.Semester + "'");
  768. if (LessonList.Count() > 0)
  769. {
  770. List<string> timelist = new List<string>();
  771. //获取上课时间
  772. var LessontimesList = BaseRepository("paikeDbString").FindList<paikeTime>(
  773. @"select kebiao.studyhour
  774. from tb_kebiaojiegou kebiao
  775. LEFT JOIN tb_classschedulestructure c on c.kebiaojiegou=kebiao.id
  776. LEFT JOIN tb_semester s on s.id=c.semester
  777. where s.`year`='" + entity.AcademicYearNo + "' and s.number='" + entity.Semester + "' and c.isnopretermit='1'");
  778. //判断有无上课时间
  779. if (LessontimesList.Count() > 0 && LessontimesList.First().studyhour != null && LessontimesList.First().studyhour.Contains(","))
  780. {
  781. timelist = new List<string>(LessontimesList.First().studyhour.Split(','));
  782. }
  783. var oldArrangeLessonTermList = (await BaseRepository("CollegeMIS").FindListAsync<ArrangeLessonTermEntity>()).ToList();
  784. var insertDataList = new List<ArrangeLessonTermEntity>();
  785. foreach (var item in LessonList)
  786. {
  787. var classinfo = classData.FirstOrDefault(m => m.ClassNo == item.classnumber);
  788. var timesArr = item.timetext.Substring(0, item.timetext.Length - 1).Split(',');
  789. foreach (var timesItem in timesArr)
  790. {
  791. string starttime = "";
  792. string endtime = "";
  793. if (timelist.Count() > 0 && timelist[Convert.ToInt32(item.section) - 1] != null)
  794. {
  795. if (timelist[Convert.ToInt32(item.section) - 1].Contains("-"))
  796. {
  797. starttime = timelist[Convert.ToInt32(item.section) - 1].Split('-')[0];
  798. endtime = timelist[Convert.ToInt32(item.section) - 1].Split('-')[1];
  799. }
  800. }
  801. var insertData = new ArrangeLessonTermEntity
  802. {
  803. ALTId = Guid.NewGuid().ToString(),
  804. LessonDate = DateTime.Parse(timesItem),
  805. StartTime = starttime,
  806. EndTime = endtime,
  807. AcademicYearNo = item.year,
  808. Semester = item.semester,
  809. DeptNo = classinfo?.DeptNo,
  810. MajorNo = classinfo?.MajorNo,
  811. LessonNo = item.curriculunNumber,
  812. LessonName = item.curriculunName,
  813. TeachClassNo = item.curriculunName + classinfo?.ClassNo,
  814. EmpNo = item.teacherNumber,
  815. EmpName = item.teachername,
  816. LessonSortNo = lessonData.FirstOrDefault(m => m.LessonNo == item.curriculunNumber)?.LessonSortNo,
  817. ClassroomNo = classroomData.FirstOrDefault(m => m.ClassroomNo == item.ClassroomNo)?.ClassroomNo,
  818. LessonTime = item.week + item.section,
  819. CheckMark = "1",
  820. F_SchoolId = entity.F_SchoolId
  821. };
  822. if (oldArrangeLessonTermList.Count(m => m.AcademicYearNo == insertData.AcademicYearNo && m.Semester == insertData.Semester
  823. && m.LessonNo == insertData.LessonNo && m.LessonDate.Value.Date == insertData.LessonDate.Value.Date
  824. && m.DeptNo == insertData.DeptNo && m.MajorNo == insertData.MajorNo
  825. && m.TeachClassNo == insertData.TeachClassNo && m.EmpNo == insertData.EmpNo
  826. && m.ClassroomNo == insertData.ClassroomNo && m.LessonTime == insertData.LessonTime
  827. && m.F_SchoolId == insertData.F_SchoolId) == 0
  828. && insertDataList.Count(m => m.AcademicYearNo == insertData.AcademicYearNo && m.Semester == insertData.Semester
  829. && m.LessonNo == insertData.LessonNo && m.LessonDate.Value.Date == insertData.LessonDate.Value.Date
  830. && m.DeptNo == insertData.DeptNo && m.MajorNo == insertData.MajorNo
  831. && m.TeachClassNo == insertData.TeachClassNo && m.EmpNo == insertData.EmpNo
  832. && m.ClassroomNo == insertData.ClassroomNo && m.LessonTime == insertData.LessonTime
  833. && m.F_SchoolId == insertData.F_SchoolId) == 0)
  834. {
  835. insertDataList.Add(insertData);
  836. BaseRepository("CollegeMIS").Insert(insertData);
  837. }
  838. }
  839. }
  840. }
  841. }
  842. else
  843. {
  844. //TeachClass数据处理 20211214改为直接读取mysql库
  845. var teachclasslist = BaseRepository("paikeDbString").FindList<TeachClassEntity>(@"SELECT clazz.name AS 'clazzname',
  846. clazz.number AS 'TeachClassNo',
  847. curriculum.name AS 'curriculumname',
  848. curriculum.number AS 'LessonNo',
  849. semester.year AS 'AcademicYearNo',
  850. semester.number AS 'Semester',
  851. a.jointclass AS 'jointclass',
  852. a.type AS 'LessonSortNo',
  853. a.classhour AS 'classhour',
  854. room.name AS 'roomname',
  855. room.number AS 'roomnumber',
  856. teacher.name AS 'teachername',
  857. teacher.number AS 'EmpNo'
  858. FROM tb_class_plan a
  859. LEFT JOIN tb_clazz clazz ON clazz.id = a.clazzid
  860. LEFT JOIN tb_semester semester ON semester.id = clazz.semester
  861. LEFT JOIN tb_curriculum curriculum ON curriculum.id = a.curriculum
  862. LEFT JOIN tb_classroom room ON room.id = a.classroom
  863. LEFT JOIN tb_teacher teacher ON teacher.id = a.teacher
  864. WHERE a.type='1' and semester.year = '" + entity.AcademicYearNo + "' AND semester.number = '" + entity.Semester + "'");
  865. var TeachClassData = (await BaseRepository("CollegeMIS").FindListAsync<TeachClassEntity>(@"SELECT *
  866. FROM TeachClass
  867. WHERE (AcademicYearNo = '" + entity.AcademicYearNo + "') and semester='" + entity.Semester + "' and F_SchoolId='" + entity.F_SchoolId + "' ")).ToList();
  868. //待插入数据
  869. var insertTeachClassDataList = new List<TeachClassEntity>();
  870. foreach (var teachClassEntity in teachclasslist)
  871. {
  872. var classitemEntity = classData.FirstOrDefault(m => m.ClassNo == teachClassEntity.TeachClassNo);
  873. var insertTeachClassData = new TeachClassEntity()
  874. {
  875. AcademicYearNo = teachClassEntity.AcademicYearNo,
  876. Semester = teachClassEntity.Semester,
  877. DeptNo = classitemEntity?.DeptNo,
  878. MajorNo = classitemEntity?.MajorNo,
  879. LessonNo = teachClassEntity.LessonNo,
  880. Grade = classitemEntity?.Grade,
  881. LessonSortNo = teachClassEntity.LessonSortNo,
  882. TeachClassNo = teachClassEntity.TeachClassNo,
  883. EmpNo = teachClassEntity.EmpNo,
  884. F_SchoolId = entity.F_SchoolId
  885. };
  886. //非空判断
  887. if (TeachClassData.Count(m => m.AcademicYearNo == insertTeachClassData.AcademicYearNo &&
  888. m.Semester == insertTeachClassData.Semester && m.DeptNo == insertTeachClassData.DeptNo &&
  889. m.MajorNo == insertTeachClassData.MajorNo && m.LessonNo == insertTeachClassData.LessonNo &&
  890. m.Grade == insertTeachClassData.Grade && m.LessonSortNo == insertTeachClassData.LessonSortNo &&
  891. m.TeachClassNo == insertTeachClassData.TeachClassNo && m.EmpNo == insertTeachClassData.EmpNo &&
  892. m.F_SchoolId == insertTeachClassData.F_SchoolId) == 0
  893. && insertTeachClassDataList.Count(m => m.AcademicYearNo == insertTeachClassData.AcademicYearNo &&
  894. m.Semester == insertTeachClassData.Semester && m.DeptNo == insertTeachClassData.DeptNo &&
  895. m.MajorNo == insertTeachClassData.MajorNo && m.LessonNo == insertTeachClassData.LessonNo &&
  896. m.Grade == insertTeachClassData.Grade && m.LessonSortNo == insertTeachClassData.LessonSortNo &&
  897. m.TeachClassNo == insertTeachClassData.TeachClassNo && m.EmpNo == insertTeachClassData.EmpNo &&
  898. m.F_SchoolId == insertTeachClassData.F_SchoolId) == 0)
  899. {
  900. insertTeachClassDataList.Add(insertTeachClassData);
  901. }
  902. }
  903. await BaseRepository("CollegeMIS").InsertAsync(insertTeachClassDataList);
  904. //继续openlessonplan同步
  905. await AsyncOpenLessonPlanDataByCondition(entity);
  906. }
  907. result = true;
  908. }
  909. catch (Exception ex)
  910. {
  911. if (ex is ExceptionEx)
  912. {
  913. throw;
  914. }
  915. else
  916. {
  917. throw ExceptionEx.ThrowServiceException(ex);
  918. }
  919. }
  920. return result;
  921. }
  922. /// <summary>
  923. /// 按条件同步专业开课计划数据,学生选课数据
  924. /// </summary>
  925. /// <returns></returns>
  926. public async Task<bool> AsyncOpenLessonPlanDataByCondition(ArrangeLessonTermEntity entity)
  927. {
  928. try
  929. {
  930. var TeachList = BaseRepository("paikeDbString").FindList<TeachClassEntity>(
  931. @"select m.name AS 'MajorName', m.number AS 'MajorNo', tt.EmpNo AS 'EmpNo',
  932. tt.EmpName AS 'EmpName', sc.name AS 'F_SchoolName', sc.sid AS 'F_SchoolId',
  933. p.grade AS 'Grade', p.classhour AS 'classhour', curr.name AS 'LessonName', curr.number AS 'LessonNo',
  934. s.year AS 'AcademicYearNo', s.number AS 'Semester' ,cour.`assessmentmethod` AS 'ExamType' FROM tb_major_plan p
  935. LEFT JOIN (
  936. SELECT
  937. t.teacher,
  938. GROUP_CONCAT(DISTINCT c.`name`) AS 'EmpName',
  939. GROUP_CONCAT(DISTINCT c.number) AS 'EmpNo'
  940. FROM
  941. tb_major_plan t
  942. LEFT JOIN tb_teacher c ON FIND_IN_SET(c.id, t.teacher) > 0
  943. GROUP BY
  944. t.teacher
  945. ) tt ON tt.teacher = p.teacher
  946. LEFT JOIN tb_semester s ON s.id=p.`semester`
  947. LEFT JOIN tb_school sc ON sc.`id`= p.`school`
  948. LEFT JOIN tb_major m ON m.id=p.major
  949. LEFT JOIN tb_course cour ON cour.id= p.`course`
  950. LEFT JOIN tb_curriculum curr ON curr.id=cour.`course`
  951. WHERE s.year = '" + entity.AcademicYearNo + "' AND s.number = '" + entity.Semester
  952. + "' AND sc.sid = '" + entity.F_SchoolId + "' AND curr.`ification` ='1' ORDER BY p.`major` ");
  953. var majorData = (await BaseRepository("CollegeMIS").FindListAsync<CdMajorEntity>()).ToList();
  954. var lessonData = (await BaseRepository("CollegeMIS").FindListAsync<LessonInfoEntity>()).ToList();
  955. if (TeachList.Count() > 0)
  956. {
  957. var openLessonPlanData = await BaseRepository("CollegeMIS").FindListAsync<OpenLessonPlanEntity>();
  958. var now = DateTime.Now;
  959. var insertDataList = new List<OpenLessonPlanEntity>();
  960. foreach (var item in TeachList)
  961. {
  962. foreach (var itemTeach in item.EmpNo.Split(','))
  963. {
  964. var insertData = new OpenLessonPlanEntity()
  965. {
  966. TeachNo = itemTeach,
  967. MakeDate = now,
  968. AcademicYearNo = item.AcademicYearNo,
  969. Semester = item.Semester,
  970. DeptNo = majorData.FirstOrDefault(m => m.MajorNo == item.MajorNo)?.DeptNo,
  971. MajorNo = item.MajorNo,
  972. LessonNo = item.LessonNo,
  973. LessonName = item.LessonName,
  974. PartCode = "",
  975. Grade = item.Grade,
  976. LessonSortNo = lessonData.FirstOrDefault(m => m.LessonNo == item.LessonNo)
  977. ?.LessonSortNo,
  978. LessonSortDetailNo = lessonData
  979. .FirstOrDefault(m => m.LessonNo == item.LessonSortDetailNo)?.LessonSortDetailNo,
  980. StartWeek = item.StartWeek,
  981. EndWeek = item.EndWeek,
  982. CheckStyleNo = "1",
  983. ScoreRecordStyleNo = "1",
  984. TeachDeptNo = majorData.FirstOrDefault(m => m.MajorNo == item.MajorNo)?.DeptNo,
  985. StudyScore = 0,
  986. AmendDate = now,
  987. ClassroomType = 1,
  988. ClassroomPracticeType = 99,
  989. CheckMarkDept = "1",
  990. CheckMark = "1",
  991. TestMark = 0,
  992. F_SchoolId = item.F_SchoolId,
  993. State = 1,
  994. ExamType = item.ExamType
  995. };
  996. if (openLessonPlanData.Count(m => m.AcademicYearNo == insertData.AcademicYearNo &&
  997. m.Semester == insertData.Semester &&
  998. m.MajorNo == insertData.MajorNo &&
  999. m.LessonNo == insertData.LessonNo &&
  1000. m.Grade == insertData.Grade &&
  1001. m.LessonSortNo == insertData.LessonSortNo &&
  1002. m.LessonName == insertData.LessonName &&
  1003. m.F_SchoolId == insertData.F_SchoolId) == 0 &&
  1004. insertDataList.Count(m => m.AcademicYearNo == insertData.AcademicYearNo &&
  1005. m.Semester == insertData.Semester &&
  1006. m.MajorNo == insertData.MajorNo &&
  1007. m.LessonNo == insertData.LessonNo &&
  1008. m.Grade == insertData.Grade &&
  1009. m.LessonSortNo == insertData.LessonSortNo &&
  1010. m.LessonName == insertData.LessonName &&
  1011. m.F_SchoolId == insertData.F_SchoolId) == 0)
  1012. {
  1013. insertDataList.Add(insertData);
  1014. }
  1015. }
  1016. }
  1017. await BaseRepository("CollegeMIS").InsertAsync(insertDataList);
  1018. }
  1019. //学生选课数据
  1020. var TeachClassData = (await BaseRepository("CollegeMIS").FindListAsync<TeachClassEntity>(@"SELECT *
  1021. FROM TeachClass
  1022. WHERE (AcademicYearNo = '" + entity.AcademicYearNo + "') and semester='" + entity.Semester + "' and F_SchoolId='" + entity.F_SchoolId + "' ")).ToList();
  1023. var stuinfobasicData = (await BaseRepository("CollegeMIS").FindListAsync<StuInfoBasicEntity>()).ToList();
  1024. var stuSelectLessonListEntityData = (await BaseRepository("CollegeMIS").FindListAsync<StuSelectLessonListEntity>()).ToList();
  1025. var insertStuSelectLessonListDataList = new List<StuSelectLessonListEntity>();
  1026. if (TeachClassData.Any())
  1027. {
  1028. foreach (var itemteachclass in TeachClassData)
  1029. {
  1030. var classstulist = stuinfobasicData.Where(m => m.ClassNo == itemteachclass.TeachClassNo)
  1031. .ToList();
  1032. foreach (var stu in classstulist)
  1033. {
  1034. var insertDatastuselect = new StuSelectLessonListEntity();
  1035. insertDatastuselect.NoticeBookNo = stu.NoticeNo;
  1036. insertDatastuselect.StuNo = stu.StuNo;
  1037. insertDatastuselect.DeptNo = stu.DeptNo;
  1038. insertDatastuselect.ClassNo = stu.ClassNo;
  1039. insertDatastuselect.MajorNo = stu.MajorNo;
  1040. insertDatastuselect.StuName = stu.StuName;
  1041. insertDatastuselect.GenderNo = stu.GenderNo != null && stu.GenderNo.Value ? "1" : "0";
  1042. insertDatastuselect.AcademicYearNo = itemteachclass.AcademicYearNo;
  1043. insertDatastuselect.Semester = itemteachclass.Semester;
  1044. insertDatastuselect.OpenLessonDeptNo = itemteachclass.DeptNo;
  1045. insertDatastuselect.OpenLessonMajorNo = itemteachclass.MajorNo;
  1046. insertDatastuselect.LessonNo = itemteachclass.LessonNo;
  1047. insertDatastuselect.LessonName = lessonData.FirstOrDefault(m => m.LessonNo == itemteachclass.LessonNo)?.LessonName;
  1048. insertDatastuselect.PartCode = "";
  1049. insertDatastuselect.OrdinaryScoreScale = 1;
  1050. insertDatastuselect.TermInScoreScale = 1;
  1051. insertDatastuselect.TermEndScoreScale = 1;
  1052. insertDatastuselect.OtherScoreScale = 1;
  1053. insertDatastuselect.TeachClassNo = stu.ClassNo;
  1054. insertDatastuselect.LessonSortNo = lessonData.FirstOrDefault(m => m.LessonNo == itemteachclass.LessonNo)?.LessonSortNo;
  1055. insertDatastuselect.StuSortNo = "02";
  1056. insertDatastuselect.Grade = stu.Grade;
  1057. insertDatastuselect.StudyScore = 0;
  1058. insertDatastuselect.TotalStudyHour = 0;
  1059. insertDatastuselect.IsInEffect = "1";
  1060. insertDatastuselect.EmpNo = itemteachclass.EmpNo;
  1061. insertDatastuselect.IsPitchOn = "1";
  1062. insertDatastuselect.CheckMark = "1";
  1063. insertDatastuselect.InsertTime = DateTime.Now;
  1064. insertDatastuselect.F_SchoolId = itemteachclass.F_SchoolId;
  1065. if (stuSelectLessonListEntityData.Count(m => m.StuNo == insertDatastuselect.StuNo &&
  1066. m.AcademicYearNo == insertDatastuselect.AcademicYearNo &&
  1067. m.Semester == insertDatastuselect.Semester &&
  1068. m.DeptNo == insertDatastuselect.DeptNo &&
  1069. m.MajorNo == insertDatastuselect.MajorNo &&
  1070. m.LessonNo == insertDatastuselect.LessonNo &&
  1071. m.Grade == insertDatastuselect.Grade &&
  1072. m.OpenLessonDeptNo == insertDatastuselect.OpenLessonDeptNo &&
  1073. m.OpenLessonMajorNo == insertDatastuselect.OpenLessonMajorNo &&
  1074. m.EmpNo == insertDatastuselect.EmpNo && m.ClassNo == insertDatastuselect.ClassNo &&
  1075. m.F_SchoolId == insertDatastuselect.F_SchoolId) == 0 &&
  1076. insertStuSelectLessonListDataList.Count(m => m.StuNo == insertDatastuselect.StuNo &&
  1077. m.AcademicYearNo == insertDatastuselect.AcademicYearNo &&
  1078. m.Semester == insertDatastuselect.Semester &&
  1079. m.DeptNo == insertDatastuselect.DeptNo &&
  1080. m.MajorNo == insertDatastuselect.MajorNo &&
  1081. m.LessonNo == insertDatastuselect.LessonNo &&
  1082. m.Grade == insertDatastuselect.Grade &&
  1083. m.OpenLessonDeptNo == insertDatastuselect.OpenLessonDeptNo &&
  1084. m.OpenLessonMajorNo == insertDatastuselect.OpenLessonMajorNo &&
  1085. m.EmpNo == insertDatastuselect.EmpNo && m.ClassNo == insertDatastuselect.ClassNo &&
  1086. m.F_SchoolId == insertDatastuselect.F_SchoolId) == 0)
  1087. {
  1088. insertStuSelectLessonListDataList.Add(insertDatastuselect);
  1089. }
  1090. }
  1091. }
  1092. await BaseRepository("CollegeMIS").InsertAsync(insertStuSelectLessonListDataList);
  1093. }
  1094. }
  1095. catch (Exception ex)
  1096. {
  1097. if (ex is ExceptionEx)
  1098. {
  1099. throw;
  1100. }
  1101. else
  1102. {
  1103. throw ExceptionEx.ThrowServiceException(ex);
  1104. }
  1105. }
  1106. return true;
  1107. }
  1108. /// <summary>
  1109. /// 按条件清空排课数据
  1110. /// </summary>
  1111. /// <returns></returns>
  1112. public async Task<bool> AsyncModifyArrangeLessonDataByCondition(ArrangeLessonTermEntity entity)
  1113. {
  1114. bool result = false;
  1115. var db = BaseRepository("CollegeMIS");
  1116. try
  1117. {
  1118. if (entity.SyncType == "1")
  1119. {
  1120. HttpContent httpContent = new StringContent("{\"school\":\"" + entity.F_SchoolId + "\",\"year\":\"" + entity.AcademicYearNo + "\",\"number\":\"" + entity.Semester + "\"}");
  1121. httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
  1122. string apiData = await Client.PostAsync(Config.GetValue("ModifyArrangeLessonAPI"), httpContent).Result.Content.ReadAsStringAsync();
  1123. if (!string.IsNullOrEmpty(apiData))
  1124. {
  1125. var data = JsonConvert.DeserializeObject<Root>(apiData);
  1126. if (data.success)
  1127. {
  1128. db.BeginTrans();
  1129. db.ExecuteBySql(
  1130. $"delete from ArrangeLessonTerm where F_SchoolId='{entity.F_SchoolId}' and AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' ");
  1131. db.Commit();
  1132. result = true;
  1133. }
  1134. }
  1135. }
  1136. else
  1137. {
  1138. db.BeginTrans();
  1139. db.ExecuteBySql(
  1140. $"delete from TeachClass where F_SchoolId='{entity.F_SchoolId}' and AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' ");
  1141. db.ExecuteBySql(
  1142. $"delete from OpenLessonPlan where F_SchoolId='{entity.F_SchoolId}' and AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' ");
  1143. db.ExecuteBySql(
  1144. $"delete from StuSelectLessonList where F_SchoolId='{entity.F_SchoolId}' and AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' ");
  1145. db.Commit();
  1146. result = true;
  1147. }
  1148. }
  1149. catch (Exception ex)
  1150. {
  1151. db.Rollback();
  1152. if (ex is ExceptionEx)
  1153. {
  1154. throw;
  1155. }
  1156. else
  1157. {
  1158. throw ExceptionEx.ThrowServiceException(ex);
  1159. }
  1160. }
  1161. return result;
  1162. }
  1163. public async Task<bool> AsyncModifyArrangeLessonDataByConditionNew(ArrangeLessonTermEntity entity)
  1164. {
  1165. bool result = false;
  1166. var db = BaseRepository("CollegeMIS");
  1167. try
  1168. {
  1169. if (entity.SyncType == "1")
  1170. {
  1171. db.BeginTrans();
  1172. db.ExecuteBySql(
  1173. $"delete from ArrangeLessonTerm where F_SchoolId='{entity.F_SchoolId}' and AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' ");
  1174. db.Commit();
  1175. result = true;
  1176. }
  1177. else
  1178. {
  1179. db.BeginTrans();
  1180. db.ExecuteBySql(
  1181. $"delete from TeachClass where F_SchoolId='{entity.F_SchoolId}' and AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' ");
  1182. db.ExecuteBySql(
  1183. $"delete from OpenLessonPlan where F_SchoolId='{entity.F_SchoolId}' and AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' ");
  1184. db.ExecuteBySql(
  1185. $"delete from StuSelectLessonList where F_SchoolId='{entity.F_SchoolId}' and AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' ");
  1186. db.Commit();
  1187. result = true;
  1188. }
  1189. }
  1190. catch (Exception ex)
  1191. {
  1192. db.Rollback();
  1193. if (ex is ExceptionEx)
  1194. {
  1195. throw;
  1196. }
  1197. else
  1198. {
  1199. throw ExceptionEx.ThrowServiceException(ex);
  1200. }
  1201. }
  1202. return result;
  1203. }
  1204. /// <summary>
  1205. /// 课程表
  1206. /// </summary>
  1207. /// <param name="userAccount">账号</param>
  1208. /// <param name="userType">用户类型 学生 教师</param>
  1209. /// <param name="startDate">查询开始时间</param>
  1210. /// <param name="endDate">查询截止时间</param>
  1211. /// <returns></returns>
  1212. public IEnumerable<TimeTable> GetTimeTable(string userAccount, string userType, string startDate, string endDate)
  1213. {
  1214. var semesterAndYear = Common.GetSemesterAndYear(startDate);
  1215. var strAcademicYear = semesterAndYear.AcademicYearShort;
  1216. var strSemester = semesterAndYear.Semester;
  1217. string sql;
  1218. if (userType == "学生")
  1219. {
  1220. sql = @"SELECT
  1221. b.LessonNo,b.AcademicYearNo as AcademicYear,b.LessonName,b.LessonTime,b.LessonDate,b.Empname EmpName,b.EmpNo,c.ClassroomName,b.Semester,b.ClassroomNo as ClassRoomNo,b.LessonSortNo,d.ClassName,e.EnName,sa.AttendOrNo,sa.Sort,sa.ClockPlace,sa.ADPhoto,sa.ALon,sa.ALat,sa.AIsOut,sa.ARemark
  1222. from StuSelectLessonList a
  1223. left join ArrangeLessonTerm b on b.TeachClassNo=RTRIM(a.LessonName) + RTRIM(a.PartCode) + RTRIM(a.TeachClassNo)
  1224. left join ClassroomInfo c on c.ClassroomNo=b.classroomNo
  1225. left join ClassInfo d on replace(b.TeachClassNo,b.LessonName,'')=d.ClassNo
  1226. left join LessonInfo e on a.LessonNo=e.LessonNo
  1227. left join StuAttendance sa on sa.StuNo=@userAccount and sa.AcademicYearNo=b.AcademicYearNo and sa.Semester=b.Semester and sa.DeptNo=b.DeptNo and sa.MajorNo=b.MajorNo and sa.LessonNo=b.LessonNo and sa.TeachClassNo=replace(b.TeachClassNo,b.LessonName,'') and sa.LessonSortNo=b.LessonSortNo and sa.LessonTime=b.LessonTime and sa.LessonDate=b.LessonDate and sa.EmpNo=b.EmpNo and sa.ClassroomNo=b.ClassroomNo
  1228. where a.StuNo=@userAccount and a.AcademicYearNo=@strAcademicYear and a.Semester=@strSemester
  1229. and b.AcademicYearNo=@strAcademicYear and b.Semester=@strSemester
  1230. and b.LessonDate>=@startDate and b.LessonDate<=@endDate and b.CheckMark=1";
  1231. }
  1232. else
  1233. {
  1234. sql = @"select b.AcademicYearNo as AcademicYear,b.LessonNo,e.EnName,b.LessonName,b.LessonTime,b.LessonDate,b.EmpNo,b.Empname EmpName,replace(b.TeachClassNo,b.LessonName,'') TeachClassNo, c.ClassroomName,b.Semester,b.ClassroomNo as ClassRoomNo,b.LessonSortNo,d.ClassName from ArrangeLessonTerm b
  1235. left join ClassroomInfo c on c.ClassroomNo=b.classroomNo
  1236. left join ClassInfo d on replace(b.TeachClassNo,b.LessonName,'')=d.ClassNo
  1237. left join LessonInfo e on b.LessonNo=e.LessonNo
  1238. where b.EmpNo=@userAccount and b.AcademicYearNo=@strAcademicYear and b.Semester=@strSemester
  1239. and b.LessonDate>=@startDate and b.LessonDate<=@endDate and b.CheckMark=1";
  1240. }
  1241. try
  1242. {
  1243. var result = BaseRepository("CollegeMIS").FindList<TimeTable>(sql, new { userAccount, startDate, endDate, strAcademicYear, strSemester });
  1244. return result;
  1245. }
  1246. catch (Exception ex)
  1247. {
  1248. if (ex is ExceptionEx)
  1249. {
  1250. throw;
  1251. }
  1252. else
  1253. {
  1254. throw ExceptionEx.ThrowServiceException(ex);
  1255. }
  1256. }
  1257. }
  1258. public IEnumerable<CdMajorEntity> GetMajors(string academicYearNo, string semester)
  1259. {
  1260. try
  1261. {
  1262. //var data = BaseRepository("CollegeMIS").FindList<CdMajorEntity>(m => m.CheckMark == true);
  1263. //根据学年学期判断排课同步数据表中是否有数据:若有,说明该学年学期同步过;若没有,修改基础表,false;
  1264. var aa = this.BaseRepository("CollegeMIS").FindEntity<ArrangeLessonSyncEntity>(x => x.AcademicYearNo == academicYearNo && x.Semester == semester && x.STypeId == "3");
  1265. if (aa == null)
  1266. {
  1267. this.BaseRepository("CollegeMIS").ExecuteBySql("update CdMajor set SyncFlag='false' ");
  1268. }
  1269. //数据
  1270. var db = BaseRepository("CollegeMIS");
  1271. db.BeginTrans();
  1272. var data = db.FindList<CdMajorEntity>("select * from CdMajor where CheckMark=1 and ID not in (select STableId from ArrangeLessonSync where AcademicYearNo='" + academicYearNo + "' and Semester='" + semester + "' )");
  1273. DateTime syncdate = DateTime.Now;
  1274. foreach (var item in data.Select(m => m.ID))
  1275. {
  1276. ArrangeLessonSyncEntity alsEntity = new ArrangeLessonSyncEntity();
  1277. alsEntity.Create();
  1278. alsEntity.AcademicYearNo = academicYearNo;
  1279. alsEntity.Semester = semester;
  1280. alsEntity.STypeId = "3";
  1281. alsEntity.SDate = syncdate;
  1282. alsEntity.STableId = item;
  1283. db.Insert(alsEntity);
  1284. }
  1285. db.Commit();
  1286. return data;
  1287. }
  1288. catch (Exception e)
  1289. {
  1290. Console.WriteLine(e);
  1291. throw;
  1292. }
  1293. }
  1294. public IEnumerable<CdMajorEntity> GetMajorsNotRecord(string academicYearNo, string semester)
  1295. {
  1296. try
  1297. {
  1298. //var data = BaseRepository("CollegeMIS").FindList<CdMajorEntity>(m => m.CheckMark == true);
  1299. var db = BaseRepository("CollegeMIS");
  1300. db.BeginTrans();
  1301. var data = db.FindList<CdMajorEntity>("select * from CdMajor where CheckMark=1 and ID not in (select STableId from ArrangeLessonSync where AcademicYearNo='" + academicYearNo + "' and Semester='" + semester + "' )");
  1302. db.Commit();
  1303. return data;
  1304. }
  1305. catch (Exception e)
  1306. {
  1307. Console.WriteLine(e);
  1308. throw;
  1309. }
  1310. }
  1311. public IEnumerable<ClassroomInfoEntity> GetClassrooms(string academicYearNo, string semester)
  1312. {
  1313. try
  1314. {
  1315. //var data = BaseRepository("CollegeMIS").FindList<ClassroomInfoEntity>(m => m.CheckMark == true);
  1316. //根据学年学期判断排课同步数据表中是否有数据:若有,说明该学年学期同步过;若没有,修改基础表,false;
  1317. var aa = this.BaseRepository("CollegeMIS").FindEntity<ArrangeLessonSyncEntity>(x => x.AcademicYearNo == academicYearNo && x.Semester == semester && x.STypeId == "6");
  1318. if (aa == null)
  1319. {
  1320. this.BaseRepository("CollegeMIS").ExecuteBySql("update ClassroomInfo set SyncFlag='false' ");
  1321. }
  1322. //数据
  1323. var db = BaseRepository("CollegeMIS");
  1324. db.BeginTrans();
  1325. var data = db.FindList<ClassroomInfoEntity>("select * from ClassroomInfo where CheckMark=1 and ClassroomId not in (select STableId from ArrangeLessonSync where AcademicYearNo='" + academicYearNo + "' and Semester='" + semester + "' )");
  1326. DateTime syncdate = DateTime.Now;
  1327. foreach (var item in data.Select(m => m.ClassroomId))
  1328. {
  1329. ArrangeLessonSyncEntity alsEntity = new ArrangeLessonSyncEntity();
  1330. alsEntity.Create();
  1331. alsEntity.AcademicYearNo = academicYearNo;
  1332. alsEntity.Semester = semester;
  1333. alsEntity.STypeId = "6";
  1334. alsEntity.SDate = syncdate;
  1335. alsEntity.STableId = item;
  1336. db.Insert(alsEntity);
  1337. }
  1338. db.Commit();
  1339. return data;
  1340. }
  1341. catch (Exception e)
  1342. {
  1343. Console.WriteLine(e);
  1344. throw;
  1345. }
  1346. }
  1347. public IEnumerable<ClassroomInfoEntity> GetClassroomsNotRecord(string academicYearNo, string semester)
  1348. {
  1349. try
  1350. {
  1351. //var data = BaseRepository("CollegeMIS").FindList<ClassroomInfoEntity>(m => m.CheckMark == true);
  1352. var db = BaseRepository("CollegeMIS");
  1353. db.BeginTrans();
  1354. var data = db.FindList<ClassroomInfoEntity>("select * from ClassroomInfo where CheckMark=1 and ClassroomId not in (select STableId from ArrangeLessonSync where AcademicYearNo='" + academicYearNo + "' and Semester='" + semester + "' )");
  1355. db.Commit();
  1356. return data;
  1357. }
  1358. catch (Exception e)
  1359. {
  1360. Console.WriteLine(e);
  1361. throw;
  1362. }
  1363. }
  1364. public IEnumerable<CdClassTypeEntity> GetClassType()
  1365. {
  1366. try
  1367. {
  1368. var data = BaseRepository("CollegeMIS").FindList<CdClassTypeEntity>();
  1369. return data;
  1370. }
  1371. catch (Exception e)
  1372. {
  1373. Console.WriteLine(e);
  1374. throw;
  1375. }
  1376. }
  1377. public IEnumerable<LessonInfoEntity> GetLessons(string academicYearNo, string semester)
  1378. {
  1379. try
  1380. {
  1381. //var data = BaseRepository("CollegeMIS").FindList<LessonInfoEntity>(m => m.CheckMark == true);
  1382. //根据学年学期判断排课同步数据表中是否有数据:若有,说明该学年学期同步过;若没有,修改基础表,false;
  1383. var aa = this.BaseRepository("CollegeMIS").FindEntity<ArrangeLessonSyncEntity>(x => x.AcademicYearNo == academicYearNo && x.Semester == semester && x.STypeId == "5");
  1384. if (aa == null)
  1385. {
  1386. this.BaseRepository("CollegeMIS").ExecuteBySql("update LessonInfo set SyncFlag='false' ");
  1387. }
  1388. //数据
  1389. var db = BaseRepository("CollegeMIS");
  1390. db.BeginTrans();
  1391. var data = db.FindList<LessonInfoEntity>("select * from LessonInfo where CheckMark=1 and LessonId not in (select STableId from ArrangeLessonSync where AcademicYearNo='" + academicYearNo + "' and Semester='" + semester + "' )");
  1392. DateTime syncdate = DateTime.Now;
  1393. foreach (var item in data.Select(m => m.LessonId))
  1394. {
  1395. ArrangeLessonSyncEntity alsEntity = new ArrangeLessonSyncEntity();
  1396. alsEntity.Create();
  1397. alsEntity.AcademicYearNo = academicYearNo;
  1398. alsEntity.Semester = semester;
  1399. alsEntity.STypeId = "5";
  1400. alsEntity.SDate = syncdate;
  1401. alsEntity.STableId = item;
  1402. db.Insert(alsEntity);
  1403. }
  1404. db.Commit();
  1405. return data;
  1406. }
  1407. catch (Exception e)
  1408. {
  1409. Console.WriteLine(e);
  1410. throw;
  1411. }
  1412. }
  1413. public IEnumerable<LessonInfoEntity> GetLessonsNotRecord(string academicYearNo, string semester)
  1414. {
  1415. try
  1416. {
  1417. //var data = BaseRepository("CollegeMIS").FindList<LessonInfoEntity>(m => m.CheckMark == true);
  1418. var db = BaseRepository("CollegeMIS");
  1419. db.BeginTrans();
  1420. var data = db.FindList<LessonInfoEntity>("select * from LessonInfo where CheckMark=1 and LessonId not in (select STableId from ArrangeLessonSync where AcademicYearNo='" + academicYearNo + "' and Semester='" + semester + "' )");
  1421. db.Commit();
  1422. return data;
  1423. }
  1424. catch (Exception e)
  1425. {
  1426. Console.WriteLine(e);
  1427. throw;
  1428. }
  1429. }
  1430. public IEnumerable<CdLessonSortDetailEntity> GetLessonSortDetails()
  1431. {
  1432. try
  1433. {
  1434. var data = BaseRepository("CollegeMIS").FindList<CdLessonSortDetailEntity>();
  1435. return data;
  1436. }
  1437. catch (Exception e)
  1438. {
  1439. Console.WriteLine(e);
  1440. throw;
  1441. }
  1442. }
  1443. public IEnumerable<CdLessonSortEntity> GetLessonSorts()
  1444. {
  1445. try
  1446. {
  1447. var data = BaseRepository("CollegeMIS").FindList<CdLessonSortEntity>();
  1448. return data;
  1449. }
  1450. catch (Exception e)
  1451. {
  1452. Console.WriteLine(e);
  1453. throw;
  1454. }
  1455. }
  1456. public IEnumerable<EmpInfoEntity> GetTeachers(string academicYearNo, string semester)
  1457. {
  1458. try
  1459. {
  1460. //var data = BaseRepository("CollegeMIS").FindList<EmpInfoEntity>("select a.*,b.F_Password,b.F_Secretkey from dbo.EmpInfo a left join adms7ultimate2.dbo.LR_Base_User b on a.EmpNo=b.F_EnCode where a.CheckMark=1");
  1461. //根据学年学期判断排课同步数据表中是否有数据:若有,说明该学年学期同步过;若没有,修改基础表,false;
  1462. var aa = this.BaseRepository("CollegeMIS").FindEntity<ArrangeLessonSyncEntity>(x => x.AcademicYearNo == academicYearNo && x.Semester == semester && x.STypeId == "7");
  1463. if (aa == null)
  1464. {
  1465. this.BaseRepository("CollegeMIS").ExecuteBySql("update EmpInfo set SyncFlag='false' ");
  1466. }
  1467. //数据
  1468. var db = BaseRepository("CollegeMIS");
  1469. var dbbase = BaseRepository();
  1470. db.BeginTrans();
  1471. var data = db.FindList<EmpInfoEntity>("select a.*,b.F_Password,b.F_Secretkey from dbo.EmpInfo a left join " + dbbase.getDbConnection().Database + ".dbo.LR_Base_User b on a.EmpNo=b.F_EnCode where a.CheckMark=1 and a.ishaslesson=1 and b.F_DeleteMark=0 and a.EmpId not in (select STableId from ArrangeLessonSync where AcademicYearNo='" + academicYearNo + "' and Semester='" + semester + "' )");
  1472. DateTime syncdate = DateTime.Now;
  1473. foreach (var item in data.Select(m => m.EmpId))
  1474. {
  1475. ArrangeLessonSyncEntity alsEntity = new ArrangeLessonSyncEntity();
  1476. alsEntity.Create();
  1477. alsEntity.AcademicYearNo = academicYearNo;
  1478. alsEntity.Semester = semester;
  1479. alsEntity.STypeId = "7";
  1480. alsEntity.SDate = syncdate;
  1481. alsEntity.STableId = item;
  1482. db.Insert(alsEntity);
  1483. }
  1484. db.Commit();
  1485. return data;
  1486. }
  1487. catch (Exception e)
  1488. {
  1489. Console.WriteLine(e);
  1490. throw;
  1491. }
  1492. }
  1493. public IEnumerable<EmpInfoEntity> GetTeachersNotRecord(string academicYearNo, string semester)
  1494. {
  1495. try
  1496. {
  1497. //var data = BaseRepository("CollegeMIS").FindList<EmpInfoEntity>("select a.*,b.F_Password,b.F_Secretkey from dbo.EmpInfo a left join adms7ultimate2.dbo.LR_Base_User b on a.EmpNo=b.F_EnCode where a.CheckMark=1");
  1498. var db = BaseRepository("CollegeMIS");
  1499. var dbbase = BaseRepository();
  1500. db.BeginTrans();
  1501. var data = db.FindList<EmpInfoEntity>("select a.*,b.F_Password,b.F_Secretkey from dbo.EmpInfo a left join " + dbbase.getDbConnection().Database + ".dbo.LR_Base_User b on a.EmpNo=b.F_EnCode where a.CheckMark=1 and a.ishaslesson=1 and b.F_DeleteMark=0 and a.EmpId not in (select STableId from ArrangeLessonSync where AcademicYearNo='" + academicYearNo + "' and Semester='" + semester + "' )");
  1502. db.Commit();
  1503. return data;
  1504. }
  1505. catch (Exception e)
  1506. {
  1507. Console.WriteLine(e);
  1508. throw;
  1509. }
  1510. }
  1511. public IEnumerable<ClassInfoEntity> GetClasses(string academicYearNo, string semester)
  1512. {
  1513. try
  1514. {
  1515. //var data = BaseRepository("CollegeMIS").FindList<ClassInfoEntity>(m => m.CheckMark == true);
  1516. //根据学年学期判断排课同步数据表中是否有数据:若有,说明该学年学期同步过;若没有,修改基础表,false;
  1517. var aa = this.BaseRepository("CollegeMIS").FindEntity<ArrangeLessonSyncEntity>(x => x.AcademicYearNo == academicYearNo && x.Semester == semester && x.STypeId == "4");
  1518. if (aa == null)
  1519. {
  1520. this.BaseRepository("CollegeMIS").ExecuteBySql("update ClassInfo set SyncFlag='false' ");
  1521. }
  1522. //数据
  1523. var db = BaseRepository("CollegeMIS");
  1524. db.BeginTrans();
  1525. var data = db.FindList<ClassInfoEntity>("select * from ClassInfo where CheckMark=1 and ClassId not in (select STableId from ArrangeLessonSync where AcademicYearNo='" + academicYearNo + "' and Semester='" + semester + "' )");
  1526. DateTime syncdate = DateTime.Now;
  1527. foreach (var item in data.Select(m => m.ClassId))
  1528. {
  1529. ArrangeLessonSyncEntity alsEntity = new ArrangeLessonSyncEntity();
  1530. alsEntity.Create();
  1531. alsEntity.AcademicYearNo = academicYearNo;
  1532. alsEntity.Semester = semester;
  1533. alsEntity.STypeId = "4";
  1534. alsEntity.SDate = syncdate;
  1535. alsEntity.STableId = item;
  1536. db.Insert(alsEntity);
  1537. }
  1538. db.Commit();
  1539. return data;
  1540. }
  1541. catch (Exception e)
  1542. {
  1543. Console.WriteLine(e);
  1544. throw;
  1545. }
  1546. }
  1547. public IEnumerable<ClassInfoEntity> GetClassesNotRecord(string academicYearNo, string semester)
  1548. {
  1549. try
  1550. {
  1551. //var data = BaseRepository("CollegeMIS").FindList<ClassInfoEntity>(m => m.CheckMark == true);
  1552. var db = BaseRepository("CollegeMIS");
  1553. db.BeginTrans();
  1554. var data = db.FindList<ClassInfoEntity>("select * from ClassInfo where CheckMark=1 and ClassId not in (select STableId from ArrangeLessonSync where AcademicYearNo='" + academicYearNo + "' and Semester='" + semester + "' )");
  1555. db.Commit();
  1556. return data;
  1557. }
  1558. catch (Exception e)
  1559. {
  1560. Console.WriteLine(e);
  1561. throw;
  1562. }
  1563. }
  1564. public IEnumerable<StuInfoBasicEntity> GetStus(string academicYearNo, string semester)
  1565. {
  1566. try
  1567. {
  1568. //var data = BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>(@"select a.StuId,a.StuNo,a.DeptNo,a.MajorNo,a.Grade,a.ClassNo,a.StuName,a.GenderNo,a.Birthday,b.F_Password,b.F_Secretkey from dbo.StuInfoBasic a left join adms7ultimate2.dbo.LR_Base_User b on a.StuNo=b.F_EnCode where a.CheckMark='1'");
  1569. //根据学年学期判断排课同步数据表中是否有数据:若有,说明该学年学期同步过;若没有,修改基础表,false;
  1570. var aa = this.BaseRepository("CollegeMIS").FindEntity<ArrangeLessonSyncEntity>(x => x.AcademicYearNo == academicYearNo && x.Semester == semester && x.STypeId == "8");
  1571. if (aa == null)
  1572. {
  1573. this.BaseRepository("CollegeMIS").ExecuteBySql("update StuInfoBasic set SyncFlag='false' ");
  1574. }
  1575. //数据
  1576. var db = BaseRepository("CollegeMIS");
  1577. var dbbase = BaseRepository();
  1578. db.BeginTrans();
  1579. var data = db.FindList<StuInfoBasicEntity>("select a.*,b.F_Password,b.F_Secretkey from dbo.StuInfoBasic a left join " + dbbase.getDbConnection().Database + ".dbo.LR_Base_User b on a.StuNo=b.F_EnCode where a.CheckMark=1 and a.StuId not in (select STableId from ArrangeLessonSync where AcademicYearNo='" + academicYearNo + "' and Semester='" + semester + "' )");
  1580. DateTime syncdate = DateTime.Now;
  1581. foreach (var item in data.Select(m => m.StuId))
  1582. {
  1583. ArrangeLessonSyncEntity alsEntity = new ArrangeLessonSyncEntity();
  1584. alsEntity.Create();
  1585. alsEntity.AcademicYearNo = academicYearNo;
  1586. alsEntity.Semester = semester;
  1587. alsEntity.STypeId = "8";
  1588. alsEntity.SDate = syncdate;
  1589. alsEntity.STableId = item;
  1590. db.Insert(alsEntity);
  1591. }
  1592. db.Commit();
  1593. return data;
  1594. }
  1595. catch (Exception e)
  1596. {
  1597. Console.WriteLine(e);
  1598. throw;
  1599. }
  1600. }
  1601. public IEnumerable<StuInfoBasicEntity> GetStusNotRecord(string academicYearNo, string semester)
  1602. {
  1603. try
  1604. {
  1605. //var data = BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>(@"select a.StuId,a.StuNo,a.DeptNo,a.MajorNo,a.Grade,a.ClassNo,a.StuName,a.GenderNo,a.Birthday,b.F_Password,b.F_Secretkey from dbo.StuInfoBasic a left join adms7ultimate2.dbo.LR_Base_User b on a.StuNo=b.F_EnCode where a.CheckMark='1'");
  1606. //数据
  1607. var db = BaseRepository("CollegeMIS");
  1608. var dbbase = BaseRepository();
  1609. db.BeginTrans();
  1610. var data = db.FindList<StuInfoBasicEntity>("select a.*,b.F_Password,b.F_Secretkey from dbo.StuInfoBasic a left join " + dbbase.getDbConnection().Database + ".dbo.LR_Base_User b on a.StuNo=b.F_EnCode where a.CheckMark=1 and a.StuId not in (select STableId from ArrangeLessonSync where AcademicYearNo='" + academicYearNo + "' and Semester='" + semester + "' )");
  1611. db.Commit();
  1612. return data;
  1613. }
  1614. catch (Exception e)
  1615. {
  1616. Console.WriteLine(e);
  1617. throw;
  1618. }
  1619. }
  1620. public IEnumerable<StuInfoBasicEntity> GetStudents()
  1621. {
  1622. try
  1623. {
  1624. var data = BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>(@"select a.StuId,a.StuNo,a.DeptNo,a.MajorNo,a.Grade,a.ClassNo,
  1625. a.StuName,GenderNo,a.Birthday,b.F_Password,b.F_Secretkey from
  1626. dbo.StuInfoBasic a left join adms7ultimate2.dbo.LR_Base_User b on a.StuNo=b.F_EnCode where a.CheckMark='1'");
  1627. return data;
  1628. }
  1629. catch (Exception e)
  1630. {
  1631. Console.WriteLine(e);
  1632. throw;
  1633. }
  1634. }
  1635. public IEnumerable<TeachClassEntity> GetClassLessons()
  1636. {
  1637. try
  1638. {
  1639. var data = BaseRepository("CollegeMIS").FindList<TeachClassEntity>(@"select AcademicYearNo,Semester,DeptNo,MajorNo,LessonNo,TeachClassNo,EmpNo,LessonSortNo from TeachClass
  1640. group by AcademicYearNo,Semester,DeptNo,MajorNo,LessonNo,TeachClassNo,EmpNo,LessonSortNo");
  1641. return data;
  1642. }
  1643. catch (Exception e)
  1644. {
  1645. Console.WriteLine(e);
  1646. throw;
  1647. }
  1648. }
  1649. /// <summary>
  1650. /// 课程表【教务】
  1651. /// </summary>
  1652. /// <param name="startDate">查询开始时间</param>
  1653. /// <param name="endDate">查询截止时间</param>
  1654. /// <param name="classNo">班级编号</param>
  1655. /// <param name="empNo">教师编号</param>
  1656. /// <param name="classroomNo">教室编号</param>
  1657. /// <returns></returns>
  1658. public IEnumerable<TimeTable> GetTimeTableInEducation(string startDate, string endDate, string classNo, string empNo, string schoolId, string classroomNo)
  1659. {
  1660. var semesterAndYear = Common.GetSemesterAndYear(startDate);
  1661. var strAcademicYear = semesterAndYear.AcademicYearShort;
  1662. var strSemester = semesterAndYear.Semester;
  1663. string sql = @"select b.AltId,b.F_SchoolId,b.DeptNo,b.MajorNo,b.AcademicYearNo as AcademicYear,b.LessonNo,b.LessonName,b.LessonTime,b.LessonDate,b.EmpNo,b.Empname EmpName,replace (b.TeachClassNo,b.LessonName,'') TeachClassNo, c.ClassroomName,b.Semester,b.ClassroomNo as ClassRoomNo,b.LessonSortNo,d.ClassName
  1664. from ArrangeLessonTerm b
  1665. left join ClassroomInfo c on c.ClassroomNo=b.classroomNo
  1666. left join ClassInfo d on replace(b.TeachClassNo,b.LessonName,'')=d.ClassNo
  1667. where b.AcademicYearNo=@strAcademicYear and b.Semester=@strSemester
  1668. and b.LessonDate>=@startDate and b.LessonDate<=@endDate
  1669. and b.CheckMark=1";
  1670. try
  1671. {
  1672. var result = BaseRepository("CollegeMIS").FindList<TimeTable>(sql, new { startDate, endDate, strAcademicYear, strSemester });
  1673. if (!string.IsNullOrEmpty(classNo))
  1674. {
  1675. if (classNo.Contains(","))
  1676. {
  1677. result = result.Where(x => classNo.Contains(x.ClassName));
  1678. }
  1679. else
  1680. {
  1681. result = result.Where(x => x.TeachClassNo == classNo);
  1682. }
  1683. }
  1684. if (!string.IsNullOrEmpty(empNo))
  1685. {
  1686. result = result.Where(x => x.EmpNo == empNo);
  1687. }
  1688. if (!string.IsNullOrEmpty(schoolId))
  1689. {
  1690. result = result.Where(x => x.F_SchoolId == schoolId);
  1691. }
  1692. if (!string.IsNullOrEmpty(classroomNo))
  1693. {
  1694. result = result.Where(x => x.ClassRoomNo == classroomNo);
  1695. }
  1696. return result;
  1697. }
  1698. catch (Exception ex)
  1699. {
  1700. if (ex is ExceptionEx)
  1701. {
  1702. throw;
  1703. }
  1704. else
  1705. {
  1706. throw ExceptionEx.ThrowServiceException(ex);
  1707. }
  1708. }
  1709. }
  1710. /// <summary>
  1711. /// 课程表【教务】--班级下拉框信息
  1712. /// </summary>
  1713. /// <returns></returns>
  1714. public IEnumerable<SelectModel> GetClassData(string schoolId)
  1715. {
  1716. try
  1717. {
  1718. //前五年-后五年
  1719. var preYear = DateTime.Now.AddYears(-5).Year;
  1720. var nextYear = DateTime.Now.AddYears(5).Year;
  1721. var yearList = new List<string>();
  1722. for (int i = preYear; i <= nextYear; i++)
  1723. {
  1724. yearList.Add(string.Format("'{0}-{1}'", i.ToString().Substring(2), (i + 1).ToString().Substring(2)));
  1725. }
  1726. var yearListStr = string.Join(",", yearList.ToArray());
  1727. var strSql = new StringBuilder();
  1728. strSql.Append("select distinct REPLACE(a.TeachClassNo,a.LessonName,'') as value,c.ClassName as text from ");
  1729. strSql.Append("ArrangeLessonTerm a inner join ClassInfo c on REPLACE(a.TeachClassNo,a.LessonName,'')=c.ClassNo ");
  1730. strSql.Append("where a.AcademicYearNo in (" + yearListStr + ") ");
  1731. if (!string.IsNullOrEmpty(schoolId))
  1732. {
  1733. strSql.Append(" and a.F_SchoolId = '" + schoolId + "' ");
  1734. }
  1735. var result = this.BaseRepository("CollegeMIS").FindList<SelectModel>(strSql.ToString()).OrderBy(x => x.value);
  1736. return result;
  1737. }
  1738. catch (Exception ex)
  1739. {
  1740. if (ex is ExceptionEx)
  1741. {
  1742. throw;
  1743. }
  1744. else
  1745. {
  1746. throw ExceptionEx.ThrowServiceException(ex);
  1747. }
  1748. }
  1749. }
  1750. /// <summary>
  1751. /// 课程表【教务】--教师下拉框信息
  1752. /// </summary>
  1753. /// <param name="startDate"></param>
  1754. /// <returns></returns>
  1755. public IEnumerable<SelectModel> GetTeacherData(string schoolId)
  1756. {
  1757. try
  1758. {
  1759. //前五年-后五年
  1760. var preYear = DateTime.Now.AddYears(-1).Year;
  1761. var nextYear = DateTime.Now.AddYears(1).Year;
  1762. var yearList = new List<string>();
  1763. for (int i = preYear; i <= nextYear; i++)
  1764. {
  1765. yearList.Add(string.Format("'{0}-{1}'", i.ToString().Substring(2), (i + 1).ToString().Substring(2)));
  1766. }
  1767. var aa = new List<SelectModel>();
  1768. //必修课
  1769. //var teacherData = this.BaseRepository("CollegeMIS").FindList<ArrangeLessonTermEntity>(x => yearList.Contains(x.AcademicYearNo));
  1770. var teacherData = this.BaseRepository("CollegeMIS").FindList<ArrangeLessonTermEntity>(@"select EmpNo,EmpName,F_SchoolId from ArrangeLessonTerm where " +
  1771. " empname is not null and len(empname) >0 and AcademicYearNo in(" + string.Join(",", yearList) + ") ");
  1772. if (!string.IsNullOrEmpty(schoolId))
  1773. {
  1774. teacherData = teacherData.Where(x => x.F_SchoolId == schoolId);
  1775. }
  1776. var teacherDataModel = teacherData.Select(x => new { x.EmpNo, x.EmpName }).Distinct().ToList()
  1777. .Select(x => new SelectModel()
  1778. {
  1779. text = x.EmpName,
  1780. value = x.EmpNo
  1781. });
  1782. aa.AddRange(teacherDataModel);
  1783. //选修课
  1784. var teacherData2 = this.BaseRepository("CollegeMIS").FindList<ArrangeLessonTermOfElectiveEntity>(x => yearList.Contains(x.AcademicYearNo) && x.EmpName != null && x.EmpName.Length > 0);
  1785. if (!string.IsNullOrEmpty(schoolId))
  1786. {
  1787. teacherData2 = teacherData2.Where(x => x.F_SchoolId == schoolId);
  1788. }
  1789. var teacherDataModel2 = teacherData2.Select(x => new { x.EmpNo, x.EmpName }).Distinct().ToList()
  1790. .Select(x => new SelectModel()
  1791. {
  1792. text = x.EmpName,
  1793. value = x.EmpNo
  1794. });
  1795. aa.AddRange(teacherDataModel2);
  1796. var aaaa = aa.Select(x => new { x.text, x.value }).Distinct().ToList();
  1797. var aaaaa = aaaa.Select(x => new SelectModel()
  1798. {
  1799. text = x.text,
  1800. value = x.value
  1801. }).OrderBy(x => x.value);
  1802. return aaaaa;
  1803. }
  1804. catch (Exception ex)
  1805. {
  1806. if (ex is ExceptionEx)
  1807. {
  1808. throw;
  1809. }
  1810. else
  1811. {
  1812. throw ExceptionEx.ThrowServiceException(ex);
  1813. }
  1814. }
  1815. }
  1816. /// <summary>
  1817. /// 课程表【教务】--教室下拉框信息
  1818. /// </summary>
  1819. /// <returns></returns>
  1820. public IEnumerable<SelectModel> GetClassroomData(string schoolId)
  1821. {
  1822. try
  1823. {
  1824. //前五年-后五年
  1825. var preYear = DateTime.Now.AddYears(-5).Year;
  1826. var nextYear = DateTime.Now.AddYears(5).Year;
  1827. var yearList = new List<string>();
  1828. for (int i = preYear; i <= nextYear; i++)
  1829. {
  1830. yearList.Add(string.Format("'{0}-{1}'", i.ToString().Substring(2), (i + 1).ToString().Substring(2)));
  1831. }
  1832. var yearListStr = string.Join(",", yearList.ToArray());
  1833. var strSql = new StringBuilder();
  1834. strSql.Append("select distinct a.ClassroomNo as value,c.ClassroomName as text from ");
  1835. strSql.Append("ArrangeLessonTerm a inner join ClassroomInfo c on a.ClassroomNo=c.ClassroomNo ");
  1836. strSql.Append("where a.AcademicYearNo in (" + yearListStr + ") ");
  1837. if (!string.IsNullOrEmpty(schoolId))
  1838. {
  1839. strSql.Append(" and a.F_SchoolId = '" + schoolId + "' ");
  1840. }
  1841. var result = this.BaseRepository("CollegeMIS").FindList<SelectModel>(strSql.ToString()).OrderBy(x => x.value);
  1842. return result;
  1843. }
  1844. catch (Exception ex)
  1845. {
  1846. if (ex is ExceptionEx)
  1847. {
  1848. throw;
  1849. }
  1850. else
  1851. {
  1852. throw ExceptionEx.ThrowServiceException(ex);
  1853. }
  1854. }
  1855. }
  1856. public IEnumerable<CdDeptEntity> GetDepts(string academicYearNo, string semester)
  1857. {
  1858. try
  1859. {
  1860. //var data = BaseRepository("CollegeMIS").FindList<CdDeptEntity>();
  1861. //根据学年学期判断排课同步数据表中是否有数据:若有,说明该学年学期同步过;若没有,修改基础表,false;
  1862. var aa = this.BaseRepository("CollegeMIS").FindEntity<ArrangeLessonSyncEntity>(x => x.AcademicYearNo == academicYearNo && x.Semester == semester && x.STypeId == "2");
  1863. if (aa == null)
  1864. {
  1865. this.BaseRepository("CollegeMIS").ExecuteBySql("update CdDept set SyncFlag='false' ");
  1866. }
  1867. //数据
  1868. var db = BaseRepository("CollegeMIS");
  1869. db.BeginTrans();
  1870. var data = db.FindList<CdDeptEntity>("select * from CdDept where DeptId not in (select STableId from ArrangeLessonSync where AcademicYearNo='" + academicYearNo + "' and Semester='" + semester + "' )");
  1871. DateTime syncdate = DateTime.Now;
  1872. foreach (var item in data.Select(m => m.DeptId))
  1873. {
  1874. ArrangeLessonSyncEntity alsEntity = new ArrangeLessonSyncEntity();
  1875. alsEntity.Create();
  1876. alsEntity.AcademicYearNo = academicYearNo;
  1877. alsEntity.Semester = semester;
  1878. alsEntity.STypeId = "2";
  1879. alsEntity.SDate = syncdate;
  1880. alsEntity.STableId = item;
  1881. db.Insert(alsEntity);
  1882. }
  1883. db.Commit();
  1884. return data;
  1885. }
  1886. catch (Exception e)
  1887. {
  1888. Console.WriteLine(e);
  1889. throw;
  1890. }
  1891. }
  1892. public IEnumerable<CdDeptEntity> GetDeptsNotRecord(string academicYearNo, string semester)
  1893. {
  1894. try
  1895. {
  1896. //var data = BaseRepository("CollegeMIS").FindList<CdDeptEntity>();
  1897. var db = BaseRepository("CollegeMIS");
  1898. db.BeginTrans();
  1899. var data = db.FindList<CdDeptEntity>("select * from CdDept where DeptId not in (select STableId from ArrangeLessonSync where AcademicYearNo='" + academicYearNo + "' and Semester='" + semester + "' )");
  1900. db.Commit();
  1901. return data;
  1902. }
  1903. catch (Exception e)
  1904. {
  1905. Console.WriteLine(e);
  1906. throw;
  1907. }
  1908. }
  1909. public IEnumerable<CompanyEntity> GetSchools(string academicYearNo, string semester)
  1910. {
  1911. try
  1912. {
  1913. //var data = BaseRepository().FindList<CompanyEntity>();
  1914. //根据学年学期判断排课同步数据表中是否有数据:若有,说明该学年学期同步过;若没有,修改基础表,false;
  1915. var aa = this.BaseRepository("CollegeMIS").FindEntity<ArrangeLessonSyncEntity>(x => x.AcademicYearNo == academicYearNo && x.Semester == semester && x.STypeId == "1");
  1916. if (aa == null)
  1917. {
  1918. this.BaseRepository().ExecuteBySql("update LR_Base_Company set SyncFlag='false' ");
  1919. }
  1920. //数据
  1921. var dbCollegeMIS = BaseRepository("CollegeMIS");
  1922. dbCollegeMIS.BeginTrans();
  1923. var data = BaseRepository().FindList<CompanyEntity>("select * from LR_Base_Company where F_CompanyId not in (select STableId from " + dbCollegeMIS.getDbConnection().Database + ".dbo.ArrangeLessonSync where AcademicYearNo='" + academicYearNo + "' and Semester='" + semester + "' )");
  1924. DateTime syncdate = DateTime.Now;
  1925. foreach (var item in data.Select(m => m.F_CompanyId))
  1926. {
  1927. ArrangeLessonSyncEntity alsEntity = new ArrangeLessonSyncEntity();
  1928. alsEntity.Create();
  1929. alsEntity.AcademicYearNo = academicYearNo;
  1930. alsEntity.Semester = semester;
  1931. alsEntity.STypeId = "1";
  1932. alsEntity.SDate = syncdate;
  1933. alsEntity.STableId = item;
  1934. dbCollegeMIS.Insert(alsEntity);
  1935. }
  1936. dbCollegeMIS.Commit();
  1937. return data;
  1938. }
  1939. catch (Exception e)
  1940. {
  1941. Console.WriteLine(e);
  1942. throw;
  1943. }
  1944. }
  1945. public IEnumerable<CompanyEntity> GetSchoolsNotRecord(string academicYearNo, string semester)
  1946. {
  1947. try
  1948. {
  1949. //var data = BaseRepository().FindList<CompanyEntity>();
  1950. var dbCollegeMIS = BaseRepository("CollegeMIS");
  1951. dbCollegeMIS.BeginTrans();
  1952. var data = BaseRepository().FindList<CompanyEntity>("select * from LR_Base_Company where F_CompanyId not in (select STableId from " + dbCollegeMIS.getDbConnection().Database + ".dbo.ArrangeLessonSync where AcademicYearNo='" + academicYearNo + "' and Semester='" + semester + "' )");
  1953. dbCollegeMIS.Commit();
  1954. return data;
  1955. }
  1956. catch (Exception e)
  1957. {
  1958. Console.WriteLine(e);
  1959. throw;
  1960. }
  1961. }
  1962. public IEnumerable<CdLessonTypeEntity> GetLessonTypes()
  1963. {
  1964. try
  1965. {
  1966. var data = BaseRepository("CollegeMIS").FindList<CdLessonTypeEntity>();
  1967. return data;
  1968. }
  1969. catch (Exception e)
  1970. {
  1971. Console.WriteLine(e);
  1972. throw;
  1973. }
  1974. }
  1975. public IEnumerable<ArrangeLessonTermEntity> GetPageListForTeacherWorkload(Pagination paginationobj, string queryJson)
  1976. {
  1977. try
  1978. {
  1979. var queryParam = queryJson.ToJObject();
  1980. var strSql = new StringBuilder();
  1981. strSql.Append("select count(ALTId)as lessoncount,EmpName,EmpNo,1 as coefficient from ArrangeLessonTerm ");
  1982. strSql.Append(" WHERE 1=1 ");
  1983. strSql.Append($"and AcademicYearNo='{ queryParam["AcademicYearNo"]}' and Semester='{queryParam["Semester"]}' group by EmpName,EmpNo order by EmpNo ");
  1984. return this.BaseRepository("CollegeMIS").FindList<ArrangeLessonTermEntity>(strSql.ToString());
  1985. }
  1986. catch (Exception ex)
  1987. {
  1988. if (ex is ExceptionEx)
  1989. {
  1990. throw;
  1991. }
  1992. else
  1993. {
  1994. throw ExceptionEx.ThrowServiceException(ex);
  1995. }
  1996. }
  1997. }
  1998. /// <summary>
  1999. /// 教学工作量
  2000. /// </summary>
  2001. /// <param name="paginationobj"></param>
  2002. /// <param name="queryJson"></param>
  2003. /// <returns></returns>
  2004. public IEnumerable<ArrangeLessonTermEntity> GetPageListForTeacherWorkloadByEmpNo(Pagination paginationobj, string queryJson, string empNo)
  2005. {
  2006. try
  2007. {
  2008. var queryParam = queryJson.ToJObject();
  2009. var strSql = new StringBuilder();
  2010. strSql.Append("select count(t.ALTId) as lessoncount,t.LessonNo,t.LessonName,1 as coefficient from ArrangeLessonTerm t ");
  2011. strSql.Append($" WHERE 1=1 and t.EmpNo='{empNo}' ");
  2012. strSql.Append(" group by t.LessonNo,t.LessonName ");
  2013. return this.BaseRepository("CollegeMIS").FindList<ArrangeLessonTermEntity>(strSql.ToString());
  2014. }
  2015. catch (Exception ex)
  2016. {
  2017. if (ex is ExceptionEx)
  2018. {
  2019. throw;
  2020. }
  2021. else
  2022. {
  2023. throw ExceptionEx.ThrowServiceException(ex);
  2024. }
  2025. }
  2026. }
  2027. /// <summary>
  2028. /// 教学调度【教务】--课程下拉框信息
  2029. /// </summary>
  2030. /// <returns></returns>
  2031. public IEnumerable<SelectModel> GetLessonDataInTerm(string queryJson)
  2032. {
  2033. try
  2034. {
  2035. return this.BaseRepository("CollegeMIS").FindList<SelectModel>("select distinct t.LessonNo as value,t.LessonName as text from ArrangeLessonTerm t where 1=1 ");
  2036. }
  2037. catch (Exception ex)
  2038. {
  2039. if (ex is ExceptionEx)
  2040. {
  2041. throw;
  2042. }
  2043. else
  2044. {
  2045. throw ExceptionEx.ThrowServiceException(ex);
  2046. }
  2047. }
  2048. }
  2049. /// <summary>
  2050. /// 获取本学期开课计划
  2051. /// </summary>
  2052. /// <param name="academicYearNo"></param>
  2053. /// <param name="semester"></param>
  2054. /// <returns></returns>
  2055. public IEnumerable<TimeTable> GetAllClassLesson(string academicYearNo, string semester)
  2056. {
  2057. try
  2058. {
  2059. return this.BaseRepository("CollegeMIS").FindList<TimeTable>(@"select b.F_SchoolId,b.DeptNo,b.MajorNo,b.AcademicYearNo as AcademicYear,b.Semester,b.LessonNo,
  2060. b.LessonName, b.LessonTime, b.EmpNo, b.Empname EmpName, replace(b.TeachClassNo, b.LessonName, '') TeachClassNo, c.ClassroomName, b.ClassroomNo as ClassRoomNo, d.ClassName
  2061. from ArrangeLessonTerm b
  2062. left
  2063. join ClassroomInfo c on c.ClassroomNo = b.classroomNo
  2064. left
  2065. join ClassInfo d on replace(b.TeachClassNo, b.LessonName, '') = d.ClassNo
  2066. where b.AcademicYearNo = '" + academicYearNo + "' and b.Semester = '" + semester + @"'
  2067. and b.CheckMark = 1
  2068. group by b.F_SchoolId, b.DeptNo, b.MajorNo, b.AcademicYearNo, b.Semester, b.LessonNo, b.LessonName, b.LessonTime, b.EmpNo, b.Empname, b.TeachClassNo, c.ClassroomName, b.ClassroomNo, d.ClassName
  2069. ");
  2070. }
  2071. catch (Exception ex)
  2072. {
  2073. if (ex is ExceptionEx)
  2074. {
  2075. throw;
  2076. }
  2077. else
  2078. {
  2079. throw ExceptionEx.ThrowServiceException(ex);
  2080. }
  2081. }
  2082. }
  2083. /// <summary>
  2084. /// 按条件重置基础数据同步状态
  2085. /// </summary>
  2086. /// <param name="entity"></param>
  2087. /// <returns></returns>
  2088. public bool InitAsyncDataByCondition(ArrangeLessonTermEntity entity)
  2089. {
  2090. bool result = true;
  2091. var db = BaseRepository("CollegeMIS").BeginTrans();
  2092. try
  2093. {
  2094. foreach (var tablename in entity.SyncBasicTable.Split(','))
  2095. {
  2096. if (tablename == "CdDept")
  2097. {
  2098. //清空同步记录表
  2099. db.ExecuteBySql("delete from ArrangeLessonSync where AcademicYearNo='" +
  2100. entity.AcademicYearNo + "' and Semester='" + entity.Semester +
  2101. "' and STypeId='2'");
  2102. }
  2103. if (tablename == "CdMajor")
  2104. {
  2105. //清空同步记录表
  2106. db.ExecuteBySql("delete from ArrangeLessonSync where AcademicYearNo='" +
  2107. entity.AcademicYearNo + "' and Semester='" + entity.Semester +
  2108. "' and STypeId='3'");
  2109. }
  2110. if (tablename == "ClassInfo")
  2111. {
  2112. //清空同步记录表
  2113. db.ExecuteBySql("delete from ArrangeLessonSync where AcademicYearNo='" +
  2114. entity.AcademicYearNo + "' and Semester='" + entity.Semester +
  2115. "' and STypeId='4'");
  2116. }
  2117. if (tablename == "ClassroomInfo")
  2118. {
  2119. //清空同步记录表
  2120. db.ExecuteBySql("delete from ArrangeLessonSync where AcademicYearNo='" +
  2121. entity.AcademicYearNo + "' and Semester='" + entity.Semester +
  2122. "' and STypeId='6'");
  2123. }
  2124. if (tablename == "LessonInfo")
  2125. {
  2126. //清空同步记录表
  2127. db.ExecuteBySql("delete from ArrangeLessonSync where AcademicYearNo='" +
  2128. entity.AcademicYearNo + "' and Semester='" + entity.Semester +
  2129. "' and STypeId='5'");
  2130. }
  2131. if (tablename == "EmpInfo")
  2132. {
  2133. //清空同步记录表
  2134. db.ExecuteBySql("delete from ArrangeLessonSync where AcademicYearNo='" +
  2135. entity.AcademicYearNo + "' and Semester='" + entity.Semester +
  2136. "' and STypeId='7'");
  2137. }
  2138. //重置基础数据表
  2139. db.ExecuteBySql("update " + tablename + " set SyncFlag=0");
  2140. }
  2141. db.Commit();
  2142. }
  2143. catch (Exception e)
  2144. {
  2145. result = false;
  2146. }
  2147. return result;
  2148. }
  2149. /// <summary>
  2150. /// 获取列表分页数据
  2151. /// <param name="pagination">分页参数</param>
  2152. /// <summary>
  2153. /// <returns></returns>
  2154. public IEnumerable<LessonStatictisEntity> GetcoursestatictisList(Pagination pagination, string queryJson)
  2155. {
  2156. try
  2157. {
  2158. var strSql = new StringBuilder();
  2159. var queryParam = queryJson.ToJObject();
  2160. int weeks = queryParam["weeks"] == null ? 1 : queryParam["weeks"].ToInt();
  2161. if (weeks < 1 || weeks > 5) weeks = 1;
  2162. var deptNo = queryParam["deptNo"] == null ? string.Empty : queryParam["deptNo"].ToString();
  2163. var status = (queryParam["status"] == null ? "0" : queryParam["status"].ToString()).ToInt();
  2164. string starttime = queryParam["StartTime"].IsEmpty() ? DateTime.Now.Date.ToString() : queryParam["StartTime"].ToString();
  2165. string endtime = queryParam["EndTime"].IsEmpty() ? DateTime.Now.Date.ToString() : queryParam["EndTime"].ToString();
  2166. var notimeSql = string.Empty;
  2167. var notimeSql2 = string.Empty;
  2168. if (!queryParam["noTime"].IsEmpty())
  2169. {
  2170. foreach (var item in queryParam["noTime"].ToString().Split('&'))
  2171. {
  2172. notimeSql += $" and lessondate not between '{item.Split(',')[0]}' and '{item.Split(',')[1]}'";
  2173. notimeSql2 += $" and clocktime not between '{item.Split(',')[0]}' and '{item.Split(',')[1]}'";
  2174. }
  2175. }
  2176. strSql.Append("select a.*,b.jobrank as zhiwu,b.ProfessionalTitle as zhicheng,b.F_DepartmentId as dept,b.feestandard,b.Weekcourses,ta.actcourses as monthactcourses,ta.actcourses-(" + weeks + "*b.Weekcourses) as zhesuan_monthactcourses, ");
  2177. strSql.Append(" case when ta.actcourses is null then 0 when b.jobrank in(5,6) then (ta.actcourses-" + weeks + "*b.Weekcourses)*b.feestandard ");
  2178. strSql.Append(" when b.jobrank in(1,2,3,4) then (case when ta.actcourses<=(" + weeks + "*b.weekcourses)/2 then ta.actcourses*b.feestandard else " + weeks + "*b.weekcourses*b.feestandard/2 end) ");
  2179. strSql.Append(" else 0 end as actfeestandard ");
  2180. strSql.Append("from ");
  2181. strSql.Append("(select count(*) as courses,a.empno,a.empname from ArrangeLessonTerm a where lessondate between '" + starttime + "' and '" + endtime + "' " + notimeSql + " group by a.empno,a.empname ) a ");
  2182. strSql.Append("left join (select count(*) as actcourses,EmpNo from (select ff.EmpNo,ff.LessonDate,ff.LessonTime from (select aall.* from (select EmpNo,ALTId from Teach_attendance where LessonSortNo='1' and clocktime between '" + starttime + "' and '" + endtime + "' " + notimeSql2 + " group by EmpNo,ALTId) ee left join ArrangeLessonTerm aall on aall.ALTId=ee.ALTId) ff group by ff.EmpNo,ff.LessonDate,ff.LessonTime) gg group by gg.EmpNo ) ta on ta.empno=a.empno ");
  2183. strSql.Append("left join empinfo b on a.empno=b.empno ");
  2184. strSql.Append("where a.empno is not null and (b.IsInActiveStatus=" + status + " or (0=" + status + " and b.IsInActiveStatus!=2)) ");
  2185. if (!string.IsNullOrEmpty(deptNo))
  2186. {
  2187. strSql.Append("and b.F_DepartmentId='" + deptNo + "' ");
  2188. }
  2189. return this.BaseRepository("CollegeMIS").FindList<LessonStatictisEntity>(strSql.ToString(), pagination);
  2190. }
  2191. catch (Exception ex)
  2192. {
  2193. if (ex is ExceptionEx)
  2194. {
  2195. throw;
  2196. }
  2197. else
  2198. {
  2199. throw ExceptionEx.ThrowServiceException(ex);
  2200. }
  2201. }
  2202. }
  2203. /// <summary>
  2204. /// 导入
  2205. /// </summary>
  2206. /// <param name="dt"></param>
  2207. /// <param name="fileId"></param>
  2208. /// <returns></returns>
  2209. public string ArrangeLessonTermImport(DataTable dt, string fileId)
  2210. {
  2211. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  2212. try
  2213. {
  2214. int snum = 0;
  2215. int fnum = 0;
  2216. //插入时间
  2217. var Insertdate = DateTime.Now;
  2218. if (dt.Rows.Count > 0)
  2219. {
  2220. DataTable failDt = new DataTable();
  2221. dt.Columns.Add("导入错误", typeof(string));
  2222. foreach (DataColumn dc in dt.Columns)
  2223. {
  2224. failDt.Columns.Add(dc.ColumnName, dc.DataType);
  2225. }
  2226. IEnumerable<ArrangeLessonTermEntity> ArrangeLessonTermHistory = db.FindList<ArrangeLessonTermEntity>("select * from ArrangeLessonTerm");
  2227. var ArrangeLessonTerminsert = new List<ArrangeLessonTermEntity>();
  2228. // 循环遍历导入
  2229. foreach (DataRow dr in dt.Rows)
  2230. {
  2231. try
  2232. {
  2233. #region 必填项空验证
  2234. if (dr["上课日期"].ToString().IsEmpty())
  2235. {
  2236. throw (new Exception("上课日期不能为空"));
  2237. }
  2238. if (dr["开始时间"].ToString().IsEmpty())
  2239. {
  2240. throw (new Exception("开始时间不能为空"));
  2241. }
  2242. if (dr["结束时间"].ToString().IsEmpty())
  2243. {
  2244. throw (new Exception("结束时间不能为空"));
  2245. }
  2246. if (dr["学年"].ToString().IsEmpty())
  2247. {
  2248. throw (new Exception("学年不能为空"));
  2249. }
  2250. if (dr["学期"].ToString().IsEmpty())
  2251. {
  2252. throw (new Exception("学期不能为空"));
  2253. }
  2254. if (dr["班级编号"].ToString().IsEmpty())
  2255. {
  2256. throw (new Exception("班级编号不能为空"));
  2257. }
  2258. if (dr["班级名称"].ToString().IsEmpty())
  2259. {
  2260. throw (new Exception("班级名称不能为空"));
  2261. }
  2262. if (dr["课程编号"].ToString().IsEmpty())
  2263. {
  2264. throw (new Exception("课程编号不能为空"));
  2265. }
  2266. if (dr["课程名称"].ToString().IsEmpty())
  2267. {
  2268. throw (new Exception("课程名称不能为空"));
  2269. }
  2270. if (dr["教师编号"].ToString().IsEmpty())
  2271. {
  2272. throw (new Exception("教师编号不能为空"));
  2273. }
  2274. if (dr["教师名称"].ToString().IsEmpty())
  2275. {
  2276. throw (new Exception("教师名称不能为空"));
  2277. }
  2278. if (dr["教室编号"].ToString().IsEmpty())
  2279. {
  2280. throw (new Exception("教室编号不能为空"));
  2281. }
  2282. if (dr["教室名称"].ToString().IsEmpty())
  2283. {
  2284. throw (new Exception("教室名称不能为空"));
  2285. }
  2286. if (dr["上课节次"].ToString().IsEmpty())
  2287. {
  2288. throw (new Exception("上课节次不能为空"));
  2289. }
  2290. #endregion
  2291. #region 开始时间、结束时间格式判断
  2292. var st = new TimeSpan();
  2293. var stFlag = TimeSpan.TryParse(dr["开始时间"].ToString(), out st);
  2294. if (!stFlag)
  2295. {
  2296. throw (new Exception("开始时间格式有误"));
  2297. }
  2298. var et = new TimeSpan();
  2299. var etFlag = TimeSpan.TryParse(dr["结束时间"].ToString(), out et);
  2300. if (!etFlag)
  2301. {
  2302. throw (new Exception("结束时间格式有误"));
  2303. }
  2304. #endregion
  2305. //基础数据
  2306. var lessonEntity = db.FindList<LessonInfoEntity>($"select * from Lessoninfo where LessonName='" + dr["课程名称"].ToString().Trim() + "' and LessonNo='" + dr["课程编号"].ToString().Trim() + "' and CheckMark=1 ");
  2307. var classEntity = db.FindList<ClassInfoEntity>($"select * from ClassInfo where ClassName='" + dr["班级名称"].ToString().Trim() + "' and ClassNo='" + dr["班级编号"].ToString().Trim() + "' and CheckMark=1 ");
  2308. var classroomEntity = db.FindList<ClassroomInfoEntity>($"select * from ClassroomInfo where ClassroomName='" + dr["教室名称"].ToString().Trim() + "' and ClassroomNo='" + dr["教室编号"].ToString().Trim() + "' and CheckMark=1 ");
  2309. var empinfoEntity = db.FindList<EmpInfoEntity>($"select * from EmpInfo where EmpName='" + dr["教师名称"].ToString().Trim() + "' and EmpNo='" + dr["教师编号"].ToString().Trim() + "' and CheckMark=1 ");
  2310. var CompanyEntity = BaseRepository().FindList<CompanyEntity>(x => x.F_EnabledMark == 1).ToList().FirstOrDefault();
  2311. if (lessonEntity.Count() <= 0)
  2312. throw (new Exception("查无此课程"));
  2313. if (classEntity.Count() <= 0)
  2314. throw (new Exception("查无此班级"));
  2315. if (empinfoEntity.Count() <= 0)
  2316. throw (new Exception("查无此教师"));
  2317. if (classroomEntity.Count() <= 0)
  2318. throw (new Exception("查无此教室"));
  2319. //写入要导入替换的数据
  2320. ArrangeLessonTermEntity arrangeLessonTermEntity = new ArrangeLessonTermEntity
  2321. {
  2322. ALTId = Guid.NewGuid().ToString(),
  2323. LessonDate = dr["上课日期"].ToString().ToDate(),
  2324. StartTime = st.ToString(@"hh\:mm"),
  2325. EndTime = et.ToString(@"hh\:mm"),
  2326. AcademicYearNo = dr["学年"].ToString(),
  2327. Semester = dr["学期"].ToString(),
  2328. DeptNo = classEntity.FirstOrDefault().DeptNo,
  2329. MajorNo = classEntity.FirstOrDefault().MajorNo,
  2330. LessonNo = lessonEntity.FirstOrDefault().LessonNo,
  2331. LessonName = lessonEntity.FirstOrDefault().LessonName,
  2332. TeachClassNo = lessonEntity.FirstOrDefault().LessonName + classEntity.FirstOrDefault().ClassNo,
  2333. EmpNo = empinfoEntity.FirstOrDefault().EmpNo,
  2334. EmpName = empinfoEntity.FirstOrDefault().EmpName,
  2335. ClassroomNo = classroomEntity.FirstOrDefault().ClassroomNo,
  2336. LessonTime = dr["上课节次"].ToString(),
  2337. LessonSortNo = lessonEntity.FirstOrDefault().LessonSortNo,
  2338. //默认数;
  2339. CheckMark = "1",
  2340. InsertDate = Insertdate,
  2341. IsImport = true,
  2342. F_SchoolId = CompanyEntity.F_CompanyId
  2343. };
  2344. #region 判断是否重复
  2345. if (ArrangeLessonTermHistory.Count(m => m.AcademicYearNo == arrangeLessonTermEntity.AcademicYearNo && m.Semester == arrangeLessonTermEntity.Semester
  2346. && m.LessonNo == arrangeLessonTermEntity.LessonNo && m.LessonDate.Value.Date == arrangeLessonTermEntity.LessonDate.Value.Date
  2347. && m.DeptNo == arrangeLessonTermEntity.DeptNo && m.MajorNo == arrangeLessonTermEntity.MajorNo
  2348. && m.TeachClassNo == arrangeLessonTermEntity.TeachClassNo && m.EmpNo == arrangeLessonTermEntity.EmpNo
  2349. && m.ClassroomNo == arrangeLessonTermEntity.ClassroomNo && m.LessonTime == arrangeLessonTermEntity.LessonTime
  2350. && m.F_SchoolId == arrangeLessonTermEntity.F_SchoolId) == 0
  2351. && ArrangeLessonTerminsert.Count(m => m.AcademicYearNo == arrangeLessonTermEntity.AcademicYearNo && m.Semester == arrangeLessonTermEntity.Semester
  2352. && m.LessonNo == arrangeLessonTermEntity.LessonNo && m.LessonDate.Value.Date == arrangeLessonTermEntity.LessonDate.Value.Date
  2353. && m.DeptNo == arrangeLessonTermEntity.DeptNo && m.MajorNo == arrangeLessonTermEntity.MajorNo
  2354. && m.TeachClassNo == arrangeLessonTermEntity.TeachClassNo && m.EmpNo == arrangeLessonTermEntity.EmpNo
  2355. && m.ClassroomNo == arrangeLessonTermEntity.ClassroomNo && m.LessonTime == arrangeLessonTermEntity.LessonTime
  2356. && m.F_SchoolId == arrangeLessonTermEntity.F_SchoolId) == 0)
  2357. {
  2358. ArrangeLessonTerminsert.Add(arrangeLessonTermEntity);
  2359. snum++;
  2360. }
  2361. else
  2362. {
  2363. throw (new Exception("当前数据重复"));
  2364. }
  2365. #endregion
  2366. }
  2367. catch (Exception ex)
  2368. {
  2369. fnum++;
  2370. dr["导入错误"] = ex.Message;
  2371. failDt.Rows.Add(dr.ItemArray);
  2372. }
  2373. }
  2374. //执行导入
  2375. db.Insert(ArrangeLessonTerminsert);
  2376. db.Commit();
  2377. if (failDt.Rows.Count > 0)
  2378. {
  2379. string errordt = failDt.ToJson();
  2380. cache.Write<string>(cacheKey + fileId, errordt, CacheId.excel);
  2381. }
  2382. if (snum > 0)
  2383. {
  2384. //写入开课计划数据
  2385. InsertTeachClassDataInImport(Insertdate);
  2386. }
  2387. }
  2388. return snum + "|" + fnum;
  2389. }
  2390. catch (Exception ex)
  2391. {
  2392. db.Rollback();
  2393. if (ex is ExceptionEx)
  2394. {
  2395. throw;
  2396. }
  2397. else
  2398. {
  2399. throw ExceptionEx.ThrowServiceException(ex);
  2400. }
  2401. }
  2402. }
  2403. public string ArrangeLessonTermImportPk(DataTable dt, string fileId)
  2404. {
  2405. var db = this.BaseRepository("CollegeMIS").BeginTrans();
  2406. try
  2407. {
  2408. int snum = 0;
  2409. int fnum = 0;
  2410. //插入时间
  2411. var Insertdate = DateTime.Now;
  2412. if (dt.Rows.Count > 0)
  2413. {
  2414. var stt = new Stopwatch();
  2415. stt.Start();
  2416. DataTable failDt = new DataTable();
  2417. dt.Columns.Add("导入错误", typeof(string));
  2418. foreach (DataColumn dc in dt.Columns)
  2419. {
  2420. failDt.Columns.Add(dc.ColumnName, dc.DataType);
  2421. }
  2422. IEnumerable<ArrangeLessonTermEntity> ArrangeLessonTermHistory = db.FindList<ArrangeLessonTermEntity>("select * from ArrangeLessonTerm");
  2423. var ArrangeLessonTerminsert = new List<ArrangeLessonTermEntity>();
  2424. #region 上课时间
  2425. var lessonTimes = new Dictionary<int, Tuple<string, string>>();
  2426. lessonTimes.Add(1, new Tuple<string, string>("8:30", "9:15"));
  2427. lessonTimes.Add(2, new Tuple<string, string>("9:25", "10:10"));
  2428. lessonTimes.Add(3, new Tuple<string, string>("10:20", "11:00"));
  2429. lessonTimes.Add(4, new Tuple<string, string>("11:10", "11:50"));
  2430. lessonTimes.Add(5, new Tuple<string, string>("13:30", "14:15"));
  2431. lessonTimes.Add(6, new Tuple<string, string>("14:25", "15:10"));
  2432. lessonTimes.Add(7, new Tuple<string, string>("15:20", "16:00"));
  2433. lessonTimes.Add(8, new Tuple<string, string>("16:10", "16:50"));
  2434. lessonTimes.Add(9, new Tuple<string, string>("17:00", "17:40"));
  2435. lessonTimes.Add(10, new Tuple<string, string>("17:50", "18:30"));
  2436. #endregion
  2437. var startDate = DateTime.Today;
  2438. var endDate = DateTime.Today;
  2439. #region 基础数据
  2440. var lessons = db.FindList<LessonInfoEntity>(x => x.CheckMark == true);
  2441. var classes = db.FindList<ClassInfoEntity>(x => x.CheckMark == true);
  2442. var classrooms = db.FindList<ClassroomInfoEntity>(x => x.CheckMark == true);
  2443. var empinfo = db.FindList<EmpInfoEntity>(x => x.CheckMark == true);
  2444. var CompanyEntity = BaseRepository().FindEntity<CompanyEntity>(x => x.F_EnabledMark == 1);
  2445. #endregion
  2446. // 循环遍历导入
  2447. foreach (DataRow dr in dt.Rows)
  2448. {
  2449. try
  2450. {
  2451. #region 必填项空验证
  2452. if (dr["开始日期"].ToString().IsEmpty())
  2453. {
  2454. throw (new Exception("开始日期不能为空"));
  2455. }
  2456. if (dr["结束日期"].ToString().IsEmpty())
  2457. {
  2458. throw (new Exception("结束日期不能为空"));
  2459. }
  2460. if (dr["班级编号"].ToString().IsEmpty())
  2461. {
  2462. throw (new Exception("班级编号不能为空"));
  2463. }
  2464. if (dr["班级名称"].ToString().IsEmpty())
  2465. {
  2466. throw (new Exception("班级名称不能为空"));
  2467. }
  2468. if (dr["课程编号"].ToString().IsEmpty())
  2469. {
  2470. throw (new Exception("课程编号不能为空"));
  2471. }
  2472. if (dr["课程名称"].ToString().IsEmpty())
  2473. {
  2474. throw (new Exception("课程名称不能为空"));
  2475. }
  2476. if (dr["教师编号"].ToString().IsEmpty())
  2477. {
  2478. throw (new Exception("教师编号不能为空"));
  2479. }
  2480. if (dr["教师名称"].ToString().IsEmpty())
  2481. {
  2482. throw (new Exception("教师名称不能为空"));
  2483. }
  2484. if (dr["教室编号"].ToString().IsEmpty())
  2485. {
  2486. throw (new Exception("教室编号不能为空"));
  2487. }
  2488. if (dr["教室名称"].ToString().IsEmpty())
  2489. {
  2490. throw (new Exception("教室名称不能为空"));
  2491. }
  2492. if (dr["上课节次"].ToString().IsEmpty())
  2493. {
  2494. throw (new Exception("上课节次不能为空"));
  2495. }
  2496. if (dr["课程类型"].ToString().IsEmpty())
  2497. {
  2498. throw (new Exception("课程类型不能为空"));
  2499. }
  2500. if (dr["起始周"].ToString().IsEmpty())
  2501. {
  2502. throw (new Exception("起始周不能为空"));
  2503. }
  2504. if (dr["结束周"].ToString().IsEmpty())
  2505. {
  2506. throw (new Exception("结束周不能为空"));
  2507. }
  2508. if (dr["上课周几"].ToString().IsEmpty())
  2509. {
  2510. throw (new Exception("上课周几不能为空"));
  2511. }
  2512. #endregion
  2513. #region 开始时间、结束时间格式判断
  2514. //var st = new TimeSpan();
  2515. //var stFlag = TimeSpan.TryParse(dr["开始时间"].ToString(), out st);
  2516. //if (!stFlag)
  2517. //{
  2518. // throw (new Exception("开始时间格式有误"));
  2519. //}
  2520. //var et = new TimeSpan();
  2521. //var etFlag = TimeSpan.TryParse(dr["结束时间"].ToString(), out et);
  2522. //if (!etFlag)
  2523. //{
  2524. // throw (new Exception("结束时间格式有误"));
  2525. //}
  2526. #endregion
  2527. #region 基础数据
  2528. var lessonEntity = lessons.FirstOrDefault(x => x.LessonName == dr["课程名称"].ToString().Trim() && x.LessonNo == dr["课程编号"].ToString().Trim());
  2529. if (lessonEntity == null)
  2530. throw (new Exception("查无此课程"));
  2531. var classEntity = classes.FirstOrDefault(x => x.ClassName == dr["班级名称"].ToString().Trim() && x.ClassNo == dr["班级编号"].ToString().Trim());
  2532. if (classEntity == null)
  2533. throw (new Exception("查无此班级"));
  2534. var classroomEntity = classrooms.FirstOrDefault(x => x.ClassroomName == dr["教室名称"].ToString().Trim() && x.ClassroomNo == dr["教室编号"].ToString().Trim());
  2535. if (classroomEntity == null)
  2536. throw (new Exception("查无此教室"));
  2537. var empinfoEntity = empinfo.FirstOrDefault(x => x.EmpName == dr["教师名称"].ToString().Trim() && x.EmpNo == dr["教师编号"].ToString().Trim());
  2538. if (empinfoEntity == null)
  2539. throw (new Exception("查无此教师"));
  2540. #endregion
  2541. var semesterAndYear = Common.GetSemesterAndYear(dr["开始日期"].ToString());
  2542. #region 初始化学期时间
  2543. startDate = dr["开始日期"].ToDate();
  2544. endDate = dr["结束日期"].ToDate();
  2545. #endregion
  2546. #region 计算课程开始结束 时间
  2547. var startWeek = dr["起始周"].ToInt();
  2548. var lessonStartDate = startDate.AddDays((startWeek - 1) * 7);
  2549. if (lessonStartDate < startDate) lessonStartDate = startDate;
  2550. var endWeek = dr["结束周"].ToInt();
  2551. var lessonEndDate = startDate.AddDays(endWeek * 7 - 1);
  2552. if (lessonEndDate > endDate) lessonEndDate = endDate;
  2553. #endregion
  2554. var weekType = dr["课程类型"].ToString();
  2555. #region 计算真正的上课时间
  2556. var lessonWeekData = dr["上课周几"].ToInt();
  2557. var lessonStartDateWeek = (int)lessonStartDate.DayOfWeek;
  2558. if (lessonStartDateWeek == 0) lessonStartDateWeek = 7;
  2559. var trueStartDate = lessonStartDate;
  2560. if (lessonStartDateWeek <= lessonWeekData)
  2561. {
  2562. trueStartDate = lessonStartDate.AddDays(lessonWeekData - lessonStartDateWeek);
  2563. }
  2564. else
  2565. {
  2566. trueStartDate = lessonStartDate.AddDays(7 - (lessonStartDateWeek - lessonWeekData));
  2567. }
  2568. if (weekType == "双周")
  2569. {
  2570. trueStartDate = trueStartDate.AddDays(7);
  2571. }
  2572. #endregion
  2573. var intLesson = dr["上课节次"].ToInt();
  2574. var lessonTime = lessonTimes[intLesson];
  2575. while (true)
  2576. {
  2577. //写入要导入替换的数据
  2578. ArrangeLessonTermEntity arrangeLessonTermEntity = new ArrangeLessonTermEntity
  2579. {
  2580. ALTId = Guid.NewGuid().ToString(),
  2581. LessonDate = trueStartDate,
  2582. StartTime = TimeSpan.Parse(lessonTime.Item1).ToString(@"hh\:mm"),
  2583. EndTime = TimeSpan.Parse(lessonTime.Item2).ToString(@"hh\:mm"),
  2584. AcademicYearNo = semesterAndYear.AcademicYearShort,
  2585. Semester = semesterAndYear.Semester,
  2586. DeptNo = classEntity.DeptNo,
  2587. MajorNo = classEntity.MajorNo,
  2588. LessonNo = lessonEntity.LessonNo,
  2589. LessonName = lessonEntity.LessonName,
  2590. TeachClassNo = lessonEntity.LessonName + classEntity.ClassNo,
  2591. EmpNo = empinfoEntity.EmpNo,
  2592. EmpName = empinfoEntity.EmpName,
  2593. ClassroomNo = classroomEntity.ClassroomNo,
  2594. LessonTime = $"{dr["上课周几"].ToString()}{dr["上课节次"].ToString()}",
  2595. LessonSortNo = lessonEntity.LessonSortNo,
  2596. //默认数;
  2597. CheckMark = "1",
  2598. InsertDate = Insertdate,
  2599. IsImport = true,
  2600. F_SchoolId = CompanyEntity.F_CompanyId
  2601. };
  2602. #region 判断是否重复
  2603. if (ArrangeLessonTermHistory.Count(m => m.AcademicYearNo == arrangeLessonTermEntity.AcademicYearNo && m.Semester == arrangeLessonTermEntity.Semester
  2604. && m.LessonNo == arrangeLessonTermEntity.LessonNo && m.LessonDate.Value.Date == arrangeLessonTermEntity.LessonDate.Value.Date
  2605. && m.DeptNo == arrangeLessonTermEntity.DeptNo && m.MajorNo == arrangeLessonTermEntity.MajorNo
  2606. && m.TeachClassNo == arrangeLessonTermEntity.TeachClassNo && m.EmpNo == arrangeLessonTermEntity.EmpNo
  2607. && m.ClassroomNo == arrangeLessonTermEntity.ClassroomNo && m.LessonTime == arrangeLessonTermEntity.LessonTime
  2608. && m.F_SchoolId == arrangeLessonTermEntity.F_SchoolId) == 0
  2609. && ArrangeLessonTerminsert.Count(m => m.AcademicYearNo == arrangeLessonTermEntity.AcademicYearNo && m.Semester == arrangeLessonTermEntity.Semester
  2610. && m.LessonNo == arrangeLessonTermEntity.LessonNo && m.LessonDate.Value.Date == arrangeLessonTermEntity.LessonDate.Value.Date
  2611. && m.DeptNo == arrangeLessonTermEntity.DeptNo && m.MajorNo == arrangeLessonTermEntity.MajorNo
  2612. && m.TeachClassNo == arrangeLessonTermEntity.TeachClassNo && m.EmpNo == arrangeLessonTermEntity.EmpNo
  2613. && m.ClassroomNo == arrangeLessonTermEntity.ClassroomNo && m.LessonTime == arrangeLessonTermEntity.LessonTime
  2614. && m.F_SchoolId == arrangeLessonTermEntity.F_SchoolId) == 0)
  2615. {
  2616. ArrangeLessonTerminsert.Add(arrangeLessonTermEntity);
  2617. }
  2618. else
  2619. {
  2620. //throw (new Exception("当前数据重复"));
  2621. }
  2622. #endregion
  2623. if (weekType == "全周")
  2624. {
  2625. trueStartDate = trueStartDate.AddDays(7);
  2626. }
  2627. else
  2628. {
  2629. trueStartDate = trueStartDate.AddDays(14);
  2630. }
  2631. if (trueStartDate > lessonEndDate) break;
  2632. }
  2633. snum++;
  2634. }
  2635. catch (Exception ex)
  2636. {
  2637. fnum++;
  2638. dr["导入错误"] = ex.Message;
  2639. failDt.Rows.Add(dr.ItemArray);
  2640. }
  2641. }
  2642. //执行导入
  2643. db.Insert(ArrangeLessonTerminsert);
  2644. db.Commit();
  2645. if (failDt.Rows.Count > 0)
  2646. {
  2647. string errordt = failDt.ToJson();
  2648. cache.Write<string>(cacheKey + fileId, errordt, CacheId.excel);
  2649. }
  2650. if (snum > 0)
  2651. {
  2652. //写入开课计划数据
  2653. InsertTeachClassDataInImport(Insertdate);
  2654. }
  2655. }
  2656. return snum + "|" + fnum;
  2657. }
  2658. catch (Exception ex)
  2659. {
  2660. db.Rollback();
  2661. if (ex is ExceptionEx)
  2662. {
  2663. throw;
  2664. }
  2665. else
  2666. {
  2667. throw ExceptionEx.ThrowServiceException(ex);
  2668. }
  2669. }
  2670. }
  2671. /// <summary>
  2672. /// 课表导入时,写入开课计划数据
  2673. /// </summary>
  2674. /// <param name="insertdate">写入时间</param>
  2675. public bool InsertTeachClassDataInImport(DateTime insertdate)
  2676. {
  2677. bool result = false;
  2678. var date = insertdate.AddSeconds(1);
  2679. try
  2680. {
  2681. IEnumerable<ArrangeLessonTermEntity> ArrangeLessonTermData = BaseRepository("CollegeMIS").FindList<ArrangeLessonTermEntity>("SELECT t.* from ArrangeLessonTerm t WHERE t.InsertDate >= '" + insertdate + "' and t.InsertDate < '" + date + "' and t.IsImport=1 ");
  2682. if (ArrangeLessonTermData.Any())
  2683. {
  2684. //表已有数据
  2685. var TeachClassData = this.BaseRepository("CollegeMIS").FindList<TeachClassEntity>();
  2686. //待插入数据
  2687. var insertTeachClassDataList = new List<TeachClassEntity>();
  2688. var teachclasslist = ArrangeLessonTermData.GroupBy(x => new { x.AcademicYearNo, x.Semester, x.TeachClassNo, x.LessonNo, x.LessonName, x.EmpNo, x.LessonSortNo })
  2689. .Select(x => new TeachClassEntity
  2690. {
  2691. AcademicYearNo = x.Key.AcademicYearNo,
  2692. Semester = x.Key.Semester,
  2693. LessonNo = x.Key.LessonNo,
  2694. LessonName = x.Key.LessonName,
  2695. LessonSortNo = x.Key.LessonSortNo,
  2696. TeachClassNo = x.Key.TeachClassNo.Replace(x.Key.LessonName, ""),
  2697. EmpNo = x.Key.EmpNo,
  2698. F_SchoolId = x.FirstOrDefault().F_SchoolId,
  2699. DeptNo = x.FirstOrDefault().DeptNo,
  2700. MajorNo = x.FirstOrDefault().MajorNo,
  2701. Grade = this.BaseRepository("CollegeMIS").FindEntity<ClassInfoEntity>(m => m.ClassNo == x.Key.TeachClassNo.Replace(x.Key.LessonName, ""))?.Grade
  2702. });
  2703. foreach (var teachClassEntity in teachclasslist)
  2704. {
  2705. var insertTeachClassData = teachClassEntity;
  2706. //非空判断
  2707. if (TeachClassData.Count(m => m.AcademicYearNo == insertTeachClassData.AcademicYearNo &&
  2708. m.Semester == insertTeachClassData.Semester && m.DeptNo == insertTeachClassData.DeptNo &&
  2709. m.MajorNo == insertTeachClassData.MajorNo && m.LessonNo == insertTeachClassData.LessonNo &&
  2710. m.Grade == insertTeachClassData.Grade && m.LessonSortNo == insertTeachClassData.LessonSortNo &&
  2711. m.TeachClassNo == insertTeachClassData.TeachClassNo && m.EmpNo == insertTeachClassData.EmpNo &&
  2712. m.F_SchoolId == insertTeachClassData.F_SchoolId) == 0
  2713. && insertTeachClassDataList.Count(m => m.AcademicYearNo == insertTeachClassData.AcademicYearNo &&
  2714. m.Semester == insertTeachClassData.Semester && m.DeptNo == insertTeachClassData.DeptNo &&
  2715. m.MajorNo == insertTeachClassData.MajorNo && m.LessonNo == insertTeachClassData.LessonNo &&
  2716. m.Grade == insertTeachClassData.Grade && m.LessonSortNo == insertTeachClassData.LessonSortNo &&
  2717. m.TeachClassNo == insertTeachClassData.TeachClassNo && m.EmpNo == insertTeachClassData.EmpNo &&
  2718. m.F_SchoolId == insertTeachClassData.F_SchoolId) == 0)
  2719. {
  2720. insertTeachClassDataList.Add(insertTeachClassData);
  2721. }
  2722. }
  2723. this.BaseRepository("CollegeMIS").Insert(insertTeachClassDataList);
  2724. #region 写入专业开课计划数据
  2725. //todo:wx
  2726. //历史数据
  2727. var openLessonPlanData = BaseRepository("CollegeMIS").FindList<OpenLessonPlanEntity>();
  2728. var Teachdatetime = DateTime.Now;
  2729. var insertDataList = new List<OpenLessonPlanEntity>();
  2730. var lessonData = BaseRepository("CollegeMIS").FindList<LessonInfoEntity>().ToList();
  2731. var openlessonplanlist = teachclasslist.GroupBy(x => new { x.AcademicYearNo, x.Semester, x.DeptNo, x.MajorNo, x.Grade, x.LessonNo, x.LessonName, x.LessonSortNo })
  2732. .Select(x => new OpenLessonPlanEntity()
  2733. {
  2734. AcademicYearNo = x.Key.AcademicYearNo,
  2735. Semester = x.Key.Semester,
  2736. DeptNo = x.Key.DeptNo,
  2737. MajorNo = x.Key.MajorNo,
  2738. Grade = x.Key.Grade,
  2739. LessonNo = x.Key.LessonNo,
  2740. LessonName = x.Key.LessonName,
  2741. LessonSortNo = x.Key.LessonSortNo,
  2742. F_SchoolId = x.FirstOrDefault().F_SchoolId
  2743. });
  2744. foreach (var item in openlessonplanlist)
  2745. {
  2746. var insertData = new OpenLessonPlanEntity()
  2747. {
  2748. MakeDate = Teachdatetime,
  2749. AcademicYearNo = item.AcademicYearNo,
  2750. Semester = item.Semester,
  2751. DeptNo = item.DeptNo,
  2752. MajorNo = item.MajorNo,
  2753. LessonNo = item.LessonNo,
  2754. LessonName = item.LessonName,
  2755. PartCode = "",
  2756. Grade = item.Grade,
  2757. LessonSortNo = item.LessonSortNo,
  2758. LessonSortDetailNo = lessonData
  2759. .FirstOrDefault(m => m.LessonNo == item.LessonSortDetailNo)?.LessonSortDetailNo,
  2760. StartWeek = item.StartWeek,
  2761. EndWeek = item.EndWeek,
  2762. CheckStyleNo = "1",
  2763. ScoreRecordStyleNo = "1",
  2764. TeachDeptNo = item.DeptNo,
  2765. StudyScore = 0,
  2766. AmendDate = Teachdatetime,
  2767. ClassroomType = 1,
  2768. ClassroomPracticeType = 99,
  2769. CheckMarkDept = "1",
  2770. CheckMark = "1",
  2771. TestMark = 0,
  2772. F_SchoolId = item.F_SchoolId,
  2773. State = 1,
  2774. ExamType = "1"
  2775. };
  2776. if (openLessonPlanData.Count(m => m.AcademicYearNo == insertData.AcademicYearNo && m.Semester == insertData.Semester &&
  2777. m.MajorNo == insertData.MajorNo && m.LessonNo == insertData.LessonNo &&
  2778. m.Grade == insertData.Grade && m.LessonSortNo == insertData.LessonSortNo &&
  2779. m.LessonName == insertData.LessonName && m.F_SchoolId == insertData.F_SchoolId &&
  2780. m.DeptNo == insertData.DeptNo) == 0 &&
  2781. insertDataList.Count(m => m.AcademicYearNo == insertData.AcademicYearNo && m.Semester == insertData.Semester &&
  2782. m.MajorNo == insertData.MajorNo && m.LessonNo == insertData.LessonNo &&
  2783. m.Grade == insertData.Grade && m.LessonSortNo == insertData.LessonSortNo &&
  2784. m.LessonName == insertData.LessonName && m.F_SchoolId == insertData.F_SchoolId &&
  2785. m.DeptNo == insertData.DeptNo) == 0)
  2786. {
  2787. insertDataList.Add(insertData);
  2788. }
  2789. }
  2790. this.BaseRepository("CollegeMIS").Insert(insertDataList);
  2791. #endregion
  2792. #region 写入学生选课数据
  2793. var stuinfobasicData = this.BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>();
  2794. //表已有数据
  2795. var stuSelectLessonListEntityData = this.BaseRepository("CollegeMIS").FindList<StuSelectLessonListEntity>();
  2796. //待插入数据
  2797. var insertStuSelectLessonListDataList = new List<StuSelectLessonListEntity>();
  2798. var now = DateTime.Now;
  2799. foreach (var itemteachclass in teachclasslist)
  2800. {
  2801. var classstulist = stuinfobasicData.Where(m => m.ClassNo == itemteachclass.TeachClassNo).ToList();
  2802. foreach (var stu in classstulist)
  2803. {
  2804. var insertDatastuselect = new StuSelectLessonListEntity()
  2805. {
  2806. NoticeBookNo = stu.NoticeNo,
  2807. StuNo = stu.StuNo,
  2808. DeptNo = stu.DeptNo,
  2809. ClassNo = stu.ClassNo,
  2810. MajorNo = stu.MajorNo,
  2811. StuName = stu.StuName,
  2812. GenderNo = stu.GenderNo != null && stu.GenderNo.Value ? "1" : "0",
  2813. AcademicYearNo = itemteachclass.AcademicYearNo,
  2814. Semester = itemteachclass.Semester,
  2815. OpenLessonDeptNo = itemteachclass.DeptNo,
  2816. OpenLessonMajorNo = itemteachclass.MajorNo,
  2817. LessonNo = itemteachclass.LessonNo,
  2818. LessonName = this.BaseRepository("CollegeMIS").FindEntity<LessonInfoEntity>(x => x.LessonNo == itemteachclass.LessonNo)?.LessonName,
  2819. PartCode = "",
  2820. OrdinaryScoreScale = 1,
  2821. TermInScoreScale = 1,
  2822. TermEndScoreScale = 1,
  2823. OtherScoreScale = 1,
  2824. TeachClassNo = stu.ClassNo,
  2825. LessonSortNo = itemteachclass.LessonSortNo,
  2826. StuSortNo = "02",
  2827. Grade = stu.Grade,
  2828. StudyScore = 0,
  2829. TotalStudyHour = 0,
  2830. IsInEffect = "1",
  2831. EmpNo = itemteachclass.EmpNo,
  2832. IsPitchOn = "1",
  2833. CheckMark = "1",
  2834. InsertTime = now,
  2835. F_SchoolId = itemteachclass.F_SchoolId
  2836. };
  2837. if (stuSelectLessonListEntityData.Count(m => m.StuNo == insertDatastuselect.StuNo &&
  2838. m.AcademicYearNo == insertDatastuselect.AcademicYearNo &&
  2839. m.Semester == insertDatastuselect.Semester &&
  2840. m.DeptNo == insertDatastuselect.DeptNo &&
  2841. m.MajorNo == insertDatastuselect.MajorNo &&
  2842. m.LessonNo == insertDatastuselect.LessonNo &&
  2843. m.Grade == insertDatastuselect.Grade &&
  2844. m.OpenLessonDeptNo == insertDatastuselect.OpenLessonDeptNo &&
  2845. m.OpenLessonMajorNo == insertDatastuselect.OpenLessonMajorNo && m.ClassNo == insertDatastuselect.ClassNo &&
  2846. m.F_SchoolId == insertDatastuselect.F_SchoolId) == 0 &&
  2847. insertStuSelectLessonListDataList.Count(m => m.StuNo == insertDatastuselect.StuNo &&
  2848. m.AcademicYearNo == insertDatastuselect.AcademicYearNo &&
  2849. m.Semester == insertDatastuselect.Semester &&
  2850. m.DeptNo == insertDatastuselect.DeptNo &&
  2851. m.MajorNo == insertDatastuselect.MajorNo &&
  2852. m.LessonNo == insertDatastuselect.LessonNo &&
  2853. m.Grade == insertDatastuselect.Grade &&
  2854. m.OpenLessonDeptNo == insertDatastuselect.OpenLessonDeptNo &&
  2855. m.OpenLessonMajorNo == insertDatastuselect.OpenLessonMajorNo && m.ClassNo == insertDatastuselect.ClassNo &&
  2856. m.F_SchoolId == insertDatastuselect.F_SchoolId) == 0)
  2857. {
  2858. insertStuSelectLessonListDataList.Add(insertDatastuselect);
  2859. }
  2860. }
  2861. }
  2862. this.BaseRepository("CollegeMIS").Insert(insertStuSelectLessonListDataList);
  2863. #endregion
  2864. }
  2865. }
  2866. catch (Exception ex)
  2867. {
  2868. if (ex is ExceptionEx)
  2869. {
  2870. throw;
  2871. }
  2872. else
  2873. {
  2874. throw ExceptionEx.ThrowServiceException(ex);
  2875. }
  2876. }
  2877. return result;
  2878. }
  2879. }
  2880. #region MyRegion
  2881. public class TimeTable
  2882. {
  2883. public string AltId { set; get; }
  2884. public DateTime LessonDate { get; set; }
  2885. public string EnName { get; set; }
  2886. public string AcademicYear { get; set; }
  2887. public string LessonNo { get; set; }
  2888. public string LessonName { get; set; }
  2889. public string LessonTime { get; set; }
  2890. public string EmpNo { get; set; }
  2891. public string EmpName { get; set; }
  2892. public string TeachClassNo { get; set; }
  2893. public string ClassroomName { get; set; }
  2894. public string Semester { get; set; }
  2895. public string ClassRoomNo { get; set; }
  2896. public string LessonSortNo { get; set; }
  2897. public string ClassName { get; set; }
  2898. public string OLPEId { get; set; }
  2899. /// <summary>
  2900. /// 排考结构Id
  2901. /// </summary>
  2902. public string StructureId { get; set; }
  2903. public string LeaveType { get; set; }
  2904. public string IsCheck { get; set; }
  2905. /// <summary>
  2906. /// 校区Id
  2907. /// </summary>
  2908. public string F_SchoolId { get; set; }
  2909. public string DeptNo { get; set; }
  2910. public string MajorNo { get; set; }
  2911. /// <summary>
  2912. /// 出勤否(填是、否)
  2913. /// </summary>
  2914. public string AttendOrNo { get; set; }
  2915. /// <summary>
  2916. /// 出勤情况分类:准时、迟到、请假、
  2917. /// </summary>
  2918. public string Sort { get; set; }
  2919. /// <summary>
  2920. /// 打卡地点
  2921. /// </summary>
  2922. public string ClockPlace { get; set; }
  2923. /// <summary>
  2924. /// 考勤照片
  2925. /// </summary>
  2926. public string ADPhoto { get; set; }
  2927. /// <summary>
  2928. /// 经度
  2929. /// </summary>
  2930. public decimal ALon { get; set; }
  2931. /// <summary>
  2932. /// 纬度
  2933. /// </summary>
  2934. public decimal ALat { get; set; }
  2935. /// <summary>
  2936. /// 是否外勤
  2937. /// </summary>
  2938. public bool AIsOut { get; set; }
  2939. /// <summary>
  2940. /// 备注
  2941. /// </summary>
  2942. public string ARemark { get; set; }
  2943. public string LessonWeek { get { return LessonTime.Substring(0, 1); } }
  2944. public string LessonNum { get { return LessonTime.Substring(1); } }
  2945. }
  2946. public class Common
  2947. {
  2948. /// <summary>
  2949. /// 根据当前时间获取学年和学期
  2950. /// </summary>
  2951. /// <returns></returns>
  2952. public static (string AcademicYearShort, string AcademicYearLong, string Semester) GetSemesterAndYear(string startDate = "")
  2953. {
  2954. string AcademicYearShort = "";//短格式学年度
  2955. string AcademicYearLong = "";//长格式学年度
  2956. string Semester = "";//学期
  2957. DateTime dateParam = DateTime.Now;
  2958. if (!string.IsNullOrEmpty(startDate))
  2959. {
  2960. dateParam = DateTime.Parse(startDate);
  2961. }
  2962. if (dateParam.Month >= 8)
  2963. {
  2964. AcademicYearShort = dateParam.Year.ToString().Substring(2, 2) + "-";
  2965. AcademicYearShort += (dateParam.Year + 1).ToString().Substring(2, 2);
  2966. AcademicYearLong = dateParam.Year.ToString() + "-";
  2967. AcademicYearLong += (dateParam.Year + 1).ToString();
  2968. Semester = "1";
  2969. }
  2970. else
  2971. {
  2972. if (dateParam.Month >= 2)//根据当前时间获取学年和学期,注意跨年份
  2973. {
  2974. AcademicYearShort = (dateParam.Year - 1).ToString().Substring(2, 2) + "-";
  2975. AcademicYearShort += dateParam.Year.ToString().Substring(2, 2);
  2976. AcademicYearLong = (dateParam.Year - 1).ToString() + "-";
  2977. AcademicYearLong += dateParam.Year.ToString();
  2978. Semester = "2";
  2979. }
  2980. else
  2981. {
  2982. AcademicYearShort = (dateParam.Year - 1).ToString().Substring(2, 2) + "-";
  2983. AcademicYearShort += dateParam.Year.ToString().Substring(2, 2);
  2984. AcademicYearLong = (dateParam.Year - 1).ToString() + "-";
  2985. AcademicYearLong += dateParam.Year.ToString();
  2986. Semester = "1";
  2987. }
  2988. }
  2989. return (AcademicYearShort, AcademicYearLong, Semester);
  2990. }
  2991. /// <summary>
  2992. /// 计算周一的时间
  2993. /// </summary>
  2994. /// <param name="someDate"></param>
  2995. /// <returns></returns>
  2996. public static DateTime CalculateFirstDateOfWeek(DateTime someDate)
  2997. {
  2998. int i = someDate.DayOfWeek - DayOfWeek.Monday;
  2999. if (i == -1) i = 6;// i值 > = 0 ,因为枚举原因,Sunday排在最前,此时Sunday-Monday=-1,必须+7=6。
  3000. TimeSpan ts = new TimeSpan(i, 0, 0, 0);
  3001. return someDate.Subtract(ts);
  3002. }
  3003. /// <summary>
  3004. /// 计算周日的时间
  3005. /// </summary>
  3006. /// <param name="someDate"></param>
  3007. /// <returns></returns>
  3008. public static DateTime CalculateLastDateOfWeek(DateTime someDate)
  3009. {
  3010. int i = someDate.DayOfWeek - DayOfWeek.Sunday;
  3011. if (i != 0) i = 7 - i;// 因为枚举原因,Sunday排在最前,相减间隔要被7减。
  3012. TimeSpan ts = new TimeSpan(i, 0, 0, 0);
  3013. return someDate.Add(ts);
  3014. }
  3015. }
  3016. #region 当期学期排课数据同步
  3017. public class Paike
  3018. {
  3019. public string id { get; set; }
  3020. /// <summary>
  3021. /// 20180101
  3022. /// </summary>
  3023. public string clazzId { get; set; }
  3024. /// <summary>
  3025. /// 18学前教育01班
  3026. /// </summary>
  3027. public string clazzName { get; set; }
  3028. /// <summary>
  3029. /// XCMY0016
  3030. /// </summary>
  3031. public string teacherId { get; set; }
  3032. /// <summary>
  3033. /// 薛雅馨
  3034. /// </summary>
  3035. public string teacherName { get; set; }
  3036. /// <summary>
  3037. /// 0103
  3038. /// </summary>
  3039. public string curriculunId { get; set; }
  3040. /// <summary>
  3041. /// 大学体育(学前系)(合)
  3042. /// </summary>
  3043. public string curriculunName { get; set; }
  3044. public string curriculuntype { get; set; }
  3045. /// <summary>
  3046. /// 1
  3047. /// </summary>
  3048. public string section { get; set; }
  3049. /// <summary>
  3050. /// 1
  3051. /// </summary>
  3052. public string week { get; set; }
  3053. /// <summary>
  3054. /// 08:00-09:00
  3055. /// </summary>
  3056. public string curriculunTime { get; set; }
  3057. /// <summary>
  3058. /// 1
  3059. /// </summary>
  3060. public string kebiaoType { get; set; }
  3061. /// <summary>
  3062. /// 1102
  3063. /// </summary>
  3064. public string classRoomId { get; set; }
  3065. /// <summary>
  3066. /// 1102教室
  3067. /// </summary>
  3068. public string classRoomName { get; set; }
  3069. /// <summary>
  3070. /// 1
  3071. /// </summary>
  3072. public string rankSchedule { get; set; }
  3073. /// <summary>
  3074. /// 0
  3075. /// </summary>
  3076. public string periodTime { get; set; }
  3077. /// <summary>
  3078. /// [{"date":"2019-03-04 08:00-09:00","endTime":"2019-03-04 09:00:00","startTime":"2019-03-04 08:00:00"},{"date":"2019-03-18 08:00-09:00","endTime":"2019-03-18 09:00:00","startTime":"2019-03-18 08:00:00"},{"date":"2019-04-01 08:00-09:00","endTime":"2019-04-01 09:00:00","startTime":"2019-04-01 08:00:00"},{"date":"2019-04-15 08:00-09:00","endTime":"2019-04-15 09:00:00","startTime":"2019-04-15 08:00:00"},{"date":"2019-04-29 08:00-09:00","endTime":"2019-04-29 09:00:00","startTime":"2019-04-29 08:00:00"},{"date":"2019-05-13 08:00-09:00","endTime":"2019-05-13 09:00:00","startTime":"2019-05-13 08:00:00"},{"date":"2019-05-27 08:00-09:00","endTime":"2019-05-27 09:00:00","startTime":"2019-05-27 08:00:00"},{"date":"2019-06-10 08:00-09:00","endTime":"2019-06-10 09:00:00","startTime":"2019-06-10 08:00:00"},{"date":"2019-06-24 08:00-09:00","endTime":"2019-06-24 09:00:00","startTime":"2019-06-24 08:00:00"},{"date":"2019-07-08 08:00-09:00","endTime":"2019-07-08 09:00:00","startTime":"2019-07-08 08:00:00"}]
  3079. /// </summary>
  3080. public string timeText { get; set; }
  3081. /// <summary>
  3082. /// 2
  3083. /// </summary>
  3084. public string semester { get; set; }
  3085. /// <summary>
  3086. /// Flag
  3087. /// </summary>
  3088. public bool flag { get; set; }
  3089. public string year { get; set; }
  3090. public string number { get; set; }
  3091. public string curriculunNumber { get; set; }
  3092. public string teacherNumber { get; set; }
  3093. public string classRoomNumber { get; set; }
  3094. }
  3095. public class StuScore
  3096. {
  3097. public string id { get; set; }
  3098. public string examname { get; set; }
  3099. public string stuno { get; set; }
  3100. public string stuname { get; set; }
  3101. public string classno { get; set; }
  3102. public string classname { get; set; }
  3103. public string teachclassno { get; set; }
  3104. public string termendscore { get; set; }
  3105. public string examtime { get; set; }
  3106. public string lessonno { get; set; }
  3107. public string lessonname { get; set; }
  3108. public string scoolYear { get; set; }
  3109. public string term { get; set; }
  3110. }
  3111. public class Major
  3112. {
  3113. /// <summary>
  3114. /// 01
  3115. /// </summary>
  3116. public string id { get; set; }
  3117. /// <summary>
  3118. /// 学前教育
  3119. /// </summary>
  3120. public string majorName { get; set; }
  3121. /// <summary>
  3122. /// 01
  3123. /// </summary>
  3124. public string majorNumber { get; set; }
  3125. /// <summary>
  3126. ///
  3127. /// </summary>
  3128. public string bz { get; set; }
  3129. }
  3130. public class semester
  3131. {
  3132. public DateTime? starttime { get; set; }
  3133. public DateTime? endtime { get; set; }
  3134. public string zhouci { get; set; }
  3135. public string shangxia { get; set; }
  3136. }
  3137. public class List
  3138. {
  3139. public StuScore stuscore { get; set; }
  3140. /// <summary>
  3141. /// Paike
  3142. /// </summary>
  3143. public Paike paike { get; set; }
  3144. /// <summary>
  3145. /// 2019-03-04 08:00-09:00
  3146. /// </summary>
  3147. public string times { get; set; }
  3148. /// <summary>
  3149. /// Major
  3150. /// </summary>
  3151. public Major major { get; set; }
  3152. /// <summary>
  3153. /// 18-19
  3154. /// </summary>
  3155. public string schoolYear { get; set; }
  3156. /// <summary>
  3157. /// 学期类
  3158. /// </summary>
  3159. public semester semester { get; set; }
  3160. /// <summary>
  3161. /// 第几级
  3162. /// </summary>
  3163. public string grade { get; set; }
  3164. /// <summary>
  3165. /// 专业编号
  3166. /// </summary>
  3167. public string majorNumber { get; set; }
  3168. /// <summary>
  3169. /// 课程名称
  3170. /// </summary>
  3171. public string curriculumName { get; set; }
  3172. /// <summary>
  3173. /// 课程编号
  3174. /// </summary>
  3175. public string curriculumNumber { get; set; }
  3176. /// <summary>
  3177. /// 选修必修
  3178. /// </summary>
  3179. public string isElective { get; set; }
  3180. /// <summary>
  3181. /// 周学时
  3182. /// </summary>
  3183. public string classhour { get; set; }
  3184. /// <summary>
  3185. /// 教师编号
  3186. /// </summary>
  3187. public string teacherId { get; set; }
  3188. /// <summary>
  3189. /// 教师姓名
  3190. /// </summary>
  3191. public string teacherName { get; set; }
  3192. /// <summary>
  3193. /// 学校主键
  3194. /// </summary>
  3195. public string schoolId { get; set; }
  3196. }
  3197. public class Entity
  3198. {
  3199. /// <summary>
  3200. /// true
  3201. /// </summary>
  3202. public string opflag { get; set; }
  3203. /// <summary>
  3204. /// 1000
  3205. /// </summary>
  3206. public string opCode { get; set; }
  3207. /// <summary>
  3208. /// OK!
  3209. /// </summary>
  3210. public string message { get; set; }
  3211. /// <summary>
  3212. /// List
  3213. /// </summary>
  3214. public List<List> list { get; set; }
  3215. public List<StuScore> stuScoreList { get; set; }
  3216. }
  3217. public class Root
  3218. {
  3219. /// <summary>
  3220. /// 操作成功
  3221. /// </summary>
  3222. public string message { get; set; }
  3223. /// <summary>
  3224. /// Success
  3225. /// </summary>
  3226. public bool success { get; set; }
  3227. /// <summary>
  3228. /// Entity
  3229. /// </summary>
  3230. public Entity entity { get; set; }
  3231. }
  3232. #endregion
  3233. #region 按条件同步排课数据
  3234. public class RootByCondition
  3235. {
  3236. /// <summary>
  3237. /// 操作成功
  3238. /// </summary>
  3239. public string message { get; set; }
  3240. /// <summary>
  3241. /// Success
  3242. /// </summary>
  3243. public bool success { get; set; }
  3244. /// <summary>
  3245. /// Entity
  3246. /// </summary>
  3247. public EntityByCondition entity { get; set; }
  3248. }
  3249. public class EntityByCondition
  3250. {
  3251. /// <summary>
  3252. /// true
  3253. /// </summary>
  3254. public string opflag { get; set; }
  3255. /// <summary>
  3256. /// 1000
  3257. /// </summary>
  3258. public string opCode { get; set; }
  3259. /// <summary>
  3260. /// OK!
  3261. /// </summary>
  3262. public string message { get; set; }
  3263. /// <summary>
  3264. /// List
  3265. /// </summary>
  3266. public List<ListByCondition> list { get; set; }
  3267. }
  3268. public class ListByCondition
  3269. {
  3270. public string year { get; set; }
  3271. public string number { get; set; }
  3272. public string curriculunNumber { get; set; }
  3273. public string curriculunName { get; set; }
  3274. /// <summary>
  3275. /// Paike
  3276. /// </summary>
  3277. public PaikeByCondition paike { get; set; }
  3278. /// <summary>
  3279. /// "2019-03-12,2019-03-26,2019-04-09,2019-04-23,2019-05-07,2019-05-21,2019-06-04,2019-06-18,2019-07-02,2019-07-16,2019-07-30,"
  3280. /// </summary>
  3281. public string timeText { get; set; }
  3282. /// <summary>
  3283. /// Major
  3284. /// </summary>
  3285. public MajorByCondition major { get; set; }
  3286. public string teacherNumber { get; set; }
  3287. public string teacherName { get; set; }
  3288. public string curriculunSid { get; set; }
  3289. public string classRoomSid { get; set; }
  3290. public string schoolSid { get; set; }
  3291. public object week { get; set; }
  3292. public string section { get; set; }
  3293. public string clazzSid { get; set; }
  3294. }
  3295. public class PaikeByCondition
  3296. {
  3297. public string id { get; set; }
  3298. /// <summary>
  3299. /// 班级Id
  3300. /// </summary>
  3301. public string clazzId { get; set; }
  3302. /// <summary>
  3303. /// 班级名称
  3304. /// </summary>
  3305. public string clazzName { get; set; }
  3306. /// <summary>
  3307. /// 班级编号
  3308. /// </summary>
  3309. public string clazzSid { get; set; }
  3310. /// <summary>
  3311. /// 年级
  3312. /// </summary>
  3313. public string grade { get; set; }
  3314. /// <summary>
  3315. /// 教师Id
  3316. /// </summary>
  3317. public string teacherId { get; set; }
  3318. /// <summary>
  3319. /// 教师名称
  3320. /// </summary>
  3321. public string teacherName { get; set; }
  3322. /// <summary>
  3323. /// 教师编号
  3324. /// </summary>
  3325. public string teacherSid { get; set; }
  3326. /// <summary>
  3327. /// 课程Id
  3328. /// </summary>
  3329. public string curriculunId { get; set; }
  3330. /// <summary>
  3331. /// 课程名称
  3332. /// </summary>
  3333. public string curriculunName { get; set; }
  3334. /// <summary>
  3335. /// 课程编号
  3336. /// </summary>
  3337. public string curriculunSid { get; set; }
  3338. /// <summary>
  3339. /// 第几节次
  3340. /// </summary>
  3341. public string section { get; set; }
  3342. /// <summary>
  3343. /// 星期几
  3344. /// </summary>
  3345. public string week { get; set; }
  3346. /// <summary>
  3347. /// 课表类型
  3348. /// </summary>
  3349. public string kebiaoType { get; set; }
  3350. /// 教室Id
  3351. /// </summary>
  3352. public string classRoomId { get; set; }
  3353. /// <summary>
  3354. /// 教室名称
  3355. /// </summary>
  3356. public string classRoomName { get; set; }
  3357. /// <summary>
  3358. /// 教室编号
  3359. /// </summary>
  3360. public string classRoomSid { get; set; }
  3361. /// <summary>
  3362. /// 排课安排
  3363. /// </summary>
  3364. public string rankSchedule { get; set; }
  3365. /// <summary>
  3366. /// "2019-03-12,2019-03-26,2019-04-09,2019-04-23,2019-05-07,2019-05-21,2019-06-04,2019-06-18,2019-07-02,2019-07-16,2019-07-30,"
  3367. /// </summary>
  3368. public string timeText { get; set; }
  3369. /// <summary>
  3370. /// 学年
  3371. /// </summary>
  3372. public string semester { get; set; }
  3373. /// <summary>
  3374. /// Flag
  3375. /// </summary>
  3376. public bool flag { get; set; }
  3377. }
  3378. public class MajorByCondition
  3379. {
  3380. /// <summary>
  3381. /// 专业Id
  3382. /// </summary>
  3383. public string id { get; set; }
  3384. /// <summary>
  3385. /// 专业名称
  3386. /// </summary>
  3387. public string name { get; set; }
  3388. /// <summary>
  3389. /// 专业编号
  3390. /// </summary>
  3391. public string number { get; set; }
  3392. /// <summary>
  3393. /// 系
  3394. /// </summary>
  3395. public DepartmentByCondition department { get; set; }
  3396. /// <summary>
  3397. /// 学年学期
  3398. /// </summary>
  3399. public SemesterByCondition semester { get; set; }
  3400. /// <summary>
  3401. /// 学校
  3402. /// </summary>
  3403. public SchoolByCondition school { get; set; }
  3404. public string sid { get; set; }
  3405. public string qsid { get; set; }
  3406. }
  3407. public class DepartmentByCondition
  3408. {
  3409. /// <summary>
  3410. /// 系Id
  3411. /// </summary>
  3412. public string id { get; set; }
  3413. /// <summary>
  3414. /// 系名称
  3415. /// </summary>
  3416. public string name { get; set; }
  3417. /// <summary>
  3418. /// 系编号【开课计划接口】
  3419. /// </summary>
  3420. public string number { get; set; }
  3421. }
  3422. public class SemesterByCondition
  3423. {
  3424. public string id { get; set; }
  3425. /// <summary>
  3426. /// 学年
  3427. /// </summary>
  3428. public string year { get; set; }
  3429. /// <summary>
  3430. /// 学期
  3431. /// </summary>
  3432. public string number { get; set; }
  3433. /// <summary>
  3434. /// 开始时间【开课计划接口】
  3435. /// </summary>
  3436. public DateTime starTime { get; set; }
  3437. /// <summary>
  3438. /// 结束时间【开课计划接口】
  3439. /// </summary>
  3440. public DateTime endTime { get; set; }
  3441. /// <summary>
  3442. /// 开始周次【开课计划接口】
  3443. /// </summary>
  3444. public int yesNo { get; set; }
  3445. /// <summary>
  3446. /// 结束周次【开课计划接口】
  3447. /// </summary>
  3448. public int week { get; set; }
  3449. }
  3450. public class SchoolByCondition
  3451. {
  3452. /// <summary>
  3453. /// 学校Id
  3454. /// </summary>
  3455. public string sid { get; set; }
  3456. /// <summary>
  3457. /// 学校名称
  3458. /// </summary>
  3459. public string name { get; set; }
  3460. }
  3461. public class RootOfPlanByCondition
  3462. {
  3463. /// <summary>
  3464. /// 操作成功
  3465. /// </summary>
  3466. public string message { get; set; }
  3467. /// <summary>
  3468. /// Success
  3469. /// </summary>
  3470. public bool success { get; set; }
  3471. /// <summary>
  3472. /// Entity
  3473. /// </summary>
  3474. public EntityOfPlanByCondition entity { get; set; }
  3475. }
  3476. public class EntityOfPlanByCondition
  3477. {
  3478. /// <summary>
  3479. /// true
  3480. /// </summary>
  3481. public string opflag { get; set; }
  3482. /// <summary>
  3483. /// 1000
  3484. /// </summary>
  3485. public string opCode { get; set; }
  3486. /// <summary>
  3487. /// OK!
  3488. /// </summary>
  3489. public string message { get; set; }
  3490. /// <summary>
  3491. /// List
  3492. /// </summary>
  3493. public List<ListOfPlanByCondition> list { get; set; }
  3494. }
  3495. public class ListOfPlanByCondition
  3496. {
  3497. public SchoolByCondition school { get; set; }
  3498. public SemesterByCondition semester { get; set; }
  3499. public DepartmentByCondition department { get; set; }
  3500. public MajorByCondition major { get; set; }
  3501. /// <summary>
  3502. /// 开课计划
  3503. /// </summary>
  3504. public CourseOfPlanByCondition course { get; set; }
  3505. public int? classhour { get; set; }
  3506. public int? credit { get; set; }
  3507. public string grade { get; set; }
  3508. }
  3509. public class CourseOfPlanByCondition
  3510. {
  3511. /// <summary>
  3512. /// 开课计划Id
  3513. /// </summary>
  3514. public string id { get; set; }
  3515. /// <summary>
  3516. /// 课程编号
  3517. /// </summary>
  3518. public string number { get; set; }
  3519. /// <summary>
  3520. /// 课程信息
  3521. /// </summary>
  3522. public CourseInfoOfPlanByCondition course { get; set; }
  3523. /// <summary>
  3524. /// 课程名称
  3525. /// </summary>
  3526. public string coursename { get; set; }
  3527. }
  3528. public class CourseInfoOfPlanByCondition
  3529. {
  3530. /// <summary>
  3531. /// 课程Id
  3532. /// </summary>
  3533. public string id { get; set; }
  3534. /// <summary>
  3535. /// 课程名称
  3536. /// </summary>
  3537. public string name { get; set; }
  3538. public string number { get; set; }
  3539. }
  3540. #endregion
  3541. public class paikeList
  3542. {
  3543. public string week { get; set; }
  3544. public string section { get; set; }
  3545. public string timetext { get; set; }
  3546. public string classname { get; set; }
  3547. public string classnumber { get; set; }
  3548. public string roomname { get; set; }
  3549. public string ClassroomNo { get; set; }
  3550. public string teachername { get; set; }
  3551. public string teacherNumber { get; set; }
  3552. public string curriculunName { get; set; }
  3553. public string curriculunNumber { get; set; }
  3554. public string year { get; set; }
  3555. public string semester { get; set; }
  3556. public string schoolno { get; set; }
  3557. }
  3558. public class paikeTime
  3559. {
  3560. public string studyhour { get; set; }
  3561. }
  3562. #endregion
  3563. }