using Dapper; using Learun.DataBase.Repository; using Learun.Util; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Net.Http; using System.Text; using System.Threading.Tasks; namespace Learun.Application.TwoDevelopment.EducationalAdministration { /// /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园 /// Copyright (c) 2013-2018 北京泉江科技有限公司 /// 创 建:超级管理员 /// 日 期:2019-05-14 09:49 /// 描 述:选修课排课 /// public class ArrangeLessonTermOfElectiveService : RepositoryFactory { private static readonly HttpClient Client; static ArrangeLessonTermOfElectiveService() { Client = new HttpClient(); } #region 获取数据 /// /// 获取页面显示列表数据 /// /// 查询参数 /// public IEnumerable GetPageList(Pagination pagination, string queryJson) { try { var strSql = new StringBuilder(); strSql.Append("SELECT "); strSql.Append(@" t.Id, t.PaiKeId, t.LessonDate, t.AcademicYearNo, t.Semester, t.LessonNo, t.LessonName, t.LessonSortNo, t.LessonSection, t.LessonTime, t.StudyScore, t.EmpNo, t.EmpName, t.ClassRoomNo, t.ClassRoomName, t.CheckMark "); strSql.Append(" FROM ArrangeLessonTermOfElective t "); strSql.Append(" WHERE 1=1 "); var queryParam = queryJson.ToJObject(); // 虚拟参数 var dp = new DynamicParameters(new { }); return this.BaseRepository("CollegeMIS").FindList(strSql.ToString(), dp, pagination); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 获取ArrangeLessonTermOfElective表实体数据 /// 主键 /// /// public ArrangeLessonTermOfElectiveEntity GetArrangeLessonTermOfElectiveEntity(string keyValue) { try { return this.BaseRepository("CollegeMIS").FindEntity(keyValue); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } #endregion #region 提交数据 /// /// 删除实体数据 /// 主键 /// /// public void DeleteEntity(string keyValue) { try { this.BaseRepository("CollegeMIS").Delete(t => t.Id == keyValue); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 保存实体数据(新增、修改) /// 主键 /// /// public void SaveEntity(string keyValue, ArrangeLessonTermOfElectiveEntity entity) { try { if (!string.IsNullOrEmpty(keyValue)) { entity.Modify(keyValue); this.BaseRepository("CollegeMIS").Update(entity); } else { entity.Create(); this.BaseRepository("CollegeMIS").Insert(entity); } } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } #endregion #region 扩展数据 /// /// 按条件同步选修排课系统数据 /// /// public async Task AsyncArrangeLessonOfElectiveDataByCondition(ArrangeLessonTermOfElectiveEntity entity) { bool result = false; try { HttpContent httpContent = new StringContent("{\"school\":\"" + entity.F_SchoolId + "\",\"year\":\"" + entity.AcademicYearNo + "\",\"number\":\"" + entity.Semester + "\"}"); httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json"); string apiData = await Client.PostAsync(Config.GetValue("ArrangeLessonOfElectiveAPI"), httpContent).Result.Content.ReadAsStringAsync(); if (!string.IsNullOrEmpty(apiData)) { var data = JsonConvert.DeserializeObject(apiData); if (!data.success) { return result; } var dataList = data.entity.list; if (dataList.Any()) { //ArrangeLessonTermOfElective数据处理 var insertDataList = new List(); var lessonData = (await BaseRepository("CollegeMIS").FindListAsync()).ToList(); var oldArrangeLessonTermOfElectiveDataList = BaseRepository("CollegeMIS") .FindList(m => m.F_SchoolId == entity.F_SchoolId && m.AcademicYearNo == entity.AcademicYearNo && m.Semester == entity.Semester).ToList(); foreach (var item in dataList) { if (!string.IsNullOrEmpty(item.paike.timeText)) { foreach (var lessontime in item.paike.timeText.TrimEnd(',').Split(',')) { string tmplessontime = ""; if (item.paike.section == "1") { tmplessontime = "10:00-10:40"; } if (item.paike.section == "2") { tmplessontime = "10:50-11:30"; } if (item.paike.section == "3") { tmplessontime = "12:00-12:40"; } if (item.paike.section == "4") { tmplessontime = "12:50-13:30"; } if (item.paike.section == "5") { tmplessontime = "16:00-16:40"; } if (item.paike.section == "6") { tmplessontime = "16:50-17:30"; } if (item.paike.section == "7") { tmplessontime = "18:00-18:40"; } if (item.paike.section == "8") { tmplessontime = "18:50-19:30"; } if (item.paike.section == "9") { tmplessontime = "20:20-21:00"; } if (item.paike.section == "10") { tmplessontime = "21:10-21:50"; } var insertData = new ArrangeLessonTermOfElectiveEntity { Id = Guid.NewGuid().ToString(), PaiKeId = item.paike.id, LessonDate = DateTime.Parse(lessontime), AcademicYearNo = item.paike.year, Semester = item.paike.number, LessonNo = item.paike.curriculunNumber, LessonName = item.paike.curriculunName, LessonSortNo = "2", LessonTime = tmplessontime, LessonSection = item.paike.week + item.paike.section, StudyScore = lessonData.FirstOrDefault(x => x.LessonNo == item.paike.curriculunNumber)?.StudyScore, EmpNo = item.paike.teacherNumber, EmpName = item.paike.teacherName, ClassRoomNo = item.paike.classRoomNumber, ClassRoomName = item.paike.classRoomName, F_SchoolId = entity.F_SchoolId, CheckMark = "1" }; if (oldArrangeLessonTermOfElectiveDataList.Count(m => m.AcademicYearNo == insertData.AcademicYearNo && m.Semester == insertData.Semester && m.LessonNo == insertData.LessonNo && m.LessonSection == insertData.LessonSection && m.EmpNo == insertData.EmpNo && m.ClassRoomNo == insertData.ClassRoomNo) == 0) { insertDataList.Add(insertData); } } } } var insertResult = await BaseRepository("CollegeMIS").InsertAsync(insertDataList); //OpenLessonPlanOfElective数据处理 var strAcademicYear = entity.AcademicYearNo; var strSemester = entity.Semester; var schoolId = entity.F_SchoolId; var ArrangeLessonTermOfElectiveData = (await BaseRepository("CollegeMIS").FindListAsync(@"select * from ArrangeLessonTermOfElective where AcademicYearNo='" + strAcademicYear + "' and Semester='" + strSemester + "' and F_SchoolId='" + schoolId + "'")).ToList(); var arrangeLessonTermData = (await BaseRepository("CollegeMIS").FindListAsync(@"select PaiKeId,AcademicYearNo,Semester,LessonNo,LessonName,LessonSection,EmpNo,EmpName,ClassRoomNo,ClassRoomName,F_SchoolId from ArrangeLessonTermOfElective where AcademicYearNo='" + strAcademicYear + "' and Semester='" + strSemester + "' and F_SchoolId='" + schoolId + "' group by PaiKeId, AcademicYearNo, Semester, LessonNo, LessonName, LessonSection, EmpNo, EmpName, ClassRoomNo, ClassRoomName,F_SchoolId ")).ToList(); var OpenLessonPlanOfElectiveData = (await BaseRepository("CollegeMIS").FindListAsync(@"select * from OpenLessonPlanOfElective where AcademicYearNo='" + strAcademicYear + "' and Semester='" + strSemester + "' and F_SchoolId='" + schoolId + "'")).ToList(); var insertOpenLessonPlanOfElectiveDataList = new List(); if (arrangeLessonTermData.Any()) { foreach (var item in arrangeLessonTermData) { var insertOpenLessonPlanOfElectiveData = new OpenLessonPlanOfElectiveEntity() { Id = item.PaiKeId, MakeDate = DateTime.Now, AcademicYearNo = item.AcademicYearNo, Semester = item.Semester, LessonNo = item.LessonNo, PartCode = "", LessonName = item.LessonName, LessonSortNo = lessonData.FirstOrDefault(x => x.LessonNo == item.LessonNo)?.LessonSortNo, LessonSortDetailNo = lessonData.FirstOrDefault(x => x.LessonNo == item.LessonNo)?.LessonSortDetailNo, LessonSection = item.LessonSection, LessonTime = ArrangeLessonTermOfElectiveData.FirstOrDefault(x => x.PaiKeId == item.PaiKeId)?.LessonTime, StudyScore = lessonData.FirstOrDefault(x => x.LessonNo == item.LessonNo)?.StudyScore, StartWeek = 1, EndWeek = ArrangeLessonTermOfElectiveData.Count(x => x.PaiKeId == item.PaiKeId), StartDate = ArrangeLessonTermOfElectiveData.Where(x => x.PaiKeId == item.PaiKeId).OrderBy(x => x.LessonDate).FirstOrDefault()?.LessonDate, EndDate = ArrangeLessonTermOfElectiveData.Where(x => x.PaiKeId == item.PaiKeId).OrderBy(x => x.LessonDate).LastOrDefault()?.LessonDate, CheckStyleNo = "1", ScoreRecordStyleNo = "1", EmpNo = item.EmpNo, EmpName = item.EmpName, ClassRoomNo = item.ClassRoomNo, ClassRoomName = item.ClassRoomName, CheckMark = "1", StuNumMax = 0, StuNum = 0, F_SchoolId = item.F_SchoolId }; //非空判断 if (OpenLessonPlanOfElectiveData.Count(x => x.AcademicYearNo == insertOpenLessonPlanOfElectiveData.AcademicYearNo && x.Semester == insertOpenLessonPlanOfElectiveData.Semester && x.LessonNo == insertOpenLessonPlanOfElectiveData.LessonNo && x.LessonSortNo == insertOpenLessonPlanOfElectiveData.LessonSortNo && x.LessonSection == insertOpenLessonPlanOfElectiveData.LessonSection && x.EmpNo == insertOpenLessonPlanOfElectiveData.EmpNo && x.ClassRoomNo == insertOpenLessonPlanOfElectiveData.ClassRoomNo && x.F_SchoolId == insertOpenLessonPlanOfElectiveData.F_SchoolId) == 0 && insertOpenLessonPlanOfElectiveDataList.Count(x => x.AcademicYearNo == insertOpenLessonPlanOfElectiveData.AcademicYearNo && x.Semester == insertOpenLessonPlanOfElectiveData.Semester && x.LessonNo == insertOpenLessonPlanOfElectiveData.LessonNo && x.LessonSortNo == insertOpenLessonPlanOfElectiveData.LessonSortNo && x.LessonSection == insertOpenLessonPlanOfElectiveData.LessonSection && x.EmpNo == insertOpenLessonPlanOfElectiveData.EmpNo && x.ClassRoomNo == insertOpenLessonPlanOfElectiveData.ClassRoomNo && x.F_SchoolId == insertOpenLessonPlanOfElectiveData.F_SchoolId) == 0) { if (BaseRepository("CollegeMIS").FindEntity(m => m.Id == insertOpenLessonPlanOfElectiveData.Id) == null && BaseRepository("CollegeMIS").FindEntity(m => m.Id == insertOpenLessonPlanOfElectiveData.Id) == null) { insertOpenLessonPlanOfElectiveDataList.Add(insertOpenLessonPlanOfElectiveData); } } } await BaseRepository("CollegeMIS").InsertAsync(insertOpenLessonPlanOfElectiveDataList); } if (insertResult > 0) { result = true; } } } } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } return result; } /// /// 按条件清空选修排课数据 /// /// public async Task AsyncModifyArrangeLessonOfElectiveDataByCondition(ArrangeLessonTermOfElectiveEntity entity) { var db = BaseRepository("CollegeMIS"); bool result = false; try { db.BeginTrans(); HttpContent httpContent = new StringContent("{\"school\":\"" + entity.F_SchoolId + "\",\"year\":\"" + entity.AcademicYearNo + "\",\"number\":\"" + entity.Semester + "\"}"); httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json"); string apiData = await Client.PostAsync(Config.GetValue("ModifyArrangeLessonOfElectiveAPI"), httpContent).Result.Content.ReadAsStringAsync(); if (!string.IsNullOrEmpty(apiData)) { var data = JsonConvert.DeserializeObject(apiData); if (data.success) { var strAcademicYear = entity.AcademicYearNo; var strSemester = entity.Semester; var schoolId = entity.F_SchoolId; await db.ExecuteAsyncBySql( $"delete from ElectiveMajor where OLPOEId in(select id from OpenLessonPlanOfElective where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' and F_SchoolId='{schoolId}' ) or OLPOEId in (select id from OpenLessonPlanOfElectiveDel where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' and F_SchoolId='{schoolId}' ) "); var executeResult = await db.ExecuteAsyncBySql( $"delete from ArrangeLessonTermOfElective where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' and F_SchoolId='{schoolId}'"); await db.ExecuteAsyncBySql( $"delete from OpenLessonPlanOfElective where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' and F_SchoolId='{schoolId}'"); await db.ExecuteAsyncBySql( $"delete from ElectiveMergeItem where emid in (select emid from ElectiveMerge where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' and F_SchoolId='{schoolId}')"); await db.ExecuteAsyncBySql( $"delete from ElectiveMerge where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' and F_SchoolId='{schoolId}'"); await db.ExecuteAsyncBySql( $"delete from OpenLessonPlanOfElectiveDel where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' and F_SchoolId='{schoolId}'"); await db.ExecuteAsyncBySql( $"delete from StuSelectLessonListOfElective where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' and F_SchoolId='{schoolId}'"); if (executeResult > 0) { result = true; } db.Commit(); } } } catch (Exception ex) { db.Rollback(); if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } return result; } /// /// 同步当前学期选修排课系统数据 /// /// public async Task AsyncArrangeLessonOfElectiveData() { bool result = false; try { var apiData = await Client.GetStringAsync(Config.GetValue("ArrangeLessonOfElectiveAPI")); if (!string.IsNullOrEmpty(apiData)) { var data = JsonConvert.DeserializeObject(apiData); if (!data.success) { return result; } var dataList = data.entity.list; if (dataList.Any()) { //ArrangeLessonTermOfElective数据处理 var insertDataList = new List(); var lessonData = (await BaseRepository("CollegeMIS").FindListAsync()).ToList(); foreach (var item in dataList) { var insertData = new ArrangeLessonTermOfElectiveEntity { Id = Guid.NewGuid().ToString(), PaiKeId = item.paike.id, LessonDate = DateTime.Parse(item.times), AcademicYearNo = item.schoolYear, Semester = item.paike.semester, LessonNo = item.paike.curriculunId, LessonName = item.paike.curriculunName, LessonSortNo = lessonData.FirstOrDefault(m => m.LessonNo == item.paike.curriculunId)?.LessonSortNo, LessonTime = item.paike.curriculunTime, LessonSection = item.paike.week + item.paike.section, StudyScore = lessonData.FirstOrDefault(x => x.LessonNo == item.paike.curriculunId)?.StudyScore, EmpNo = item.paike.teacherId, EmpName = item.paike.teacherName, ClassRoomNo = item.paike.classRoomId, ClassRoomName = item.paike.classRoomName, CheckMark = "1" }; insertDataList.Add(insertData); } var insertResult = await BaseRepository("CollegeMIS").InsertAsync(insertDataList); //OpenLessonPlanOfElective数据处理 var strAcademicYear = insertDataList.First().AcademicYearNo; var strSemester = insertDataList.First().Semester; var ArrangeLessonTermOfElectiveData = (await BaseRepository("CollegeMIS").FindListAsync(@"select * from ArrangeLessonTermOfElective where AcademicYearNo='" + strAcademicYear + "' and Semester='" + strSemester + "'")).ToList(); var arrangeLessonTermData = (await BaseRepository("CollegeMIS").FindListAsync(@"select PaiKeId,AcademicYearNo,Semester,LessonNo,LessonName,LessonSection,EmpNo,EmpName,ClassRoomNo,ClassRoomName from ArrangeLessonTermOfElective where AcademicYearNo='" + strAcademicYear + "' and Semester='" + strSemester + "' group by PaiKeId, AcademicYearNo, Semester, LessonNo, LessonName, LessonSection, EmpNo, EmpName, ClassRoomNo, ClassRoomName")).ToList(); var OpenLessonPlanOfElectiveData = (await BaseRepository("CollegeMIS").FindListAsync(@"select * from OpenLessonPlanOfElective where AcademicYearNo='" + strAcademicYear + "' and Semester='" + strSemester + "'")).ToList(); var insertOpenLessonPlanOfElectiveDataList = new List(); if (arrangeLessonTermData.Any()) { foreach (var item in arrangeLessonTermData) { var insertOpenLessonPlanOfElectiveData = new OpenLessonPlanOfElectiveEntity() { Id = item.PaiKeId, MakeDate = DateTime.Now, AcademicYearNo = item.AcademicYearNo, Semester = item.Semester, LessonNo = item.LessonNo, PartCode = "", LessonName = item.LessonName, LessonSortNo = lessonData.FirstOrDefault(x => x.LessonNo == item.LessonNo)?.LessonSortNo, LessonSortDetailNo = lessonData.FirstOrDefault(x => x.LessonNo == item.LessonNo)?.LessonSortDetailNo, LessonSection = item.LessonSection, LessonTime = ArrangeLessonTermOfElectiveData.FirstOrDefault(x => x.PaiKeId == item.PaiKeId)?.LessonTime, StudyScore = lessonData.FirstOrDefault(x => x.LessonNo == item.LessonNo)?.StudyScore, StartWeek = 1, EndWeek = ArrangeLessonTermOfElectiveData.Count(x => x.PaiKeId == item.PaiKeId), StartDate = ArrangeLessonTermOfElectiveData.Where(x => x.PaiKeId == item.PaiKeId).OrderBy(x => x.LessonDate).FirstOrDefault()?.LessonDate, EndDate = ArrangeLessonTermOfElectiveData.Where(x => x.PaiKeId == item.PaiKeId).OrderBy(x => x.LessonDate).LastOrDefault()?.LessonDate, CheckStyleNo = "1", ScoreRecordStyleNo = "1", EmpNo = item.EmpNo, EmpName = item.EmpName, ClassRoomNo = item.ClassRoomNo, ClassRoomName = item.ClassRoomName, CheckMark = "1", StuNumMax = 0, StuNum = 0 }; //非空判断 if (OpenLessonPlanOfElectiveData.Count(x => x.AcademicYearNo == insertOpenLessonPlanOfElectiveData.AcademicYearNo && x.Semester == insertOpenLessonPlanOfElectiveData.Semester && x.LessonNo == insertOpenLessonPlanOfElectiveData.LessonNo && x.LessonSortNo == insertOpenLessonPlanOfElectiveData.LessonSortNo && x.LessonSection == insertOpenLessonPlanOfElectiveData.LessonSection && x.EmpNo == insertOpenLessonPlanOfElectiveData.EmpNo && x.ClassRoomNo == insertOpenLessonPlanOfElectiveData.ClassRoomNo) == 0 && insertOpenLessonPlanOfElectiveDataList.Count(x => x.AcademicYearNo == insertOpenLessonPlanOfElectiveData.AcademicYearNo && x.Semester == insertOpenLessonPlanOfElectiveData.Semester && x.LessonNo == insertOpenLessonPlanOfElectiveData.LessonNo && x.LessonSortNo == insertOpenLessonPlanOfElectiveData.LessonSortNo && x.LessonSection == insertOpenLessonPlanOfElectiveData.LessonSection && x.EmpNo == insertOpenLessonPlanOfElectiveData.EmpNo && x.ClassRoomNo == insertOpenLessonPlanOfElectiveData.ClassRoomNo) == 0) { insertOpenLessonPlanOfElectiveDataList.Add(insertOpenLessonPlanOfElectiveData); } } await BaseRepository("CollegeMIS").InsertAsync(insertOpenLessonPlanOfElectiveDataList); } if (insertResult > 0) { result = true; } } } } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } return result; } /// /// 清空当前学期选修排课数据 /// /// public async Task AsyncModifyArrangeLessonOfElectiveData() { var db = BaseRepository("CollegeMIS"); bool result = false; try { db.BeginTrans(); var apiData = await Client.GetStringAsync(Config.GetValue("ModifyArrangeLessonOfElectiveAPI")); if (!string.IsNullOrEmpty(apiData)) { var data = JsonConvert.DeserializeObject(apiData); if (data.success) { var semesterAndYear = Common.GetSemesterAndYear(); var strAcademicYear = semesterAndYear.AcademicYearShort; var strSemester = semesterAndYear.Semester; await db.ExecuteAsyncBySql( $"delete from ElectiveMajor where OLPOEId in(select id from OpenLessonPlanOfElective where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}') or OLPOEId in (select id from OpenLessonPlanOfElectiveDel where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}') "); var executeResult = await db.ExecuteAsyncBySql( $"delete from ArrangeLessonTermOfElective where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' "); await db.ExecuteAsyncBySql( $"delete from OpenLessonPlanOfElective where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' "); await db.ExecuteAsyncBySql( $"delete from ElectiveMergeItem where emid in (select emid from ElectiveMerge where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}') "); await db.ExecuteAsyncBySql( $"delete from ElectiveMerge where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' "); await db.ExecuteAsyncBySql( $"delete from OpenLessonPlanOfElectiveDel where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' "); await db.ExecuteAsyncBySql( $"delete from StuSelectLessonListOfElective where AcademicYearNo='{strAcademicYear}' and Semester='{strSemester}' "); if (executeResult > 0) { result = true; } db.Commit(); } } } catch (Exception ex) { db.Rollback(); if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } return result; } /// /// 选修课课程表 /// /// 账号 /// 用户类型 学生 教师 /// 查询开始时间 /// 查询截止时间 /// public IEnumerable GetTimeTable(string userAccount, string userType, string startDate, string endDate) { var semesterAndYear = Common.GetSemesterAndYear(startDate); var strAcademicYear = semesterAndYear.AcademicYearShort; var strSemester = semesterAndYear.Semester; string sql; if (userType == "学生") { //sql = @"select a.LessonDate,a.AcademicYearNo as AcademicYear,a.Semester,a.LessonNo,a.LessonName+'[选修]' as LessonName,a.LessonSection as LessonTime,a.EmpNo,a.EmpName,a.ClassRoomName as ClassroomName,a.ClassRoomNo,a.LessonSortNo,b.OLPEId // from StuSelectLessonListOfElective b // left join ArrangeLessonTermOfElective a on b.OLPEId=a.PaiKeId // where b.StuNo=@userAccount and b.Status=2 // and b.AcademicYearNo=@strAcademicYear and b.Semester=@strSemester // and a.AcademicYearNo=@strAcademicYear and a.Semester=@strSemester // and a.LessonDate >= @startDate and a.LessonDate <=@endDate // and a.CheckMark='1'"; sql = @" select e.EnName,a.LessonDate,a.AcademicYearNo as AcademicYear,a.Semester,a.LessonNo,e.LessonName,a.LessonSection as LessonTime,a.EmpNo,emp.EmpName,cr.ClassroomName,a.ClassRoomNo,a.LessonSortNo,ccc.olpoeid as OLPEId from (select olpoeid from ElectiveMergeItem where emid in (select emid from ElectiveMergeItem aa left join StuSelectLessonListOfElective bb on aa.olpoeid = bb.olpeid where bb.StuNo = @userAccount and bb.Status = 2 and bb.AcademicYearNo = @strAcademicYear and bb.Semester = @strSemester )) as ccc left join ArrangeLessonTermOfElective a on ccc.olpoeid = a.PaiKeId left join LessonInfo e on a.LessonNo=e.LessonNo left join EmpInfo emp on a.EmpNo=emp.EmpNo left join ClassroomInfo cr on a.ClassRoomNo=cr.ClassroomNo where a.AcademicYearNo = @strAcademicYear and a.Semester = @strSemester and a.LessonDate >= @startDate and a.LessonDate <=@endDate and a.CheckMark = '1' union select e.EnName,a.LessonDate,a.AcademicYearNo as AcademicYear,a.Semester,a.LessonNo,e.LessonName,a.LessonSection as LessonTime,a.EmpNo,emp.EmpName,cr.ClassroomName,a.ClassRoomNo,a.LessonSortNo,b.OLPEId from StuSelectLessonListOfElective b left join ArrangeLessonTermOfElective a on b.OLPEId=a.PaiKeId left join LessonInfo e on a.LessonNo=e.LessonNo left join EmpInfo emp on a.EmpNo=emp.EmpNo left join ClassroomInfo cr on a.ClassRoomNo=cr.ClassroomNo where b.StuNo=@userAccount and b.Status=2 and b.AcademicYearNo=@strAcademicYear and b.Semester=@strSemester and a.AcademicYearNo=@strAcademicYear and a.Semester=@strSemester and a.LessonDate >= @startDate and a.LessonDate <=@endDate and a.CheckMark='1' "; } else { sql = @"select e.EnName,a.LessonDate,a.AcademicYearNo as AcademicYear,a.Semester,a.LessonNo,e.LessonName,a.LessonSection as LessonTime,a.EmpNo,emp.EmpName,cr.ClassroomName,a.ClassRoomNo,a.LessonSortNo from ArrangeLessonTermOfElective a left join LessonInfo e on a.LessonNo=e.LessonNo left join EmpInfo emp on a.EmpNo=emp.EmpNo left join ClassroomInfo cr on a.ClassRoomNo=cr.ClassroomNo where a.EmpNo=@userAccount and a.AcademicYearNo=@strAcademicYear and a.Semester=@strSemester and a.LessonDate >= @startDate and a.LessonDate <=@endDate and a.CheckMark='1'"; } try { var result = BaseRepository("CollegeMIS").FindList(sql, new { userAccount, startDate, endDate, strAcademicYear, strSemester }); return result; } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 选修课课程表【教务】 /// /// 查询开始时间 /// 查询截止时间 /// 班级编号 /// 教师编号 /// public IEnumerable GetTimeTableInEducation(string startDate, string endDate, string classNo, string empNo, string schoolId) { var semesterAndYear = Common.GetSemesterAndYear(startDate); var strAcademicYear = semesterAndYear.AcademicYearShort; var strSemester = semesterAndYear.Semester; string sql = @"select e.EnName,a.F_SchoolId,a.LessonDate,a.AcademicYearNo as AcademicYear,a.Semester,a.LessonNo,e.LessonName,a.LessonSection as LessonTime,a.EmpNo,emp.EmpName,cr.ClassroomName,a.ClassRoomNo,a.LessonSortNo from ArrangeLessonTermOfElective a left join LessonInfo e on a.LessonNo=e.LessonNo left join EmpInfo emp on a.EmpNo=emp.EmpNo left join ClassroomInfo cr on a.ClassRoomNo=cr.ClassroomNo where a.AcademicYearNo=@strAcademicYear and a.Semester=@strSemester and a.LessonDate>=@startDate and a.LessonDate<=@endDate and a.CheckMark=1"; try { var result = BaseRepository("CollegeMIS").FindList(sql, new { startDate, endDate, strAcademicYear, strSemester }); if (!string.IsNullOrEmpty(classNo)) { result = result.Where(x => x.TeachClassNo == classNo); } if (!string.IsNullOrEmpty(empNo)) { result = result.Where(x => x.EmpNo == empNo); } if (!string.IsNullOrEmpty(schoolId)) { result = result.Where(x => x.F_SchoolId == schoolId); } return result; } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 获取相关课程考勤的学生信息--选修课 /// /// /// /// /// /// /// /// /// /// public IEnumerable AttendanceStudents(Pagination pagination, string queryJson) { try { var queryParam = queryJson.ToJObject(); var strSql = new StringBuilder(); strSql.Append("SELECT "); strSql.Append(@" a.[StuNo] ,a.[DeptNo] ,a.[MajorNo] ,a.[ClassNo] ,a.[StuName] ,a.[GenderNo] ,a.[AcademicYearNo] ,a.[Semester] ,a.[LessonNo] ,a.[LessonName] ,a.[LessonSortNo] ,a.[Grade] ,a.[EmpNo],a.Id as StuSelectLessonListOfElectiveId,b.ID as StuAttendanceNo,b.AttendOrNo,b.Sort,b.AttenCondition,b.AttenScore "); strSql.Append(" FROM StuSelectLessonListOfElective 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.ClassRoomNo=b.ClassRoomNo and a.LessonSection=b.LessonTime "); strSql.Append($" and b.LessonDate='{queryParam["lessonDate"]}'"); strSql.Append(" WHERE 1=1 "); strSql.Append($"and a.AcademicYearNo='{ queryParam["year"]}' and a.Semester='{queryParam["semester"]}' and a.Status=2 and a.EmpNo='{queryParam["empno"]}' and a.LessonNo='{queryParam["lessonNo"]}' and a.ClassRoomNo='{queryParam["classRoomNo"]}' and a.LessonSection like '%{queryParam["lessonTime"]}%'"); return this.BaseRepository("CollegeMIS").FindList(strSql.ToString(), pagination); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 考试系统中获取学生成绩数据 /// /// public async Task AsyncStuScoreData() { bool result = false; var db = this.BaseRepository("CollegeMIS").BeginTrans(); try { var values = new List>(); values.Add(new KeyValuePair("scoolYear", "18-19")); values.Add(new KeyValuePair("term ", "2")); var content = new FormUrlEncodedContent(values); var response = await Client.PostAsync("http://192.168.2.125:8088/app/stuScore", content); response.EnsureSuccessStatusCode(); var responseString = await response.Content.ReadAsStringAsync(); if (!string.IsNullOrEmpty(responseString)) { var data = JsonConvert.DeserializeObject(responseString); if (data.success) { var dataList = data.entity.stuScoreList; if (dataList.Any()) { foreach (var item in dataList) { if (item.lessonno.IndexOf(',') == -1)//单课程 { //todo:测试是否能找到对应的成绩记录 var aa = this.BaseRepository("CollegeMIS").FindObject("select * from StuScore where where StuNo='" + item.stuno + "' and AcademicYearNo='" + item.scoolYear + "' and Semester='" + item.term + "' and LessonNo='" + item.lessonno + "' and TeachClassNo='" + item.teachclassno + "' and LessonSortNo='1' and CheckMark='0' "); this.BaseRepository("CollegeMIS").ExecuteBySql("update StuScore set TermEndScore='" + Convert.ToDecimal(item.termendscore) + "' where StuNo='" + item.stuno + "' and AcademicYearNo='" + item.scoolYear + "' and Semester='" + item.term + "' and LessonNo='" + item.lessonno + "' and TeachClassNo='" + item.teachclassno + "' and LessonSortNo='1' and CheckMark='0' "); } else//多课程 { var lessonnoList = item.lessonno.Split(','); foreach (var lessonnoItem in lessonnoList) { this.BaseRepository("CollegeMIS").ExecuteBySql("update StuScore set TermEndScore='" + Convert.ToDecimal(item.termendscore) + "' where StuNo='" + item.stuno + "' and AcademicYearNo='" + item.scoolYear + "' and Semester='" + item.term + "' and LessonNo='" + lessonnoItem + "' and TeachClassNo='" + item.teachclassno + "' and LessonSortNo='1' and CheckMark='0' "); } } } db.Commit(); result = true; } } } } catch (Exception ex) { db.Rollback(); if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } return result; } #endregion #region 学生成绩数据 public class StuScoreList { public string id { get; set; } public string examname { get; set; } public string stuno { get; set; } public string stuname { get; set; } public string classno { get; set; } public string classname { get; set; } public string teachclassno { get; set; } public string termendscore { get; set; } public string examtime { get; set; } public string lessonno { get; set; } public string lessonname { get; set; } public string scoolYear { get; set; } public string term { get; set; } } public class StuScoreEntity { /// /// true /// public string opflag { get; set; } /// /// 1000 /// public string opCode { get; set; } /// /// OK! /// public string message { get; set; } /// /// List /// public List stuScoreList { get; set; } } public class StuScoreRoot { /// /// 操作成功 /// public string message { get; set; } /// /// Success /// public bool success { get; set; } /// /// Entity /// public StuScoreEntity entity { get; set; } } #endregion } }