using System; using System.Collections.Generic; using System.Linq; using System.Text; using EMIS.ViewModel; using Bowin.Common.Linq.Entity; using EMIS.ViewModel.GraduationManage.GraduationRequirement; using EMIS.Entities; using Bowin.Common.Linq; using System.Linq.Expressions; using EMIS.DataLogic.GraduationManage.GraduationRequirement; using EMIS.DataLogic.Repositories; namespace EMIS.CommonLogic.GraduationManage.GraduationRequirement { public class GraduationCourseServices : BaseServices, IGraduationCourseServices { public GraduationCourseDAL GraduationCourseDAL { get; set; } /// /// 查询毕业课程信息View /// /// /// /// /// /// /// /// /// /// /// /// /// public IGridResultSet GetGraduationCourseViewGird(ConfiguretView configuretView, Guid? gradSchoolyearID, Guid? collegeID, int? yearID, int? standardID, int? educationID, int? learningformID, string learnSystem, int? courseTypeID, int pageIndex, int pageSize) { //毕业课程 Expression> exp = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE); if (courseTypeID.HasValue) { //课程类型 exp = exp.And(x => x.CourseTypeID == courseTypeID); } var query = GraduationCourseDAL.GetGraduationCourseQueryable(exp); if (gradSchoolyearID.HasValue) { query = query.Where(x => x.GraduatingSemesterID == gradSchoolyearID); } if (collegeID.HasValue) { query = query.Where(x => x.CollegeID == collegeID); } if (yearID.HasValue) { query = query.Where(x => x.SchoolyearID == yearID); } if (standardID.HasValue) { query = query.Where(x => x.StandardID == standardID); } if (educationID.HasValue) { query = query.Where(x => x.EducationID == educationID); } if (learningformID.HasValue) { query = query.Where(x => x.LearningformID == learningformID); } if (!string.IsNullOrEmpty(learnSystem) && learnSystem != "-1") { var LearnSystems = Convert.ToDecimal(learnSystem); query = query.Where(x => x.LearnSystem == LearnSystems); } //查询条件 if (!string.IsNullOrEmpty(configuretView.ConditionValue)) { query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim()); } return this.GetQueryByDataRangeByCollege(query) .OrderByDescending(x => x.SchoolyearID).OrderBy(x => x.StandardID) .ThenBy(x => x.EducationID).ThenBy(x => x.LearningformID) .ThenBy(x => x.CourseTypeID) .ThenBy(x => x.CollegeNo.Length).ThenBy(x => x.CollegeNo) .ToGridResultSet(pageIndex, pageSize); } /// /// 查询毕业课程信息List /// /// /// /// /// /// /// /// /// /// /// public IList GetGraduationCourseViewList(ConfiguretView configuretView, Guid? gradSchoolyearID, Guid? collegeID, int? yearID, int? standardID, int? educationID, int? learningformID, string learnSystem, int? courseTypeID) { //毕业课程 Expression> exp = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE); if (courseTypeID.HasValue) { //课程类型 exp = exp.And(x => x.CourseTypeID == courseTypeID); } var query = GraduationCourseDAL.GetGraduationCourseQueryable(exp); if (gradSchoolyearID.HasValue) { query = query.Where(x => x.GraduatingSemesterID == gradSchoolyearID); } if (collegeID.HasValue) { query = query.Where(x => x.CollegeID == collegeID); } if (yearID.HasValue) { query = query.Where(x => x.SchoolyearID == yearID); } if (standardID.HasValue) { query = query.Where(x => x.StandardID == standardID); } if (educationID.HasValue) { query = query.Where(x => x.EducationID == educationID); } if (learningformID.HasValue) { query = query.Where(x => x.LearningformID == learningformID); } if (!string.IsNullOrEmpty(learnSystem) && learnSystem != "-1") { var LearnSystems = Convert.ToDecimal(learnSystem); query = query.Where(x => x.LearnSystem == LearnSystems); } //查询条件 if (!string.IsNullOrEmpty(configuretView.ConditionValue)) { query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim()); } return this.GetQueryByDataRangeByCollege(query) .OrderByDescending(x => x.SchoolyearID).OrderBy(x => x.StandardID) .ThenBy(x => x.EducationID).ThenBy(x => x.LearningformID) .ThenBy(x => x.CourseTypeID) .ThenBy(x => x.CollegeNo.Length).ThenBy(x => x.CollegeNo) .ToList(); } /// /// 根据毕业课程ID查询对应的毕业课程信息GraduationCourseView /// /// /// public GraduationCourseView GetGraduationCourseView(Guid? GraduationCourseID) { try { var query = GraduationCourseDAL.GetGraduationCourseQueryable(x => x.GraduationCourseID == GraduationCourseID) .SingleOrDefault(); return query; } catch (Exception ex) { throw new Exception(ex.Message); } } /// /// 查询对应的专业计划信息View(需与毕业课程信息进行对比) /// /// /// /// /// /// /// /// /// /// /// /// /// /// public IGridResultSet GetGradSpecialtyPlanViewGrid(ConfiguretView configuretView, Guid? gradSchoolyearID, Guid? collegeID, int? yearID, int? standardID, int? educationID, int? learningformID, string learnSystem, Guid? coursematerialID, int? courseTypeID, int pageIndex, int pageSize) { //专业计划 Expression> expSpecialtyPlan = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE); if (coursematerialID.HasValue) { //课程信息 expSpecialtyPlan = expSpecialtyPlan.And(x => x.CoursematerialID == coursematerialID); } if (courseTypeID.HasValue) { //课程类型 expSpecialtyPlan = expSpecialtyPlan.And(x => x.CourseTypeID == courseTypeID); } //年级专业 Expression> expGrademajor = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE); if (gradSchoolyearID.HasValue) { //毕业学期 expGrademajor = expGrademajor.And(x => x.GraduateSchoolyearID == gradSchoolyearID); } var query = GraduationCourseDAL.GetGradSpecialtyPlanQueryable(expSpecialtyPlan, expGrademajor); if (collegeID.HasValue) { query = query.Where(x => x.CollegeID == collegeID); } if (yearID.HasValue) { query = query.Where(x => x.GradeID == yearID); } if (standardID.HasValue) { query = query.Where(x => x.StandardID == standardID); } if (educationID.HasValue) { query = query.Where(x => x.EducationID == educationID); } if (learningformID.HasValue) { query = query.Where(x => x.LearningformID == learningformID); } if (!string.IsNullOrEmpty(learnSystem) && learnSystem != "-1") { var LearnSystems = Convert.ToDecimal(learnSystem); query = query.Where(x => x.LearnSystem == LearnSystems); } //查询条件 if (!string.IsNullOrEmpty(configuretView.ConditionValue)) { query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim()); } return this.GetQueryByDataRangeByCollege(query) .OrderByDescending(x => x.GradeID).ThenBy(x => x.GrademajorCode.Length) .ThenBy(x => x.GrademajorCode).ThenBy(x => x.StarttermID) .ToGridResultSet(pageIndex, pageSize); } /// /// 查询对应的专业计划信息List(需与毕业课程信息进行对比) /// /// /// /// /// /// /// /// /// /// /// /// public IList GetGradSpecialtyPlanViewList(ConfiguretView configuretView, Guid? gradSchoolyearID, Guid? collegeID, int? yearID, int? standardID, int? educationID, int? learningformID, string learnSystem, Guid? coursematerialID, int? courseTypeID) { //专业计划 Expression> expSpecialtyPlan = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE); if (coursematerialID.HasValue) { //课程信息 expSpecialtyPlan = expSpecialtyPlan.And(x => x.CoursematerialID == coursematerialID); } if (courseTypeID.HasValue) { //课程类型 expSpecialtyPlan = expSpecialtyPlan.And(x => x.CourseTypeID == courseTypeID); } //年级专业 Expression> expGrademajor = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE); if (gradSchoolyearID.HasValue) { //毕业学期 expGrademajor = expGrademajor.And(x => x.GraduateSchoolyearID == gradSchoolyearID); } var query = GraduationCourseDAL.GetGradSpecialtyPlanQueryable(expSpecialtyPlan, expGrademajor); if (collegeID.HasValue) { query = query.Where(x => x.CollegeID == collegeID); } if (yearID.HasValue) { query = query.Where(x => x.GradeID == yearID); } if (standardID.HasValue) { query = query.Where(x => x.StandardID == standardID); } if (educationID.HasValue) { query = query.Where(x => x.EducationID == educationID); } if (learningformID.HasValue) { query = query.Where(x => x.LearningformID == learningformID); } if (!string.IsNullOrEmpty(learnSystem) && learnSystem != "-1") { var LearnSystems = Convert.ToDecimal(learnSystem); query = query.Where(x => x.LearnSystem == LearnSystems); } //查询条件 if (!string.IsNullOrEmpty(configuretView.ConditionValue)) { query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim()); } return this.GetQueryByDataRangeByCollege(query) .OrderByDescending(x => x.GradeID).ThenBy(x => x.GrademajorCode.Length) .ThenBy(x => x.GrademajorCode).ThenBy(x => x.StarttermID) .ToList(); } /// /// 计划生成(专业计划) /// /// /// /// public string GraduationCourseBatchAdd(GraduationCourseView graduationCourseView, List gradSpecialtyPlanViewList) { try { //毕业课程信息List var chargeStandardList = GraduationCourseDAL.GraduationCourseRepository .GetList(x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE).ToList(); int success = 0; //成功 int fail = 0; //失败 string tipMessage = null; //提示消息 List graduationCourseInList = new List(); //注:毕业课程业务主键(年级专业ID、课程信息ID、课程类型ID、课程学分) foreach (var gradSpecialtyPlanView in gradSpecialtyPlanViewList) { //查询数据库进行验证 var graduationCourseVerification = chargeStandardList .Where(x => x.GrademajorID == gradSpecialtyPlanView.GrademajorID && x.CoursematerialID == gradSpecialtyPlanView.CoursematerialID && x.CourseTypeID == gradSpecialtyPlanView.CourseTypeID && x.CourseCredit == gradSpecialtyPlanView.Credit) .SingleOrDefault(); if (graduationCourseVerification == null) { //表示不存在对应的毕业课程(新增) ER_GraduationCourse graduationCourse = new ER_GraduationCourse(); graduationCourse.GraduationCourseID = Guid.NewGuid(); graduationCourse.GrademajorID = gradSpecialtyPlanView.GrademajorID; graduationCourse.CoursematerialID = gradSpecialtyPlanView.CoursematerialID; graduationCourse.CourseTypeID = gradSpecialtyPlanView.CourseTypeID; graduationCourse.CourseCredit = gradSpecialtyPlanView.Credit; SetNewStatus(graduationCourse); graduationCourseInList.Add(graduationCourse); success++; } else { //表示已存在相同的毕业课程 fail++; } } //批量插入 UnitOfWork.BulkInsert(graduationCourseInList); if (success > 0 && fail <= 0) { tipMessage = success + "条"; } else { tipMessage = success + "条," + fail + "条失败,原因:已存在相同的毕业课程,请检查"; } return tipMessage; } catch (Exception ex) { throw new Exception(ex.Message); } } /// /// 编辑(新增、修改,业务主键:年级专业、课程信息、课程类型、课程学分) /// /// public void GraduationCourseEdit(GraduationCourseView graduationCourseView) { try { //查询数据库进行验证 var graduationCourseVerification = GraduationCourseDAL.GraduationCourseRepository .GetList(x => x.GraduationCourseID != graduationCourseView.GraduationCourseID && x.GrademajorID == graduationCourseView.GrademajorID && x.CoursematerialID == graduationCourseView.CoursematerialID && x.CourseTypeID == graduationCourseView.CourseTypeID && x.CourseCredit == graduationCourseView.CourseCredit) .SingleOrDefault(); if (graduationCourseVerification == null) { //数据有误验证 if (graduationCourseView.GraduationCourseID != Guid.Empty) { var graduationCourse = GraduationCourseDAL.GraduationCourseRepository .GetList(x => x.GraduationCourseID == graduationCourseView.GraduationCourseID) .SingleOrDefault(); if (graduationCourse == null) { throw new Exception("数据有误,请核查"); } else { //表示修改 graduationCourse.GrademajorID = graduationCourseView.GrademajorID; graduationCourse.CoursematerialID = graduationCourseView.CoursematerialID; graduationCourse.CourseTypeID = graduationCourseView.CourseTypeID; graduationCourse.CourseCredit = graduationCourseView.CourseCredit; SetModifyStatus(graduationCourse); } } else { //表示新增 ER_GraduationCourse graduationCourse = new ER_GraduationCourse(); graduationCourse.GraduationCourseID = Guid.NewGuid(); graduationCourse.GrademajorID = graduationCourseView.GrademajorID; graduationCourse.CoursematerialID = graduationCourseView.CoursematerialID; graduationCourse.CourseTypeID = graduationCourseView.CourseTypeID; graduationCourse.CourseCredit = graduationCourseView.CourseCredit; SetNewStatus(graduationCourse); UnitOfWork.Add(graduationCourse); } } else { throw new Exception("已存在相同的毕业课程,请核查"); } //事务提交 UnitOfWork.Commit(); } catch (Exception ex) { throw new Exception(ex.Message); } } /// /// 删除 /// /// /// public bool GraduationCourseDelete(IList graduationCourseIDList) { try { UnitOfWork.Delete(x => graduationCourseIDList.Contains(x.GraduationCourseID)); UnitOfWork.Commit(); return true; } catch (Exception ex) { throw new Exception(ex.Message); } } } }