using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using EMIS.DataLogic.Common.Specialtyclass;
using Bowin.Common.Linq.Entity;
using EMIS.ViewModel.Specialtyclass;
using EMIS.Entities;
using EMIS.DataLogic.Common.CalendarManage;
using EMIS.ViewModel.Students;
using EMIS.ViewModel;
using System.Linq.Expressions;
using Bowin.Common.Linq;
using EMIS.CommonLogic.Students;
using EMIS.ViewModel.UniversityInformationManage.Specialtyclass;
using Bowin.Common.Utility;
using System.Text.RegularExpressions;
using EMIS.ViewModel.Cache;
namespace EMIS.CommonLogic.Specialtyclass
{
public class GrademajorServices : BaseServices, IGrademajorServices
{
public GrademajorDAL GrademajorDAL { get; set; }
///
/// 查询年级专业对应的标准专业信息
///
///
///
///
///
///
///
///
///
///
///
///
///
public IGridResultSet GetGradeStandardViewGrid(ConfiguretView configuretView, int? schoolAreaID, Guid? collegeID,
int? schoolyearID, int? standardID, int? educationID, int? learningformID, string learnSystem,
int? inSchoolStatus, int pageIndex, int pageSize)
{
//年级专业信息
Expression> expGrademajor = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
if (schoolyearID.HasValue)
{
//年级
expGrademajor = expGrademajor.And(x => x.SchoolyearID == schoolyearID);
}
//学生信息
Expression> expStudent = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
var query = GrademajorDAL.GetGrademajorViwQueryable(expGrademajor, expStudent);
if (schoolAreaID.HasValue)
{
//校区
query = query.Where(x => x.SchoolAreaID == schoolAreaID);
}
if (collegeID.HasValue)
{
//院系所
query = query.Where(x => x.CollegeID == collegeID);
}
if (standardID.HasValue)
{
//专业ID(Value)
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 (inSchoolStatus != null && inSchoolStatus > -1)
//{
// //排除人数为0的信息
// query = query.Where(x => x.StudentCount > 0);
//}
//查询条件
if (!string.IsNullOrEmpty(configuretView.ConditionValue))
{
query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim());
}
return this.GetQueryByDataRangeByCollege(query)
.GroupBy(x => new
{
x.StandardID
}).Select(x => new StandardView { StandardID = x.Key.StandardID }).OrderBy(x => x.StandardID)
.ToGridResultSet(pageIndex, pageSize);
}
///
/// 通过年级专业查询对应的标准专业
///
///
///
///
///
///
///
///
///
///
///
///
///
public IGridResultSet GetSchoolyearStandardViewGrid(ConfiguretView configuretView, int? schoolAreaID, Guid? collegeID,
int? schoolyearID, int? standardID, int? educationID, int? learningformID, string learnSystem,
int? inSchoolStatus, int pageIndex, int pageSize)
{
//年级专业信息
Expression> expGrademajor = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
if (schoolyearID.HasValue)
{
//年级
expGrademajor = expGrademajor.And(x => x.SchoolyearID == schoolyearID);
}
//学生信息
Expression> expStudent = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
var query = GrademajorDAL.GetGrademajorViwQueryable(expGrademajor, expStudent);
if (schoolAreaID.HasValue)
{
//校区
query = query.Where(x => x.SchoolAreaID == schoolAreaID);
}
if (collegeID.HasValue)
{
//院系所
query = query.Where(x => x.CollegeID == collegeID);
}
if (standardID.HasValue)
{
//专业ID(Value)
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 (inSchoolStatus != null && inSchoolStatus > -1)
//{
// //排除人数为0的信息
// query = query.Where(x => x.StudentCount > 0);
//}
//查询条件
if (!string.IsNullOrEmpty(configuretView.ConditionValue))
{
query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim());
}
return this.GetQueryByDataRangeByCollege(query)
.GroupBy(x => new
{
x.CollegeCode,
x.CollegeID,
x.SchoolyearID,
x.StandardID,
x.CollegeName
}).Select(x => new ExamProjectControlView
{
CollegeCode = x.Key.CollegeCode,
CollegeID = x.Key.CollegeID,
SchoolyearID = x.Key.SchoolyearID,
StandardID = x.Key.StandardID,
CollegeName = x.Key.CollegeName
}).OrderBy(x => x.CollegeCode.Length).ThenBy(x => x.CollegeCode)
.ThenBy(x => x.StandardID)
.ToGridResultSet(pageIndex, pageSize);
}
///
/// 查询对应的年级专业信息GrademajorView
///
///
///
///
///
///
///
///
///
///
///
///
///
public IGridResultSet GetGrademajorViewGrid(ConfiguretView configuretView, int? schoolAreaID, Guid? collegeID,
int? schoolyearID, int? standardID, int? educationID, int? learningformID, string learnSystem,
int? inSchoolStatus, int pageIndex, int pageSize)
{
//年级专业信息
Expression> expGrademajor = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
if (schoolyearID.HasValue)
{
//年级
expGrademajor = expGrademajor.And(x => x.SchoolyearID == schoolyearID);
}
//学生信息
Expression> expStudent = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
var query = GrademajorDAL.GetGrademajorViwQueryable(expGrademajor, expStudent);
if (schoolAreaID.HasValue)
{
//校区
query = query.Where(x => x.SchoolAreaID == schoolAreaID);
}
if (collegeID.HasValue)
{
//院系所
query = query.Where(x => x.CollegeID == collegeID);
}
if (standardID.HasValue)
{
//专业ID(Value)
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 (inSchoolStatus != null && inSchoolStatus > -1)
//{
// //排除人数为0的信息
// query = query.Where(x => x.StudentCount > 0);
//}
//查询条件
if (!string.IsNullOrEmpty(configuretView.ConditionValue))
{
query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim());
}
return this.GetQueryByDataRangeByCollege(query)
.OrderBy(x => x.CollegeCode.Length).ThenBy(x => x.CollegeCode)
.ThenBy(x => x.StandardID).ThenBy(x => x.Code.Length).ThenBy(x => x.Code)
.ToGridResultSet(pageIndex, pageSize);
}
///
/// 查询对应的年级专业信息List
///
///
///
///
///
///
///
///
///
///
///
public IList GetGrademajorViewList(ConfiguretView configuretView, int? schoolAreaID,
Guid? collegeID, int? schoolyearID, int? standardID, int? educationID, int? learningformID,
string learnSystem, int? inSchoolStatus)
{
//年级专业信息
Expression> expGrademajor = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
if (schoolyearID.HasValue)
{
//年级
expGrademajor = expGrademajor.And(x => x.SchoolyearID == schoolyearID);
}
//学生信息
Expression> expStudent = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
var query = GrademajorDAL.GetGrademajorViwQueryable(expGrademajor, expStudent);
if (schoolAreaID.HasValue)
{
//校区
query = query.Where(x => x.SchoolAreaID == schoolAreaID);
}
if (collegeID.HasValue)
{
//院系所
query = query.Where(x => x.CollegeID == collegeID);
}
if (standardID.HasValue)
{
//专业ID(Value)
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 (inSchoolStatus != null && inSchoolStatus > -1)
//{
// //排除人数为0的信息
// query = query.Where(x => x.StudentCount > 0);
//}
//查询条件
if (!string.IsNullOrEmpty(configuretView.ConditionValue))
{
query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim());
}
return this.GetQueryByDataRangeByCollege(query)
.OrderBy(x => x.CollegeCode.Length).ThenBy(x => x.CollegeCode)
.ThenBy(x => x.StandardID).ThenBy(x => x.Code.Length).ThenBy(x => x.Code)
.ToList();
}
///
/// 查询对应的年级专业信息GrademajorView(无数据范围)
///
///
///
///
///
///
///
///
///
///
///
///
public IGridResultSet GetGrademajorViewGridWithoutRange(ConfiguretView configuretView, int? schoolAreaID,
Guid? collegeID, int? schoolyearID, int? standardID, int? educationID, int? learningformID,
string learnSystem, int pageIndex, int pageSize)
{
//年级专业信息
Expression> expGrademajor = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
if (schoolyearID.HasValue)
{
//年级
expGrademajor = expGrademajor.And(x => x.SchoolyearID == schoolyearID);
}
var query = GrademajorDAL.GetGrademajorViwQueryable(expGrademajor);
if (schoolAreaID.HasValue)
{
//校区
query = query.Where(x => x.SchoolAreaID == schoolAreaID);
}
if (collegeID.HasValue)
{
//院系所
query = query.Where(x => x.CollegeID == collegeID);
}
if (standardID.HasValue)
{
//专业ID(Value)
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 query.OrderBy(x => x.CollegeCode.Length).ThenBy(x => x.CollegeCode)
.ThenBy(x => x.StandardID).ThenBy(x => x.Code.Length).ThenBy(x => x.Code)
.ToGridResultSet(pageIndex, pageSize);
}
///
/// 查询对应的年级专业信息List(带数据范围)
///
///
///
///
///
public IList GetGrademajorViewList(ConfiguretView configuretView, Guid? collegeID, int? schoolyearID)
{
//年级专业信息
Expression> expGrademajor = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
if (schoolyearID.HasValue)
{
//年级
expGrademajor = expGrademajor.And(x => x.SchoolyearID == schoolyearID);
}
var query = GrademajorDAL.GetGrademajorViwQueryable(expGrademajor);
//if (campusID.HasValue)
//{
// //校区
// query = query.Where(x => x.CampusID == campusID);
//}
if (collegeID.HasValue)
{
//院系所
query = query.Where(x => x.CollegeID == collegeID);
}
//if (standardID.HasValue)
//{
// //专业ID(Value)
// 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)
.OrderBy(x => x.CollegeCode.Length).ThenBy(x => x.CollegeCode)
.ThenBy(x => x.StandardID).ThenBy(x => x.Code.Length).ThenBy(x => x.Code)
.ToList();
}
///
/// 查询年级专业中的专业信息StandardView(无数据范围)
///
///
///
///
///
///
///
public IGridResultSet GetStandardViewGrid(ConfiguretView configuretView, int? schoolAreaID, Guid? collegeID,
int? schoolyearID, int pageIndex, int pageSize)
{
//年级专业信息
Expression> expGrademajor = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
if (schoolAreaID.HasValue)
{
//院系所
expGrademajor = expGrademajor.And(x => x.SchoolAreaID == schoolAreaID);
}
if (collegeID.HasValue)
{
//院系所
expGrademajor = expGrademajor.And(x => x.CF_Facultymajor.CollegeID == collegeID);
}
if (schoolyearID.HasValue)
{
//年级
expGrademajor = expGrademajor.And(x => x.SchoolyearID == schoolyearID);
}
var query = GrademajorDAL.GetStandardForComboGridQueryable(expGrademajor);
//查询条件
if (!string.IsNullOrEmpty(configuretView.ConditionValue))
{
query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim());
}
return query.OrderBy(x => x.StandardID)
.ToGridResultSet(pageIndex, pageSize);
}
///
/// 查询年级专业中的专业信息List(无数据范围)
///
///
///
///
///
public IList GetStandardViewList(ConfiguretView configuretView, Guid? collegeID, int? schoolyearID)
{
//年级专业信息
Expression> expGrademajor = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
if (collegeID.HasValue)
{
//院系所
expGrademajor = expGrademajor.And(x => x.CF_Facultymajor.CollegeID == collegeID);
}
if (schoolyearID.HasValue)
{
//年级
expGrademajor = expGrademajor.And(x => x.SchoolyearID == schoolyearID);
}
var query = GrademajorDAL.GetStandardForComboGridQueryable(expGrademajor);
//查询条件
if (!string.IsNullOrEmpty(configuretView.ConditionValue))
{
query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim());
}
return query.OrderBy(x => x.StandardID)
.ToList();
}
///
/// 查询年级专业中的专业信息List(无数据范围)
///
///
///
///
///
public IList GetStandardQueryableExcludeNotHaveStudentList(ConfiguretView configuretView, Guid? collegeID, int? schoolyearID)
{
//年级专业信息
Expression> expGrademajor = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
if (collegeID.HasValue)
{
//院系所
expGrademajor = expGrademajor.And(x => x.CF_Facultymajor.CollegeID == collegeID);
}
if (schoolyearID.HasValue)
{
//年级
expGrademajor = expGrademajor.And(x => x.SchoolyearID == schoolyearID);
}
//学生信息
Expression> expStudent = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
var query = GrademajorDAL.GetStandardQueryableExcludeNotHaveStudent(expGrademajor, expStudent);
//查询条件
if (!string.IsNullOrEmpty(configuretView.ConditionValue))
{
query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim());
}
return query.OrderBy(x => x.StandardID)
.ToList();
}
///
/// 查询年级专业中的年级信息SchoolyearView(无数据范围)
///
///
///
///
///
///
///
public IGridResultSet GetSchoolyearViewGrid(ConfiguretView configuretView,
Guid? collegeID, int? standardID, int pageIndex, int pageSize)
{
//年级专业信息
Expression> expGrademajor = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
if (collegeID.HasValue)
{
//院系所
expGrademajor = expGrademajor.And(x => x.CF_Facultymajor.CollegeID == collegeID);
}
if (standardID.HasValue)
{
//专业ID(Value)
expGrademajor = expGrademajor.And(x => x.CF_Facultymajor.StandardID == standardID);
}
var query = GrademajorDAL.GetSchoolyearForComboGridQueryable(expGrademajor);
//查询条件
if (!string.IsNullOrEmpty(configuretView.ConditionValue))
{
query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim());
}
return query.OrderBy(x => x.SchoolyearID)
.ToGridResultSet(pageIndex, pageSize);
}
///
/// 查询年级专业中的年级信息List(无数据范围)
///
///
///
///
///
public IList GetSchoolyearViewGrid(ConfiguretView configuretView,
Guid? collegeID, int? standardID)
{
//年级专业信息
Expression> expGrademajor = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
if (collegeID.HasValue)
{
//院系所
expGrademajor = expGrademajor.And(x => x.CF_Facultymajor.CollegeID == collegeID);
}
if (standardID.HasValue)
{
//专业ID(Value)
expGrademajor = expGrademajor.And(x => x.CF_Facultymajor.StandardID == standardID);
}
var query = GrademajorDAL.GetSchoolyearForComboGridQueryable(expGrademajor);
//查询条件
if (!string.IsNullOrEmpty(configuretView.ConditionValue))
{
query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim());
}
return query.OrderBy(x => x.SchoolyearID)
.ToList();
}
///
/// 查询对应的年级专业信息CF_Grademajor
///
///
///
public CF_Grademajor GetGrademajorInfo(Guid? grademajorID)
{
try
{
var query = GrademajorDAL.GrademajorRepository.GetList(x => x.GrademajorID == grademajorID);
return query.SingleOrDefault();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
///
/// 查询对应的年级专业信息GrademajorView
///
///
///
public GrademajorView GetGrademajorView(Guid? grademajorID)
{
try
{
var query = GrademajorDAL.GetGrademajorViwQueryable(x => x.GrademajorID == grademajorID);
return query.SingleOrDefault();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
///
/// 编辑(新增、修改,业务主键:年级专业编号或年级专业名称唯一)
///
///
public void GrademajorEdit(GrademajorView grademajorView)
{
try
{
//查询数据库进行验证
var grademajorVerification = GrademajorDAL.GrademajorRepository
.GetList(x => x.GrademajorID != grademajorView.GrademajorID
&& (x.Code == grademajorView.Code
|| x.Name == grademajorView.Name))
.FirstOrDefault();
if (grademajorVerification == null)
{
//计算相应的毕业学年学期Value 岭南不需要预计毕业学年学期
//var facultymajor = GrademajorDAL.FacultymajorRepository
// .GetSingle(x => x.FacultymajorID == grademajorView.FacultymajorID);
//var graduateSchoolyearValue = (grademajorView.SchoolyearID.Value * 2) - 1
// + (grademajorView.SchoolcodeID.Value - 1);
//graduateSchoolyearValue += Convert.ToInt32(Math.Ceiling(facultymajor.LearnSystem.Value * 2 - 1));
//var graduatingSemester = GrademajorDAL.SchoolyearRepository
// .GetSingle(x => x.Value == graduateSchoolyearValue);
//if (graduatingSemester == null)
//{
// throw new Exception("预计毕业学年学期超出了系统学年学期数据的范围,请添加足够的学年学期记录以支撑该操作。");
//}
//数据有误验证
if (grademajorView.GrademajorID != Guid.Empty)
{
var grademajor = GrademajorDAL.GrademajorRepository
.GetList(x => x.GrademajorID == grademajorView.GrademajorID)
.SingleOrDefault();
if (grademajor == null)
{
throw new Exception("数据有误,请核查");
}
else
{
//表示修改(暂时不考虑对应的班级信息下的学生拟毕业日期的更新,后续再处理)
//目前通过修改对应的班级信息来更新
grademajor.FacultymajorID = grademajorView.FacultymajorID;
grademajor.Code = grademajorView.Code.Trim();
grademajor.Name = grademajorView.Name;
grademajor.Abbreviation = grademajorView.Abbreviation;
grademajor.SchoolyearID = grademajorView.SchoolyearID;
grademajor.SchoolcodeID = grademajorView.SchoolcodeID;
//grademajor.GraduatingSemesterID = graduatingSemester.SchoolyearID;
grademajor.Professional = grademajorView.Professional;
grademajor.SchoolAreaID = grademajorView.SchoolAreaID;
grademajor.Remark = grademajorView.Remark;
SetModifyStatus(grademajor);
}
}
else
{
//表示新增
CF_Grademajor grademajor = new CF_Grademajor();
grademajor.GrademajorID = Guid.NewGuid();
grademajor.FacultymajorID = grademajorView.FacultymajorID;
grademajor.Code = grademajorView.Code.Trim();
grademajor.Name = grademajorView.Name;
grademajor.Abbreviation = grademajorView.Abbreviation;
grademajor.SchoolyearID = grademajorView.SchoolyearID;
grademajor.SchoolcodeID = grademajorView.SchoolcodeID;
//grademajor.GraduatingSemesterID = graduatingSemester.SchoolyearID;
grademajor.Professional = grademajorView.Professional;
grademajor.SchoolAreaID = grademajorView.SchoolAreaID;
grademajor.Remark = grademajorView.Remark;
SetNewStatus(grademajor);
UnitOfWork.Add(grademajor);
}
}
else
{
throw new Exception("已存在相同的年级专业编号或年级专业名称,请核查");
}
//事务提交
UnitOfWork.Commit();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
///
/// 批量新增
///
///
///
public int GrademajorBatchAdd(GrademajorView grademajorView)
{
try
{
List grade = new List();
//获取源数据
var Grademajor = GrademajorDAL.GetGrademajorViwQueryable(x => x.SchoolyearID == grademajorView.SchoolyearID);
if (grademajorView.CollegeID != null)
{
Grademajor = Grademajor.Where(x => x.CollegeID == grademajorView.CollegeID);
}
if (grademajorView.StandardID != null && grademajorView.StandardID != -1)
{
Grademajor = Grademajor.Where(x => x.StandardID == grademajorView.StandardID);
}
//获取年级专业
var GrademajorList = Grademajor.ToList();
//获取学年学期
var SchoolYearList = GrademajorDAL.SchoolyearRepository.GetList(x => x.RecordStatus == (int)SYS_STATUS.USABLE).ToList();
//获取院系专业
var FacultymajorIDList = GrademajorList.Select(x => x.FacultymajorID).ToList();
var Facultymajorlist = GrademajorDAL.FacultymajorRepository.GetList(x => FacultymajorIDList.Contains(x.FacultymajorID)).ToList();
//获取目标年级已存在数据
var BatchGrademajor = GrademajorDAL.GetGrademajorViwQueryable(x => x.SchoolyearID == grademajorView.BatchSchoolyearID);
if (grademajorView.CollegeID != null)
{
BatchGrademajor = BatchGrademajor.Where(x => x.CollegeID == grademajorView.CollegeID);
}
if (grademajorView.StandardID != null && grademajorView.StandardID != -1)
{
BatchGrademajor = BatchGrademajor.Where(x => x.StandardID == grademajorView.StandardID);
}
var BatchGrademajorList = BatchGrademajor.ToList();
//插入数据
foreach (var g in GrademajorList)
{
CF_Facultymajor facultymajor = new CF_Facultymajor();
facultymajor = Facultymajorlist.Where(x => x.FacultymajorID == g.FacultymajorID).FirstOrDefault();
var graduateSchoolyearValue = (grademajorView.BatchSchoolyearID.Value * 2) - 1 + (g.SchoolcodeID.Value - 1);
graduateSchoolyearValue += Convert.ToInt32(Math.Ceiling(facultymajor.LearnSystem.Value * 2 - 1));
var graduatingSemester = SchoolYearList.Where(x => x.Value == graduateSchoolyearValue).FirstOrDefault();
CF_Grademajor grademajor = new CF_Grademajor();
if (graduatingSemester == null)
{
throw new Exception("预计毕业学年学期超出了系统学年学期数据的范围,请添加足够的学年学期记录以支撑该操作。");
}
string Schoolyear = g.SchoolyearID.ToString();
string BatchSchoolyear = grademajorView.BatchSchoolyearID.Value.ToString();
//替换复制的年级专业代码
string Code = g.Code.Trim().Replace(Schoolyear, BatchSchoolyear);
//替换复制的年级专业名称
string Name = g.Name.Trim().Replace(Schoolyear, BatchSchoolyear);
//替换复制的年级专业简称
string Abbreviation = g.Abbreviation;
if (g.Abbreviation != null)
{
Abbreviation = g.Abbreviation.Trim().Replace(Schoolyear, BatchSchoolyear);
}
grademajor.GrademajorID = Guid.NewGuid();
grademajor.Code = Code;
grademajor.Name = Name;
grademajor.Abbreviation = Abbreviation;
grademajor.SchoolyearID = grademajorView.BatchSchoolyearID;
grademajor.Professional = g.Professional;
grademajor.SchoolcodeID = g.SchoolcodeID;
grademajor.FacultymajorID = g.FacultymajorID;
grademajor.GraduatingSemesterID = graduatingSemester.SchoolyearID;
grademajor.SchoolAreaID = g.SchoolAreaID;
grademajor.Remark = g.Remark;
SetNewStatus(grademajor);
if (!grademajorView.IsOverwrite)
{
var batch = BatchGrademajorList.Where(x => x.Code == Code && x.SchoolyearID == grademajorView.BatchSchoolyearID && x.FacultymajorID == g.FacultymajorID).FirstOrDefault();
if (batch == null)
{
grade.Add(grademajor);
}
}
else
{
var BatchGrademajorIDList = BatchGrademajorList.Select(x => x.GrademajorID).ToList();
List ids = new List();
if (BatchGrademajorIDList.Count > 0)
{
foreach (var id in BatchGrademajorIDList)
{
ids.Add(id);
}
UnitOfWork.Remove(x => ids.Contains(x.GrademajorID));
}
grade.Add(grademajor);
}
}
UnitOfWork.BulkInsert(grade);
UnitOfWork.Commit();
return grade.Count();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
///
/// 删除
///
///
///
public bool GrademajorDelete(List grademajorIDList)
{
try
{
if (grademajorIDList.Count > 0)
{
UnitOfWork.Delete(x => grademajorIDList.Contains(x.GrademajorID));
}
return true;
}
catch (Exception)
{
throw;
}
}
///
/// 查询年级专业对应的班级信息ClassmajorView(带对应的在校状态学生人数)
///
///
///
///
///
///
///
public IGridResultSet GetClassmajorViewGrid(ConfiguretView configuretView, Guid? grademajorID,
int? inSchoolStatus, int pageIndex, int pageSize)
{
//年级专业信息
Expression> expGrademajor = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
expGrademajor = expGrademajor.And(x => x.GrademajorID == grademajorID);
//学生信息
Expression> expStudent = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
var query = GrademajorDAL.GetClassmajorViewQueryable(expGrademajor, expStudent);
//if (inSchoolStatus != null && inSchoolStatus > -1)
//{
// //排除人数为0的信息
// query = query.Where(x => x.StudentCount > 0);
//}
//查询条件
if (!string.IsNullOrEmpty(configuretView.ConditionValue))
{
query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim());
}
return query.OrderBy(x => x.CollegeCode.Length).ThenBy(x => x.CollegeCode)
.ThenBy(x => x.StandardID).ThenBy(x => x.No.Length)
.ThenBy(x => x.No).ThenBy(x => x.ClassNum)
.ToGridResultSet(pageIndex, pageSize);
}
///
/// 查询年级专业对应的班级信息List(带对应的在校状态学生人数)
///
///
///
///
///
public IList GetClassmajorViewList(ConfiguretView configuretView, Guid? grademajorID, int? inSchoolStatus)
{
//年级专业信息
Expression> expGrademajor = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
expGrademajor = expGrademajor.And(x => x.GrademajorID == grademajorID);
//学生信息
Expression> expStudent = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
var query = GrademajorDAL.GetClassmajorViewQueryable(expGrademajor, expStudent);
//if (inSchoolStatus != null && inSchoolStatus > -1)
//{
// //排除人数为0的信息
// query = query.Where(x => x.StudentCount > 0);
//}
//查询条件
if (!string.IsNullOrEmpty(configuretView.ConditionValue))
{
query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim());
}
return query.OrderBy(x => x.CollegeCode.Length).ThenBy(x => x.CollegeCode)
.ThenBy(x => x.StandardID).ThenBy(x => x.No.Length)
.ThenBy(x => x.No).ThenBy(x => x.ClassNum)
.ToList();
}
///
/// 查询年级专业对应的学生信息BaseStudentView
///
///
///
///
///
///
///
public IGridResultSet GetBaseStudentViewGrid(ConfiguretView configuretView, Guid? grademajorID,
int? inSchoolStatus, int pageIndex, int pageSize)
{
//年级专业信息
Expression> expGrademajor = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
expGrademajor = expGrademajor.And(x => x.GrademajorID == grademajorID);
//学生信息
Expression> expStudent = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
var query = GrademajorDAL.GetBaseStudentViewQueryable(expGrademajor, expStudent);
//查询条件
if (!string.IsNullOrEmpty(configuretView.ConditionValue))
{
query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim());
}
return query.OrderBy(x => x.LoginID)
.ThenBy(x => x.ClassmajorCode.Length).ThenBy(x => x.ClassmajorCode)
.ToGridResultSet(pageIndex, pageSize);
}
///
/// 查询年级专业对应的学生信息List
///
///
///
///
///
public IList GetBaseStudentViewList(ConfiguretView configuretView, Guid? grademajorID, int? inSchoolStatus)
{
//年级专业信息
Expression> expGrademajor = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
expGrademajor = expGrademajor.And(x => x.GrademajorID == grademajorID);
//学生信息
Expression> expStudent = (x => x.RecordStatus > (int)SYS_STATUS.UNUSABLE);
var query = GrademajorDAL.GetBaseStudentViewQueryable(expGrademajor, expStudent);
//查询条件
if (!string.IsNullOrEmpty(configuretView.ConditionValue))
{
query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim());
}
return query.OrderBy(x => x.LoginID)
.ThenBy(x => x.ClassmajorCode.Length).ThenBy(x => x.ClassmajorCode)
.ToList();
}
///
/// 批量修改(重写)
/// 暂时不考虑对应的班级信息下的学生拟毕业日期的更新,后续再处理
/// 目前通过修改对应的班级信息来更新
///
///
///
///
///
public string BatchModify(string grademajorIDs, int? schoolyearID, int? schoolcodeID)
{
List list = new List();
HashSet hs = new HashSet();
for (int i = 0; i < grademajorIDs.Split(',').Length; i++)
{
string id = grademajorIDs.Split(',')[i];
if (!string.IsNullOrEmpty(id))
{
Guid grademajorID = new Guid(id);
list.Add(grademajorID);
}
}
int sCount = 0;
int lCount = 0;
foreach (Guid li in list)
{
GrademajorView grademajorView = GrademajorDAL.GetGrademajorViwQueryable(x => x.GrademajorID == li).FirstOrDefault();
CF_Grademajor grademajor = new CF_Grademajor();
grademajor = GrademajorDAL.GrademajorRepository.GetSingle(x => x.GrademajorID == li);
if (schoolyearID != null)
{
sCount++;
grademajor.SchoolyearID = schoolyearID;
var graduateSchoolyearValue = (schoolyearID * 2) - 1 + ((int)grademajor.SchoolcodeID - 1);
graduateSchoolyearValue += Convert.ToInt32(Math.Ceiling((double)grademajorView.LearnSystem * 2 - 1));
var graduatingSemester = GrademajorDAL.SchoolyearRepository.GetSingle(x => x.Value == graduateSchoolyearValue);
if (graduatingSemester == null)
{
lCount++;
hs.Add("预计毕业学年学期超出了系统学年学期数据的范围,请添加足够的学年学期记录以支撑该操作。");
continue;
}
else
{
grademajor.GraduatingSemesterID = graduatingSemester.SchoolyearID;
}
}
if (schoolcodeID != null)
{
sCount++;
grademajor.SchoolcodeID = schoolcodeID;
var graduateSchoolyearValue = (grademajor.SchoolyearID * 2) - 1 + ((int)schoolcodeID - 1);
graduateSchoolyearValue += Convert.ToInt32(Math.Ceiling((double)grademajorView.LearnSystem * 2 - 1));
var graduatingSemester = GrademajorDAL.SchoolyearRepository.GetSingle(x => x.Value == graduateSchoolyearValue);
if (graduatingSemester == null)
{
lCount++;
hs.Add("预计毕业学年学期超出了系统学年学期数据的范围,请添加足够的学年学期记录以支撑该操作。");
continue;
}
else
{
grademajor.GraduatingSemesterID = graduatingSemester.SchoolyearID;
}
}
SetModifyStatus(grademajor);
UnitOfWork.Commit();
}
StringBuilder sb = new StringBuilder();
int s = hs.Count();
foreach (string li in hs)
{
sb.Append(li);
}
if (lCount > 0)
{
return "批量修改成功" + (grademajorIDs.Split(',').Length - lCount) + "条,批量修改失败" + lCount + "条,失败原因:" + sb;
}
else
{
return "批量修改成功" + (grademajorIDs.Split(',').Length - lCount) + "条";
}
}
///
/// 年级专业信息Excel导入
///
///
///
///
///
///
///
public void GrademajorImport(Dictionary cellheader, out int? inCount, out int? upCount, out List errdataList, out int? errCount, string sourcePhysicalPath)
{
try
{
StringBuilder errorMsg = new StringBuilder(); // 错误信息
List errList = new List();
// 1.1解析文件,存放到一个List集合里
cellheader.Remove("ErrorMessage");//移除“未导入原因”列(ErrorMessage)
List enlist = NpoiExcelHelper.ExcelToEntityList(cellheader, sourcePhysicalPath, out errorMsg, out errList);
cellheader.Add("ErrorMessage", "未导入原因");
//对List集合进行有效性校验
if (enlist.Count() <= 0)
{
throw new Exception("Excel文件数据为空,请检查。");
}
Regex reg = null; //正则表达式
//DateTime result; //用于返回判断日期字段格式
inCount = 0; //导入个数
upCount = 0; //更新个数
errCount = 0; //失败个数
string errorMsgStr = ""; //错误信息
List newGrademajorInList = new List();
List newGrademajorUpList = new List();
//将循环中相关数据库查询统一查询出来进行匹配(尽量避免在循环中进行数据库查询)
//年级专业信息
var grademajorList = GrademajorDAL.GrademajorRepository.GetList(x => true).ToList();
//年级专业编号
var grademajorCodeList = enlist.Where(x => !string.IsNullOrEmpty(x.Code)).Select(x => x.Code).ToList();
//年级专业名称
var grademajorNameList = enlist.Where(x => !string.IsNullOrEmpty(x.Name)).Select(x => x.Name).ToList();
//对比后的newGrademajorList
var newGrademajorList = grademajorList
.Where(x => grademajorCodeList.Contains(x.Code) || grademajorNameList.Contains(x.Name)).ToList();
//院系专业信息
var facultymajorList = GrademajorDAL.FacultymajorRepository.GetList(x => true).ToList();
//院系专业编号
var facultymajorCodeList = enlist.Where(x => !string.IsNullOrEmpty(x.FacultymajorCode)).Select(x => x.FacultymajorCode).ToList();
//对比后的newFacultymajorList
var newFacultymajorList = facultymajorList.Where(x => facultymajorCodeList.Contains(x.Code)).ToList();
//年级
var schoolyearList = IdNameExt.GetDictionaryItem(DictionaryItem.CF_Schoolyear).ToList();
//校区
var schoolAreaList = IdNameExt.GetDictionaryItem(DictionaryItem.CF_SchoolArea).ToList();
//学期
var schoolcodeList = IdNameExt.GetDictionaryItem(DictionaryItem.CF_Schoolcode).ToList();
//循环检测数据列,对各数据列进行验证(必填、字典项验证、数据格式等)
for (int i = 0; i < enlist.Count; i++)
{
GrademajorView en = enlist[i]; //Excel表数据视图
CF_Grademajor newGrademajor = new CF_Grademajor();
//年级专业编号
if (string.IsNullOrEmpty(en.Code))
{
errCount++;
errorMsgStr = "年级专业编号不能为空";
en.ErrorMessage = errorMsgStr;
errList.Add(en);
errorMsg.AppendLine(errorMsgStr);
continue;
}
else
{
reg = new Regex(@"^[0-9a-zA-Z\s?]+$"); //正则表达式(请输入数字或英文字母)
if (!reg.IsMatch(en.Code))
{
errCount++;
errorMsgStr = "年级专业编号格式不正确,请检查(数字或英文字母)";
en.ErrorMessage = errorMsgStr;
errList.Add(en);
errorMsg.AppendLine(errorMsgStr);
continue;
}
else
{
//年级专业编号
newGrademajor.Code = en.Code.Trim();
}
}
//年级专业名称
if (string.IsNullOrEmpty(en.Name))
{
errCount++;
errorMsgStr = "年级专业名称不能为空";
en.ErrorMessage = errorMsgStr;
errList.Add(en);
errorMsg.AppendLine(errorMsgStr);
continue;
}
else
{
//年级专业名称
newGrademajor.Name = en.Name.Trim();
}
//简称
if (string.IsNullOrEmpty(en.Abbreviation))
{
//不考虑
}
else
{
newGrademajor.Abbreviation = en.Abbreviation;
}
//院系专业编号
if (string.IsNullOrEmpty(en.FacultymajorCode))
{
errCount++;
errorMsgStr = "院系专业编号不能为空";
en.ErrorMessage = errorMsgStr;
errList.Add(en);
errorMsg.AppendLine(errorMsgStr);
continue;
}
else
{
reg = new Regex(@"^[0-9a-zA-Z\s?]+$"); //正则表达式(请输入数字或英文字母)
if (!reg.IsMatch(en.FacultymajorCode))
{
errCount++;
errorMsgStr = "院系专业编号格式不正确,请检查(数字或英文字母)";
en.ErrorMessage = errorMsgStr;
errList.Add(en);
errorMsg.AppendLine(errorMsgStr);
continue;
}
else
{
//暂时不考虑院系专业编号有相同的情况
var facultymajor = newFacultymajorList.Where(x => x.Code == en.FacultymajorCode.Trim())
.SingleOrDefault();
if (facultymajor == null)
{
errCount++;
errorMsgStr = "院系专业编号不存在,请检查";
en.ErrorMessage = errorMsgStr;
errList.Add(en);
errorMsg.AppendLine(errorMsgStr);
continue;
}
else
{
//院系专业信息ID
newGrademajor.FacultymajorID = facultymajor.FacultymajorID;
//学制(用于计算毕业学期)
en.LearnSystem = facultymajor.LearnSystem;
}
}
}
//年级
if (string.IsNullOrEmpty(en.SchoolyearStr))
{
errCount++;
errorMsgStr = "年级不能为空";
en.ErrorMessage = errorMsgStr;
errList.Add(en);
errorMsg.AppendLine(errorMsgStr);
continue;
}
else
{
var schoolyear = schoolyearList.Where(x => x.Name == en.SchoolyearStr.Trim()).SingleOrDefault();
if (schoolyear == null)
{
errCount++;
errorMsgStr = "年级不存在,请检查";
en.ErrorMessage = errorMsgStr;
errList.Add(en);
errorMsg.AppendLine(errorMsgStr);
continue;
}
else
{
//年级
newGrademajor.SchoolyearID = schoolyear.Value;
}
}
//入学学期
if (string.IsNullOrEmpty(en.SchoolcodeStr))
{
errCount++;
errorMsgStr = "入学学期不能为空";
en.ErrorMessage = errorMsgStr;
errList.Add(en);
errorMsg.AppendLine(errorMsgStr);
continue;
}
else
{
var schoolcode = schoolcodeList.Where(x => x.Name == en.SchoolcodeStr.Trim()).SingleOrDefault();
if (schoolcode == null)
{
errCount++;
errorMsgStr = "入学学期不存在,请检查";
en.ErrorMessage = errorMsgStr;
errList.Add(en);
errorMsg.AppendLine(errorMsgStr);
continue;
}
else
{
//入学学期
newGrademajor.SchoolcodeID = schoolcode.Value;
}
}
//专业方向
if (string.IsNullOrEmpty(en.Professional))
{
//不考虑
}
else
{
newGrademajor.Professional = en.Professional;
}
//备注
if (string.IsNullOrEmpty(en.Remark))
{
//不考虑
}
else
{
newGrademajor.Remark = en.Remark;
}
//学制
if (en.LearnSystem == null)
{
errCount++;
errorMsgStr = "院系专业编号中对应的学制有误(不能为空),请检查";
en.ErrorMessage = errorMsgStr;
errList.Add(en);
errorMsg.AppendLine(errorMsgStr);
continue;
}
else
{
//计算相应的毕业学年学期Value
var graduateSchoolyearValue = (newGrademajor.SchoolyearID.Value * 2) - 1
+ (newGrademajor.SchoolcodeID.Value - 1);
graduateSchoolyearValue += Convert.ToInt32(Math.Ceiling(en.LearnSystem.Value * 2 - 1));
var graduatingSemester = GrademajorDAL.SchoolyearRepository
.GetSingle(x => x.Value == graduateSchoolyearValue);
if (graduatingSemester == null)
{
errCount++;
errorMsgStr = "预计毕业学年学期超出了系统学年学期数据的范围,请添加足够的学年学期记录以支撑该操作,请检查";
en.ErrorMessage = errorMsgStr;
errList.Add(en);
errorMsg.AppendLine(errorMsgStr);
continue;
}
else
{
newGrademajor.GraduatingSemesterID = graduatingSemester.SchoolyearID;
}
}
//校区
if (string.IsNullOrEmpty(en.SchoolAreaStr))
{
errCount++;
errorMsgStr = "校区不能为空";
en.ErrorMessage = errorMsgStr;
errList.Add(en);
errorMsg.AppendLine(errorMsgStr);
continue;
}
else
{
var schoolyear = schoolAreaList.Where(x => x.Name == en.SchoolAreaStr.Trim()).SingleOrDefault();
if (schoolyear == null)
{
errCount++;
errorMsgStr = "校区不存在,请检查";
en.ErrorMessage = errorMsgStr;
errList.Add(en);
errorMsg.AppendLine(errorMsgStr);
continue;
}
else
{
//年级
newGrademajor.SchoolAreaID = schoolyear.Value;
}
}
////Excel表重复性验证(注:当数据表中没有此记录,但是Excel中有重复数据时的去掉)
//for (int j = i + 1; j < enlist.Count; j++)
//{
// NewGrademajorView enA = enlist[j];
// //根据Excel表中的业务主键进行去重(年级专业编号或年级专业名称唯一)
// if (en.No == enA.No && en.Name == enA.Name)
// {
// //用于标识Excel表中的重复记录(由于是批量进行插入数据表)
// }
//}
//数据表重复性验证(年级专业编号或年级专业名称唯一)
var grademajorVerification = newGrademajorList
.Where(x => x.Code == newGrademajor.Code || x.Name == newGrademajor.Name)
.FirstOrDefault();
if (grademajorVerification == null)
{
//新增
if (!newGrademajorInList.Any(x => x.Code == newGrademajor.Code || x.Name == newGrademajor.Name))
{
//CF_Grademajor表
newGrademajor.GrademajorID = Guid.NewGuid();
SetNewStatus(newGrademajor);
newGrademajorInList.Add(newGrademajor);
inCount++;
}
else
{
//Excel表重复性验证
//(注:当数据表中没有此记录,但是Excel中有重复数据,可在此处进行抛出到失败数据文件中,目前暂不考虑)
inCount++;
}
}
else
{
//更新(Excel有重复时,以最后一条记录的更新为准)
grademajorVerification.Abbreviation = newGrademajor.Abbreviation;
grademajorVerification.FacultymajorID = newGrademajor.FacultymajorID;
grademajorVerification.SchoolyearID = newGrademajor.SchoolyearID;
grademajorVerification.SchoolcodeID = newGrademajor.SchoolcodeID;
grademajorVerification.GraduatingSemesterID = newGrademajor.GraduatingSemesterID;
grademajorVerification.Professional = newGrademajor.Professional;
grademajorVerification.SchoolAreaID = newGrademajor.SchoolAreaID;
grademajorVerification.Remark = newGrademajor.Remark;
SetModifyStatus(grademajorVerification);
newGrademajorUpList.Add(grademajorVerification);
upCount++;
}
}
UnitOfWork.BulkInsert(newGrademajorInList); //批量插入
//批量统一提交更新
if (newGrademajorUpList != null && newGrademajorUpList.Count() > 0)
{
UnitOfWork.BatchUpdate(newGrademajorUpList);
}
errdataList = errList.Distinct().ToList(); //错误列表List
}
catch (Exception ex)
{
//目前会出现,由于错误信息字符太长,无法抛出弹出框的问题
throw new Exception(ex.Message);
}
}
}
}