using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Transactions; using Bowin.Common.Utility; using EMIS.Entities; using EMIS.Utility; using EMIS.ViewModel; namespace EMIS.ExtensionLogic.ServiceLogic.EnrollManage { public class NewStudentEnterServices : EMIS.CommonLogic.EnrollManage.NewStudentManage.NewStudentEnterServices { /// /// 提交(河北工大) /// 注:需判断对应的录取照片是否存在、是否已分班且生成学号,并对学生信息进行验证,如:考生号或准考证号唯一、学号唯一 /// /// /// public override string NewStudentEnterSubmit(List newStudentIDList) { try { //查询相关Web.config配置 if (EMIS.Utility.Const.LOCAL_SETTING_PlanningGraduateDateSpringMonth == null) { throw new Exception("预计毕业月(春季、上学期入学月)未配置,请检查。"); } if (EMIS.Utility.Const.LOCAL_SETTING_PlanningGraduateDateSpringDay == null) { throw new Exception("预计毕业日(春季、上学期入学日)未配置,请检查。"); } if (EMIS.Utility.Const.LOCAL_SETTING_PlanningGraduateDateAutumnMonth == null) { throw new Exception("预计毕业月(秋季、下学期入学月)未配置,请检查。"); } if (EMIS.Utility.Const.LOCAL_SETTING_PlanningGraduateDateAutumnDay == null) { throw new Exception("预计毕业日(秋季、下学期入学日)未配置,请检查。"); } //查询录取名单信息(已分配状态) var newStudentEnterList = NewStudentDAL.NewStudentRepository.GetList(x => newStudentIDList.Contains(x.NewStudentID) && x.AssignStatus == (int)CF_AssignStatus.Assigned).ToList(); //查询班级信息ID为空的录取名单(注:如果有班级信息,对应的专业班级一定存在(无需验证是否有专业班级)) var classIDVerifyList = newStudentEnterList.Where(x => string.IsNullOrEmpty(x.ClassmajorID.ToString())).ToList(); if (classIDVerifyList != null && classIDVerifyList.Count() > 0) { throw new Exception("选择提交的名单中存在未分班的数据,请检查。"); } //查询学号为空的录取名单 var studentNoVerifyList = newStudentEnterList.Where(x => string.IsNullOrEmpty(x.StudentNo)).ToList(); if (studentNoVerifyList != null && studentNoVerifyList.Count() > 0) { throw new Exception("选择提交的名单中存在未生成学号的数据,请检查。"); } //有疑义名单判断 if (newStudentEnterList.Any(x => x.IsDoubt == true)) { throw new Exception("选择提交的名单中存在有疑议的数据,请检查。"); } //已提交状态判断 if (newStudentEnterList.Any(x => x.RecordStatus == (int)EMIS.ViewModel.CF_NewStudentEnterStatus.Submitted)) { throw new Exception("选择提交的名单中存在已提交的数据,请检查。"); } //查询录取照片为空的录取名单 var pictureUrlVerifyList = newStudentEnterList.Where(x => string.IsNullOrEmpty(x.RecruitPictureUrl)).ToList(); if (pictureUrlVerifyList != null && pictureUrlVerifyList.Count() > 0) { throw new Exception("选择提交的名单中存在录取照片不存在的数据,请检查。"); } //年级 var gradeIDList = newStudentEnterList.Where(x => !string.IsNullOrEmpty(x.GradeID.ToString())).Select(x => x.GradeID).ToList(); //考生号 var examineeNumList = newStudentEnterList.Where(x => !string.IsNullOrEmpty(x.ExamineeNum)).Select(x => x.ExamineeNum).ToList(); ////准考证号 //var admissionTicketNoList = newStudentEnterList.Where(x => !string.IsNullOrEmpty(x.AdmissionTicketNo)).Select(x => x.AdmissionTicketNo).ToList(); //身份证号 var iDNumberList = newStudentEnterList.Where(x => !string.IsNullOrEmpty(x.IDNumber)).Select(x => x.IDNumber).ToList(); //学号 var studentNoList = newStudentEnterList.Where(x => !string.IsNullOrEmpty(x.StudentNo)).Select(x => x.StudentNo).ToList(); //查询学年学期信息(验证对应的年级专业的入学学期与Web.config配置是否一致,有班级信息相应的学年学期信息一定存在) //如不致,以年级专业对应的入学学期为准 var schoolyearVerifyList = NewStudentDAL.SchoolyearRepository.GetList(x => gradeIDList.Contains(x.Years)).ToList(); //班级信息ID var classIDList = newStudentEnterList.Where(x => !string.IsNullOrEmpty(x.ClassmajorID.ToString())).Select(x => x.ClassmajorID).ToList(); ////查询学生信息(用于验证考生号、准考证号) //var studentVerifyList = NewStudentDAL.RecruitstudentsRepository.GetList(x => examineeNumList.Contains(x.ExamineeNum) || admissionTicketNoList.Contains(x.AdmissionTicketNo)).ToList(); //查询学生信息(用于验证考生号) var studentVerifyList = NewStudentDAL.RecruitstudentsRepository.GetList(x => examineeNumList.Contains(x.ExamineeNum)).ToList(); //查询用户信息(用于验证学号) var userVerifyList = NewStudentDAL.UserRepository.GetList(x => studentNoList.Contains(x.LoginID)).ToList(); //查询班级信息(用于验证班级) var classMajorVerifyList = NewStudentDAL.ClassmajorRepository.GetList(x => classIDList.Contains(x.ClassmajorID)).ToList(); //年级专业ID(根据班级信息ID) var classMajorIDList = classMajorVerifyList.Where(x => !string.IsNullOrEmpty(x.GrademajorID.ToString())).Select(x => x.GrademajorID).ToList(); //查询年级专业(根据年级专业ID) var gradeMajorVerifyList = NewStudentDAL.GrademajorRepository.GetList(x => classMajorIDList.Contains(x.GrademajorID)).ToList(); //查询年级专业的毕业学期ID(根据年级专业ID) var gradschoolyearIDList = NewStudentDAL.GrademajorRepository.GetList(x => classMajorIDList.Contains(x.GrademajorID)).Select(x => x.GraduateSchoolyearID).ToList(); //查询毕业学期(用于验证毕业学期) var gradschoolyearVerifyList = NewStudentDAL.SchoolyearRepository.GetList(x => gradschoolyearIDList.Contains(x.SchoolyearID)).ToList(); //查询毕业学期对应的毕业日期List var graduateDateList = NewStudentDAL.GraduateSchoolyearRepository.GetList(x => true).ToList(); //查询学生用户密码规则定义 var passwordParameter = NewStudentDAL.ParameterRepository.GetSingle(x => x.ParameterTypeID == (int)ViewModel.CF_ParameterType.StudentInitPassword); //查询学生角色信息 var roleList = NewStudentDAL.RoleRepository.GetList(x => x.TypeID == (int)SYS_RoleType.Student, (x => x.CF_StudentRole)).ToList(); int studentfail = 0; int studentNofail = 0; int success = 0; string tipMessage = null; List newStudentUpList = new List(); List userInList = new List(); List studentInList = new List(); List studentProfileInList = new List(); List studentContactInList = new List(); List studentAccountInList = new List(); List studentRecruitInList = new List(); //List studentFamilyInList = new List(); //List studentExperienceInList = new List(); foreach (var newStudentEnter in newStudentEnterList) { Sys_User user = new Sys_User(); CF_Student student = new CF_Student(); CF_StudentProfile studentProfile = new CF_StudentProfile(); CF_StudentContact studentContact = new CF_StudentContact(); CF_StudentAccount studentAccount = new CF_StudentAccount(); CF_Recruitstudents studentRecruit = new CF_Recruitstudents(); //CF_StudentFamily studentFamily = new CF_StudentFamily(); //CF_StudentExperience studentExperience = new CF_StudentExperience(); //验证考生号 var examineeNumVerify = studentVerifyList.Where(x => x.ExamineeNum == newStudentEnter.ExamineeNum).SingleOrDefault(); if (examineeNumVerify == null) { ////验证准考证号 //if (!string.IsNullOrEmpty(newStudentEnter.AdmissionTicketNo)) //{ // var admissionTicketNoVerify = studentVerifyList.Where(x => x.AdmissionTicketNo == newStudentEnter.AdmissionTicketNo).SingleOrDefault(); // if (admissionTicketNoVerify != null) // { // //准考证号验证不通过 // studentfail++; // continue; // } //} //考生号验证通过,验证学号 var userVerify = userVerifyList.Where(x => x.LoginID == newStudentEnter.StudentNo).SingleOrDefault(); if (userVerify == null) { //学号验证通过 user.UserID = Guid.NewGuid(); user.LoginID = newStudentEnter.StudentNo; user.Name = newStudentEnter.Name; if (passwordParameter == null) { user.Password = ("A" + newStudentEnter.StudentNo).MD5(); } else { if (passwordParameter.Value != null) { user.Password = passwordParameter.Value; } else { user.Password = ("A" + newStudentEnter.StudentNo).MD5(); } } SetNewStatus(user, (int)SYS_STATUS.USABLE); userInList.Add(user); user.Sys_Role = new HashSet(); roleList = roleList.Where(x => x.CF_StudentRole.StudentType == (int)CF_STUDENTTYPE.DefaultType).ToList(); if (roleList != null && roleList.Count > 0) { roleList.ForEach(x => user.Sys_Role.Add(x)); } student.UserID = user.UserID; student.ClassmajorID = newStudentEnter.ClassmajorID; student.SexID = newStudentEnter.SexID; student.BirthDate = newStudentEnter.BirthDate; student.NationID = newStudentEnter.NationID; student.PoliticsID = newStudentEnter.PoliticsID; student.CertificatesType = newStudentEnter.CertificatesType; student.IDNumber = newStudentEnter.IDNumber; student.StudentType = (int)CF_STUDENTTYPE.DefaultType; student.InSchoolStatusID = (int)CF_InschoolStatus.InSchool; student.StudentStatus = (int)CF_StudentStatus.Registration; student.StudentCardNo = user.LoginID; student.PhotoUrl = null; //对应的班级信息 var classMajor = classMajorVerifyList.Where(x => x.ClassmajorID == newStudentEnter.ClassmajorID).SingleOrDefault(); //对应的年级专业的毕业学期 var gradeMajor = gradeMajorVerifyList.Where(x => x.GrademajorID == classMajor.GrademajorID).SingleOrDefault(); if (gradeMajor != null) { //查询对应毕业学期信息 var gradschoolyear = gradschoolyearVerifyList.Where(x => x.SchoolyearID == gradeMajor.GraduateSchoolyearID).SingleOrDefault(); if (gradschoolyear != null) { //预计毕业日期 student.PlanningGraduateDate = PlanningGraduateDateHelper.GetPlanningGraduateDate(gradschoolyear.FirstWeek); } else { //预计毕业日期 student.PlanningGraduateDate = null; } //查询对应的毕业日期 var graduateDate = graduateDateList.Where(x => x.SchoolyearID == gradeMajor.GraduateSchoolyearID).SingleOrDefault(); if (graduateDate != null) { //毕业日期 student.GraduateDate = graduateDate.GraduateDate; } else { //毕业日期 student.GraduateDate = null; } } else { //预计毕业日期 student.PlanningGraduateDate = null; //毕业日期 student.GraduateDate = null; } student.GraduateCardNo = null; student.ReplaceGraduateNo = null; student.DegreeStatus = false; student.GraduationPictureUrl = null; student.Career = null; student.IsPhotoComparison = false; student.IsProofread = false; student.Remark = newStudentEnter.Remark; SetNewStatus(student, (int)SYS_STATUS.USABLE); studentInList.Add(student); studentProfile.UserID = user.UserID; studentProfile.UsedName = null; studentProfile.LiteracyLevelID = null; studentProfile.CultureModelID = null; studentProfile.IsDreamProject = false; studentProfile.Country = "中国"; studentProfile.Place = null; studentProfile.BornPlace = null; studentProfile.HealthStateID = null; studentProfile.BloodGroup = null; studentProfile.Specialty = null; studentProfile.Height = null; studentProfile.Weight = null; studentProfile.DirectorName = null; SetNewStatus(studentProfile, (int)SYS_STATUS.USABLE); studentProfileInList.Add(studentProfile); studentContact.UserID = user.UserID; studentContact.Email = null; studentContact.Telephone = newStudentEnter.Telephone; studentContact.Mobile = newStudentEnter.Telephone; studentContact.ZIPCode = newStudentEnter.ZIPCode; studentContact.WeChatNum = null; studentContact.QQ = null; studentContact.HomeAddress = null; studentContact.WorkUnit = null; studentContact.Address = newStudentEnter.Address; studentContact.Recipient = newStudentEnter.Name; studentContact.Dormitory = null; SetNewStatus(studentContact, (int)SYS_STATUS.USABLE); studentContactInList.Add(studentContact); studentAccount.UserID = user.UserID; studentAccount.CardNo = null; studentAccount.BankName = null; SetNewStatus(studentAccount, (int)SYS_STATUS.USABLE); studentAccountInList.Add(studentAccount); studentRecruit.UserID = user.UserID; studentRecruit.ExamineeNum = newStudentEnter.ExamineeNum; studentRecruit.AdmissionTicketNo = newStudentEnter.AdmissionTicketNo; studentRecruit.ExamineeType = null; //查询对应入学学年学期 var enterSchoolYear = schoolyearVerifyList.Where(x => x.Years == newStudentEnter.GradeID && x.SchoolcodeID == classMajor.CF_Grademajor.SemesterID).SingleOrDefault(); if (enterSchoolYear != null) { studentRecruit.EnteringSchoolYearID = enterSchoolYear.SchoolyearID; } else { studentRecruit.EnteringSchoolYearID = null; } studentRecruit.EntranceDate = newStudentEnter.EntranceDate; studentRecruit.Score = newStudentEnter.Score; studentRecruit.EntranceWayID = newStudentEnter.EntranceWayID; studentRecruit.FeaturesID = newStudentEnter.FeaturesID; studentRecruit.TerritorialID = newStudentEnter.TerritorialID; studentRecruit.Area = null; studentRecruit.RecruitPictureUrl = newStudentEnter.RecruitPictureUrl; SetNewStatus(studentRecruit, (int)SYS_STATUS.USABLE); studentRecruitInList.Add(studentRecruit); //studentFamily.StudentFamilyID = Guid.NewGuid(); //studentFamily.UserID = user.UserID; //SetNewStatus(studentFamily, (int)SYS_STATUS.USABLE); //studentFamilyInList.Add(studentFamily); //studentExperience.StudentExperienceID = Guid.NewGuid(); //studentExperience.UserID = user.UserID; //SetNewStatus(studentExperience, (int)SYS_STATUS.USABLE); //studentExperienceInList.Add(studentExperience); //获取提交成功的录取名单信息(用于做其它的处理,如:删除、更新等) newStudentEnter.RecordStatus = (int)CF_NewStudentEnterStatus.Submitted; SetModifyStatus(newStudentEnter); newStudentUpList.Add(newStudentEnter); success++; } else { //学号验证不通过 studentNofail++; continue; } } else { //考生号验证不通过 studentfail++; continue; } } using (TransactionScope ts = new TransactionScope()) { //批量插入 UnitOfWork.BulkInsert(userInList); UnitOfWork.BulkInsert(userInList, (x => x.Sys_Role)); //插入相应的关系表 UnitOfWork.BulkInsert(studentInList); UnitOfWork.BulkInsert(studentProfileInList); UnitOfWork.BulkInsert(studentContactInList); UnitOfWork.BulkInsert(studentAccountInList); UnitOfWork.BulkInsert(studentRecruitInList); //UnitOfWork.BulkInsert(studentFamilyInList); //UnitOfWork.BulkInsert(studentExperienceInList); //刷新对应的学生相关信息 StudentServices.Value.AddStudentEnd(studentInList.Select(x => x.UserID).ToList()); //提交成功后,更新相应的录取名单状态 if (newStudentUpList != null && newStudentUpList.Count() > 0) { UnitOfWork.BatchUpdate(newStudentUpList); //批量更新 } ts.Complete(); } if (studentfail <= 0 && studentNofail <= 0) { tipMessage = success + "条录取名单进入学生信息库"; } else { if (studentNofail > 0 && studentfail <= 0) { tipMessage = success + "条录取名单进入学生信息库," + studentNofail + "条录取名单提交失败,原因:学号已存在,请检查"; } else if (studentNofail <= 0 && studentfail > 0) { tipMessage = success + "条录取名单进入学生信息库," + studentfail + "条录取名单提交失败,原因:考生号或准考证号已存在,请检查"; } else { tipMessage = success + "条录取名单进入学生信息库," + studentNofail + "条录取名单由于学号已存在提交失败," + studentfail + "条录取名单由于考生号或准考证号已存在提交失败,请检查"; } } return tipMessage; } catch (Exception ex) { throw new Exception(ex.Message); } } } }