using System; using System.Collections.Generic; using System.Linq; using System.Text; using EMIS.DataLogic.GraduationManage.GraduationSetting; using EMIS.ViewModel.GraduationManage.GraduationSetting; using Bowin.Common.Linq.Entity; using Bowin.Common.Linq; using EMIS.ViewModel; using EMIS.Entities; using EMIS.ViewModel.CacheManage; using System.Linq.Expressions; namespace EMIS.CommonLogic.GraduationManage.GraduationSetting { public class GraduationConditionPackageServices : BaseServices, IGraduationConditionPackageServices { public GraduationConditionPackageDAL GraduationConditionPackageDAL { get; set; } /// /// 查询对应的毕业公式信息View(只查询毕业公式信息,不查询毕业公式对应的毕业条件) /// /// /// /// /// /// public IGridResultSet GetGradConditionPackageViewGrid(ConfiguretView configuretView, int? isDefault, int pageIndex, int pageSize) { //毕业公式 Expression> exp = (x => true); if (isDefault.HasValue) { if (isDefault == 1) { exp = exp.And(x => x.IsDefault.Value == true); } if (isDefault == 0) { exp = exp.And(x => x.IsDefault.Value != true); } } var query = GraduationConditionPackageDAL.GetGraduationConditionPackageQueryable(exp); //查询条件 if (!string.IsNullOrEmpty(configuretView.ConditionValue)) { query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim()); } return query.OrderByDescending(x => x.Title).ThenBy(x => x.IsDefault) .ToGridResultSet(pageIndex, pageSize); } /// /// 查询对应的毕业公式信息List /// /// /// /// public List GetGradConditionPackageViewList(ConfiguretView configuretView, int? isDefault) { //毕业公式 Expression> exp = (x => true); if (isDefault.HasValue) { if (isDefault == 1) { exp = exp.And(x => x.IsDefault.Value == true); } if (isDefault == 0) { exp = exp.And(x => x.IsDefault.Value != true); } } var query = GraduationConditionPackageDAL.GetGraduationConditionPackageQueryable(exp); //查询条件 if (!string.IsNullOrEmpty(configuretView.ConditionValue)) { query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim()); } return query.OrderByDescending(x => x.Title).ThenBy(x => x.IsDefault).ToList(); } /// /// 根据毕业公式ID查询对应的毕业公式信息GraduationConditionPackageView /// /// /// public GraduationConditionPackageView GetGraduationConditionPackageView(Guid? GraduationConditionPackageID) { try { var query = GraduationConditionPackageDAL.GetGraduationConditionPackageQueryable(x => x.GraduationConditionPackageID == GraduationConditionPackageID).SingleOrDefault(); return query; } catch (Exception ex) { throw new Exception(ex.Message); } } /// /// 根据毕业公式ID查询对应的毕业条件信息List /// /// /// public List GetGraduationConditionList(Guid? GraduationConditionPackageID) { var query = GraduationConditionPackageDAL.GraduationConditionQueryable(x => x.GraduationConditionPackageID == GraduationConditionPackageID); return query.OrderBy(x => x.OrderNo).ToList(); } /// /// 查询毕业公式中未存在的毕业条件信息View /// /// /// /// /// /// /// public IGridResultSet GetGraduationConditionNoViewGrid(ConfiguretView configuretView, Guid? graduationConditionPackageID, int? isCurrent, int pageIndex, int pageSize) { //毕业条件 Expression> expGraduationCondition = (x => true); if (isCurrent.HasValue) { if (isCurrent == 1) { expGraduationCondition = expGraduationCondition.And(x => x.RecordStatus >= (int)SYS_STATUS.USABLE); } if (isCurrent == 0) { expGraduationCondition = expGraduationCondition.And(x => x.RecordStatus <= (int)SYS_STATUS.UNUSABLE); } } var query = GraduationConditionPackageDAL.GetGraduationConditionNoQueryable(expGraduationCondition, graduationConditionPackageID); //查询条件 if (!string.IsNullOrEmpty(configuretView.ConditionValue)) { query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim()); } return query.OrderBy(x => x.OrderNo).ToGridResultSet(pageIndex, pageSize); } /// /// 查询毕业公式中未存在的毕业条件信息List /// /// /// /// /// public IList GetGraduationConditionNoViewList(ConfiguretView configuretView, Guid? graduationConditionPackageID, int? isCurrent) { //毕业条件 Expression> expGraduationCondition = (x => true); if (isCurrent.HasValue) { if (isCurrent == 1) { expGraduationCondition = expGraduationCondition.And(x => x.RecordStatus >= (int)SYS_STATUS.USABLE); } if (isCurrent == 0) { expGraduationCondition = expGraduationCondition.And(x => x.RecordStatus <= (int)SYS_STATUS.UNUSABLE); } } var query = GraduationConditionPackageDAL.GetGraduationConditionNoQueryable(expGraduationCondition, graduationConditionPackageID); //查询条件 if (!string.IsNullOrEmpty(configuretView.ConditionValue)) { query = query.DynamicWhere(configuretView.Attribute, configuretView.Condition, configuretView.ConditionValue.Trim()); } return query.OrderBy(x => x.OrderNo).ToList(); } /// /// 编辑(新增、修改,业务主键:公式名称) /// 注:判断是否默认状态(同一种学生类别,只有一种默认公式) /// 暂时不考虑当公式被引用时,不可修改公式中条件的情况 /// /// /// public void GraduationConditionPackageEdit(GraduationConditionPackageView graduationConditionPackageView, IList graduationConditionViewList) { try { var graduationConditionPackageVerification = GraduationConditionPackageDAL.GraduationConditionPackageRepository.GetList(x => x.GraduationConditionPackageID != graduationConditionPackageView.GraduationConditionPackageID && x.Title == graduationConditionPackageView.Title).SingleOrDefault(); var graduationConditionIDList = graduationConditionViewList.Select(x => x.GraduationConditionID).ToList(); var graduationConditionList = GraduationConditionPackageDAL.GraduationConditionRepository.GetList(x => graduationConditionIDList.Contains(x.GraduationConditionID)).ToList(); if (graduationConditionPackageVerification == null) { //数据有误验证 if (graduationConditionPackageView.GraduationConditionPackageID != Guid.Empty) { var graduationConditionPackage = GraduationConditionPackageDAL.GraduationConditionPackageRepository.GetList(x => x.GraduationConditionPackageID == graduationConditionPackageView.GraduationConditionPackageID).SingleOrDefault(); if (graduationConditionPackage == null) { throw new Exception("数据有误,请核查"); } else { //表示修改 ////注:当毕业申请、毕业审核、毕业名单中有引用相关的毕业公式时,不可对相应的毕业公式进行修改--是否默认列除外 ////根据毕业公式查询对应的毕业申请、毕业审核、毕业名单信息(外键引用) //var graduationApplyList = GraduationConditionPackageDAL.GraduationApplyRepository // .GetList(x => x.GraduationConditionPackageID == graduationConditionPackageView.GraduationConditionPackageID).ToList(); //判断是否默认状态(同一种学生类别,只能启用一种默认公式) if (graduationConditionPackageView.IsDefault) { var graduationConditionPackageList = GraduationConditionPackageDAL.GraduationConditionPackageRepository.GetList(x => x.StudentType == graduationConditionPackageView.StudentTypeID && x.IsDefault.Value && x.GraduationConditionPackageID != graduationConditionPackageView.GraduationConditionPackageID).ToList(); graduationConditionPackageList.ForEach(x => x.IsDefault = false); } graduationConditionPackage.Title = graduationConditionPackageView.Title; graduationConditionPackage.StudentType = graduationConditionPackageView.StudentTypeID; graduationConditionPackage.IsDefault = graduationConditionPackageView.IsDefault; SetModifyStatus(graduationConditionPackage); ////查询毕业公式对应的毕业条件信息 //var gradPackageConditionList = GraduationConditionPackageDAL // .GraduationConditionQueryable(x => x.GraduationConditionPackageID == graduationConditionPackageView.GraduationConditionPackageID) // .ToList(); ////查询毕业公式对应的毕业条件IDList //var gradPackageConditionIDList = gradPackageConditionList.Select(x => x.GraduationConditionID).ToList(); ////先删除毕业公式对应的全部毕业条件信息,再对选择的毕业条件进行新增 //graduationConditionPackage.ER_GraduationCondition // .RemoveWhere(x => gradPackageConditionIDList.Contains(x.GraduationConditionID)); //物理删除(暂时将上述逻辑删除代码注释) UnitOfWork.Delete(graduationConditionPackage, (x => x.ER_GraduationCondition)); //对应的毕业条件 if (graduationConditionViewList != null && graduationConditionViewList.Count() > 0) { foreach (var graduationCondition in graduationConditionList) { graduationConditionPackage.ER_GraduationCondition.Add(graduationCondition); } } } } else { //表示新增 //判断是否默认状态(同一种学生类别,只能启用一种默认公式) if (graduationConditionPackageView.IsDefault) { var graduationConditionPackageList = GraduationConditionPackageDAL .GraduationConditionPackageRepository .GetList(x => x.StudentType == graduationConditionPackageView.StudentTypeID && x.IsDefault.Value) .ToList(); graduationConditionPackageList.ForEach(x => x.IsDefault = false); } ER_GraduationConditionPackage graduationConditionPackage = new ER_GraduationConditionPackage(); graduationConditionPackage.GraduationConditionPackageID = Guid.NewGuid(); graduationConditionPackage.Title = graduationConditionPackageView.Title; graduationConditionPackage.StudentType = graduationConditionPackageView.StudentTypeID; graduationConditionPackage.IsDefault = graduationConditionPackageView.IsDefault; SetNewStatus(graduationConditionPackage); UnitOfWork.Add(graduationConditionPackage); //对应的毕业条件 if (graduationConditionViewList != null && graduationConditionViewList.Count() > 0) { foreach (var graduationCondition in graduationConditionList) { graduationConditionPackage.ER_GraduationCondition.Add(graduationCondition); } } } //事务提交 UnitOfWork.Commit(); } else { throw new Exception("已存在相同的毕业公式,请核查"); } } catch (Exception ex) { throw new Exception(ex.Message); } } /// /// 删除(当对应的毕业公式被引用时,不可删除--毕业公式、对应的毕业条件) /// /// /// public bool GraduationConditionPackageDelete(List graduationConditionPackageIDs) { try { //根据毕业公式查询对应的毕业申请、毕业审核、毕业名单信息(外键引用) var graduationApplyList = GraduationConditionPackageDAL.GraduationApplyRepository .GetList(x => graduationConditionPackageIDs.Contains(x.GraduationConditionPackageID)).ToList(); if (graduationApplyList != null && graduationApplyList.Count() > 0) { throw new Exception("存在与其有关联的数据,如:毕业申请、毕业审核、毕业名单等"); } //查询相应的毕业公式及对应的毕业条件信息List var graduationConditionPackageList = GraduationConditionPackageDAL.GraduationConditionPackageRepository .GetList(x => graduationConditionPackageIDs.Contains(x.GraduationConditionPackageID), x => x.ER_GraduationCondition) .ToList(); foreach (var graduationConditionPackage in graduationConditionPackageList) { //物理删除 UnitOfWork.Delete(graduationConditionPackage, (x => x.ER_GraduationCondition)); UnitOfWork.Delete(x => x.GraduationConditionPackageID == graduationConditionPackage.GraduationConditionPackageID); } UnitOfWork.Commit(); return true; } catch (Exception ex) { throw new Exception(ex.Message); } } /// /// 根据学生类别查询对应的默认毕业公式信息View(GraduationConditionPackageView) /// /// /// public GraduationConditionPackageView GetGradConditionPackageIsDefaultView(int? studentType) { try { //毕业公式 Expression> exp = (x => true); exp = exp.And(x => x.IsDefault.Value == true); exp = exp.And(x => x.StudentType == studentType); var graduationConditionPackageView = GraduationConditionPackageDAL .GetGraduationConditionPackageQueryable(exp).SingleOrDefault(); return graduationConditionPackageView; } catch (Exception ex) { throw new Exception(ex.Message); } } } }