using Dapper; using Learun.DataBase.Repository; using Learun.Util; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using Learun.Application.Base.AuthorizeModule; using Learun.Application.Organization; using System.Reflection; using Learun.Application.Base.SystemModule; using Learun.Application.TwoDevelopment.LogisticsManagement; using Learun.Cache.Base; using Learun.Cache.Factory; namespace Learun.Application.TwoDevelopment.EducationalAdministration { /// /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园 /// Copyright (c) 2013-2018 北京泉江科技有限公司 /// 创 建:超级管理员 /// 日 期:2019-02-21 16:53 /// 描 述:学生学籍 /// public class StuInfoBasicService : RepositoryFactory { private DataItemIBLL dataItemIBLL = new DataItemBLL(); #region 获取数据 /// /// 获取页面显示列表数据 /// /// 查询参数 /// public IEnumerable GetPageList(Pagination pagination, string queryJson) { try { var strSql = new StringBuilder(); strSql.Append("SELECT t.* "); strSql.Append(" FROM StuInfoBasic t "); strSql.Append(" WHERE 1=1 "); var queryParam = queryJson.ToJObject(); // 虚拟参数 var dp = new DynamicParameters(new { }); if (!queryParam["Crowning"].IsEmpty()) { dp.Add("Crowning", queryParam["Crowning"].ToString(), DbType.String); strSql.Append(" AND t.Crowning = @Crowning "); } if (!queryParam["StuNo"].IsEmpty()) { dp.Add("StuNo", queryParam["StuNo"].ToString(), DbType.String); strSql.Append(" AND t.StuNo = @StuNo "); } if (!queryParam["StuName"].IsEmpty()) { dp.Add("StuName", "%" + queryParam["StuName"].ToString() + "%", DbType.String); strSql.Append(" AND t.StuName Like @StuName "); } if (!queryParam["DeptNo"].IsEmpty()) { dp.Add("DeptNo", "" + queryParam["DeptNo"].ToString() + "", DbType.String); strSql.Append(" AND t.DeptNo=@DeptNo "); } if (!queryParam["MajorNo"].IsEmpty()) { dp.Add("MajorNo", "" + queryParam["MajorNo"].ToString() + "", DbType.String); strSql.Append(" AND t.MajorNo=@MajorNo "); } if (!queryParam["ClassNo"].IsEmpty()) { dp.Add("ClassNo", "" + queryParam["ClassNo"].ToString() + "", DbType.String); strSql.Append(" AND t.ClassNo=@ClassNo "); } if (!queryParam["Grade"].IsEmpty()) { dp.Add("Grade", "" + queryParam["Grade"].ToString() + "", DbType.String); strSql.Append(" AND t.Grade=@Grade "); } if (!queryParam["IdentityCardNo"].IsEmpty()) { dp.Add("IdentityCardNo", "%" + queryParam["IdentityCardNo"].ToString() + "%", DbType.String); strSql.Append(" AND t.IdentityCardNo like @IdentityCardNo "); } if (!queryParam["GenderNo"].IsEmpty()) { dp.Add("GenderNo", "" + queryParam["GenderNo"].ToString() + "", DbType.String); strSql.Append(" AND t.GenderNo=@GenderNo "); } if (!queryParam["NationalityNo"].IsEmpty()) { dp.Add("NationalityNo", "" + queryParam["NationalityNo"].ToString() + "", DbType.String); strSql.Append(" AND t.NationalityNo=@NationalityNo "); } if (!queryParam["PieceCultivateWay"].IsEmpty()) { dp.Add("PieceCultivateWay", "" + queryParam["PieceCultivateWay"].ToString() + "", DbType.String); strSql.Append(" AND t.PieceCultivateWay=@PieceCultivateWay "); } if (!queryParam["F_ProvinceId"].IsEmpty()) { dp.Add("F_ProvinceId", "" + queryParam["F_ProvinceId"].ToString() + "", DbType.String); strSql.Append(" AND t.F_ProvinceId=@F_ProvinceId "); } if (!queryParam["F_CityId"].IsEmpty()) { dp.Add("F_CityId", "" + queryParam["F_CityId"].ToString() + "", DbType.String); strSql.Append(" AND t.F_CityId=@F_CityId "); } if (!queryParam["F_CountyId"].IsEmpty()) { dp.Add("F_CountyId", "" + queryParam["F_CountyId"].ToString() + "", DbType.String); strSql.Append(" AND t.F_CountyId=@F_CountyId "); } if (!queryParam["FinishSchoolMark"].IsEmpty()) { dp.Add("FinishSchoolMark", "" + queryParam["FinishSchoolMark"].ToString() + "", DbType.String); if (queryParam["FinishSchoolMark"].ToString() == "0") { strSql.Append(" AND (t.FinishSchoolMark is null or t.FinishSchoolMark='0') "); } else { strSql.Append(" AND t.FinishSchoolMark=@FinishSchoolMark "); } } if (!queryParam["Remark"].IsEmpty()) { dp.Add("Remark", "%" + queryParam["Remark"].ToString() + "%", DbType.String); strSql.Append(" AND t.Remark Like @Remark "); } //旧 //if (!queryParam["AbmormityMoveMark"].IsEmpty()) //{ // strSql.Append(" AND t.stuno not in(select stuno from StuInfoBasicChange where StuChangeType in('04','05','06') and checkstatus=1) "); //} //2023-6-2教务反馈的需求 教师工作管理-我的班级,改为退学、转校的学生不显示。 if (!queryParam["MyClass"].IsEmpty()) { strSql.Append(" AND t.stuno not in(select stuno from StuInfoBasicChange where StuChangeType in('04','06') and checkstatus=1) "); } return this.BaseRepository("CollegeMIS").FindList(strSql.ToString(), dp, pagination); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 获取页面显示列表数据 /// /// 查询参数 /// public IEnumerable GetPageListOfSoonGraduate(Pagination pagination, string queryJson) { try { var strSql = new StringBuilder(); strSql.Append("SELECT t.* "); strSql.Append(" FROM StuInfoBasic t "); strSql.Append(" WHERE 1=1 "); //显示大三学生 strSql.Append(" and t.Grade=(case when datepart(month,getdate())>=9 then (substring(convert(nvarchar,datepart(year,getdate())),3,2)-2) else (substring(convert(nvarchar,datepart(year,getdate())),3,2)-3) end) "); var queryParam = queryJson.ToJObject(); // 虚拟参数 var dp = new DynamicParameters(new { }); if (!queryParam["StuNo"].IsEmpty()) { dp.Add("StuNo", queryParam["StuNo"].ToString(), DbType.String); strSql.Append(" AND t.StuNo = @StuNo "); } if (!queryParam["StuName"].IsEmpty()) { dp.Add("StuName", "%" + queryParam["StuName"].ToString() + "%", DbType.String); strSql.Append(" AND t.StuName Like @StuName "); } if (!queryParam["DeptNo"].IsEmpty()) { dp.Add("DeptNo", "" + queryParam["DeptNo"].ToString() + "", DbType.String); strSql.Append(" AND t.DeptNo=@DeptNo "); } if (!queryParam["MajorNo"].IsEmpty()) { dp.Add("MajorNo", "" + queryParam["MajorNo"].ToString() + "", DbType.String); strSql.Append(" AND t.MajorNo=@MajorNo "); } if (!queryParam["ClassNo"].IsEmpty()) { dp.Add("ClassNo", "" + queryParam["ClassNo"].ToString() + "", DbType.String); strSql.Append(" AND t.ClassNo=@ClassNo "); } if (!queryParam["Grade"].IsEmpty()) { dp.Add("Grade", "" + queryParam["Grade"].ToString() + "", DbType.String); strSql.Append(" AND t.Grade=@Grade "); } if (!queryParam["FinishSchoolMark"].IsEmpty()) { dp.Add("FinishSchoolMark", "" + queryParam["FinishSchoolMark"].ToString() + "", DbType.String); if (queryParam["FinishSchoolMark"].ToString() == "0") { strSql.Append(" AND (t.FinishSchoolMark is null or t.FinishSchoolMark='0') "); } else { strSql.Append(" AND t.FinishSchoolMark=@FinishSchoolMark "); } } if (!queryParam["Remark"].IsEmpty()) { dp.Add("Remark", "%" + queryParam["Remark"].ToString() + "%", DbType.String); strSql.Append(" AND t.Remark Like @Remark "); } //旧 //if (!queryParam["AbmormityMoveMark"].IsEmpty()) //{ // strSql.Append(" AND t.stuno not in(select stuno from StuInfoBasicChange where StuChangeType in('04','05','06') and checkstatus=1) "); //} return this.BaseRepository("CollegeMIS").FindList(strSql.ToString(), dp, pagination); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 获取不分页列表 /// /// 查询参数 /// public IEnumerable GetList(string queryJson) { try { var strSql = new StringBuilder(); strSql.Append("SELECT t.* "); strSql.Append(" FROM StuInfoBasic t "); strSql.Append(" WHERE 1=1 "); var queryParam = queryJson.ToJObject(); // 虚拟参数 var dp = new DynamicParameters(new { }); if (!queryParam["keyword"].IsEmpty()) { dp.Add("keyword", "%" + queryParam["keyword"].ToString() + "%", DbType.String); strSql.Append(" AND (t.StuNo like @keyword or t.StuName Like @keyword)"); } if (!queryParam["ClassNo"].IsEmpty()) { dp.Add("ClassNo", queryParam["ClassNo"].ToString(), DbType.String); strSql.Append(" AND t.ClassNo=@ClassNo "); } return this.BaseRepository("CollegeMIS").FindList(strSql.ToString(), dp); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } internal List GetSaveClassStudents(string account) { try { var classNO = this.BaseRepository("CollegeMIS").FindEntity(a => a.StuNo == account).ClassNo; return this.BaseRepository("CollegeMIS").FindList(a => a.ClassNo == classNO).Select(a => a.StuNo).ToList(); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } internal bool GetAny() { try { return this.BaseRepository("CollegeMIS").FindList().ToList().Count > 0 ? true : false; } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } internal StuInfoBasicEntity GetStuInfoBasicEntityByStuNo(string enCode) { try { var data = this.BaseRepository("CollegeMIS").FindEntity(a => a.StuNo == enCode); //if (data != null && (data.Photo != null && data.Photo != "")) //{ // var url = this.BaseRepository().FindEntity(a => a.F_FolderId == data.Photo)?.F_FilePath; // if (!string.IsNullOrEmpty(url)) // { // url = "/" + url.Substring(url.IndexOf("Resource")); // data.Photo = url; // } //} return data; } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } public string GetPhotoByStuNo(string enCode) { try { var data = this.BaseRepository("CollegeMIS").FindEntity(a => a.StuNo == enCode); if (data != null) { return data.Photo; } return ""; } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } public StuInfoBasicEntity GetStuInfoBasicEntityByStuName(string name) { try { return this.BaseRepository("CollegeMIS").FindEntity(a => a.StuName == name); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 获取StuInfoBasic表实体数据 /// 主键 /// /// public StuInfoBasicEntity GetStuInfoBasicEntity(string keyValue) { try { return this.BaseRepository("CollegeMIS").FindEntity(keyValue); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 获取准许毕业的学生的专业 /// /// public List GetMajorInfoWithGraduation() { try { var stuInfo = this.BaseRepository("CollegeMIS") .FindList(a => a.FinishSchoolMark == "1").ToList(); var majorNoList = stuInfo.GroupBy(a => a.MajorNo).Select(a => a.Key).ToList(); var majorList = this.BaseRepository("CollegeMIS") .FindList(a => majorNoList.Contains(a.MajorNo)).ToList(); return majorList; } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 获取StuInfoBasic表实体数据 /// 主键 /// /// public void CreateGraduateNoByMajor(string CityCode, string SchoolCode, string MajorList) { try { var year = DateTime.Now.Year.ToString().Substring(2, 2); var firstStr = year + CityCode + SchoolCode; //获取最大的序号 var DiplomaNoList = this.BaseRepository("CollegeMIS") .FindList(a => a.DiplomaNo.Contains(firstStr)).Select(a => a.DiplomaNo.Substring(a.DiplomaNo.Length - 4, 4).ToInt()).ToList(); var orderNo = 1; if (DiplomaNoList.Count() > 0) { var MaxDiplomaNo = DiplomaNoList.Max(a => a); orderNo = MaxDiplomaNo + 1; } var ListMajorNo = MajorList.Split(',').ToList(); foreach (var MajorNo in ListMajorNo) { var stuList = this.BaseRepository("CollegeMIS") .FindList(a => a.MajorNo == MajorNo) .Where(a => a.DiplomaNo == null || a.DiplomaNo == ""); if (stuList.Count() > 0) { foreach (var stuInfo in stuList) { stuInfo.DiplomaNo = firstStr + orderNo.ToString().PadLeft(4, '0'); this.BaseRepository("CollegeMIS").Update(stuInfo); orderNo++; } } } } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 获取StuInfoBasic表实体数据 /// 主键 /// /// public StuInfoBasicEntity GetStuNoByAccount(string keyValue) { try { return this.BaseRepository("CollegeMIS").FindEntity(a => a.StuNo == keyValue); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 获取树形数据 /// /// public DataTable GetSqlTree() { try { var ClassDiredctorNo = LoginUserInfo.Get().account; return this.BaseRepository("CollegeMIS").FindTable($" SELECT * FROM dbo.ClassInfo where ClassDiredctorNo='{ClassDiredctorNo}' or ClassTutorNo='{ClassDiredctorNo}'"); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } public StuInfoBasicEntity GetStuInfoBasicEntityByIdCard(string idcard) { try { return this.BaseRepository("CollegeMIS").FindEntity(a => a.IdentityCardNo == idcard); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } #endregion #region 提交数据 /// /// 审核全部 /// public void CheckAll() { try { this.BaseRepository("CollegeMIS").ExecuteBySql("update StuInfoBasic set CheckMark=1"); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 准许毕业操作 /// public void AllowGraduate(string stuNo, string status) { try { var list = stuNo.Split(',').ToList().Select(a => "'" + a + "'"); var stulist = string.Join(",", list); this.BaseRepository("CollegeMIS").ExecuteBySql($"UPDATE dbo.StuInfoBasic SET FinishSchoolMark ='{status}' WHERE StuNo in({stulist})"); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } public void SynPhoto() { //var logpath = @"D:\新版数字化校园\Publish\log\0913.txt"; try { var stuList = this.BaseRepository("CollegeMIS").FindList(x => x.Grade == "21") .ToList(); var url = AppDomain.CurrentDomain.BaseDirectory; //System.IO.File.AppendAllText(logpath, "同步照片\r\n"); var num = 0; foreach (var stuInfo in stuList) { var F_FileName = stuInfo.ksh + ".jpg"; var F_FilePath = $"{url}/Resource/UserPhoto/KSZP/{F_FileName}"; //判断文件是否存在 if (System.IO.File.Exists(F_FilePath)) { //照片不为空 if (!string.IsNullOrEmpty(stuInfo.Photo)) { var annex = this.BaseRepository() .FindEntity(a => a.F_FolderId == stuInfo.Photo); if (annex == null) { var annexEntity = new AnnexesFileEntity() { F_Id = Guid.NewGuid().ToString(), F_FileName = F_FileName, F_FilePath = F_FilePath, F_FolderId = stuInfo.Photo }; this.BaseRepository().Insert(annexEntity); } else { annex.F_FileName = F_FileName; annex.F_FilePath = F_FilePath; this.BaseRepository().Update(annex); } } else { stuInfo.Photo = Guid.NewGuid().ToString(); var annexEntity = new AnnexesFileEntity() { F_Id = Guid.NewGuid().ToString(), F_FileName = F_FileName, F_FilePath = F_FilePath, F_FolderId = stuInfo.Photo }; annexEntity.Create(); this.BaseRepository("CollegeMIS").Update(stuInfo); this.BaseRepository().Insert(annexEntity); } //num++; } else { //System.IO.File.AppendAllText(logpath, F_FilePath + "学生:" + stuInfo.StuName + "文件不存在" + "\r\n"); } } //System.IO.File.AppendAllText(logpath, "同步照片:" + num + "个学生\r\n"); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 删除实体数据 /// 主键 /// /// public void DeleteEntity(string keyValue) { var db = this.BaseRepository("CollegeMIS").BeginTrans(); try { //单个删除 //this.BaseRepository("CollegeMIS").Delete(t => t.StuId == keyValue); //多个删除 var keyValueArr = keyValue.Split(','); foreach (var item in keyValueArr) { db.Delete(t => t.StuId == item); } db.Commit(); } catch (Exception ex) { db.Rollback(); if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 领取毕业证 /// 主键 /// /// public void GetCard(string keyValue) { var db = this.BaseRepository("CollegeMIS").BeginTrans(); try { var keyValueArr = keyValue.Split(','); foreach (var item in keyValueArr) { var sql = $"UPDATE dbo.StuInfoBasic SET FinishSchoolMark='2',FinishSchoolDate=GETDATE() WHERE StuId='{item}'"; db.ExecuteBySql(sql); } db.Commit(); } catch (Exception ex) { db.Rollback(); if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 毕业生归档 /// /// public void StuStore() { var db = this.BaseRepository("CollegeMIS").BeginTrans(); var adb = this.BaseRepository().BeginTrans(); try { //归档前提为已经领取毕业证的学生 var stuInfos = db .FindList(a => a.FinishSchoolMark == "2"); foreach (var item in stuInfos) { var StuInfoType = typeof(StuInfoBasicEntity); var PropertyInfoStuInfo = StuInfoType.GetProperties(); var GraduateEntity = new StuInfoGraduateEntity(); var typegraduate = typeof(StuInfoGraduateEntity); var PropertyInfoGraduate = typegraduate.GetProperties(); foreach (var itemStuInfo in PropertyInfoStuInfo) { var objStuInfoType = itemStuInfo.GetValue(StuInfoType); foreach (var itemGraduate in PropertyInfoGraduate) { if (itemGraduate.Name == itemStuInfo.Name) { itemGraduate.SetValue(GraduateEntity, objStuInfoType, null); } } } var accountInfo = adb.FindEntity(a => a.F_Account == item.StuNo); if (accountInfo != null) { //删除账户 adb.Delete(accountInfo); } //清空宿舍信息 var dormitory = db .FindEntity(a => a.StudentID == item.StuId); if (dormitory != null) { dormitory.StudentID = ""; dormitory.StuName = ""; db.Update(dormitory); } db.Delete(item); db.Insert(GraduateEntity); } } catch (Exception ex) { db.Rollback(); adb.Rollback(); if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 保存实体数据(新增、修改) /// 主键 /// /// public void SaveEntity(string keyValue, StuInfoBasicEntity entity) { try { UserIBLL userIBLL = new UserBLL(); if (!string.IsNullOrEmpty(keyValue)) { entity.Modify(keyValue); var oldEntity = this.BaseRepository("CollegeMIS").FindEntity(keyValue); List list = new List(); var loginUser = LoginUserInfo.Get(); var tableInfos = this.BaseRepository("CollegeMIS").FindTable(@"SELECT t.[name] AS 表名,c.[name] AS 字段名,cast(ep.[value] as varchar(100)) AS [字段说明] FROM sys.tables AS t INNER JOIN sys.columns AS c ON t.object_id = c.object_id LEFT JOIN sys.extended_properties AS ep ON ep.major_id = c.object_id AND ep.minor_id = c.column_id WHERE ep.class =1 AND t.name='StuInfoBasic'"); PropertyInfo[] properties = oldEntity.GetType().GetProperties(); foreach (System.Reflection.PropertyInfo item in properties) { string name = item.Name; object oldValue = item.GetValue(oldEntity); object newValue = item.GetValue(entity); if (oldValue == null || newValue == null) { continue; } if (!oldValue.Equals(newValue)) { var columnName = ""; foreach (DataRow rows in tableInfos.Rows) { if (rows["字段名"].ToString() == item.Name) { columnName = rows["字段说明"].ToString(); } } var changeEntity = new StuInfoBasic_ChangeLogEntity { StuID = keyValue, BeforeChange = oldValue.ToString(), AfterChange = newValue.ToString(), FieldName = columnName, UpdateBy = loginUser.userId, UpdateTime = DateTime.Now }; changeEntity.Create(); list.Add(changeEntity); } } if (list.Count > 0) { this.BaseRepository("CollegeMIS").Insert(list); } var annexesFileEntity = this.BaseRepository().FindEntity(a => a.F_FolderId == entity.Photo); var url = ""; if (annexesFileEntity != null) { url = annexesFileEntity.F_FilePath; url = "/" + url.Substring(url.IndexOf("Resource"), url.Length - url.IndexOf("Resource")); } var baseUser = userIBLL.GetEntityByAccount(entity.StuNo); if (baseUser != null) { baseUser.F_HeadIcon = url; userIBLL.SaveEntity(baseUser.F_UserId, baseUser); } this.BaseRepository("CollegeMIS").Update(entity); } else { entity.Create(); this.BaseRepository("CollegeMIS").Insert(entity); } } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } #endregion public class TableInfo { public string TableName { get; set; } public string ColumnName { get; set; } public string ColumnDescription { get; set; } } public void GenerateAccout() { UserRelationIBLL userRelationIBLL = new UserRelationBLL(); UserIBLL userIBLL = new UserBLL(); try { var stuInfoBasicEntities = BaseRepository("CollegeMIS").FindList(m => m.CheckMark != "0"); var alluserlist = userIBLL.GetAllList().Where(m => m.F_Description == "学生"); var roleId = Config.GetValue("GenerateStudentsRoleId"); var defaultpwd = Config.GetValue("defaultpwd"); //读取默认密码配置中已启用的密码 var Sys_DefaultPwdConfigEntity = this.BaseRepository().FindEntity(x => x.IsEnabled == true); if (Sys_DefaultPwdConfigEntity != null) { defaultpwd = Sys_DefaultPwdConfigEntity.Pwd; } var studentList = new List(); foreach (var tEntity in stuInfoBasicEntities) { if (alluserlist.Count(m => m.F_Account == tEntity.StuNo) > 0) { continue; } var annexesFileEntity = this.BaseRepository().FindEntity(a => a.F_FolderId == tEntity.Photo); var url = ""; if (annexesFileEntity != null) { url = annexesFileEntity.F_FilePath; url = "/" + url.Substring(url.IndexOf("Resource")); } UserEntity userbase = new UserEntity(); userbase.F_Account = tEntity.StuNo; userbase.F_RealName = tEntity.StuName; userbase.F_EnCode = tEntity.StuNo; userbase.F_Password = Md5Helper.Encrypt(defaultpwd, 32).ToLower(); userbase.F_HeadIcon = string.IsNullOrEmpty(url) ? Config.GetValue("defaultheadimg") : url; userbase.F_Gender = tEntity.GenderNo.HasValue ? Convert.ToInt32(tEntity.GenderNo.Value) : 1; userbase.F_DeleteMark = 0; userbase.F_EnabledMark = 1; userbase.F_Mobile = tEntity.mobile; userbase.F_Description = "学生"; userbase.F_CompanyId = tEntity.F_SchoolId; userbase.F_DepartmentId = tEntity.DeptNo; userbase.F_IdentityCardNo = tEntity.IdentityCardNo; userIBLL.SaveEntity(null, userbase); studentList.Add(userbase); } if (studentList.Any()) { string s = studentList.Select(m => m.F_UserId).Aggregate((current, userEntity) => current + "," + userEntity); userRelationIBLL.SaveEntityList2(roleId, 1, s); } } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } public void UpdateAccount() { try { UserIBLL userIBLL = new UserBLL(); var teacherList = this.BaseRepository("CollegeMIS").FindList(); var baseTeacherList = userIBLL.GetAllList().Where(m => m.F_Description == "学生"); foreach (var baseTeacher in baseTeacherList) { var num = 0; var teacher = teacherList.FirstOrDefault(a => a.StuNo == baseTeacher.F_Account); if (teacher != null) { if (baseTeacher.F_RealName != teacher.StuName) { baseTeacher.F_RealName = teacher.StuName; num++; } if (baseTeacher.F_Gender != Convert.ToInt32(teacher.GenderNo)) { baseTeacher.F_Gender = Convert.ToInt32(teacher.GenderNo); num++; } if (baseTeacher.F_Mobile != teacher.mobile) { baseTeacher.F_Mobile = teacher.mobile; num++; } if (baseTeacher.F_CompanyId != teacher.F_SchoolId) { baseTeacher.F_CompanyId = teacher.F_SchoolId; num++; } if (baseTeacher.F_DepartmentId != teacher.DeptNo) { baseTeacher.F_DepartmentId = teacher.DeptNo; num++; } if (baseTeacher.F_IdentityCardNo != teacher.IdentityCardNo) { baseTeacher.F_IdentityCardNo = teacher.IdentityCardNo; num++; } if (num > 0) { userIBLL.UpdateEntity(baseTeacher); } } } } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } public IEnumerable GetAllList() { try { return this.BaseRepository("CollegeMIS").FindList(m => m.CheckMark == "1"); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } public IEnumerable GetStuInfoByClassNo(string classNo) { try { return this.BaseRepository("CollegeMIS").FindList(m => m.CheckMark == "1" && m.ClassNo == classNo); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } public void SyncDept() { try { var data = this.BaseRepository("CollegeMIS").FindList().ToList(); var majorList = this.BaseRepository("CollegeMIS").FindList().ToList(); foreach (var item in data) { var deptNo = majorList.FirstOrDefault(a => a.MajorNo == item.MajorNo)?.DeptNo; item.DeptNo = deptNo; this.BaseRepository("CollegeMIS").Update(item); } } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } public void SyncMajor() { try { var data = this.BaseRepository("CollegeMIS").FindList().ToList(); var classList = this.BaseRepository("CollegeMIS").FindList().ToList(); foreach (var item in data) { var majorNo = classList.FirstOrDefault(a => a.ClassNo == item.ClassNo)?.MajorNo; item.MajorNo = majorNo; this.BaseRepository("CollegeMIS").Update(item); } } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } #region 缓存定义 private ICache cache = CacheFactory.CaChe(); private string cacheKey = "Learun_adms_excelError_"; // +公司主键 #endregion /// /// 批量更新学生数据 /// /// public (int snum, int fnum) StuInfoBasicUpdateImport(DataTable dt, string fileId, string classno) { var db = this.BaseRepository("CollegeMIS"); try { db.BeginTrans(); int snum = 0; int fnum = 0; //failDt用于保存失败数据 DataTable failDt = new DataTable(); if (dt.Rows.Count > 0) { foreach (DataColumn dc in dt.Columns) { failDt.Columns.Add(dc.ColumnName, dc.DataType); } failDt.Columns.Add("导入错误", typeof(string)); dt.Columns.Add("导入错误", typeof(string)); //数据字典 var detailList = this.BaseRepository().FindList(@"SELECT t.*,t2.F_ItemCode FROM LR_Base_DataItemDetail t INNER JOIN LR_Base_DataItem t2 ON t.F_ItemId = t2.F_ItemId WHERE t.F_DeleteMark = 0"); //当前班级学生信息 IEnumerable stuInfoBasicEntities = db.FindList($"select * from StuInfoBasic where classno='{classno}'"); //修改学生list List insertedorderlist = new List(); //省市县 var provinceList = db.FindList(); var cityList = db.FindList(); var areaList = db.FindList(); // 循环遍历导入 foreach (DataRow dr in dt.Rows) { try { //检测是否是空行 if (!string.IsNullOrEmpty(dr["学号"].ToString())) { //检测是否有空值 if (string.IsNullOrEmpty(dr["姓名"].ToString())) { dr["导入错误"] = "【姓名】不能为空!"; failDt.Rows.Add(dr.ItemArray); continue; } //判断学生是否在当前选中班级 var stuInfoBasic = stuInfoBasicEntities.FirstOrDefault(s => s.StuNo == dr["学号"].ToString().Trim()); if (stuInfoBasic == null) { dr["导入错误"] = "班级:" + classno + "中未找到该学生!"; failDt.Rows.Add(dr.ItemArray); continue; } #region 验证数据格式和数据字典等 var sex = dr["性别"].ToString().Trim(); if (sex != "男" && sex != "女") { dr["导入错误"] = "【性别】请填写男或女!"; failDt.Rows.Add(dr.ItemArray); continue; } //判断日期是否是日期格式 var birthday = dr["出生日期"].ToString().Trim(); if (!string.IsNullOrEmpty(birthday) && !IsDate(birthday)) { dr["导入错误"] = "【出生日期】格式不正确!"; failDt.Rows.Add(dr.ItemArray); continue; } var NationalityNo = dr["民族"].ToString().Trim(); var Nationality = detailList.FirstOrDefault(x => x.F_ItemCode == "National" && x.F_ItemName == NationalityNo); if (!string.IsNullOrEmpty(NationalityNo) && Nationality == null) { dr["导入错误"] = "【民族】数据字典找不到对应的数据!"; failDt.Rows.Add(dr.ItemArray); continue; } var PartyFaceNo = dr["政治面貌"].ToString().Trim(); var PartyFace = detailList.FirstOrDefault(x => x.F_ItemCode == "BCdPartyFace" && x.F_ItemName == PartyFaceNo); if (!string.IsNullOrEmpty(PartyFaceNo) && PartyFace == null) { dr["导入错误"] = "【政治面貌】数据字典找不到对应的数据!"; failDt.Rows.Add(dr.ItemArray); continue; } var EduSystem = dr["学制"].ToString().Trim(); var EduSystemEntity = detailList.FirstOrDefault(x => x.F_ItemCode == "EduSystem" && x.F_ItemName == EduSystem); if (!string.IsNullOrEmpty(EduSystem) && EduSystemEntity == null) { dr["导入错误"] = "【学制】数据字典找不到对应的数据!"; failDt.Rows.Add(dr.ItemArray); continue; } //判断日期是否是日期格式 var registerDate = string.IsNullOrEmpty(dr["报到日期"].ToString().Trim()) ? "" : dr["报到日期"].ToString().Trim(); if (!string.IsNullOrEmpty(registerDate) && !IsDate(registerDate)) { dr["导入错误"] = "【报到日期】格式不正确!"; failDt.Rows.Add(dr.ItemArray); continue; } var entranceDate = string.IsNullOrEmpty(dr["入学年月"].ToString().Trim()) ? "" : dr["入学年月"].ToString().Trim(); if (!string.IsNullOrEmpty(entranceDate) && !IsDate(entranceDate)) { dr["导入错误"] = "【入学年月】格式不正确!"; failDt.Rows.Add(dr.ItemArray); continue; } var residenceNo = dr["户口分类"].ToString().Trim(); var residence = detailList.FirstOrDefault(x => x.F_ItemCode == "ResidenceNo" && x.F_ItemName == residenceNo); if (!string.IsNullOrEmpty(residenceNo) && residence == null) { dr["导入错误"] = "【户口分类】数据字典找不到对应的数据!"; failDt.Rows.Add(dr.ItemArray); continue; } //籍贯省市县 var privioce = dr["籍贯(省)"].ToString().Trim(); var city = dr["籍贯(市)"].ToString().Trim(); var area = dr["籍贯(县)"].ToString().Trim(); var provinceEntity = provinceList.FirstOrDefault(x => x.PNAME == privioce); var cityEntity = cityList.FirstOrDefault(x => x.CNAME == city); var areaEntity = areaList.FirstOrDefault(x => x.ANAME == area); if (!string.IsNullOrEmpty(privioce) && provinceEntity == null) { dr["导入错误"] = "【籍贯(省)】数据源找不到对应的数据!"; failDt.Rows.Add(dr.ItemArray); continue; } if (!string.IsNullOrEmpty(city) && cityEntity == null) { dr["导入错误"] = "【籍贯(市)】数据源找不到对应的数据!"; failDt.Rows.Add(dr.ItemArray); continue; } if (!string.IsNullOrEmpty(area) && areaEntity == null) { dr["导入错误"] = "【籍贯(县)】数据源找不到对应的数据!"; failDt.Rows.Add(dr.ItemArray); continue; } var depositBank = dr["开户银行"].ToString().Trim(); var depositBankItem = detailList.FirstOrDefault(x => x.F_ItemCode == "DepositBank" && x.F_ItemName == depositBank); if (!string.IsNullOrEmpty(depositBank) && depositBankItem == null) { dr["导入错误"] = "【开户银行】数据字典找不到对应的数据!"; failDt.Rows.Add(dr.ItemArray); continue; } //是否单亲 bool? single = null; if (!string.IsNullOrEmpty(dr["是否单亲"].ToString().Trim())) { if (dr["是否单亲"].ToString().Trim() == "是") { single = true; } else if (dr["是否单亲"].ToString().Trim() == "否") { single = false; } } var FamilyOriginNo = dr["家庭出身"].ToString().Trim(); var FamilyOrigin = detailList.FirstOrDefault(x => x.F_ItemCode == "BCdFamilyOrigin" && x.F_ItemName == FamilyOriginNo); if (!string.IsNullOrEmpty(FamilyOriginNo) && FamilyOrigin == null) { dr["导入错误"] = "【家庭出身】数据字典找不到对应的数据!"; failDt.Rows.Add(dr.ItemArray); continue; } var OverseasChineseNo = dr["港澳台侨"].ToString().Trim(); var OverseasChinese = detailList.FirstOrDefault(x => x.F_ItemCode == "BCdOverseasChinese" && x.F_ItemName == OverseasChineseNo); if (!string.IsNullOrEmpty(OverseasChineseNo) && OverseasChinese == null) { dr["导入错误"] = "【港澳台侨】数据字典找不到对应的数据!"; failDt.Rows.Add(dr.ItemArray); continue; } var GraduateNo = dr["本专科"].ToString().Trim(); var Graduate = detailList.FirstOrDefault(x => x.F_ItemCode == "CollegeType" && x.F_ItemName == GraduateNo); if (!string.IsNullOrEmpty(GraduateNo) && Graduate == null) { dr["导入错误"] = "【本专科】数据字典找不到对应的数据!"; failDt.Rows.Add(dr.ItemArray); continue; } var GraduateYear = string.IsNullOrEmpty(dr["毕业时间"].ToString().Trim()) ? "" : dr["毕业时间"].ToString().Trim(); if (!string.IsNullOrEmpty(GraduateYear) && !IsDate(GraduateYear)) { dr["导入错误"] = "【毕业时间】格式不正确!"; failDt.Rows.Add(dr.ItemArray); continue; } #endregion //写入要导入的数据 if (!string.IsNullOrEmpty(dr["学籍号"].ToString().Trim())) { stuInfoBasic.StuCode = dr["学籍号"].ToString().Trim(); } if (!string.IsNullOrEmpty(dr["通知书号"].ToString().Trim())) { stuInfoBasic.NoticeNo = dr["通知书号"].ToString().Trim(); } if (!string.IsNullOrEmpty(dr["考生号"].ToString().Trim())) stuInfoBasic.ksh = dr["考生号"].ToString().Trim(); stuInfoBasic.GenderNo = dr["性别"].ToString().Trim() == "女" ? false : true; if (!string.IsNullOrEmpty(birthday)) { stuInfoBasic.Birthday = Convert.ToDateTime(birthday); } if (!string.IsNullOrEmpty(dr["身份证号"].ToString().Trim())) stuInfoBasic.IdentityCardNo = dr["身份证号"].ToString().Trim(); stuInfoBasic.NationalityNo = Nationality?.F_ItemValue; stuInfoBasic.PartyFaceNo = PartyFace?.F_ItemValue; stuInfoBasic.EduSystem = EduSystemEntity?.F_ItemValue; if (!string.IsNullOrEmpty(registerDate)) { stuInfoBasic.RegisterDate = Convert.ToDateTime(registerDate); } if (!string.IsNullOrEmpty(entranceDate)) { stuInfoBasic.EntranceDate = Convert.ToDateTime(entranceDate); } if (!string.IsNullOrEmpty(dr["通讯地址"].ToString().Trim())) stuInfoBasic.MailAddress = dr["通讯地址"].ToString().Trim(); if (!string.IsNullOrEmpty(dr["联系电话"].ToString().Trim())) stuInfoBasic.mobile = dr["联系电话"].ToString().Trim(); if (!string.IsNullOrEmpty(dr["户口所在地"].ToString().Trim())) stuInfoBasic.FatherUnit = dr["户口所在地"].ToString().Trim(); if (!string.IsNullOrEmpty(dr["档案所在地"].ToString().Trim())) stuInfoBasic.MatherUnit = dr["档案所在地"].ToString().Trim(); if (!string.IsNullOrEmpty(dr["户籍所在地"].ToString().Trim())) stuInfoBasic.Domicile = dr["户籍所在地"].ToString().Trim(); stuInfoBasic.ResidenceNo = residence?.F_ItemValue; stuInfoBasic.F_ProvinceId = provinceEntity?.PCODE; stuInfoBasic.F_CityId = cityEntity?.CCODE; stuInfoBasic.F_CountyId = areaEntity?.ACODE; stuInfoBasic.DepositBank = depositBankItem?.F_ItemValue; if (!string.IsNullOrEmpty(dr["开户卡账号"].ToString().Trim())) stuInfoBasic.BankCard = dr["开户卡账号"].ToString().Trim(); if (!string.IsNullOrEmpty(dr["开户银行位置"].ToString().Trim())) stuInfoBasic.BankLocation = dr["开户银行位置"].ToString().Trim(); if (!string.IsNullOrEmpty(dr["邮政编码"].ToString().Trim())) stuInfoBasic.PostalCode = dr["邮政编码"].ToString().Trim(); stuInfoBasic.IsSingle = single; if (!string.IsNullOrEmpty(dr["父亲姓名"].ToString().Trim())) stuInfoBasic.FatherName = dr["父亲姓名"].ToString().Trim(); if (!string.IsNullOrEmpty(dr["父亲身份证号"].ToString().Trim())) stuInfoBasic.OneIdCardNo = dr["父亲身份证号"].ToString().Trim(); if (!string.IsNullOrEmpty(dr["父亲电话"].ToString().Trim())) stuInfoBasic.FatherPhone = dr["父亲电话"].ToString().Trim(); if (!string.IsNullOrEmpty(dr["父亲户籍地址"].ToString().Trim())) stuInfoBasic.OneDomicile = dr["父亲户籍地址"].ToString().Trim(); if (!string.IsNullOrEmpty(dr["父亲现住址"].ToString().Trim())) stuInfoBasic.OneAddress = dr["父亲现住址"].ToString().Trim(); if (!string.IsNullOrEmpty(dr["母亲姓名"].ToString().Trim())) stuInfoBasic.MatherName = dr["母亲姓名"].ToString().Trim(); if (!string.IsNullOrEmpty(dr["母亲身份证号"].ToString().Trim())) stuInfoBasic.TwoIdCardNo = dr["母亲身份证号"].ToString().Trim(); if (!string.IsNullOrEmpty(dr["母亲电话"].ToString().Trim())) stuInfoBasic.MatherPhone = dr["母亲电话"].ToString().Trim(); if (!string.IsNullOrEmpty(dr["母亲户籍地址"].ToString().Trim())) stuInfoBasic.TwoDomicile = dr["母亲户籍地址"].ToString().Trim(); if (!string.IsNullOrEmpty(dr["母亲现住址"].ToString().Trim())) stuInfoBasic.TwoAddress = dr["母亲现住址"].ToString().Trim(); if (!string.IsNullOrEmpty(dr["监护人姓名"].ToString().Trim())) stuInfoBasic.GuardianName = dr["监护人姓名"].ToString().Trim(); if (!string.IsNullOrEmpty(dr["监护人身份证号"].ToString().Trim())) stuInfoBasic.GuardianIdCardNo = dr["监护人身份证号"].ToString().Trim(); if (!string.IsNullOrEmpty(dr["监护人电话"].ToString().Trim())) stuInfoBasic.GuardianPhone = dr["监护人电话"].ToString().Trim(); if (!string.IsNullOrEmpty(dr["监护人户籍地址"].ToString().Trim())) stuInfoBasic.GuardianDomicile = dr["监护人户籍地址"].ToString().Trim(); if (!string.IsNullOrEmpty(dr["监护人现住址"].ToString().Trim())) stuInfoBasic.GuardianAddress = dr["监护人现住址"].ToString().Trim(); stuInfoBasic.FamilyOriginNo = FamilyOrigin?.F_ItemValue; stuInfoBasic.OverseasChineseNo = OverseasChinese?.F_ItemValue; stuInfoBasic.GraduateNo = Graduate?.F_ItemValue; if (!string.IsNullOrEmpty(dr["毕业证号"].ToString().Trim())) stuInfoBasic.DiplomaNo = dr["毕业证号"].ToString().Trim(); stuInfoBasic.GraduateYear = GraduateYear; if (!string.IsNullOrEmpty(dr["毕业证书备注"].ToString().Trim())) stuInfoBasic.DiplomaRemark = dr["毕业证书备注"].ToString().Trim(); if (!string.IsNullOrEmpty(dr["校内地址"].ToString().Trim())) stuInfoBasic.InSchoolAddress = dr["校内地址"].ToString().Trim(); if (!string.IsNullOrEmpty(dr["校内电话"].ToString().Trim())) stuInfoBasic.InSchoolTelephone = dr["校内电话"].ToString().Trim(); if (!string.IsNullOrEmpty(dr["QQ"].ToString().Trim())) stuInfoBasic.QQ = dr["QQ"].ToString().Trim(); if (!string.IsNullOrEmpty(dr["特长"].ToString().Trim())) stuInfoBasic.GoodAt = dr["特长"].ToString().Trim(); if (!string.IsNullOrEmpty(dr["备注"].ToString().Trim())) stuInfoBasic.Remark = dr["备注"].ToString().Trim(); insertedorderlist.Add(stuInfoBasic); snum++; } } catch (Exception ex) { fnum++; dr["导入错误"] = ex.Message; failDt.Rows.Add(dr.ItemArray); } } //更新 db.Update(insertedorderlist); db.Commit(); if (failDt.Rows.Count > 0) { string errordt = failDt.ToJson(); cache.Write(cacheKey + fileId, errordt, CacheId.excel); } } return (snum, failDt.Rows.Count); } catch (Exception ex) { db.Rollback(); if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 判断是否是日期格式 /// /// /// private bool IsDate(string strDate) { try { DateTime.Parse(strDate); return true; } catch { return false; } } } }