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);
}
}
}
}