using Dapper; using Learun.DataBase.Repository; using Learun.Util; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; namespace Learun.Application.TwoDevelopment.EducationalAdministration { /// /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园 /// Copyright (c) 2013-2018 北京泉江科技有限公司 /// 创 建:超级管理员 /// 日 期:2019-09-26 10:47 /// 描 述:教学调度 /// public class ArrangeLessonTermAttemperService : RepositoryFactory { #region 获取数据 /// /// 获取页面显示列表数据 /// /// 查询参数 /// public IEnumerable GetPageList(Pagination pagination, string queryJson) { try { var strSql = new StringBuilder(); strSql.Append("SELECT t.* "); //strSql.Append(" b.NewLessonDate,b.NewLessonTime,c.AcademicYearNo as D_AcademicYearNo,c.Semester as D_Semester,c.DeptNo as D_DeptNo,c.majorno as D_majorno,c.lessonno as D_lessonno,c.lessonname as D_lessonname,replace(c.teachclassno ,c.lessonname,'') as D_teachclassno,c.empno as D_empno,c.EmpName as D_EmpName, c.classroomno as D_classroomno,c.lessondate as D_lessondate,c.lessontime as D_lessontime "); strSql.Append(" FROM ArrangeLessonTermAttemper t "); //strSql.Append(" left join ArrangeLessonTermAttrmperChild b on b.AttemperId=t.id "); //strSql.Append(" left join ArrangeLessonTerm c on c.altid=b.lessonid "); strSql.Append(" WHERE 1=1 "); var queryParam = queryJson.ToJObject(); // 虚拟参数 var dp = new DynamicParameters(new { }); if (!queryParam["AttemperType"].IsEmpty()) { dp.Add("AttemperType", queryParam["AttemperType"].ToString(), DbType.String); strSql.Append(" AND t.AttemperType = @AttemperType "); } if (!queryParam["AttemperTimeType"].IsEmpty()) { dp.Add("AttemperTimeType", queryParam["AttemperTimeType"].ToString(), DbType.String); strSql.Append(" AND t.AttemperTimeType = @AttemperTimeType "); } if (!queryParam["F_SchoolId"].IsEmpty()) { dp.Add("F_SchoolId", queryParam["F_SchoolId"].ToString(), DbType.String); strSql.Append(" AND t.F_SchoolId = @F_SchoolId "); } if (!queryParam["AcademicYearNo"].IsEmpty()) { dp.Add("AcademicYearNo", queryParam["AcademicYearNo"].ToString(), DbType.String); strSql.Append(" AND t.AcademicYearNo = @AcademicYearNo "); } if (!queryParam["Semester"].IsEmpty()) { dp.Add("Semester", queryParam["Semester"].ToString(), DbType.String); strSql.Append(" AND t.Semester = @Semester "); } if (!queryParam["DeptNo"].IsEmpty()) { dp.Add("DeptNo", queryParam["DeptNo"].ToString(), DbType.String); strSql.Append(" AND t.DeptNo = @DeptNo "); } if (!queryParam["MajorNo"].IsEmpty()) { dp.Add("MajorNo", queryParam["MajorNo"].ToString(), DbType.String); strSql.Append(" AND t.MajorNo = @MajorNo "); } if (!queryParam["LessonNo"].IsEmpty()) { dp.Add("LessonNo", queryParam["LessonNo"].ToString(), DbType.String); strSql.Append(" AND t.LessonNo = @LessonNo "); } if (!queryParam["TeachClassNo"].IsEmpty()) { dp.Add("TeachClassNo", queryParam["TeachClassNo"].ToString(), DbType.String); strSql.Append(" AND t.TeachClassNo = @TeachClassNo "); } if (!queryParam["EmpNo"].IsEmpty()) { dp.Add("EmpNo", queryParam["EmpNo"].ToString(), DbType.String); strSql.Append(" AND (t.EmpNo = @EmpNo or t.NewEmpNo=@EmpNo) "); } if (!queryParam["CreateUserId"].IsEmpty()) { dp.Add("CreateUserId", queryParam["CreateUserId"].ToString(), DbType.String); strSql.Append(" AND t.CreateUserId = @CreateUserId "); } var result = this.BaseRepository("CollegeMIS").FindList(strSql.ToString(), dp, pagination); return result; } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 获取ArrangeLessonTermAttemper表实体数据 /// 主键 /// /// public ArrangeLessonTermAttemperEntity GetArrangeLessonTermAttemperEntity(string keyValue) { try { var db = this.BaseRepository("CollegeMIS").BeginTrans(); var result = db.FindEntity(c => c.Id == keyValue); if (result != null) { result.query = db.FindList($@"select a.*,b.lessonname,b.EmpName,b.empno,c.classname,d.classroomname from ArrangeLessonTermAttrmperChild a left join arrangelessonterm b on a.LessonId=b.ALTId left join classinfo c on c.classno=replace(b.teachclassno,b.lessonname,'') left join classroominfo d on d.classroomno=b.ClassroomNo where 1=1 and a.AttemperId='{result.Id}' ").ToList(); } return result; } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 获取主表实体数据 /// 流程实例ID /// /// public ArrangeLessonTermAttemperEntity GetEntityByProcessId(string processId) { try { var db = this.BaseRepository("CollegeMIS").BeginTrans(); var result = db.FindEntity(t => t.ProcessId == processId); if (result != null) { result.query = db.FindList($@"select a.*,b.lessonname,b.EmpName,b.empno,c.classname,d.classroomname from ArrangeLessonTermAttrmperChild a left join arrangelessonterm b on a.LessonId=b.ALTId left join classinfo c on c.classno=replace(b.teachclassno,b.lessonname,'') left join classroominfo d on d.classroomno=b.ClassroomNo where 1=1 and a.AttemperId='{result.Id}' ").ToList(); } return result; } 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); this.BaseRepository("CollegeMIS").Delete(t => t.AttemperId == keyValue); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 保存实体数据(新增、修改) /// 主键 /// /// public void SaveEntity(string keyValue, ArrangeLessonTermAttemperEntity entity) { try { if (!string.IsNullOrEmpty(keyValue)) { entity.Modify(keyValue); this.BaseRepository("CollegeMIS").Update(entity); if (entity.AttemperType == "04") { this.BaseRepository("CollegeMIS").Delete(c => c.AttemperId == keyValue); foreach (ArrangeLessonTermAttrmperChildEntity item in entity.query) { item.AttemperId = entity.Id; item.Create(); this.BaseRepository("CollegeMIS").Insert(item); } } } else { entity.Create(); this.BaseRepository("CollegeMIS").Insert(entity); if (entity.AttemperType == "04") { foreach (ArrangeLessonTermAttrmperChildEntity item in entity.query) { item.AttemperId = entity.Id; item.Create(); this.BaseRepository("CollegeMIS").Insert(item); } } } } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } #endregion #region 扩展数据 /// /// 提交课程异动记录 /// /// 课程异动表主键 /// 审核状态 /// 流程Id public void ModifyStatus(string keyValue, int status, string processId) { try { var now = DateTime.Now; var entity = this.BaseRepository("CollegeMIS").FindEntity(x => x.Id == keyValue); if (entity != null) { entity.Status = status; entity.ProcessId = processId; entity.SubmitTime = now; entity.CheckStatus = 1; this.BaseRepository("CollegeMIS").Update(entity); } } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 修改课程异动表的审核状态 /// /// 审核状态 /// 流程Id public void ModifyStatusByProcessId(int status, string processId) { var db = this.BaseRepository("CollegeMIS").BeginTrans(); var now = DateTime.Now; var loginUserInfo = LoginUserInfo.Get(); try { var entity = db.FindEntity(x => x.ProcessId == processId); if (entity != null) { //审核通过 if (status == 2) { if (entity.AttemperType == "01") //换课 { //ArrangeLessonTerm //var ArrangeLessonTermList = db.FindList(x => x.F_SchoolId == entity.F_SchoolId && x.AcademicYearNo == entity.AcademicYearNo && x.Semester == entity.Semester && x.DeptNo == entity.DeptNo && x.MajorNo == entity.MajorNo && x.LessonNo == entity.LessonNo && x.TeachClassNo.Contains(entity.TeachClassNo) && x.EmpNo == entity.EmpNo && x.ClassroomNo == entity.ClassroomNo && x.LessonDate >= entity.AttemperStartTime && x.LessonDate <= entity.AttemperEndTime); var ArrangeLessonTermList = db.FindList(x => x.AcademicYearNo == entity.AcademicYearNo && x.Semester == entity.Semester && x.DeptNo == entity.DeptNo && x.MajorNo == entity.MajorNo && x.LessonNo == entity.LessonNo && x.TeachClassNo.Contains(entity.TeachClassNo) && x.EmpNo == entity.EmpNo && x.ClassroomNo == entity.ClassroomNo && x.LessonDate >= entity.AttemperStartTime && x.LessonDate <= entity.AttemperEndTime); if (ArrangeLessonTermList.Any()) { foreach (var item in ArrangeLessonTermList) { if (!string.IsNullOrEmpty(entity.NewEmpNo)) { item.EmpNo = entity.NewEmpNo; item.EmpName = db.FindEntity(x => x.EmpNo == entity.NewEmpNo)?.EmpName; } if (!string.IsNullOrEmpty(entity.NewClassroomNo)) { item.ClassroomNo = entity.NewClassroomNo; } db.Update(item); } } if (entity.AttemperTimeType == "01") //永久 { if (!string.IsNullOrEmpty(entity.NewEmpNo)) { //TeachClass //db.ExecuteBySql($"update TeachClass set EmpNo='{entity.NewEmpNo}' where F_SchoolId='{entity.F_SchoolId}' and AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' and DeptNo='{entity.DeptNo}' and MajorNo='{entity.MajorNo}' and LessonNo='{entity.LessonNo}' and TeachClassNo='{entity.TeachClassNo}' and EmpNo='{entity.EmpNo}' "); db.ExecuteBySql($"update TeachClass set EmpNo='{entity.NewEmpNo}' where AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' and DeptNo='{entity.DeptNo}' and MajorNo='{entity.MajorNo}' and LessonNo='{entity.LessonNo}' and TeachClassNo='{entity.TeachClassNo}' and EmpNo='{entity.EmpNo}' "); //StuSelectLessonList //db.ExecuteBySql($"update StuSelectLessonList set EmpNo='{entity.NewEmpNo}' where F_SchoolId='{entity.F_SchoolId}' and AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' and DeptNo='{entity.DeptNo}' and MajorNo='{entity.MajorNo}' and LessonNo='{entity.LessonNo}' and TeachClassNo='{entity.TeachClassNo}' and EmpNo='{entity.EmpNo}' "); db.ExecuteBySql($"update StuSelectLessonList set EmpNo='{entity.NewEmpNo}' where AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' and DeptNo='{entity.DeptNo}' and MajorNo='{entity.MajorNo}' and LessonNo='{entity.LessonNo}' and TeachClassNo='{entity.TeachClassNo}' and EmpNo='{entity.EmpNo}' "); //StuScore //db.ExecuteBySql($"update StuScore set EmpNo='{entity.NewEmpNo}' where F_SchoolId='{entity.F_SchoolId}' and AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' and DeptNo='{entity.DeptNo}' and MajorNo='{entity.MajorNo}' and LessonNo='{entity.LessonNo}' and TeachClassNo='{entity.TeachClassNo}' and EmpNo='{entity.EmpNo}' and LessonSortNo='1' "); db.ExecuteBySql($"update StuScore set EmpNo='{entity.NewEmpNo}' where AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' and DeptNo='{entity.DeptNo}' and MajorNo='{entity.MajorNo}' and LessonNo='{entity.LessonNo}' and TeachClassNo='{entity.TeachClassNo}' and EmpNo='{entity.EmpNo}' and LessonSortNo='1' "); //EmpReportCard //todo:分校区版初始化成绩时,初始化学生成绩未赋值F_SchoolId,初始化教师成绩单未赋值F_SchoolId //db.ExecuteBySql($"update EmpReportCard set EmpNo='{entity.NewEmpNo}',EmpName='{db.FindEntity(x => x.EmpNo == entity.NewEmpNo)?.EmpName}' where F_SchoolId='{entity.F_SchoolId}' and AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' and LessonNo='{entity.LessonNo}' and ClassNo='{entity.TeachClassNo}' and EmpNo='{entity.EmpNo}' and LessonSortNo='1' "); db.ExecuteBySql($"update EmpReportCard set EmpNo='{entity.NewEmpNo}',EmpName='{db.FindEntity(x => x.EmpNo == entity.NewEmpNo)?.EmpName}' where AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' and LessonNo='{entity.LessonNo}' and ClassNo='{entity.TeachClassNo}' and EmpNo='{entity.EmpNo}' and LessonSortNo='1' "); } } } else if (entity.AttemperType == "02") //停课 { //ArrangeLessonTerm //db.ExecuteBySql($"update ArrangeLessonTerm set CheckMark='0' where F_SchoolId='{entity.F_SchoolId}' and AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' and DeptNo='{entity.DeptNo}' and MajorNo='{entity.MajorNo}' and LessonNo='{entity.LessonNo}' and TeachClassNo like '%{entity.TeachClassNo}%' and EmpNo='{entity.EmpNo}' and ClassroomNo='{entity.ClassroomNo}' "); db.ExecuteBySql($"update ArrangeLessonTerm set CheckMark='0' where AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' and DeptNo='{entity.DeptNo}' and MajorNo='{entity.MajorNo}' and LessonNo='{entity.LessonNo}' and TeachClassNo like '%{entity.TeachClassNo}%' and EmpNo='{entity.EmpNo}' and ClassroomNo='{entity.ClassroomNo}' "); //StuSelectLessonList //db.ExecuteBySql($"update StuSelectLessonList set CheckMark='0' where F_SchoolId='{entity.F_SchoolId}' and AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' and DeptNo='{entity.DeptNo}' and MajorNo='{entity.MajorNo}' and LessonNo='{entity.LessonNo}' and TeachClassNo='{entity.TeachClassNo}' and EmpNo='{entity.EmpNo}' "); db.ExecuteBySql($"update StuSelectLessonList set CheckMark='0' where AcademicYearNo='{entity.AcademicYearNo}' and Semester='{entity.Semester}' and DeptNo='{entity.DeptNo}' and MajorNo='{entity.MajorNo}' and LessonNo='{entity.LessonNo}' and TeachClassNo='{entity.TeachClassNo}' and EmpNo='{entity.EmpNo}' "); } else if (entity.AttemperType == "03") //对调 { //ArrangeLessonTerm //var ArrangeLessonTermList = this.BaseRepository("CollegeMIS").FindList(x => x.F_SchoolId == entity.F_SchoolId && x.AcademicYearNo == entity.AcademicYearNo && x.Semester == entity.Semester && x.DeptNo == entity.DeptNo && x.MajorNo == entity.MajorNo && x.LessonNo == entity.LessonNo && x.TeachClassNo.Contains(entity.TeachClassNo) && x.EmpNo == entity.EmpNo && x.ClassroomNo == entity.ClassroomNo); var ArrangeLessonTermList = this.BaseRepository("CollegeMIS").FindList(x => x.AcademicYearNo == entity.AcademicYearNo && x.Semester == entity.Semester && x.DeptNo == entity.DeptNo && x.MajorNo == entity.MajorNo && x.LessonNo == entity.LessonNo && x.TeachClassNo.Contains(entity.TeachClassNo) && x.EmpNo == entity.EmpNo && x.ClassroomNo == entity.ClassroomNo); //var NewArrangeLessonTermList = this.BaseRepository("CollegeMIS").FindList(x => x.F_SchoolId == entity.F_SchoolId && x.AcademicYearNo == entity.AcademicYearNo && x.Semester == entity.Semester && x.DeptNo == entity.NewDeptNo && x.MajorNo == entity.NewMajorNo && x.LessonNo == entity.NewLessonNo && x.TeachClassNo.Contains(entity.NewTeachClassNo) && x.EmpNo == entity.NewEmpNo && x.ClassroomNo == entity.NewClassroomNo); var NewArrangeLessonTermList = this.BaseRepository("CollegeMIS").FindList(x => x.AcademicYearNo == entity.AcademicYearNo && x.Semester == entity.Semester && x.DeptNo == entity.NewDeptNo && x.MajorNo == entity.NewMajorNo && x.LessonNo == entity.NewLessonNo && x.TeachClassNo.Contains(entity.NewTeachClassNo) && x.EmpNo == entity.NewEmpNo && x.ClassroomNo == entity.NewClassroomNo); if (ArrangeLessonTermList.Any() && NewArrangeLessonTermList.Any()) { var oldEntity = ArrangeLessonTermList.FirstOrDefault(); var newEntity = NewArrangeLessonTermList.FirstOrDefault(); var oldEntityTemp = new ArrangeLessonTermEntity() { DeptNo = oldEntity.DeptNo, MajorNo = oldEntity.MajorNo, LessonNo = oldEntity.LessonNo, LessonName = oldEntity.LessonName, TeachClassNo = oldEntity.TeachClassNo, TeachClassSn = oldEntity.TeachClassSn, EmpNo = oldEntity.EmpNo, EmpName = oldEntity.EmpName, LessonSortNo = oldEntity.LessonSortNo, StuSortNo = oldEntity.StuSortNo, JoinLessonNum = oldEntity.JoinLessonNum, RelatedClassNo = oldEntity.RelatedClassNo, ClassroomNo = oldEntity.ClassroomNo, Remark = oldEntity.Remark, CheckMark = oldEntity.CheckMark, RecordMark = oldEntity.RecordMark, }; foreach (var item in ArrangeLessonTermList) { item.DeptNo = newEntity.DeptNo; item.MajorNo = newEntity.MajorNo; item.LessonNo = newEntity.LessonNo; item.LessonName = newEntity.LessonName; item.TeachClassNo = newEntity.TeachClassNo; item.TeachClassSn = newEntity.TeachClassSn; item.EmpNo = newEntity.EmpNo; item.EmpName = newEntity.EmpName; item.LessonSortNo = newEntity.LessonSortNo; item.StuSortNo = newEntity.StuSortNo; item.JoinLessonNum = newEntity.JoinLessonNum; item.RelatedClassNo = newEntity.RelatedClassNo; item.ClassroomNo = newEntity.ClassroomNo; item.Remark = newEntity.Remark; item.CheckMark = newEntity.CheckMark; item.RecordMark = newEntity.RecordMark; db.Update(item); } foreach (var newitem in NewArrangeLessonTermList) { newitem.DeptNo = oldEntityTemp.DeptNo; newitem.MajorNo = oldEntityTemp.MajorNo; newitem.LessonNo = oldEntityTemp.LessonNo; newitem.LessonName = oldEntityTemp.LessonName; newitem.TeachClassNo = oldEntityTemp.TeachClassNo; newitem.TeachClassSn = oldEntityTemp.TeachClassSn; newitem.EmpNo = oldEntityTemp.EmpNo; newitem.EmpName = oldEntityTemp.EmpName; newitem.LessonSortNo = oldEntityTemp.LessonSortNo; newitem.StuSortNo = oldEntityTemp.StuSortNo; newitem.JoinLessonNum = oldEntityTemp.JoinLessonNum; newitem.RelatedClassNo = oldEntityTemp.RelatedClassNo; newitem.ClassroomNo = oldEntityTemp.ClassroomNo; newitem.Remark = oldEntityTemp.Remark; newitem.CheckMark = oldEntityTemp.CheckMark; newitem.RecordMark = oldEntityTemp.RecordMark; db.Update(newitem); } } } else if (entity.AttemperType == "04")//调课 { entity.query = db.FindList($@"select a.*,b.lessonname,b.EmpName,b.empno,c.classname,d.classroomname from ArrangeLessonTermAttrmperChild a left join arrangelessonterm b on a.LessonId=b.ALTId left join classinfo c on c.classno=replace(b.teachclassno,b.lessonname,'') left join classroominfo d on d.classroomno=b.ClassroomNo where 1=1 and a.AttemperId='{entity.Id}' ").ToList(); foreach (var item in entity.query) { string updatesql = "update ArrangeLessonTerm set LessonDate='" + item.NewLessonDate + "',LessonTime='" + item.NewLessonTime + "' where ALTId='" + item.LessonId + "'"; db.ExecuteBySql(updatesql); } } } //更新课程异动表的审核状态 entity.Status = 1; entity.CheckStatus = status; entity.CheckUserId = loginUserInfo.userId; entity.CheckUserName = loginUserInfo.realName; entity.CheckTime = now; db.Update(entity); } db.Commit(); } catch (Exception ex) { db.Rollback(); if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } #endregion } }