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.
 
 
 
 
 
 

2703 lines
130 KiB

  1. using Dapper;
  2. using Learun.DataBase.Repository;
  3. using Learun.Util;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Data;
  7. using System.Diagnostics;
  8. using System.Linq;
  9. using System.Net.Http;
  10. using System.Runtime.InteropServices;
  11. using System.Text;
  12. using System.Threading.Tasks;
  13. using Learun.Application.Base.SystemModule;
  14. using Learun.Application.Organization;
  15. using Newtonsoft.Json;
  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. private static readonly HttpClient Client;
  29. static ArrangeLessonTermService()
  30. {
  31. Client = new HttpClient();
  32. }
  33. #region 构造函数和属性
  34. private string fieldSql;
  35. public ArrangeLessonTermService()
  36. {
  37. fieldSql = @"
  38. t.ALTId,
  39. t.LessonDate,
  40. t.AcademicYearNo,
  41. t.Semester,
  42. t.DeptNo,
  43. t.MajorNo,
  44. t.LessonNo,
  45. t.LessonName,
  46. t.TeachClassNo,
  47. t.TeachClassSn,
  48. t.EmpNo,
  49. t.EmpName,
  50. t.LessonSortNo,
  51. t.StuSortNo,
  52. t.JoinLessonNum,
  53. t.RelatedClassNo,
  54. t.ClassroomNo,
  55. t.LessonTime,
  56. t.Remark,
  57. t.CheckMark,
  58. t.RecordMark
  59. ";
  60. }
  61. #endregion
  62. #region 获取数据
  63. /// <summary>
  64. /// 获取列表数据
  65. /// <summary>
  66. /// <returns></returns>
  67. public IEnumerable<ArrangeLessonTermEntity> GetList(string queryJson)
  68. {
  69. try
  70. {
  71. //参考写法
  72. //var queryParam = queryJson.ToJObject();
  73. // 虚拟参数
  74. //var dp = new DynamicParameters(new { });
  75. //dp.Add("startTime", queryParam["StartTime"].ToDate(), DbType.DateTime);
  76. var strSql = new StringBuilder();
  77. strSql.Append("SELECT ");
  78. strSql.Append(fieldSql);
  79. strSql.Append(" FROM ArrangeLessonTerm t ");
  80. return this.BaseRepository("CollegeMIS").FindList<ArrangeLessonTermEntity>(strSql.ToString());
  81. }
  82. catch (Exception ex)
  83. {
  84. if (ex is ExceptionEx)
  85. {
  86. throw;
  87. }
  88. else
  89. {
  90. throw ExceptionEx.ThrowServiceException(ex);
  91. }
  92. }
  93. }
  94. internal IEnumerable<ArrangeLessonTermEntity> GetListByEmpNo(List<string> empNos)
  95. {
  96. try
  97. {
  98. return this.BaseRepository("CollegeMIS").FindList<ArrangeLessonTermEntity>(a => empNos.Contains(a.EmpNo)).ToList();
  99. }
  100. catch (Exception ex)
  101. {
  102. if (ex is ExceptionEx)
  103. {
  104. throw;
  105. }
  106. else
  107. {
  108. throw ExceptionEx.ThrowServiceException(ex);
  109. }
  110. }
  111. }
  112. /// <summary>
  113. /// 获取列表分页数据
  114. /// <param name="pagination">分页参数</param>
  115. /// <summary>
  116. /// <returns></returns>
  117. public IEnumerable<ArrangeLessonTermEntity> GetPageList(Pagination pagination, string queryJson)
  118. {
  119. try
  120. {
  121. var strSql = new StringBuilder();
  122. strSql.Append("SELECT ");
  123. strSql.Append(fieldSql);
  124. strSql.Append(" FROM ArrangeLessonTerm t ");
  125. return this.BaseRepository("CollegeMIS").FindList<ArrangeLessonTermEntity>(strSql.ToString(), pagination);
  126. }
  127. catch (Exception ex)
  128. {
  129. if (ex is ExceptionEx)
  130. {
  131. throw;
  132. }
  133. else
  134. {
  135. throw ExceptionEx.ThrowServiceException(ex);
  136. }
  137. }
  138. }
  139. /// <summary>
  140. /// 获取实体数据
  141. /// <param name="keyValue">主键</param>
  142. /// <summary>
  143. /// <returns></returns>
  144. public ArrangeLessonTermEntity GetEntity(string keyValue)
  145. {
  146. try
  147. {
  148. return this.BaseRepository("CollegeMIS").FindEntity<ArrangeLessonTermEntity>(keyValue);
  149. }
  150. catch (Exception ex)
  151. {
  152. if (ex is ExceptionEx)
  153. {
  154. throw;
  155. }
  156. else
  157. {
  158. throw ExceptionEx.ThrowServiceException(ex);
  159. }
  160. }
  161. }
  162. #endregion
  163. #region 提交数据
  164. /// <summary>
  165. /// 删除实体数据
  166. /// <param name="keyValue">主键</param>
  167. /// <summary>
  168. /// <returns></returns>
  169. public void DeleteEntity(string keyValue)
  170. {
  171. try
  172. {
  173. this.BaseRepository("CollegeMIS").Delete<ArrangeLessonTermEntity>(t => t.ALTId == keyValue);
  174. }
  175. catch (Exception ex)
  176. {
  177. if (ex is ExceptionEx)
  178. {
  179. throw;
  180. }
  181. else
  182. {
  183. throw ExceptionEx.ThrowServiceException(ex);
  184. }
  185. }
  186. }
  187. /// <summary>
  188. /// 保存实体数据(新增、修改)
  189. /// <param name="keyValue">主键</param>
  190. /// <summary>
  191. /// <returns></returns>
  192. public void SaveEntity(string keyValue, ArrangeLessonTermEntity entity)
  193. {
  194. try
  195. {
  196. if (!string.IsNullOrEmpty(keyValue))
  197. {
  198. entity.Modify(keyValue);
  199. this.BaseRepository("CollegeMIS").Update(entity);
  200. }
  201. else
  202. {
  203. entity.Create();
  204. this.BaseRepository("CollegeMIS").Insert(entity);
  205. }
  206. }
  207. catch (Exception ex)
  208. {
  209. if (ex is ExceptionEx)
  210. {
  211. throw;
  212. }
  213. else
  214. {
  215. throw ExceptionEx.ThrowServiceException(ex);
  216. }
  217. }
  218. }
  219. internal bool GetAny()
  220. {
  221. try
  222. {
  223. var semesterAndYear = Common.GetSemesterAndYear();
  224. return this.BaseRepository("CollegeMIS").FindList<ArrangeLessonTermEntity>(a => a.AcademicYearNo == semesterAndYear.AcademicYearShort && a.Semester == semesterAndYear.Semester).Any();
  225. }
  226. catch (Exception ex)
  227. {
  228. if (ex is ExceptionEx)
  229. {
  230. throw;
  231. }
  232. else
  233. {
  234. throw ExceptionEx.ThrowServiceException(ex);
  235. }
  236. }
  237. }
  238. #endregion
  239. /// <summary>
  240. /// 获取相关课程考勤的学生信息
  241. /// </summary>
  242. /// <param name="year"></param>
  243. /// <param name="semester"></param>
  244. /// <param name="empno"></param>
  245. /// <param name="lessonNo"></param>
  246. /// <param name="teachClassNo"></param>
  247. /// <returns></returns>
  248. public IEnumerable<StuSelectLessonListEntity> AttendanceStudents(Pagination pagination, string queryJson)
  249. {
  250. try
  251. {
  252. var queryParam = queryJson.ToJObject();
  253. var strSql = new StringBuilder();
  254. strSql.Append("SELECT ");
  255. strSql.Append(@"
  256. a.[StuNo]
  257. ,a.[DeptNo]
  258. ,a.[MajorNo]
  259. ,a.[ClassNo]
  260. ,a.[StuName]
  261. ,a.[GenderNo]
  262. ,a.[AcademicYearNo]
  263. ,a.[Semester]
  264. ,a.[LessonNo]
  265. ,a.[LessonName]
  266. ,a.[TeachClassNo]
  267. ,a.[LessonSortNo]
  268. ,a.[Grade]
  269. ,a.[ConflictLessonNo]
  270. ,a.[EmpNo]
  271. ,a.[TeachPlanNo],b.ID as StuAttendanceNo,b.AttendOrNo,b.Sort,b.AttenCondition,b.AttenScore
  272. ");
  273. 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 ");
  274. strSql.Append($" and b.LessonTime='{queryParam["lessonTime"]}'");
  275. strSql.Append(" WHERE 1=1 ");
  276. 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"]}' ");
  277. return this.BaseRepository("CollegeMIS").FindList<StuSelectLessonListEntity>(strSql.ToString(), pagination);
  278. }
  279. catch (Exception ex)
  280. {
  281. if (ex is ExceptionEx)
  282. {
  283. throw;
  284. }
  285. else
  286. {
  287. throw ExceptionEx.ThrowServiceException(ex);
  288. }
  289. }
  290. }
  291. private string strAcademicYear;
  292. private string strSemester;
  293. /// <summary>
  294. /// 同步排课系统数据
  295. /// </summary>
  296. /// <returns></returns>
  297. public async Task<bool> AsyncArrangeLessonData()
  298. {
  299. bool result = false;
  300. try
  301. {
  302. var apiData = await Client.GetStringAsync(Config.GetValue("ArrangeLessonAPI"));
  303. if (!string.IsNullOrEmpty(apiData))
  304. {
  305. var data = JsonConvert.DeserializeObject<Root>(apiData);
  306. var dataList = data.entity.list;
  307. if (dataList.Any())
  308. {
  309. var oldArrangeLessonTermList = (await BaseRepository("CollegeMIS").FindListAsync<ArrangeLessonTermEntity>()).ToList();
  310. var insertDataList = new List<ArrangeLessonTermEntity>();
  311. var lessonData = (await BaseRepository("CollegeMIS").FindListAsync<LessonInfoEntity>()).ToList();
  312. var classData = (await BaseRepository("CollegeMIS").FindListAsync<ClassInfoEntity>()).ToList();
  313. foreach (var item in dataList)
  314. {
  315. var classinfo = classData.FirstOrDefault(m => m.ClassNo == item.paike.clazzId);
  316. var insertData = new ArrangeLessonTermEntity
  317. {
  318. ALTId = Guid.NewGuid().ToString(),
  319. LessonDate = DateTime.Parse(item.times),
  320. AcademicYearNo = item.schoolYear,
  321. Semester = item.paike.semester,
  322. DeptNo = classinfo?.DeptNo,
  323. MajorNo = classinfo?.MajorNo,
  324. LessonNo = item.paike.curriculunId,
  325. LessonName = item.paike.curriculunName,
  326. TeachClassNo = item.paike.curriculunName + item.paike.clazzId,
  327. EmpNo = item.paike.teacherId,
  328. EmpName = item.paike.teacherName,
  329. LessonSortNo = lessonData.FirstOrDefault(m => m.LessonNo == item.paike.curriculunId)?.LessonSortNo,
  330. ClassroomNo = item.paike.classRoomId,
  331. LessonTime = item.paike.week + item.paike.section,
  332. CheckMark = "1",
  333. F_SchoolId = item.schoolId
  334. };
  335. strAcademicYear = insertData.AcademicYearNo;
  336. strSemester = insertData.Semester;
  337. if (oldArrangeLessonTermList.Count(m => m.AcademicYearNo == insertData.AcademicYearNo && m.Semester == insertData.Semester
  338. && m.LessonNo == insertData.LessonNo && m.LessonDate == insertData.LessonDate
  339. && m.DeptNo == insertData.DeptNo && m.MajorNo == insertData.MajorNo
  340. && m.TeachClassNo == insertData.TeachClassNo && m.EmpNo == insertData.EmpNo
  341. && m.ClassroomNo == insertData.ClassroomNo && m.LessonTime == insertData.LessonTime
  342. && m.F_SchoolId == insertData.F_SchoolId) == 0
  343. && insertDataList.Count(m => m.AcademicYearNo == insertData.AcademicYearNo && m.Semester == insertData.Semester
  344. && m.LessonNo == insertData.LessonNo && m.LessonDate == insertData.LessonDate
  345. && m.DeptNo == insertData.DeptNo && m.MajorNo == insertData.MajorNo
  346. && m.TeachClassNo == insertData.TeachClassNo && m.EmpNo == insertData.EmpNo
  347. && m.ClassroomNo == insertData.ClassroomNo && m.LessonTime == insertData.LessonTime
  348. && m.F_SchoolId == insertData.F_SchoolId) == 0)
  349. {
  350. insertDataList.Add(insertData);
  351. }
  352. }
  353. var insertResult = await BaseRepository("CollegeMIS").InsertAsync(insertDataList);
  354. //TeachClass数据处理
  355. var arrangeLessonTermData = (await BaseRepository("CollegeMIS").FindListAsync<ArrangeLessonTermEntity>(@"select AcademicYearNo,Semester,DeptNo,majorno,lessonno,replace(teachclassno,lessonname,'') as teachclassno,empno from [dbo].[ArrangeLessonTerm]
  356. where (AcademicYearNo = '" + strAcademicYear + "') and semester='" + strSemester + @"'
  357. group by AcademicYearNo,Semester,DeptNo,majorno,lessonno,replace(teachclassno,lessonname,'') ,empno ")).ToList();
  358. var TeachClassData = (await BaseRepository("CollegeMIS").FindListAsync<TeachClassEntity>(@"SELECT *
  359. FROM TeachClass
  360. WHERE (AcademicYearNo = '" + strAcademicYear + "') and semester='" + strSemester + "' ")).ToList();
  361. var insertTeachClassDataList = new List<TeachClassEntity>();
  362. if (arrangeLessonTermData.Any())
  363. {
  364. foreach (var altitem in arrangeLessonTermData)
  365. {
  366. var insertTeachClassData = new TeachClassEntity()
  367. {
  368. AcademicYearNo = altitem.AcademicYearNo,
  369. Semester = altitem.Semester,
  370. DeptNo = altitem.DeptNo,
  371. MajorNo = altitem.MajorNo,
  372. LessonNo = altitem.LessonNo,
  373. Grade = classData.FirstOrDefault(m => m.ClassNo == altitem.TeachClassNo)?.Grade,
  374. LessonSortNo = altitem.LessonSortNo,
  375. TeachClassNo = altitem.TeachClassNo,
  376. EmpNo = altitem.EmpNo,
  377. F_SchoolId = altitem.F_SchoolId
  378. };
  379. //非空判断
  380. if (TeachClassData.Count(m => m.AcademicYearNo == insertTeachClassData.AcademicYearNo &&
  381. m.Semester == insertTeachClassData.Semester && m.DeptNo == insertTeachClassData.DeptNo &&
  382. m.MajorNo == insertTeachClassData.MajorNo && m.LessonNo == insertTeachClassData.LessonNo &&
  383. m.Grade == insertTeachClassData.Grade && m.LessonSortNo == insertTeachClassData.LessonSortNo &&
  384. m.TeachClassNo == insertTeachClassData.TeachClassNo && m.EmpNo == insertTeachClassData.EmpNo &&
  385. m.F_SchoolId == insertTeachClassData.F_SchoolId) == 0
  386. && insertTeachClassDataList.Count(m => m.AcademicYearNo == insertTeachClassData.AcademicYearNo &&
  387. m.Semester == insertTeachClassData.Semester && m.DeptNo == insertTeachClassData.DeptNo &&
  388. m.MajorNo == insertTeachClassData.MajorNo && m.LessonNo == insertTeachClassData.LessonNo &&
  389. m.Grade == insertTeachClassData.Grade && m.LessonSortNo == insertTeachClassData.LessonSortNo &&
  390. m.TeachClassNo == insertTeachClassData.TeachClassNo && m.EmpNo == insertTeachClassData.EmpNo &&
  391. m.F_SchoolId == insertTeachClassData.F_SchoolId) == 0)
  392. {
  393. insertTeachClassDataList.Add(insertTeachClassData);
  394. }
  395. }
  396. await BaseRepository("CollegeMIS").InsertAsync(insertTeachClassDataList);
  397. }
  398. //继续openlessonplan同步
  399. await AsyncOpenLessonPlanData();
  400. if (insertResult > 0)
  401. {
  402. result = true;
  403. }
  404. }
  405. }
  406. }
  407. catch (Exception ex)
  408. {
  409. if (ex is ExceptionEx)
  410. {
  411. throw;
  412. }
  413. else
  414. {
  415. throw ExceptionEx.ThrowServiceException(ex);
  416. }
  417. }
  418. return result;
  419. }
  420. /// <summary>
  421. /// 同步专业开课计划数据,学生选课数据
  422. /// </summary>
  423. /// <returns></returns>
  424. public async Task<bool> AsyncOpenLessonPlanData()
  425. {
  426. bool result = false;
  427. try
  428. {
  429. var apiData = await Client.GetStringAsync(Config.GetValue("OpenLessonPlanAPI"));
  430. if (!string.IsNullOrEmpty(apiData))
  431. {
  432. var openLessonPlanData = await BaseRepository("CollegeMIS").FindListAsync<OpenLessonPlanEntity>();
  433. var data = JsonConvert.DeserializeObject<Root>(apiData);
  434. var dataList = data.entity.list;
  435. if (dataList.Any())
  436. {
  437. var insertDataList = new List<OpenLessonPlanEntity>();
  438. var majorData = (await BaseRepository("CollegeMIS").FindListAsync<CdMajorEntity>()).ToList();
  439. var lessonData = (await BaseRepository("CollegeMIS").FindListAsync<LessonInfoEntity>()).ToList();
  440. foreach (var item in dataList)
  441. {
  442. var insertData = new OpenLessonPlanEntity()
  443. {
  444. MakeDate = DateTime.Now,
  445. AcademicYearNo = item.schoolYear,
  446. Semester = item.semester.shangxia,
  447. DeptNo = majorData.Find(m => m.MajorNo == item.majorNumber).DeptNo,
  448. MajorNo = item.majorNumber,
  449. LessonNo = item.curriculumNumber,
  450. LessonName = item.curriculumName,
  451. PartCode = "",
  452. Grade = item.grade,
  453. LessonSortNo = lessonData.FirstOrDefault(m => m.LessonNo == item.curriculumNumber)?.LessonSortNo,
  454. LessonSortDetailNo = lessonData.FirstOrDefault(m => m.LessonNo == item.curriculumNumber)?.LessonSortDetailNo,
  455. StartWeek = 1,
  456. EndWeek = !string.IsNullOrEmpty(item.semester.zhouci) ? Convert.ToInt32(item.semester.zhouci) : 1,
  457. CheckStyleNo = "1",
  458. ScoreRecordStyleNo = "1",
  459. TeachDeptNo = majorData.Find(m => m.MajorNo == item.majorNumber).DeptNo,
  460. StudyScore = lessonData.FirstOrDefault(m => m.LessonNo == item.curriculumNumber)?.StudyScore,
  461. AmendDate = DateTime.Now,
  462. ClassroomType = 1,
  463. ClassroomPracticeType = 99,
  464. CheckMarkDept = "1",
  465. CheckMark = "1",
  466. TestMark = 0,
  467. F_SchoolId = item.schoolId
  468. };
  469. if (openLessonPlanData.Count(m => m.AcademicYearNo == insertData.AcademicYearNo &&
  470. m.Semester == insertData.Semester &&
  471. m.DeptNo == insertData.DeptNo &&
  472. m.MajorNo == insertData.MajorNo &&
  473. m.LessonNo == insertData.LessonNo &&
  474. m.Grade == insertData.Grade &&
  475. m.LessonSortNo == insertData.LessonSortNo &&
  476. m.LessonName == insertData.LessonName &&
  477. m.F_SchoolId == insertData.F_SchoolId) == 0 && insertDataList.Count(m => m.AcademicYearNo == insertData.AcademicYearNo &&
  478. m.Semester == insertData.Semester &&
  479. m.DeptNo == insertData.DeptNo &&
  480. m.MajorNo == insertData.MajorNo &&
  481. m.LessonNo == insertData.LessonNo &&
  482. m.Grade == insertData.Grade &&
  483. m.LessonSortNo == insertData.LessonSortNo &&
  484. m.LessonName == insertData.LessonName &&
  485. m.F_SchoolId == insertData.F_SchoolId) == 0)
  486. {
  487. insertDataList.Add(insertData);
  488. }
  489. }
  490. var insertResult = await BaseRepository("CollegeMIS").InsertAsync(insertDataList);
  491. //学生选课数据
  492. var TeachClassData = (await BaseRepository("CollegeMIS").FindListAsync<TeachClassEntity>(@"SELECT *
  493. FROM TeachClass
  494. WHERE (AcademicYearNo = '" + strAcademicYear + "') and semester='" + strSemester + "' ")).ToList();
  495. var stuinfobasicData = (await BaseRepository("CollegeMIS").FindListAsync<StuInfoBasicEntity>()).ToList();
  496. var stuSelectLessonListEntityData = (await BaseRepository("CollegeMIS").FindListAsync<StuSelectLessonListEntity>()).ToList();
  497. var insertStuSelectLessonListDataList = new List<StuSelectLessonListEntity>();
  498. if (TeachClassData.Any())
  499. {
  500. foreach (var itemteachclass in TeachClassData)
  501. {
  502. var classstulist = stuinfobasicData.Where(m => m.ClassNo == itemteachclass.TeachClassNo)
  503. .ToList();
  504. foreach (var stu in classstulist)
  505. {
  506. var insertDatastuselect = new StuSelectLessonListEntity();
  507. insertDatastuselect.NoticeBookNo = stu.NoticeNo;
  508. insertDatastuselect.StuNo = stu.StuNo;
  509. insertDatastuselect.DeptNo = stu.DeptNo;
  510. insertDatastuselect.ClassNo = stu.ClassNo;
  511. insertDatastuselect.MajorNo = stu.MajorNo;
  512. insertDatastuselect.StuName = stu.StuName;
  513. insertDatastuselect.GenderNo = stu.GenderNo != null && stu.GenderNo.Value ? "1" : "0";
  514. insertDatastuselect.AcademicYearNo = itemteachclass.AcademicYearNo;
  515. insertDatastuselect.Semester = itemteachclass.Semester;
  516. insertDatastuselect.OpenLessonDeptNo = itemteachclass.DeptNo;
  517. insertDatastuselect.OpenLessonMajorNo = itemteachclass.MajorNo;
  518. insertDatastuselect.LessonNo = itemteachclass.LessonNo;
  519. insertDatastuselect.LessonName = lessonData.FirstOrDefault(m => m.LessonNo == itemteachclass.LessonNo)?.LessonName;
  520. insertDatastuselect.PartCode = "";
  521. insertDatastuselect.OrdinaryScoreScale = 1;
  522. insertDatastuselect.TermInScoreScale = 1;
  523. insertDatastuselect.TermEndScoreScale = 1;
  524. insertDatastuselect.OtherScoreScale = 1;
  525. insertDatastuselect.TeachClassNo = stu.ClassNo;
  526. insertDatastuselect.LessonSortNo = lessonData.FirstOrDefault(m => m.LessonNo == itemteachclass.LessonNo)?.LessonSortNo;
  527. insertDatastuselect.StuSortNo = "02";
  528. insertDatastuselect.Grade = stu.Grade;
  529. insertDatastuselect.StudyScore = lessonData.FirstOrDefault(m => m.LessonNo == itemteachclass.LessonNo).StudyScore == null ? 0 : lessonData.FirstOrDefault(m => m.LessonNo == itemteachclass.LessonNo).StudyScore;
  530. insertDatastuselect.TotalStudyHour = lessonData.FirstOrDefault(m => m.LessonNo == itemteachclass.LessonNo).TotalStudyHour == null ? 0 : lessonData.FirstOrDefault(m => m.LessonNo == itemteachclass.LessonNo).TotalStudyHour;
  531. insertDatastuselect.IsInEffect = "1";
  532. insertDatastuselect.EmpNo = itemteachclass.EmpNo;
  533. insertDatastuselect.IsPitchOn = "1";
  534. insertDatastuselect.CheckMark = "0";
  535. insertDatastuselect.InsertTime = DateTime.Now;
  536. insertDatastuselect.F_SchoolId = itemteachclass.F_SchoolId;
  537. if (stuSelectLessonListEntityData.Count(m => m.StuNo == insertDatastuselect.StuNo &&
  538. m.AcademicYearNo == insertDatastuselect.AcademicYearNo &&
  539. m.Semester == insertDatastuselect.Semester &&
  540. m.DeptNo == insertDatastuselect.DeptNo &&
  541. m.MajorNo == insertDatastuselect.MajorNo &&
  542. m.LessonNo == insertDatastuselect.LessonNo &&
  543. m.Grade == insertDatastuselect.Grade &&
  544. m.OpenLessonDeptNo == insertDatastuselect.OpenLessonDeptNo &&
  545. m.OpenLessonMajorNo == insertDatastuselect.OpenLessonMajorNo &&
  546. m.EmpNo == insertDatastuselect.EmpNo && m.ClassNo == insertDatastuselect.ClassNo &&
  547. m.F_SchoolId == insertDatastuselect.F_SchoolId) == 0 &&
  548. insertStuSelectLessonListDataList.Count(m => m.StuNo == insertDatastuselect.StuNo &&
  549. m.AcademicYearNo == insertDatastuselect.AcademicYearNo &&
  550. m.Semester == insertDatastuselect.Semester &&
  551. m.DeptNo == insertDatastuselect.DeptNo &&
  552. m.MajorNo == insertDatastuselect.MajorNo &&
  553. m.LessonNo == insertDatastuselect.LessonNo &&
  554. m.Grade == insertDatastuselect.Grade &&
  555. m.OpenLessonDeptNo == insertDatastuselect.OpenLessonDeptNo &&
  556. m.OpenLessonMajorNo == insertDatastuselect.OpenLessonMajorNo &&
  557. m.EmpNo == insertDatastuselect.EmpNo && m.ClassNo == insertDatastuselect.ClassNo &&
  558. m.F_SchoolId == insertDatastuselect.F_SchoolId) == 0)
  559. {
  560. insertStuSelectLessonListDataList.Add(insertDatastuselect);
  561. }
  562. }
  563. }
  564. await BaseRepository("CollegeMIS").InsertAsync(insertStuSelectLessonListDataList);
  565. }
  566. if (insertResult > 0)
  567. {
  568. result = true;
  569. }
  570. }
  571. }
  572. }
  573. catch (Exception ex)
  574. {
  575. if (ex is ExceptionEx)
  576. {
  577. throw;
  578. }
  579. else
  580. {
  581. throw ExceptionEx.ThrowServiceException(ex);
  582. }
  583. }
  584. return result;
  585. }
  586. /// <summary>
  587. /// 清空当前学期排课数据
  588. /// </summary>
  589. /// <returns></returns>
  590. public async Task<bool> AsyncModifyArrangeLessonData()
  591. {
  592. bool result = false;
  593. try
  594. {
  595. var apiData = await Client.GetStringAsync(Config.GetValue("ModifyArrangeLessonAPI"));
  596. if (!string.IsNullOrEmpty(apiData))
  597. {
  598. var data = JsonConvert.DeserializeObject<Root>(apiData);
  599. if (data.success)
  600. {
  601. var semesterAndYear = Common.GetSemesterAndYear();
  602. var strAcademicYear = semesterAndYear.AcademicYearShort;
  603. var strSemester = semesterAndYear.Semester;
  604. var executeResult = await BaseRepository("CollegeMIS").ExecuteAsyncBySql(
  605. $"delete from ArrangeLessonTerm where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' ");
  606. await BaseRepository("CollegeMIS").ExecuteAsyncBySql(
  607. $"delete from TeachClass where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' ");
  608. await BaseRepository("CollegeMIS").ExecuteAsyncBySql(
  609. $"delete from OpenLessonPlan where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' ");
  610. await BaseRepository("CollegeMIS").ExecuteAsyncBySql(
  611. $"delete from StuSelectLessonList where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' ");
  612. if (executeResult > 0)
  613. {
  614. result = true;
  615. }
  616. }
  617. }
  618. }
  619. catch (Exception ex)
  620. {
  621. if (ex is ExceptionEx)
  622. {
  623. throw;
  624. }
  625. else
  626. {
  627. throw ExceptionEx.ThrowServiceException(ex);
  628. }
  629. }
  630. return result;
  631. }
  632. private string stringSchoolId;
  633. private string stringAcademicYear;
  634. private string stringSemester;
  635. /// <summary>
  636. /// 按条件同步排课数据
  637. /// </summary>
  638. /// <returns></returns>
  639. public async Task<bool> AsyncArrangeLessonDataByCondition(ArrangeLessonTermEntity entity)
  640. {
  641. bool result = false;
  642. try
  643. {
  644. HttpContent httpContent = new StringContent("{\"school\":\"" + entity.F_SchoolId + "\",\"year\":\"" + entity.AcademicYearNo + "\",\"number\":\"" + entity.Semester + "\"}");
  645. httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
  646. string apiData = await Client.PostAsync(Config.GetValue("ArrangeLessonAPI"), httpContent).Result.Content.ReadAsStringAsync();
  647. if (!string.IsNullOrEmpty(apiData))
  648. {
  649. var data = JsonConvert.DeserializeObject<RootByCondition>(apiData);
  650. var dataList = data.entity.list;
  651. if (dataList.Any())
  652. {
  653. var oldArrangeLessonTermList = (await BaseRepository("CollegeMIS").FindListAsync<ArrangeLessonTermEntity>()).ToList();
  654. var insertDataList = new List<ArrangeLessonTermEntity>();
  655. var lessonData = (await BaseRepository("CollegeMIS").FindListAsync<LessonInfoEntity>()).ToList();
  656. var classData = (await BaseRepository("CollegeMIS").FindListAsync<ClassInfoEntity>()).ToList();
  657. var classroomData = (await BaseRepository("CollegeMIS").FindListAsync<ClassroomInfoEntity>()).ToList();
  658. foreach (var item in dataList)
  659. {
  660. var classinfo = classData.FirstOrDefault(m => m.ClassId == item.clazzSid);
  661. var timesArr = item.timeText.Substring(0, item.timeText.Length - 1).Split(',');
  662. foreach (var timesItem in timesArr)
  663. {
  664. if (item.section.Contains(","))
  665. {
  666. foreach (var sec in item.section.Split(','))
  667. {
  668. var insertData = new ArrangeLessonTermEntity
  669. {
  670. ALTId = Guid.NewGuid().ToString(),
  671. LessonDate = DateTime.Parse(timesItem),
  672. AcademicYearNo = item.year,
  673. Semester = item.number,
  674. DeptNo = classinfo?.DeptNo,
  675. MajorNo = classinfo?.MajorNo,
  676. LessonNo = item.curriculunNumber,
  677. LessonName = item.curriculunName,
  678. TeachClassNo = item.curriculunName + classinfo?.ClassNo,
  679. EmpNo = item.teacherNumber,
  680. EmpName = item.teacherName,
  681. LessonSortNo = lessonData.FirstOrDefault(m => m.LessonId == item.curriculunSid)?.LessonSortNo,
  682. ClassroomNo = classroomData.FirstOrDefault(m => m.ClassroomId == item.classRoomSid)?.ClassroomNo,
  683. LessonTime = item.week + sec,
  684. CheckMark = "1",
  685. F_SchoolId = item.schoolSid
  686. };
  687. stringSchoolId = insertData.F_SchoolId;
  688. stringAcademicYear = insertData.AcademicYearNo;
  689. stringSemester = insertData.Semester;
  690. if (oldArrangeLessonTermList.Count(m => m.AcademicYearNo == insertData.AcademicYearNo && m.Semester == insertData.Semester
  691. && m.LessonNo == insertData.LessonNo && m.LessonDate == insertData.LessonDate
  692. && m.DeptNo == insertData.DeptNo && m.MajorNo == insertData.MajorNo
  693. && m.TeachClassNo == insertData.TeachClassNo && m.EmpNo == insertData.EmpNo
  694. && m.ClassroomNo == insertData.ClassroomNo && m.LessonTime == insertData.LessonTime
  695. && m.F_SchoolId == insertData.F_SchoolId) == 0
  696. && insertDataList.Count(m => m.AcademicYearNo == insertData.AcademicYearNo && m.Semester == insertData.Semester
  697. && m.LessonNo == insertData.LessonNo && m.LessonDate == insertData.LessonDate
  698. && m.DeptNo == insertData.DeptNo && m.MajorNo == insertData.MajorNo
  699. && m.TeachClassNo == insertData.TeachClassNo && m.EmpNo == insertData.EmpNo
  700. && m.ClassroomNo == insertData.ClassroomNo && m.LessonTime == insertData.LessonTime
  701. && m.F_SchoolId == insertData.F_SchoolId) == 0)
  702. {
  703. insertDataList.Add(insertData);
  704. }
  705. //if (!oldArrangeLessonTermList.Any(m => m.AcademicYearNo == insertData.AcademicYearNo && m.Semester == insertData.Semester
  706. // && m.LessonNo == insertData.LessonNo && m.LessonDate == insertData.LessonDate
  707. // && m.DeptNo == insertData.DeptNo && m.MajorNo == insertData.MajorNo
  708. // && m.TeachClassNo == insertData.TeachClassNo && m.EmpNo == insertData.EmpNo
  709. // && m.ClassroomNo == insertData.ClassroomNo && m.LessonTime == insertData.LessonTime
  710. // && m.F_SchoolId == insertData.F_SchoolId)
  711. // && !insertDataList.Any(m => m.AcademicYearNo == insertData.AcademicYearNo && m.Semester == insertData.Semester
  712. // && m.LessonNo == insertData.LessonNo && m.LessonDate == insertData.LessonDate
  713. // && m.DeptNo == insertData.DeptNo && m.MajorNo == insertData.MajorNo
  714. // && m.TeachClassNo == insertData.TeachClassNo && m.EmpNo == insertData.EmpNo
  715. // && m.ClassroomNo == insertData.ClassroomNo && m.LessonTime == insertData.LessonTime
  716. // && m.F_SchoolId == insertData.F_SchoolId))
  717. //{
  718. // insertDataList.Add(insertData);
  719. //}
  720. }
  721. }
  722. else
  723. {
  724. var insertData = new ArrangeLessonTermEntity
  725. {
  726. ALTId = Guid.NewGuid().ToString(),
  727. LessonDate = DateTime.Parse(timesItem),
  728. AcademicYearNo = item.year,
  729. Semester = item.number,
  730. DeptNo = classinfo?.DeptNo,
  731. MajorNo = classinfo?.MajorNo,
  732. LessonNo = item.curriculunNumber,
  733. LessonName = item.curriculunName,
  734. TeachClassNo = item.curriculunName + classinfo?.ClassNo,
  735. EmpNo = item.teacherNumber,
  736. EmpName = item.teacherName,
  737. LessonSortNo = lessonData.FirstOrDefault(m => m.LessonId == item.curriculunSid)?.LessonSortNo,
  738. ClassroomNo = classroomData.FirstOrDefault(m => m.ClassroomId == item.classRoomSid)?.ClassroomNo,
  739. LessonTime = item.week + item.section,
  740. CheckMark = "1",
  741. F_SchoolId = item.schoolSid
  742. };
  743. stringSchoolId = insertData.F_SchoolId;
  744. stringAcademicYear = insertData.AcademicYearNo;
  745. stringSemester = insertData.Semester;
  746. if (oldArrangeLessonTermList.Count(m => m.AcademicYearNo == insertData.AcademicYearNo && m.Semester == insertData.Semester
  747. && m.LessonNo == insertData.LessonNo && m.LessonDate == insertData.LessonDate
  748. && m.DeptNo == insertData.DeptNo && m.MajorNo == insertData.MajorNo
  749. && m.TeachClassNo == insertData.TeachClassNo && m.EmpNo == insertData.EmpNo
  750. && m.ClassroomNo == insertData.ClassroomNo && m.LessonTime == insertData.LessonTime
  751. && m.F_SchoolId == insertData.F_SchoolId) == 0
  752. && insertDataList.Count(m => m.AcademicYearNo == insertData.AcademicYearNo && m.Semester == insertData.Semester
  753. && m.LessonNo == insertData.LessonNo && m.LessonDate == insertData.LessonDate
  754. && m.DeptNo == insertData.DeptNo && m.MajorNo == insertData.MajorNo
  755. && m.TeachClassNo == insertData.TeachClassNo && m.EmpNo == insertData.EmpNo
  756. && m.ClassroomNo == insertData.ClassroomNo && m.LessonTime == insertData.LessonTime
  757. && m.F_SchoolId == insertData.F_SchoolId) == 0)
  758. {
  759. insertDataList.Add(insertData);
  760. }
  761. }
  762. }
  763. }
  764. var insertResult = await BaseRepository("CollegeMIS").InsertAsync(insertDataList);
  765. //TeachClass数据处理
  766. var arrangeLessonTermData = (await BaseRepository("CollegeMIS").FindListAsync<ArrangeLessonTermEntity>(@"select F_SchoolId,AcademicYearNo,Semester,DeptNo,majorno,lessonno,replace(teachclassno,lessonname,'') as teachclassno,empno from [dbo].[ArrangeLessonTerm]
  767. where (AcademicYearNo = '" + stringAcademicYear + "') and semester='" + stringSemester + "' and F_SchoolId = '" + stringSchoolId + @"'
  768. group by F_SchoolId,AcademicYearNo,Semester,DeptNo,majorno,lessonno,replace(teachclassno,lessonname,'') ,empno ")).ToList();
  769. var TeachClassData = (await BaseRepository("CollegeMIS").FindListAsync<TeachClassEntity>(@"SELECT *
  770. FROM TeachClass
  771. WHERE (AcademicYearNo = '" + stringAcademicYear + "') and semester='" + stringSemester + "' and F_SchoolId='" + stringSchoolId + "' ")).ToList();
  772. var insertTeachClassDataList = new List<TeachClassEntity>();
  773. if (arrangeLessonTermData.Any())
  774. {
  775. foreach (var altitem in arrangeLessonTermData)
  776. {
  777. var insertTeachClassData = new TeachClassEntity()
  778. {
  779. AcademicYearNo = altitem.AcademicYearNo,
  780. Semester = altitem.Semester,
  781. DeptNo = altitem.DeptNo,
  782. MajorNo = altitem.MajorNo,
  783. LessonNo = altitem.LessonNo,
  784. Grade = classData.FirstOrDefault(m => m.ClassNo == altitem.TeachClassNo)?.Grade,
  785. LessonSortNo ="1",
  786. TeachClassNo = altitem.TeachClassNo,
  787. EmpNo = altitem.EmpNo,
  788. F_SchoolId = altitem.F_SchoolId
  789. };
  790. //非空判断
  791. if (TeachClassData.Count(m => m.AcademicYearNo == insertTeachClassData.AcademicYearNo &&
  792. m.Semester == insertTeachClassData.Semester && m.DeptNo == insertTeachClassData.DeptNo &&
  793. m.MajorNo == insertTeachClassData.MajorNo && m.LessonNo == insertTeachClassData.LessonNo &&
  794. m.Grade == insertTeachClassData.Grade && m.LessonSortNo == insertTeachClassData.LessonSortNo &&
  795. m.TeachClassNo == insertTeachClassData.TeachClassNo && m.EmpNo == insertTeachClassData.EmpNo &&
  796. m.F_SchoolId == insertTeachClassData.F_SchoolId) == 0
  797. && insertTeachClassDataList.Count(m => m.AcademicYearNo == insertTeachClassData.AcademicYearNo &&
  798. m.Semester == insertTeachClassData.Semester && m.DeptNo == insertTeachClassData.DeptNo &&
  799. m.MajorNo == insertTeachClassData.MajorNo && m.LessonNo == insertTeachClassData.LessonNo &&
  800. m.Grade == insertTeachClassData.Grade && m.LessonSortNo == insertTeachClassData.LessonSortNo &&
  801. m.TeachClassNo == insertTeachClassData.TeachClassNo && m.EmpNo == insertTeachClassData.EmpNo &&
  802. m.F_SchoolId == insertTeachClassData.F_SchoolId) == 0)
  803. {
  804. insertTeachClassDataList.Add(insertTeachClassData);
  805. }
  806. }
  807. await BaseRepository("CollegeMIS").InsertAsync(insertTeachClassDataList);
  808. }
  809. //继续openlessonplan同步
  810. await AsyncOpenLessonPlanDataByCondition(entity);
  811. if (insertResult > 0)
  812. {
  813. result = true;
  814. }
  815. }
  816. }
  817. }
  818. catch (Exception ex)
  819. {
  820. if (ex is ExceptionEx)
  821. {
  822. throw;
  823. }
  824. else
  825. {
  826. throw ExceptionEx.ThrowServiceException(ex);
  827. }
  828. }
  829. return result;
  830. }
  831. /// <summary>
  832. /// 按条件同步专业开课计划数据,学生选课数据
  833. /// </summary>
  834. /// <returns></returns>
  835. public async Task<bool> AsyncOpenLessonPlanDataByCondition(ArrangeLessonTermEntity entity)
  836. {
  837. bool result = false;
  838. try
  839. {
  840. HttpContent httpContent = new StringContent("{\"school\":\"" + entity.F_SchoolId + "\",\"year\":\"" + entity.AcademicYearNo + "\",\"number\":\"" + entity.Semester + "\"}");
  841. httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
  842. string apiData = await Client.PostAsync(Config.GetValue("OpenLessonPlanAPI"), httpContent).Result.Content.ReadAsStringAsync();
  843. if (!string.IsNullOrEmpty(apiData))
  844. {
  845. var data = JsonConvert.DeserializeObject<RootOfPlanByCondition>(apiData);
  846. var dataList = data.entity.list;
  847. var openLessonPlanData = await BaseRepository("CollegeMIS").FindListAsync<OpenLessonPlanEntity>();
  848. if (dataList.Any())
  849. {
  850. var insertDataList = new List<OpenLessonPlanEntity>();
  851. var majorData = (await BaseRepository("CollegeMIS").FindListAsync<CdMajorEntity>()).ToList();
  852. var lessonData = (await BaseRepository("CollegeMIS").FindListAsync<LessonInfoEntity>()).ToList();
  853. var now = DateTime.Now;
  854. foreach (var item in dataList)
  855. {
  856. var insertData = new OpenLessonPlanEntity()
  857. {
  858. MakeDate = now,
  859. AcademicYearNo = item.semester.year,
  860. Semester = item.semester.number,
  861. DeptNo = majorData.FirstOrDefault(m => m.ID == item.major.sid)?.DeptNo,
  862. MajorNo = item.major.number,
  863. LessonNo = item.course.course.number,
  864. LessonName = item.course.course.name,
  865. PartCode = "",
  866. Grade = item.grade,
  867. LessonSortNo = lessonData.FirstOrDefault(m => m.LessonNo == item.course.course.number)?.LessonSortNo,
  868. LessonSortDetailNo = lessonData.FirstOrDefault(m => m.LessonNo == item.course.course.number)?.LessonSortDetailNo,
  869. StartWeek = item.semester.yesNo,
  870. EndWeek = item.semester.week,
  871. CheckStyleNo = "1",
  872. ScoreRecordStyleNo = "1",
  873. TeachDeptNo = majorData.FirstOrDefault(m => m.ID == item.major.sid)?.DeptNo,
  874. StudyScore = 0,
  875. AmendDate = now,
  876. ClassroomType = 1,
  877. ClassroomPracticeType = 99,
  878. CheckMarkDept = "1",
  879. CheckMark = "1",
  880. TestMark = 0,
  881. F_SchoolId = item.school.sid
  882. };
  883. if (openLessonPlanData.Count(m => m.AcademicYearNo == insertData.AcademicYearNo &&
  884. m.Semester == insertData.Semester &&
  885. m.DeptNo == insertData.DeptNo &&
  886. m.MajorNo == insertData.MajorNo &&
  887. m.LessonNo == insertData.LessonNo &&
  888. m.Grade == insertData.Grade &&
  889. m.LessonSortNo == insertData.LessonSortNo &&
  890. m.LessonName == insertData.LessonName &&
  891. m.F_SchoolId == insertData.F_SchoolId) == 0 && insertDataList.Count(m => m.AcademicYearNo == insertData.AcademicYearNo &&
  892. m.Semester == insertData.Semester &&
  893. m.DeptNo == insertData.DeptNo &&
  894. m.MajorNo == insertData.MajorNo &&
  895. m.LessonNo == insertData.LessonNo &&
  896. m.Grade == insertData.Grade &&
  897. m.LessonSortNo == insertData.LessonSortNo &&
  898. m.LessonName == insertData.LessonName &&
  899. m.F_SchoolId == insertData.F_SchoolId) == 0)
  900. {
  901. insertDataList.Add(insertData);
  902. }
  903. }
  904. var insertResult = await BaseRepository("CollegeMIS").InsertAsync(insertDataList);
  905. //学生选课数据
  906. var TeachClassData = (await BaseRepository("CollegeMIS").FindListAsync<TeachClassEntity>(@"SELECT *
  907. FROM TeachClass
  908. WHERE (AcademicYearNo = '" + stringAcademicYear + "') and semester='" + stringSemester + "' and F_SchoolId='" + stringSchoolId + "' ")).ToList();
  909. var stuinfobasicData = (await BaseRepository("CollegeMIS").FindListAsync<StuInfoBasicEntity>()).ToList();
  910. var stuSelectLessonListEntityData = (await BaseRepository("CollegeMIS").FindListAsync<StuSelectLessonListEntity>()).ToList();
  911. var insertStuSelectLessonListDataList = new List<StuSelectLessonListEntity>();
  912. if (TeachClassData.Any())
  913. {
  914. foreach (var itemteachclass in TeachClassData)
  915. {
  916. var classstulist = stuinfobasicData.Where(m => m.ClassNo == itemteachclass.TeachClassNo)
  917. .ToList();
  918. foreach (var stu in classstulist)
  919. {
  920. var insertDatastuselect = new StuSelectLessonListEntity();
  921. insertDatastuselect.NoticeBookNo = stu.NoticeNo;
  922. insertDatastuselect.StuNo = stu.StuNo;
  923. insertDatastuselect.DeptNo = stu.DeptNo;
  924. insertDatastuselect.ClassNo = stu.ClassNo;
  925. insertDatastuselect.MajorNo = stu.MajorNo;
  926. insertDatastuselect.StuName = stu.StuName;
  927. insertDatastuselect.GenderNo = stu.GenderNo != null && stu.GenderNo.Value ? "1" : "0";
  928. insertDatastuselect.AcademicYearNo = itemteachclass.AcademicYearNo;
  929. insertDatastuselect.Semester = itemteachclass.Semester;
  930. insertDatastuselect.OpenLessonDeptNo = itemteachclass.DeptNo;
  931. insertDatastuselect.OpenLessonMajorNo = itemteachclass.MajorNo;
  932. insertDatastuselect.LessonNo = itemteachclass.LessonNo;
  933. insertDatastuselect.LessonName = lessonData.FirstOrDefault(m => m.LessonNo == itemteachclass.LessonNo)?.LessonName;
  934. insertDatastuselect.PartCode = "";
  935. insertDatastuselect.OrdinaryScoreScale = 1;
  936. insertDatastuselect.TermInScoreScale = 1;
  937. insertDatastuselect.TermEndScoreScale = 1;
  938. insertDatastuselect.OtherScoreScale = 1;
  939. insertDatastuselect.TeachClassNo = stu.ClassNo;
  940. insertDatastuselect.LessonSortNo = lessonData.FirstOrDefault(m => m.LessonNo == itemteachclass.LessonNo)?.LessonSortNo;
  941. insertDatastuselect.StuSortNo = "02";
  942. insertDatastuselect.Grade = stu.Grade;
  943. insertDatastuselect.StudyScore = 0;
  944. insertDatastuselect.TotalStudyHour = 0;
  945. insertDatastuselect.IsInEffect = "1";
  946. insertDatastuselect.EmpNo = itemteachclass.EmpNo;
  947. insertDatastuselect.IsPitchOn = "1";
  948. insertDatastuselect.CheckMark = "1";
  949. insertDatastuselect.InsertTime = DateTime.Now;
  950. insertDatastuselect.F_SchoolId = itemteachclass.F_SchoolId;
  951. if (stuSelectLessonListEntityData.Count(m => m.StuNo == insertDatastuselect.StuNo &&
  952. m.AcademicYearNo == insertDatastuselect.AcademicYearNo &&
  953. m.Semester == insertDatastuselect.Semester &&
  954. m.DeptNo == insertDatastuselect.DeptNo &&
  955. m.MajorNo == insertDatastuselect.MajorNo &&
  956. m.LessonNo == insertDatastuselect.LessonNo &&
  957. m.Grade == insertDatastuselect.Grade &&
  958. m.OpenLessonDeptNo == insertDatastuselect.OpenLessonDeptNo &&
  959. m.OpenLessonMajorNo == insertDatastuselect.OpenLessonMajorNo &&
  960. m.EmpNo == insertDatastuselect.EmpNo && m.ClassNo == insertDatastuselect.ClassNo &&
  961. m.F_SchoolId == insertDatastuselect.F_SchoolId) == 0 &&
  962. insertStuSelectLessonListDataList.Count(m => m.StuNo == insertDatastuselect.StuNo &&
  963. m.AcademicYearNo == insertDatastuselect.AcademicYearNo &&
  964. m.Semester == insertDatastuselect.Semester &&
  965. m.DeptNo == insertDatastuselect.DeptNo &&
  966. m.MajorNo == insertDatastuselect.MajorNo &&
  967. m.LessonNo == insertDatastuselect.LessonNo &&
  968. m.Grade == insertDatastuselect.Grade &&
  969. m.OpenLessonDeptNo == insertDatastuselect.OpenLessonDeptNo &&
  970. m.OpenLessonMajorNo == insertDatastuselect.OpenLessonMajorNo &&
  971. m.EmpNo == insertDatastuselect.EmpNo && m.ClassNo == insertDatastuselect.ClassNo &&
  972. m.F_SchoolId == insertDatastuselect.F_SchoolId) == 0)
  973. {
  974. insertStuSelectLessonListDataList.Add(insertDatastuselect);
  975. }
  976. }
  977. }
  978. await BaseRepository("CollegeMIS").InsertAsync(insertStuSelectLessonListDataList);
  979. }
  980. if (insertResult > 0)
  981. {
  982. result = true;
  983. }
  984. }
  985. }
  986. }
  987. catch (Exception ex)
  988. {
  989. if (ex is ExceptionEx)
  990. {
  991. throw;
  992. }
  993. else
  994. {
  995. throw ExceptionEx.ThrowServiceException(ex);
  996. }
  997. }
  998. return result;
  999. }
  1000. /// <summary>
  1001. /// 按条件清空排课数据
  1002. /// </summary>
  1003. /// <returns></returns>
  1004. public async Task<bool> AsyncModifyArrangeLessonDataByCondition(ArrangeLessonTermEntity entity)
  1005. {
  1006. bool result = false;
  1007. try
  1008. {
  1009. HttpContent httpContent = new StringContent("{\"school\":\"" + entity.F_SchoolId + "\",\"year\":\"" + entity.AcademicYearNo + "\",\"number\":\"" + entity.Semester + "\"}");
  1010. httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
  1011. string apiData = await Client.PostAsync(Config.GetValue("ModifyArrangeLessonAPI"), httpContent).Result.Content.ReadAsStringAsync();
  1012. if (!string.IsNullOrEmpty(apiData))
  1013. {
  1014. var data = JsonConvert.DeserializeObject<Root>(apiData);
  1015. if (data.success)
  1016. {
  1017. var executeResult = await BaseRepository("CollegeMIS").ExecuteAsyncBySql(
  1018. $"delete from ArrangeLessonTerm where F_SchoolId='{entity.F_SchoolId}' and AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' ");
  1019. await BaseRepository("CollegeMIS").ExecuteAsyncBySql(
  1020. $"delete from TeachClass where F_SchoolId='{entity.F_SchoolId}' and AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' ");
  1021. await BaseRepository("CollegeMIS").ExecuteAsyncBySql(
  1022. $"delete from OpenLessonPlan where F_SchoolId='{entity.F_SchoolId}' and AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' ");
  1023. await BaseRepository("CollegeMIS").ExecuteAsyncBySql(
  1024. $"delete from StuSelectLessonList where F_SchoolId='{entity.F_SchoolId}' and AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' ");
  1025. if (executeResult > 0)
  1026. {
  1027. result = true;
  1028. }
  1029. }
  1030. }
  1031. }
  1032. catch (Exception ex)
  1033. {
  1034. if (ex is ExceptionEx)
  1035. {
  1036. throw;
  1037. }
  1038. else
  1039. {
  1040. throw ExceptionEx.ThrowServiceException(ex);
  1041. }
  1042. }
  1043. return result;
  1044. }
  1045. /// <summary>
  1046. /// 课程表
  1047. /// </summary>
  1048. /// <param name="userAccount">账号</param>
  1049. /// <param name="userType">用户类型 学生 教师</param>
  1050. /// <param name="startDate">查询开始时间</param>
  1051. /// <param name="endDate">查询截止时间</param>
  1052. /// <returns></returns>
  1053. public IEnumerable<TimeTable> GetTimeTable(string userAccount, string userType, string startDate, string endDate)
  1054. {
  1055. var semesterAndYear = Common.GetSemesterAndYear(startDate);
  1056. var strAcademicYear = semesterAndYear.AcademicYearShort;
  1057. var strSemester = semesterAndYear.Semester;
  1058. string sql;
  1059. if (userType == "学生")
  1060. {
  1061. sql = @"SELECT
  1062. 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 from StuSelectLessonList a
  1063. left join ArrangeLessonTerm b on b.TeachClassNo=RTRIM(a.LessonName) + RTRIM(a.PartCode) + RTRIM(a.TeachClassNo)
  1064. left join ClassroomInfo c on c.ClassroomNo=b.classroomNo
  1065. left join ClassInfo d on replace(b.TeachClassNo,b.LessonName,'')=d.ClassNo
  1066. left join LessonInfo e on a.LessonNo=e.LessonNo
  1067. where a.StuNo=@userAccount and a.AcademicYearNo=@strAcademicYear and a.Semester=@strSemester
  1068. and b.AcademicYearNo=@strAcademicYear and b.Semester=@strSemester
  1069. and b.LessonDate>=@startDate and b.LessonDate<=@endDate and b.CheckMark=1";
  1070. }
  1071. else
  1072. {
  1073. 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
  1074. left join ClassroomInfo c on c.ClassroomNo=b.classroomNo
  1075. left join ClassInfo d on replace(b.TeachClassNo,b.LessonName,'')=d.ClassNo
  1076. left join LessonInfo e on b.LessonNo=e.LessonNo
  1077. where b.EmpNo=@userAccount and b.AcademicYearNo=@strAcademicYear and b.Semester=@strSemester
  1078. and b.LessonDate>=@startDate and b.LessonDate<=@endDate and b.CheckMark=1";
  1079. }
  1080. try
  1081. {
  1082. var result = BaseRepository("CollegeMIS").FindList<TimeTable>(sql, new { userAccount, startDate, endDate, strAcademicYear, strSemester });
  1083. return result;
  1084. }
  1085. catch (Exception ex)
  1086. {
  1087. if (ex is ExceptionEx)
  1088. {
  1089. throw;
  1090. }
  1091. else
  1092. {
  1093. throw ExceptionEx.ThrowServiceException(ex);
  1094. }
  1095. }
  1096. }
  1097. public IEnumerable<CdMajorEntity> GetMajors(string academicYearNo, string semester)
  1098. {
  1099. try
  1100. {
  1101. //var data = BaseRepository("CollegeMIS").FindList<CdMajorEntity>(m => m.CheckMark == true);
  1102. //根据学年学期判断排课同步数据表中是否有数据:若有,说明该学年学期同步过;若没有,修改基础表,false;
  1103. var aa = this.BaseRepository("CollegeMIS").FindEntity<ArrangeLessonSyncEntity>(x => x.AcademicYearNo == academicYearNo && x.Semester == semester && x.STypeId == "3");
  1104. if (aa == null)
  1105. {
  1106. this.BaseRepository("CollegeMIS").ExecuteBySql("update CdMajor set SyncFlag='false' ");
  1107. }
  1108. //数据
  1109. var db = BaseRepository("CollegeMIS");
  1110. db.BeginTrans();
  1111. 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 + "' )");
  1112. DateTime syncdate = DateTime.Now;
  1113. foreach (var item in data.Select(m => m.ID))
  1114. {
  1115. ArrangeLessonSyncEntity alsEntity = new ArrangeLessonSyncEntity();
  1116. alsEntity.Create();
  1117. alsEntity.AcademicYearNo = academicYearNo;
  1118. alsEntity.Semester = semester;
  1119. alsEntity.STypeId = "3";
  1120. alsEntity.SDate = syncdate;
  1121. alsEntity.STableId = item;
  1122. db.Insert(alsEntity);
  1123. }
  1124. db.Commit();
  1125. return data;
  1126. }
  1127. catch (Exception e)
  1128. {
  1129. Console.WriteLine(e);
  1130. throw;
  1131. }
  1132. }
  1133. public IEnumerable<CdMajorEntity> GetMajorsNotRecord(string academicYearNo, string semester)
  1134. {
  1135. try
  1136. {
  1137. //var data = BaseRepository("CollegeMIS").FindList<CdMajorEntity>(m => m.CheckMark == true);
  1138. var db = BaseRepository("CollegeMIS");
  1139. db.BeginTrans();
  1140. 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 + "' )");
  1141. db.Commit();
  1142. return data;
  1143. }
  1144. catch (Exception e)
  1145. {
  1146. Console.WriteLine(e);
  1147. throw;
  1148. }
  1149. }
  1150. public IEnumerable<ClassroomInfoEntity> GetClassrooms(string academicYearNo, string semester)
  1151. {
  1152. try
  1153. {
  1154. //var data = BaseRepository("CollegeMIS").FindList<ClassroomInfoEntity>(m => m.CheckMark == true);
  1155. //根据学年学期判断排课同步数据表中是否有数据:若有,说明该学年学期同步过;若没有,修改基础表,false;
  1156. var aa = this.BaseRepository("CollegeMIS").FindEntity<ArrangeLessonSyncEntity>(x => x.AcademicYearNo == academicYearNo && x.Semester == semester && x.STypeId == "6");
  1157. if (aa == null)
  1158. {
  1159. this.BaseRepository("CollegeMIS").ExecuteBySql("update ClassroomInfo set SyncFlag='false' ");
  1160. }
  1161. //数据
  1162. var db = BaseRepository("CollegeMIS");
  1163. db.BeginTrans();
  1164. 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 + "' )");
  1165. DateTime syncdate = DateTime.Now;
  1166. foreach (var item in data.Select(m => m.ClassroomId))
  1167. {
  1168. ArrangeLessonSyncEntity alsEntity = new ArrangeLessonSyncEntity();
  1169. alsEntity.Create();
  1170. alsEntity.AcademicYearNo = academicYearNo;
  1171. alsEntity.Semester = semester;
  1172. alsEntity.STypeId = "6";
  1173. alsEntity.SDate = syncdate;
  1174. alsEntity.STableId = item;
  1175. db.Insert(alsEntity);
  1176. }
  1177. db.Commit();
  1178. return data;
  1179. }
  1180. catch (Exception e)
  1181. {
  1182. Console.WriteLine(e);
  1183. throw;
  1184. }
  1185. }
  1186. public IEnumerable<ClassroomInfoEntity> GetClassroomsNotRecord(string academicYearNo, string semester)
  1187. {
  1188. try
  1189. {
  1190. //var data = BaseRepository("CollegeMIS").FindList<ClassroomInfoEntity>(m => m.CheckMark == true);
  1191. var db = BaseRepository("CollegeMIS");
  1192. db.BeginTrans();
  1193. 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 + "' )");
  1194. db.Commit();
  1195. return data;
  1196. }
  1197. catch (Exception e)
  1198. {
  1199. Console.WriteLine(e);
  1200. throw;
  1201. }
  1202. }
  1203. public IEnumerable<CdClassTypeEntity> GetClassType()
  1204. {
  1205. try
  1206. {
  1207. var data = BaseRepository("CollegeMIS").FindList<CdClassTypeEntity>();
  1208. return data;
  1209. }
  1210. catch (Exception e)
  1211. {
  1212. Console.WriteLine(e);
  1213. throw;
  1214. }
  1215. }
  1216. public IEnumerable<LessonInfoEntity> GetLessons(string academicYearNo, string semester)
  1217. {
  1218. try
  1219. {
  1220. //var data = BaseRepository("CollegeMIS").FindList<LessonInfoEntity>(m => m.CheckMark == true);
  1221. //根据学年学期判断排课同步数据表中是否有数据:若有,说明该学年学期同步过;若没有,修改基础表,false;
  1222. var aa = this.BaseRepository("CollegeMIS").FindEntity<ArrangeLessonSyncEntity>(x => x.AcademicYearNo == academicYearNo && x.Semester == semester && x.STypeId == "5");
  1223. if (aa == null)
  1224. {
  1225. this.BaseRepository("CollegeMIS").ExecuteBySql("update LessonInfo set SyncFlag='false' ");
  1226. }
  1227. //数据
  1228. var db = BaseRepository("CollegeMIS");
  1229. db.BeginTrans();
  1230. 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 + "' )");
  1231. DateTime syncdate = DateTime.Now;
  1232. foreach (var item in data.Select(m => m.LessonId))
  1233. {
  1234. ArrangeLessonSyncEntity alsEntity = new ArrangeLessonSyncEntity();
  1235. alsEntity.Create();
  1236. alsEntity.AcademicYearNo = academicYearNo;
  1237. alsEntity.Semester = semester;
  1238. alsEntity.STypeId = "5";
  1239. alsEntity.SDate = syncdate;
  1240. alsEntity.STableId = item;
  1241. db.Insert(alsEntity);
  1242. }
  1243. db.Commit();
  1244. return data;
  1245. }
  1246. catch (Exception e)
  1247. {
  1248. Console.WriteLine(e);
  1249. throw;
  1250. }
  1251. }
  1252. public IEnumerable<LessonInfoEntity> GetLessonsNotRecord(string academicYearNo, string semester)
  1253. {
  1254. try
  1255. {
  1256. //var data = BaseRepository("CollegeMIS").FindList<LessonInfoEntity>(m => m.CheckMark == true);
  1257. var db = BaseRepository("CollegeMIS");
  1258. db.BeginTrans();
  1259. 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 + "' )");
  1260. db.Commit();
  1261. return data;
  1262. }
  1263. catch (Exception e)
  1264. {
  1265. Console.WriteLine(e);
  1266. throw;
  1267. }
  1268. }
  1269. public IEnumerable<CdLessonSortDetailEntity> GetLessonSortDetails()
  1270. {
  1271. try
  1272. {
  1273. var data = BaseRepository("CollegeMIS").FindList<CdLessonSortDetailEntity>();
  1274. return data;
  1275. }
  1276. catch (Exception e)
  1277. {
  1278. Console.WriteLine(e);
  1279. throw;
  1280. }
  1281. }
  1282. public IEnumerable<CdLessonSortEntity> GetLessonSorts()
  1283. {
  1284. try
  1285. {
  1286. var data = BaseRepository("CollegeMIS").FindList<CdLessonSortEntity>();
  1287. return data;
  1288. }
  1289. catch (Exception e)
  1290. {
  1291. Console.WriteLine(e);
  1292. throw;
  1293. }
  1294. }
  1295. public IEnumerable<EmpInfoEntity> GetTeachers(string academicYearNo, string semester)
  1296. {
  1297. try
  1298. {
  1299. //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");
  1300. //根据学年学期判断排课同步数据表中是否有数据:若有,说明该学年学期同步过;若没有,修改基础表,false;
  1301. var aa = this.BaseRepository("CollegeMIS").FindEntity<ArrangeLessonSyncEntity>(x => x.AcademicYearNo == academicYearNo && x.Semester == semester && x.STypeId == "7");
  1302. if (aa == null)
  1303. {
  1304. this.BaseRepository("CollegeMIS").ExecuteBySql("update EmpInfo set SyncFlag='false' ");
  1305. }
  1306. //数据
  1307. var db = BaseRepository("CollegeMIS");
  1308. var dbbase = BaseRepository();
  1309. db.BeginTrans();
  1310. 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 + "' )");
  1311. DateTime syncdate = DateTime.Now;
  1312. foreach (var item in data.Select(m => m.EmpId))
  1313. {
  1314. ArrangeLessonSyncEntity alsEntity = new ArrangeLessonSyncEntity();
  1315. alsEntity.Create();
  1316. alsEntity.AcademicYearNo = academicYearNo;
  1317. alsEntity.Semester = semester;
  1318. alsEntity.STypeId = "7";
  1319. alsEntity.SDate = syncdate;
  1320. alsEntity.STableId = item;
  1321. db.Insert(alsEntity);
  1322. }
  1323. db.Commit();
  1324. return data;
  1325. }
  1326. catch (Exception e)
  1327. {
  1328. Console.WriteLine(e);
  1329. throw;
  1330. }
  1331. }
  1332. public IEnumerable<EmpInfoEntity> GetTeachersNotRecord(string academicYearNo, string semester)
  1333. {
  1334. try
  1335. {
  1336. //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");
  1337. var db = BaseRepository("CollegeMIS");
  1338. var dbbase = BaseRepository();
  1339. db.BeginTrans();
  1340. 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 + "' )");
  1341. db.Commit();
  1342. return data;
  1343. }
  1344. catch (Exception e)
  1345. {
  1346. Console.WriteLine(e);
  1347. throw;
  1348. }
  1349. }
  1350. public IEnumerable<ClassInfoEntity> GetClasses(string academicYearNo, string semester)
  1351. {
  1352. try
  1353. {
  1354. //var data = BaseRepository("CollegeMIS").FindList<ClassInfoEntity>(m => m.CheckMark == true);
  1355. //根据学年学期判断排课同步数据表中是否有数据:若有,说明该学年学期同步过;若没有,修改基础表,false;
  1356. var aa = this.BaseRepository("CollegeMIS").FindEntity<ArrangeLessonSyncEntity>(x => x.AcademicYearNo == academicYearNo && x.Semester == semester && x.STypeId == "4");
  1357. if (aa == null)
  1358. {
  1359. this.BaseRepository("CollegeMIS").ExecuteBySql("update ClassInfo set SyncFlag='false' ");
  1360. }
  1361. //数据
  1362. var db = BaseRepository("CollegeMIS");
  1363. db.BeginTrans();
  1364. 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 + "' )");
  1365. DateTime syncdate = DateTime.Now;
  1366. foreach (var item in data.Select(m => m.ClassId))
  1367. {
  1368. ArrangeLessonSyncEntity alsEntity = new ArrangeLessonSyncEntity();
  1369. alsEntity.Create();
  1370. alsEntity.AcademicYearNo = academicYearNo;
  1371. alsEntity.Semester = semester;
  1372. alsEntity.STypeId = "4";
  1373. alsEntity.SDate = syncdate;
  1374. alsEntity.STableId = item;
  1375. db.Insert(alsEntity);
  1376. }
  1377. db.Commit();
  1378. return data;
  1379. }
  1380. catch (Exception e)
  1381. {
  1382. Console.WriteLine(e);
  1383. throw;
  1384. }
  1385. }
  1386. public IEnumerable<ClassInfoEntity> GetClassesNotRecord(string academicYearNo, string semester)
  1387. {
  1388. try
  1389. {
  1390. //var data = BaseRepository("CollegeMIS").FindList<ClassInfoEntity>(m => m.CheckMark == true);
  1391. var db = BaseRepository("CollegeMIS");
  1392. db.BeginTrans();
  1393. 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 + "' )");
  1394. db.Commit();
  1395. return data;
  1396. }
  1397. catch (Exception e)
  1398. {
  1399. Console.WriteLine(e);
  1400. throw;
  1401. }
  1402. }
  1403. public IEnumerable<StuInfoBasicEntity> GetStus(string academicYearNo, string semester)
  1404. {
  1405. try
  1406. {
  1407. //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'");
  1408. //根据学年学期判断排课同步数据表中是否有数据:若有,说明该学年学期同步过;若没有,修改基础表,false;
  1409. var aa = this.BaseRepository("CollegeMIS").FindEntity<ArrangeLessonSyncEntity>(x => x.AcademicYearNo == academicYearNo && x.Semester == semester && x.STypeId == "8");
  1410. if (aa == null)
  1411. {
  1412. this.BaseRepository("CollegeMIS").ExecuteBySql("update StuInfoBasic set SyncFlag='false' ");
  1413. }
  1414. //数据
  1415. var db = BaseRepository("CollegeMIS");
  1416. var dbbase = BaseRepository();
  1417. db.BeginTrans();
  1418. 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 + "' )");
  1419. DateTime syncdate = DateTime.Now;
  1420. foreach (var item in data.Select(m => m.StuId))
  1421. {
  1422. ArrangeLessonSyncEntity alsEntity = new ArrangeLessonSyncEntity();
  1423. alsEntity.Create();
  1424. alsEntity.AcademicYearNo = academicYearNo;
  1425. alsEntity.Semester = semester;
  1426. alsEntity.STypeId = "8";
  1427. alsEntity.SDate = syncdate;
  1428. alsEntity.STableId = item;
  1429. db.Insert(alsEntity);
  1430. }
  1431. db.Commit();
  1432. return data;
  1433. }
  1434. catch (Exception e)
  1435. {
  1436. Console.WriteLine(e);
  1437. throw;
  1438. }
  1439. }
  1440. public IEnumerable<StuInfoBasicEntity> GetStusNotRecord(string academicYearNo, string semester)
  1441. {
  1442. try
  1443. {
  1444. //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'");
  1445. //数据
  1446. var db = BaseRepository("CollegeMIS");
  1447. var dbbase = BaseRepository();
  1448. db.BeginTrans();
  1449. 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 + "' )");
  1450. db.Commit();
  1451. return data;
  1452. }
  1453. catch (Exception e)
  1454. {
  1455. Console.WriteLine(e);
  1456. throw;
  1457. }
  1458. }
  1459. public IEnumerable<StuInfoBasicEntity> GetStudents()
  1460. {
  1461. try
  1462. {
  1463. var data = BaseRepository("CollegeMIS").FindList<StuInfoBasicEntity>(@"select a.StuId,a.StuNo,a.DeptNo,a.MajorNo,a.Grade,a.ClassNo,
  1464. a.StuName,GenderNo,a.Birthday,b.F_Password,b.F_Secretkey from
  1465. dbo.StuInfoBasic a left join adms7ultimate2.dbo.LR_Base_User b on a.StuNo=b.F_EnCode where a.CheckMark='1'");
  1466. return data;
  1467. }
  1468. catch (Exception e)
  1469. {
  1470. Console.WriteLine(e);
  1471. throw;
  1472. }
  1473. }
  1474. public IEnumerable<TeachClassEntity> GetClassLessons()
  1475. {
  1476. try
  1477. {
  1478. var data = BaseRepository("CollegeMIS").FindList<TeachClassEntity>(@"select AcademicYearNo,Semester,DeptNo,MajorNo,LessonNo,TeachClassNo,EmpNo,LessonSortNo from TeachClass
  1479. group by AcademicYearNo,Semester,DeptNo,MajorNo,LessonNo,TeachClassNo,EmpNo,LessonSortNo");
  1480. return data;
  1481. }
  1482. catch (Exception e)
  1483. {
  1484. Console.WriteLine(e);
  1485. throw;
  1486. }
  1487. }
  1488. /// <summary>
  1489. /// 课程表【教务】
  1490. /// </summary>
  1491. /// <param name="startDate">查询开始时间</param>
  1492. /// <param name="endDate">查询截止时间</param>
  1493. /// <param name="classNo">班级编号</param>
  1494. /// <param name="empNo">教师编号</param>
  1495. /// <returns></returns>
  1496. public IEnumerable<TimeTable> GetTimeTableInEducation(string startDate, string endDate, string classNo, string empNo, string schoolId)
  1497. {
  1498. var semesterAndYear = Common.GetSemesterAndYear(startDate);
  1499. var strAcademicYear = semesterAndYear.AcademicYearShort;
  1500. var strSemester = semesterAndYear.Semester;
  1501. string sql = @"select 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
  1502. from ArrangeLessonTerm b
  1503. left join ClassroomInfo c on c.ClassroomNo=b.classroomNo
  1504. left join ClassInfo d on replace(b.TeachClassNo,b.LessonName,'')=d.ClassNo
  1505. where b.AcademicYearNo=@strAcademicYear and b.Semester=@strSemester
  1506. and b.LessonDate>=@startDate and b.LessonDate<=@endDate
  1507. and b.CheckMark=1";
  1508. try
  1509. {
  1510. var result = BaseRepository("CollegeMIS").FindList<TimeTable>(sql, new { startDate, endDate, strAcademicYear, strSemester });
  1511. if (!string.IsNullOrEmpty(classNo))
  1512. {
  1513. result = result.Where(x => x.TeachClassNo == classNo);
  1514. }
  1515. if (!string.IsNullOrEmpty(empNo))
  1516. {
  1517. result = result.Where(x => x.EmpNo == empNo);
  1518. }
  1519. if (!string.IsNullOrEmpty(schoolId))
  1520. {
  1521. result = result.Where(x => x.F_SchoolId == schoolId);
  1522. }
  1523. return result;
  1524. }
  1525. catch (Exception ex)
  1526. {
  1527. if (ex is ExceptionEx)
  1528. {
  1529. throw;
  1530. }
  1531. else
  1532. {
  1533. throw ExceptionEx.ThrowServiceException(ex);
  1534. }
  1535. }
  1536. }
  1537. /// <summary>
  1538. /// 课程表【教务】--班级下拉框信息
  1539. /// </summary>
  1540. /// <returns></returns>
  1541. public IEnumerable<SelectModel> GetClassData(string schoolId)
  1542. {
  1543. try
  1544. {
  1545. //前三年-后三年
  1546. var preYear = DateTime.Now.AddYears(-3).Year;
  1547. var nextYear = DateTime.Now.AddYears(3).Year;
  1548. var yearList = new List<string>();
  1549. for (int i = preYear; i <= nextYear; i++)
  1550. {
  1551. yearList.Add(string.Format("'{0}-{1}'", i.ToString().Substring(2), (i + 1).ToString().Substring(2)));
  1552. }
  1553. var yearListStr = string.Join(",", yearList.ToArray());
  1554. var strSql = new StringBuilder();
  1555. strSql.Append("select distinct REPLACE(a.TeachClassNo,a.LessonName,'') as value,c.ClassName as text from ");
  1556. strSql.Append("ArrangeLessonTerm a inner join ClassInfo c on REPLACE(a.TeachClassNo,a.LessonName,'')=c.ClassNo ");
  1557. strSql.Append("where a.AcademicYearNo in (" + yearListStr + ") ");
  1558. if (!string.IsNullOrEmpty(schoolId))
  1559. {
  1560. strSql.Append(" and a.F_SchoolId = '" + schoolId + "' ");
  1561. }
  1562. var result = this.BaseRepository("CollegeMIS").FindList<SelectModel>(strSql.ToString()).OrderBy(x => x.value);
  1563. return result;
  1564. }
  1565. catch (Exception ex)
  1566. {
  1567. if (ex is ExceptionEx)
  1568. {
  1569. throw;
  1570. }
  1571. else
  1572. {
  1573. throw ExceptionEx.ThrowServiceException(ex);
  1574. }
  1575. }
  1576. }
  1577. /// <summary>
  1578. /// 课程表【教务】--教师下拉框信息
  1579. /// </summary>
  1580. /// <param name="startDate"></param>
  1581. /// <returns></returns>
  1582. public IEnumerable<SelectModel> GetTeacherData(string schoolId)
  1583. {
  1584. try
  1585. {
  1586. //前三年-后三年
  1587. var preYear = DateTime.Now.AddYears(-3).Year;
  1588. var nextYear = DateTime.Now.AddYears(3).Year;
  1589. var yearList = new List<string>();
  1590. for (int i = preYear; i <= nextYear; i++)
  1591. {
  1592. yearList.Add(string.Format("{0}-{1}", i.ToString().Substring(2), (i + 1).ToString().Substring(2)));
  1593. }
  1594. var aa = new List<SelectModel>();
  1595. //必修课
  1596. var teacherData = this.BaseRepository("CollegeMIS").FindList<ArrangeLessonTermEntity>(x => yearList.Contains(x.AcademicYearNo));
  1597. if (!string.IsNullOrEmpty(schoolId))
  1598. {
  1599. teacherData = teacherData.Where(x => x.F_SchoolId == schoolId);
  1600. }
  1601. var teacherDataModel = teacherData.Select(x => new { x.EmpNo, x.EmpName }).Distinct().ToList()
  1602. .Select(x => new SelectModel()
  1603. {
  1604. text = x.EmpName,
  1605. value = x.EmpNo
  1606. });
  1607. aa.AddRange(teacherDataModel);
  1608. //选修课
  1609. var teacherData2 = this.BaseRepository("CollegeMIS").FindList<ArrangeLessonTermOfElectiveEntity>(x => yearList.Contains(x.AcademicYearNo));
  1610. if (!string.IsNullOrEmpty(schoolId))
  1611. {
  1612. teacherData2 = teacherData2.Where(x => x.F_SchoolId == schoolId);
  1613. }
  1614. var teacherDataModel2 = teacherData2.Select(x => new { x.EmpNo, x.EmpName }).Distinct().ToList()
  1615. .Select(x => new SelectModel()
  1616. {
  1617. text = x.EmpName,
  1618. value = x.EmpNo
  1619. });
  1620. aa.AddRange(teacherDataModel2);
  1621. var aaaa = aa.Select(x => new { x.text, x.value }).Distinct().ToList();
  1622. var aaaaa = aaaa.Select(x => new SelectModel()
  1623. {
  1624. text = x.text,
  1625. value = x.value
  1626. }).OrderBy(x => x.value);
  1627. return aaaaa;
  1628. }
  1629. catch (Exception ex)
  1630. {
  1631. if (ex is ExceptionEx)
  1632. {
  1633. throw;
  1634. }
  1635. else
  1636. {
  1637. throw ExceptionEx.ThrowServiceException(ex);
  1638. }
  1639. }
  1640. }
  1641. public IEnumerable<CdDeptEntity> GetDepts(string academicYearNo, string semester)
  1642. {
  1643. try
  1644. {
  1645. //var data = BaseRepository("CollegeMIS").FindList<CdDeptEntity>();
  1646. //根据学年学期判断排课同步数据表中是否有数据:若有,说明该学年学期同步过;若没有,修改基础表,false;
  1647. var aa = this.BaseRepository("CollegeMIS").FindEntity<ArrangeLessonSyncEntity>(x => x.AcademicYearNo == academicYearNo && x.Semester == semester && x.STypeId == "2");
  1648. if (aa == null)
  1649. {
  1650. this.BaseRepository("CollegeMIS").ExecuteBySql("update CdDept set SyncFlag='false' ");
  1651. }
  1652. //数据
  1653. var db = BaseRepository("CollegeMIS");
  1654. db.BeginTrans();
  1655. var data = db.FindList<CdDeptEntity>("select * from CdDept where DeptId not in (select STableId from ArrangeLessonSync where AcademicYearNo='" + academicYearNo + "' and Semester='" + semester + "' )");
  1656. DateTime syncdate = DateTime.Now;
  1657. foreach (var item in data.Select(m => m.DeptId))
  1658. {
  1659. ArrangeLessonSyncEntity alsEntity = new ArrangeLessonSyncEntity();
  1660. alsEntity.Create();
  1661. alsEntity.AcademicYearNo = academicYearNo;
  1662. alsEntity.Semester = semester;
  1663. alsEntity.STypeId = "2";
  1664. alsEntity.SDate = syncdate;
  1665. alsEntity.STableId = item;
  1666. db.Insert(alsEntity);
  1667. }
  1668. db.Commit();
  1669. return data;
  1670. }
  1671. catch (Exception e)
  1672. {
  1673. Console.WriteLine(e);
  1674. throw;
  1675. }
  1676. }
  1677. public IEnumerable<CdDeptEntity> GetDeptsNotRecord(string academicYearNo, string semester)
  1678. {
  1679. try
  1680. {
  1681. //var data = BaseRepository("CollegeMIS").FindList<CdDeptEntity>();
  1682. var db = BaseRepository("CollegeMIS");
  1683. db.BeginTrans();
  1684. var data = db.FindList<CdDeptEntity>("select * from CdDept where DeptId not in (select STableId from ArrangeLessonSync where AcademicYearNo='" + academicYearNo + "' and Semester='" + semester + "' )");
  1685. db.Commit();
  1686. return data;
  1687. }
  1688. catch (Exception e)
  1689. {
  1690. Console.WriteLine(e);
  1691. throw;
  1692. }
  1693. }
  1694. public IEnumerable<CompanyEntity> GetSchools(string academicYearNo, string semester)
  1695. {
  1696. try
  1697. {
  1698. //var data = BaseRepository().FindList<CompanyEntity>();
  1699. //根据学年学期判断排课同步数据表中是否有数据:若有,说明该学年学期同步过;若没有,修改基础表,false;
  1700. var aa = this.BaseRepository("CollegeMIS").FindEntity<ArrangeLessonSyncEntity>(x => x.AcademicYearNo == academicYearNo && x.Semester == semester && x.STypeId == "1");
  1701. if (aa == null)
  1702. {
  1703. this.BaseRepository().ExecuteBySql("update LR_Base_Company set SyncFlag='false' ");
  1704. }
  1705. //数据
  1706. var dbCollegeMIS = BaseRepository("CollegeMIS");
  1707. dbCollegeMIS.BeginTrans();
  1708. 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 + "' )");
  1709. DateTime syncdate = DateTime.Now;
  1710. foreach (var item in data.Select(m => m.F_CompanyId))
  1711. {
  1712. ArrangeLessonSyncEntity alsEntity = new ArrangeLessonSyncEntity();
  1713. alsEntity.Create();
  1714. alsEntity.AcademicYearNo = academicYearNo;
  1715. alsEntity.Semester = semester;
  1716. alsEntity.STypeId = "1";
  1717. alsEntity.SDate = syncdate;
  1718. alsEntity.STableId = item;
  1719. dbCollegeMIS.Insert(alsEntity);
  1720. }
  1721. dbCollegeMIS.Commit();
  1722. return data;
  1723. }
  1724. catch (Exception e)
  1725. {
  1726. Console.WriteLine(e);
  1727. throw;
  1728. }
  1729. }
  1730. public IEnumerable<CompanyEntity> GetSchoolsNotRecord(string academicYearNo, string semester)
  1731. {
  1732. try
  1733. {
  1734. //var data = BaseRepository().FindList<CompanyEntity>();
  1735. var dbCollegeMIS = BaseRepository("CollegeMIS");
  1736. dbCollegeMIS.BeginTrans();
  1737. 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 + "' )");
  1738. dbCollegeMIS.Commit();
  1739. return data;
  1740. }
  1741. catch (Exception e)
  1742. {
  1743. Console.WriteLine(e);
  1744. throw;
  1745. }
  1746. }
  1747. public IEnumerable<CdLessonTypeEntity> GetLessonTypes()
  1748. {
  1749. try
  1750. {
  1751. var data = BaseRepository("CollegeMIS").FindList<CdLessonTypeEntity>();
  1752. return data;
  1753. }
  1754. catch (Exception e)
  1755. {
  1756. Console.WriteLine(e);
  1757. throw;
  1758. }
  1759. }
  1760. public IEnumerable<ArrangeLessonTermEntity> GetPageListForTeacherWorkload(Pagination paginationobj, string queryJson)
  1761. {
  1762. try
  1763. {
  1764. var queryParam = queryJson.ToJObject();
  1765. var strSql = new StringBuilder();
  1766. strSql.Append("select count(ALTId)as lessoncount,EmpName,EmpNo,1 as coefficient from ArrangeLessonTerm ");
  1767. strSql.Append(" WHERE 1=1 ");
  1768. strSql.Append($"and AcademicYearNo='{ queryParam["AcademicYearNo"]}' and Semester='{queryParam["Semester"]}' group by EmpName,EmpNo order by EmpNo ");
  1769. return this.BaseRepository("CollegeMIS").FindList<ArrangeLessonTermEntity>(strSql.ToString());
  1770. }
  1771. catch (Exception ex)
  1772. {
  1773. if (ex is ExceptionEx)
  1774. {
  1775. throw;
  1776. }
  1777. else
  1778. {
  1779. throw ExceptionEx.ThrowServiceException(ex);
  1780. }
  1781. }
  1782. }
  1783. /// <summary>
  1784. /// 教学工作量
  1785. /// </summary>
  1786. /// <param name="paginationobj"></param>
  1787. /// <param name="queryJson"></param>
  1788. /// <returns></returns>
  1789. public IEnumerable<ArrangeLessonTermEntity> GetPageListForTeacherWorkloadByEmpNo(Pagination paginationobj, string queryJson, string empNo)
  1790. {
  1791. try
  1792. {
  1793. var queryParam = queryJson.ToJObject();
  1794. var strSql = new StringBuilder();
  1795. strSql.Append("select count(t.ALTId) as lessoncount,t.LessonNo,t.LessonName,1 as coefficient from ArrangeLessonTerm t ");
  1796. strSql.Append($" WHERE 1=1 and t.EmpNo='{empNo}' ");
  1797. strSql.Append(" group by t.LessonNo,t.LessonName ");
  1798. return this.BaseRepository("CollegeMIS").FindList<ArrangeLessonTermEntity>(strSql.ToString());
  1799. }
  1800. catch (Exception ex)
  1801. {
  1802. if (ex is ExceptionEx)
  1803. {
  1804. throw;
  1805. }
  1806. else
  1807. {
  1808. throw ExceptionEx.ThrowServiceException(ex);
  1809. }
  1810. }
  1811. }
  1812. /// <summary>
  1813. /// 教学调度【教务】--课程下拉框信息
  1814. /// </summary>
  1815. /// <returns></returns>
  1816. public IEnumerable<SelectModel> GetLessonDataInTerm(string queryJson)
  1817. {
  1818. try
  1819. {
  1820. return this.BaseRepository("CollegeMIS").FindList<SelectModel>("select distinct t.LessonNo as value,t.LessonName as text from ArrangeLessonTerm t where 1=1 ");
  1821. }
  1822. catch (Exception ex)
  1823. {
  1824. if (ex is ExceptionEx)
  1825. {
  1826. throw;
  1827. }
  1828. else
  1829. {
  1830. throw ExceptionEx.ThrowServiceException(ex);
  1831. }
  1832. }
  1833. }
  1834. /// <summary>
  1835. /// 获取本学期开课计划
  1836. /// </summary>
  1837. /// <param name="academicYearNo"></param>
  1838. /// <param name="semester"></param>
  1839. /// <returns></returns>
  1840. public IEnumerable<TimeTable> GetAllClassLesson(string academicYearNo, string semester)
  1841. {
  1842. try
  1843. {
  1844. return this.BaseRepository("CollegeMIS").FindList<TimeTable>(@"select b.F_SchoolId,b.DeptNo,b.MajorNo,b.AcademicYearNo as AcademicYear,b.Semester,b.LessonNo,
  1845. b.LessonName, b.LessonTime, b.EmpNo, b.Empname EmpName, replace(b.TeachClassNo, b.LessonName, '') TeachClassNo, c.ClassroomName, b.ClassroomNo as ClassRoomNo, d.ClassName
  1846. from ArrangeLessonTerm b
  1847. left
  1848. join ClassroomInfo c on c.ClassroomNo = b.classroomNo
  1849. left
  1850. join ClassInfo d on replace(b.TeachClassNo, b.LessonName, '') = d.ClassNo
  1851. where b.AcademicYearNo = '" + academicYearNo + "' and b.Semester = '" + semester + @"'
  1852. and b.CheckMark = 1
  1853. 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
  1854. ");
  1855. }
  1856. catch (Exception ex)
  1857. {
  1858. if (ex is ExceptionEx)
  1859. {
  1860. throw;
  1861. }
  1862. else
  1863. {
  1864. throw ExceptionEx.ThrowServiceException(ex);
  1865. }
  1866. }
  1867. }
  1868. /// <summary>
  1869. /// 按条件重置基础数据同步状态
  1870. /// </summary>
  1871. /// <param name="entity"></param>
  1872. /// <returns></returns>
  1873. public bool InitAsyncDataByCondition(ArrangeLessonTermEntity entity)
  1874. {
  1875. bool result = true;
  1876. var db = BaseRepository("CollegeMIS").BeginTrans();
  1877. try
  1878. {
  1879. foreach (var tablename in entity.SyncBasicTable.Split(','))
  1880. {
  1881. if (tablename == "CdDept")
  1882. {
  1883. //清空同步记录表
  1884. db.ExecuteBySql("delete from ArrangeLessonSync where AcademicYearNo='" +
  1885. entity.AcademicYearNo + "' and Semester='" + entity.Semester +
  1886. "' and STypeId='2'");
  1887. }
  1888. if (tablename == "CdMajor")
  1889. {
  1890. //清空同步记录表
  1891. db.ExecuteBySql("delete from ArrangeLessonSync where AcademicYearNo='" +
  1892. entity.AcademicYearNo + "' and Semester='" + entity.Semester +
  1893. "' and STypeId='3'");
  1894. }
  1895. if (tablename == "ClassInfo")
  1896. {
  1897. //清空同步记录表
  1898. db.ExecuteBySql("delete from ArrangeLessonSync where AcademicYearNo='" +
  1899. entity.AcademicYearNo + "' and Semester='" + entity.Semester +
  1900. "' and STypeId='4'");
  1901. }
  1902. if (tablename == "ClassroomInfo")
  1903. {
  1904. //清空同步记录表
  1905. db.ExecuteBySql("delete from ArrangeLessonSync where AcademicYearNo='" +
  1906. entity.AcademicYearNo + "' and Semester='" + entity.Semester +
  1907. "' and STypeId='6'");
  1908. }
  1909. if (tablename == "LessonInfo")
  1910. {
  1911. //清空同步记录表
  1912. db.ExecuteBySql("delete from ArrangeLessonSync where AcademicYearNo='" +
  1913. entity.AcademicYearNo + "' and Semester='" + entity.Semester +
  1914. "' and STypeId='5'");
  1915. }
  1916. if (tablename == "EmpInfo")
  1917. {
  1918. //清空同步记录表
  1919. db.ExecuteBySql("delete from ArrangeLessonSync where AcademicYearNo='" +
  1920. entity.AcademicYearNo + "' and Semester='" + entity.Semester +
  1921. "' and STypeId='7'");
  1922. }
  1923. //重置基础数据表
  1924. db.ExecuteBySql("update " + tablename + " set SyncFlag=0");
  1925. }
  1926. db.Commit();
  1927. }
  1928. catch (Exception e)
  1929. {
  1930. result = false;
  1931. }
  1932. return result;
  1933. }
  1934. }
  1935. #region MyRegion
  1936. public class TimeTable
  1937. {
  1938. public DateTime LessonDate { get; set; }
  1939. public string EnName { get; set; }
  1940. public string AcademicYear { get; set; }
  1941. public string LessonNo { get; set; }
  1942. public string LessonName { get; set; }
  1943. public string LessonTime { get; set; }
  1944. public string EmpNo { get; set; }
  1945. public string EmpName { get; set; }
  1946. public string TeachClassNo { get; set; }
  1947. public string ClassroomName { get; set; }
  1948. public string Semester { get; set; }
  1949. public string ClassRoomNo { get; set; }
  1950. public string LessonSortNo { get; set; }
  1951. public string ClassName { get; set; }
  1952. public string OLPEId { get; set; }
  1953. /// <summary>
  1954. /// 排考结构Id
  1955. /// </summary>
  1956. public string StructureId { get; set; }
  1957. public string LeaveType { get; set; }
  1958. public string IsCheck { get; set; }
  1959. /// <summary>
  1960. /// 校区Id
  1961. /// </summary>
  1962. public string F_SchoolId { get; set; }
  1963. public string DeptNo { get; set; }
  1964. public string MajorNo { get; set; }
  1965. }
  1966. public class Common
  1967. {
  1968. /// <summary>
  1969. /// 根据当前时间获取学年和学期
  1970. /// </summary>
  1971. /// <returns></returns>
  1972. public static (string AcademicYearShort, string AcademicYearLong, string Semester) GetSemesterAndYear(string startDate = "")
  1973. {
  1974. string AcademicYearShort = "";//短格式学年度
  1975. string AcademicYearLong = "";//长格式学年度
  1976. string Semester = "";//学期
  1977. DateTime dateParam = DateTime.Now;
  1978. if (!string.IsNullOrEmpty(startDate))
  1979. {
  1980. dateParam = DateTime.Parse(startDate);
  1981. }
  1982. if (dateParam.Month >= 8)
  1983. {
  1984. AcademicYearShort = dateParam.Year.ToString().Substring(2, 2) + "-";
  1985. AcademicYearShort += (dateParam.Year + 1).ToString().Substring(2, 2);
  1986. AcademicYearLong = dateParam.Year.ToString() + "-";
  1987. AcademicYearLong += (dateParam.Year + 1).ToString();
  1988. Semester = "1";
  1989. }
  1990. else
  1991. {
  1992. if (dateParam.Month >= 2)//根据当前时间获取学年和学期,注意跨年份
  1993. {
  1994. AcademicYearShort = (dateParam.Year - 1).ToString().Substring(2, 2) + "-";
  1995. AcademicYearShort += dateParam.Year.ToString().Substring(2, 2);
  1996. AcademicYearLong = (dateParam.Year - 1).ToString() + "-";
  1997. AcademicYearLong += dateParam.Year.ToString();
  1998. Semester = "2";
  1999. }
  2000. else
  2001. {
  2002. AcademicYearShort = (dateParam.Year - 1).ToString().Substring(2, 2) + "-";
  2003. AcademicYearShort += dateParam.Year.ToString().Substring(2, 2);
  2004. AcademicYearLong = (dateParam.Year - 1).ToString() + "-";
  2005. AcademicYearLong += dateParam.Year.ToString();
  2006. Semester = "1";
  2007. }
  2008. }
  2009. return (AcademicYearShort, AcademicYearLong, Semester);
  2010. }
  2011. /// <summary>
  2012. /// 计算周一的时间
  2013. /// </summary>
  2014. /// <param name="someDate"></param>
  2015. /// <returns></returns>
  2016. public static DateTime CalculateFirstDateOfWeek(DateTime someDate)
  2017. {
  2018. int i = someDate.DayOfWeek - DayOfWeek.Monday;
  2019. if (i == -1) i = 6;// i值 > = 0 ,因为枚举原因,Sunday排在最前,此时Sunday-Monday=-1,必须+7=6。
  2020. TimeSpan ts = new TimeSpan(i, 0, 0, 0);
  2021. return someDate.Subtract(ts);
  2022. }
  2023. /// <summary>
  2024. /// 计算周日的时间
  2025. /// </summary>
  2026. /// <param name="someDate"></param>
  2027. /// <returns></returns>
  2028. public static DateTime CalculateLastDateOfWeek(DateTime someDate)
  2029. {
  2030. int i = someDate.DayOfWeek - DayOfWeek.Sunday;
  2031. if (i != 0) i = 7 - i;// 因为枚举原因,Sunday排在最前,相减间隔要被7减。
  2032. TimeSpan ts = new TimeSpan(i, 0, 0, 0);
  2033. return someDate.Add(ts);
  2034. }
  2035. }
  2036. #region 当期学期排课数据同步
  2037. public class Paike
  2038. {
  2039. public string id { get; set; }
  2040. /// <summary>
  2041. /// 20180101
  2042. /// </summary>
  2043. public string clazzId { get; set; }
  2044. /// <summary>
  2045. /// 18学前教育01班
  2046. /// </summary>
  2047. public string clazzName { get; set; }
  2048. /// <summary>
  2049. /// XCMY0016
  2050. /// </summary>
  2051. public string teacherId { get; set; }
  2052. /// <summary>
  2053. /// 薛雅馨
  2054. /// </summary>
  2055. public string teacherName { get; set; }
  2056. /// <summary>
  2057. /// 0103
  2058. /// </summary>
  2059. public string curriculunId { get; set; }
  2060. /// <summary>
  2061. /// 大学体育(学前系)(合)
  2062. /// </summary>
  2063. public string curriculunName { get; set; }
  2064. public string curriculuntype { get; set; }
  2065. /// <summary>
  2066. /// 1
  2067. /// </summary>
  2068. public string section { get; set; }
  2069. /// <summary>
  2070. /// 1
  2071. /// </summary>
  2072. public string week { get; set; }
  2073. /// <summary>
  2074. /// 08:00-09:00
  2075. /// </summary>
  2076. public string curriculunTime { get; set; }
  2077. /// <summary>
  2078. /// 1
  2079. /// </summary>
  2080. public string kebiaoType { get; set; }
  2081. /// <summary>
  2082. /// 1102
  2083. /// </summary>
  2084. public string classRoomId { get; set; }
  2085. /// <summary>
  2086. /// 1102教室
  2087. /// </summary>
  2088. public string classRoomName { get; set; }
  2089. /// <summary>
  2090. /// 1
  2091. /// </summary>
  2092. public string rankSchedule { get; set; }
  2093. /// <summary>
  2094. /// 0
  2095. /// </summary>
  2096. public string periodTime { get; set; }
  2097. /// <summary>
  2098. /// [{"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"}]
  2099. /// </summary>
  2100. public string timeText { get; set; }
  2101. /// <summary>
  2102. /// 2
  2103. /// </summary>
  2104. public string semester { get; set; }
  2105. /// <summary>
  2106. /// Flag
  2107. /// </summary>
  2108. public bool flag { get; set; }
  2109. public string year { get; set; }
  2110. public string number { get; set; }
  2111. public string curriculunNumber { get; set; }
  2112. public string teacherNumber { get; set; }
  2113. public string classRoomNumber { get; set; }
  2114. }
  2115. public class StuScore
  2116. {
  2117. public string id { get; set; }
  2118. public string examname { get; set; }
  2119. public string stuno { get; set; }
  2120. public string stuname { get; set; }
  2121. public string classno { get; set; }
  2122. public string classname { get; set; }
  2123. public string teachclassno { get; set; }
  2124. public string termendscore { get; set; }
  2125. public string examtime { get; set; }
  2126. public string lessonno { get; set; }
  2127. public string lessonname { get; set; }
  2128. public string scoolYear { get; set; }
  2129. public string term { get; set; }
  2130. }
  2131. public class Major
  2132. {
  2133. /// <summary>
  2134. /// 01
  2135. /// </summary>
  2136. public string id { get; set; }
  2137. /// <summary>
  2138. /// 学前教育
  2139. /// </summary>
  2140. public string majorName { get; set; }
  2141. /// <summary>
  2142. /// 01
  2143. /// </summary>
  2144. public string majorNumber { get; set; }
  2145. /// <summary>
  2146. ///
  2147. /// </summary>
  2148. public string bz { get; set; }
  2149. }
  2150. public class semester
  2151. {
  2152. public DateTime? starttime { get; set; }
  2153. public DateTime? endtime { get; set; }
  2154. public string zhouci { get; set; }
  2155. public string shangxia { get; set; }
  2156. }
  2157. public class List
  2158. {
  2159. public StuScore stuscore { get; set; }
  2160. /// <summary>
  2161. /// Paike
  2162. /// </summary>
  2163. public Paike paike { get; set; }
  2164. /// <summary>
  2165. /// 2019-03-04 08:00-09:00
  2166. /// </summary>
  2167. public string times { get; set; }
  2168. /// <summary>
  2169. /// Major
  2170. /// </summary>
  2171. public Major major { get; set; }
  2172. /// <summary>
  2173. /// 18-19
  2174. /// </summary>
  2175. public string schoolYear { get; set; }
  2176. /// <summary>
  2177. /// 学期类
  2178. /// </summary>
  2179. public semester semester { get; set; }
  2180. /// <summary>
  2181. /// 第几级
  2182. /// </summary>
  2183. public string grade { get; set; }
  2184. /// <summary>
  2185. /// 专业编号
  2186. /// </summary>
  2187. public string majorNumber { get; set; }
  2188. /// <summary>
  2189. /// 课程名称
  2190. /// </summary>
  2191. public string curriculumName { get; set; }
  2192. /// <summary>
  2193. /// 课程编号
  2194. /// </summary>
  2195. public string curriculumNumber { get; set; }
  2196. /// <summary>
  2197. /// 选修必修
  2198. /// </summary>
  2199. public string isElective { get; set; }
  2200. /// <summary>
  2201. /// 周学时
  2202. /// </summary>
  2203. public string classhour { get; set; }
  2204. /// <summary>
  2205. /// 教师编号
  2206. /// </summary>
  2207. public string teacherId { get; set; }
  2208. /// <summary>
  2209. /// 教师姓名
  2210. /// </summary>
  2211. public string teacherName { get; set; }
  2212. /// <summary>
  2213. /// 学校主键
  2214. /// </summary>
  2215. public string schoolId { get; set; }
  2216. }
  2217. public class Entity
  2218. {
  2219. /// <summary>
  2220. /// true
  2221. /// </summary>
  2222. public string opflag { get; set; }
  2223. /// <summary>
  2224. /// 1000
  2225. /// </summary>
  2226. public string opCode { get; set; }
  2227. /// <summary>
  2228. /// OK!
  2229. /// </summary>
  2230. public string message { get; set; }
  2231. /// <summary>
  2232. /// List
  2233. /// </summary>
  2234. public List<List> list { get; set; }
  2235. public List<StuScore> stuScoreList { get; set; }
  2236. }
  2237. public class Root
  2238. {
  2239. /// <summary>
  2240. /// 操作成功
  2241. /// </summary>
  2242. public string message { get; set; }
  2243. /// <summary>
  2244. /// Success
  2245. /// </summary>
  2246. public bool success { get; set; }
  2247. /// <summary>
  2248. /// Entity
  2249. /// </summary>
  2250. public Entity entity { get; set; }
  2251. }
  2252. #endregion
  2253. #region 按条件同步排课数据
  2254. public class RootByCondition
  2255. {
  2256. /// <summary>
  2257. /// 操作成功
  2258. /// </summary>
  2259. public string message { get; set; }
  2260. /// <summary>
  2261. /// Success
  2262. /// </summary>
  2263. public bool success { get; set; }
  2264. /// <summary>
  2265. /// Entity
  2266. /// </summary>
  2267. public EntityByCondition entity { get; set; }
  2268. }
  2269. public class EntityByCondition
  2270. {
  2271. /// <summary>
  2272. /// true
  2273. /// </summary>
  2274. public string opflag { get; set; }
  2275. /// <summary>
  2276. /// 1000
  2277. /// </summary>
  2278. public string opCode { get; set; }
  2279. /// <summary>
  2280. /// OK!
  2281. /// </summary>
  2282. public string message { get; set; }
  2283. /// <summary>
  2284. /// List
  2285. /// </summary>
  2286. public List<ListByCondition> list { get; set; }
  2287. }
  2288. public class ListByCondition
  2289. {
  2290. public string year { get; set; }
  2291. public string number { get; set; }
  2292. public string curriculunNumber { get; set; }
  2293. public string curriculunName { get; set; }
  2294. /// <summary>
  2295. /// Paike
  2296. /// </summary>
  2297. public PaikeByCondition paike { get; set; }
  2298. /// <summary>
  2299. /// "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,"
  2300. /// </summary>
  2301. public string timeText { get; set; }
  2302. /// <summary>
  2303. /// Major
  2304. /// </summary>
  2305. public MajorByCondition major { get; set; }
  2306. public string teacherNumber { get; set; }
  2307. public string teacherName { get; set; }
  2308. public string curriculunSid { get; set; }
  2309. public string classRoomSid { get; set; }
  2310. public string schoolSid { get; set; }
  2311. public object week { get; set; }
  2312. public string section { get; set; }
  2313. public string clazzSid { get; set; }
  2314. }
  2315. public class PaikeByCondition
  2316. {
  2317. public string id { get; set; }
  2318. /// <summary>
  2319. /// 班级Id
  2320. /// </summary>
  2321. public string clazzId { get; set; }
  2322. /// <summary>
  2323. /// 班级名称
  2324. /// </summary>
  2325. public string clazzName { get; set; }
  2326. /// <summary>
  2327. /// 班级编号
  2328. /// </summary>
  2329. public string clazzSid { get; set; }
  2330. /// <summary>
  2331. /// 年级
  2332. /// </summary>
  2333. public string grade { get; set; }
  2334. /// <summary>
  2335. /// 教师Id
  2336. /// </summary>
  2337. public string teacherId { get; set; }
  2338. /// <summary>
  2339. /// 教师名称
  2340. /// </summary>
  2341. public string teacherName { get; set; }
  2342. /// <summary>
  2343. /// 教师编号
  2344. /// </summary>
  2345. public string teacherSid { get; set; }
  2346. /// <summary>
  2347. /// 课程Id
  2348. /// </summary>
  2349. public string curriculunId { get; set; }
  2350. /// <summary>
  2351. /// 课程名称
  2352. /// </summary>
  2353. public string curriculunName { get; set; }
  2354. /// <summary>
  2355. /// 课程编号
  2356. /// </summary>
  2357. public string curriculunSid { get; set; }
  2358. /// <summary>
  2359. /// 第几节次
  2360. /// </summary>
  2361. public string section { get; set; }
  2362. /// <summary>
  2363. /// 星期几
  2364. /// </summary>
  2365. public string week { get; set; }
  2366. /// <summary>
  2367. /// 课表类型
  2368. /// </summary>
  2369. public string kebiaoType { get; set; }
  2370. /// 教室Id
  2371. /// </summary>
  2372. public string classRoomId { get; set; }
  2373. /// <summary>
  2374. /// 教室名称
  2375. /// </summary>
  2376. public string classRoomName { get; set; }
  2377. /// <summary>
  2378. /// 教室编号
  2379. /// </summary>
  2380. public string classRoomSid { get; set; }
  2381. /// <summary>
  2382. /// 排课安排
  2383. /// </summary>
  2384. public string rankSchedule { get; set; }
  2385. /// <summary>
  2386. /// "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,"
  2387. /// </summary>
  2388. public string timeText { get; set; }
  2389. /// <summary>
  2390. /// 学年
  2391. /// </summary>
  2392. public string semester { get; set; }
  2393. /// <summary>
  2394. /// Flag
  2395. /// </summary>
  2396. public bool flag { get; set; }
  2397. }
  2398. public class MajorByCondition
  2399. {
  2400. /// <summary>
  2401. /// 专业Id
  2402. /// </summary>
  2403. public string id { get; set; }
  2404. /// <summary>
  2405. /// 专业名称
  2406. /// </summary>
  2407. public string name { get; set; }
  2408. /// <summary>
  2409. /// 专业编号
  2410. /// </summary>
  2411. public string number { get; set; }
  2412. /// <summary>
  2413. /// 系
  2414. /// </summary>
  2415. public DepartmentByCondition department { get; set; }
  2416. /// <summary>
  2417. /// 学年学期
  2418. /// </summary>
  2419. public SemesterByCondition semester { get; set; }
  2420. /// <summary>
  2421. /// 学校
  2422. /// </summary>
  2423. public SchoolByCondition school { get; set; }
  2424. public string sid { get; set; }
  2425. public string qsid { get; set; }
  2426. }
  2427. public class DepartmentByCondition
  2428. {
  2429. /// <summary>
  2430. /// 系Id
  2431. /// </summary>
  2432. public string id { get; set; }
  2433. /// <summary>
  2434. /// 系名称
  2435. /// </summary>
  2436. public string name { get; set; }
  2437. /// <summary>
  2438. /// 系编号【开课计划接口】
  2439. /// </summary>
  2440. public string number { get; set; }
  2441. }
  2442. public class SemesterByCondition
  2443. {
  2444. public string id { get; set; }
  2445. /// <summary>
  2446. /// 学年
  2447. /// </summary>
  2448. public string year { get; set; }
  2449. /// <summary>
  2450. /// 学期
  2451. /// </summary>
  2452. public string number { get; set; }
  2453. /// <summary>
  2454. /// 开始时间【开课计划接口】
  2455. /// </summary>
  2456. public DateTime starTime { get; set; }
  2457. /// <summary>
  2458. /// 结束时间【开课计划接口】
  2459. /// </summary>
  2460. public DateTime endTime { get; set; }
  2461. /// <summary>
  2462. /// 开始周次【开课计划接口】
  2463. /// </summary>
  2464. public int yesNo { get; set; }
  2465. /// <summary>
  2466. /// 结束周次【开课计划接口】
  2467. /// </summary>
  2468. public int week { get; set; }
  2469. }
  2470. public class SchoolByCondition
  2471. {
  2472. /// <summary>
  2473. /// 学校Id
  2474. /// </summary>
  2475. public string sid { get; set; }
  2476. /// <summary>
  2477. /// 学校名称
  2478. /// </summary>
  2479. public string name { get; set; }
  2480. }
  2481. public class RootOfPlanByCondition
  2482. {
  2483. /// <summary>
  2484. /// 操作成功
  2485. /// </summary>
  2486. public string message { get; set; }
  2487. /// <summary>
  2488. /// Success
  2489. /// </summary>
  2490. public bool success { get; set; }
  2491. /// <summary>
  2492. /// Entity
  2493. /// </summary>
  2494. public EntityOfPlanByCondition entity { get; set; }
  2495. }
  2496. public class EntityOfPlanByCondition
  2497. {
  2498. /// <summary>
  2499. /// true
  2500. /// </summary>
  2501. public string opflag { get; set; }
  2502. /// <summary>
  2503. /// 1000
  2504. /// </summary>
  2505. public string opCode { get; set; }
  2506. /// <summary>
  2507. /// OK!
  2508. /// </summary>
  2509. public string message { get; set; }
  2510. /// <summary>
  2511. /// List
  2512. /// </summary>
  2513. public List<ListOfPlanByCondition> list { get; set; }
  2514. }
  2515. public class ListOfPlanByCondition
  2516. {
  2517. public SchoolByCondition school { get; set; }
  2518. public SemesterByCondition semester { get; set; }
  2519. public DepartmentByCondition department { get; set; }
  2520. public MajorByCondition major { get; set; }
  2521. /// <summary>
  2522. /// 开课计划
  2523. /// </summary>
  2524. public CourseOfPlanByCondition course { get; set; }
  2525. public int classhour { get; set; }
  2526. public int credit { get; set; }
  2527. public string grade { get; set; }
  2528. }
  2529. public class CourseOfPlanByCondition
  2530. {
  2531. /// <summary>
  2532. /// 开课计划Id
  2533. /// </summary>
  2534. public string id { get; set; }
  2535. /// <summary>
  2536. /// 课程编号
  2537. /// </summary>
  2538. public string number { get; set; }
  2539. /// <summary>
  2540. /// 课程信息
  2541. /// </summary>
  2542. public CourseInfoOfPlanByCondition course { get; set; }
  2543. /// <summary>
  2544. /// 课程名称
  2545. /// </summary>
  2546. public string coursename { get; set; }
  2547. }
  2548. public class CourseInfoOfPlanByCondition
  2549. {
  2550. /// <summary>
  2551. /// 课程Id
  2552. /// </summary>
  2553. public string id { get; set; }
  2554. /// <summary>
  2555. /// 课程名称
  2556. /// </summary>
  2557. public string name { get; set; }
  2558. public string number { get; set; }
  2559. }
  2560. #endregion
  2561. #endregion
  2562. }