using Dapper; using Learun.DataBase.Repository; using Learun.Util; using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using System.Text; using Learun.Application.Base.AuthorizeModule; using Learun.Application.Base.SystemModule; using Learun.Application.Organization; using Learun.Application.TwoDevelopment.PersonnelManagement; namespace Learun.Application.TwoDevelopment.EducationalAdministration { /// /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园 /// Copyright (c) 2013-2018 北京泉江科技有限公司 /// 创 建:超级管理员 /// 日 期:2019-01-29 17:31 /// 描 述:教师信息管理 /// public class EmpInfoService : RepositoryFactory { private object Select; #region 获取数据 /// /// 获取页面显示列表数据 /// /// 查询参数 /// public IEnumerable GetPageList(Pagination pagination, string queryJson) { try { var strSql = new StringBuilder(); strSql.Append("SELECT t.*,b.F_Order as DeptOrder "); strSql.Append(" FROM EmpInfo t left join " + BaseRepository().getDbConnection().Database + ".dbo.LR_Base_Department b on t.F_DepartmentId=b.F_DepartmentId "); strSql.Append(" WHERE 1=1 "); var queryParam = queryJson.ToJObject(); // 虚拟参数 var dp = new DynamicParameters(new { }); if (!queryParam["EmpNo"].IsEmpty()) { dp.Add("EmpNo", queryParam["EmpNo"].ToString(), DbType.String); strSql.Append(" AND t.EmpNo = @EmpNo "); } if (!queryParam["EmpName"].IsEmpty()) { dp.Add("EmpName", "%" + queryParam["EmpName"].ToString() + "%", DbType.String); strSql.Append(" AND t.EmpName Like @EmpName "); } if (!queryParam["mobile"].IsEmpty()) { dp.Add("mobile", "%" + queryParam["mobile"].ToString() + "%", DbType.String); strSql.Append(" AND t.mobile Like @mobile "); } if (!queryParam["DeptNo"].IsEmpty()) { dp.Add("DeptNo", queryParam["DeptNo"].ToString(), DbType.String); strSql.Append(" AND t.DeptNo = @DeptNo "); } if (!queryParam["ProvinceNo"].IsEmpty()) { dp.Add("ProvinceNo", queryParam["ProvinceNo"].ToString(), DbType.String); strSql.Append(" AND t.ProvinceNo = @ProvinceNo "); } if (!queryParam["RegionNo"].IsEmpty()) { dp.Add("RegionNo", queryParam["RegionNo"].ToString(), DbType.String); strSql.Append(" AND t.RegionNo = @RegionNo "); } if (!queryParam["F_CompanyId"].IsEmpty()) { dp.Add("F_CompanyId", queryParam["F_CompanyId"].ToString(), DbType.String); strSql.Append(" AND t.F_CompanyId = @F_CompanyId "); } if (!queryParam["F_DepartmentId"].IsEmpty()) { dp.Add("F_DepartmentId", queryParam["F_DepartmentId"].ToString(), DbType.String); strSql.Append(" AND t.F_DepartmentId = @F_DepartmentId "); } if (!queryParam["BCdCultureDegree"].IsEmpty()) { dp.Add("BCdCultureDegree", queryParam["BCdCultureDegree"].ToString(), DbType.String); strSql.Append(" AND t.BCdCultureDegree = @BCdCultureDegree "); } if (!queryParam["BCdPartyFace"].IsEmpty()) { dp.Add("BCdPartyFace", queryParam["BCdPartyFace"].ToString(), DbType.String); strSql.Append(" AND t.BCdPartyFace = @BCdPartyFace "); } if (!queryParam["NationalityNo"].IsEmpty())//民族 { dp.Add("NationalityNo", queryParam["NationalityNo"].ToString(), DbType.String); strSql.Append(" AND t.NationalityNo = @NationalityNo "); } if (!queryParam["PartyFaceNo"].IsEmpty())//政治面貌 { dp.Add("PartyFaceNo", queryParam["PartyFaceNo"].ToString(), DbType.String); strSql.Append(" AND t.PartyFaceNo = @PartyFaceNo "); } if (!queryParam["GenderNo"].IsEmpty())//性别 { dp.Add("GenderNo", queryParam["GenderNo"].ToString(), DbType.String); strSql.Append(" AND t.GenderNo = @GenderNo "); } if (!queryParam["DegreeNo"].IsEmpty())//学位 { dp.Add("DegreeNo", queryParam["DegreeNo"].ToString(), DbType.String); strSql.Append(" AND t.DegreeNo = @DegreeNo "); } if (!queryParam["ProfessionalTitle"].IsEmpty())//职称 { dp.Add("ProfessionalTitle", queryParam["ProfessionalTitle"].ToString(), DbType.String); strSql.Append(" AND t.ProfessionalTitle = @ProfessionalTitle "); } if (!queryParam["HighestRecord"].IsEmpty())//最高学历 { dp.Add("HighestRecord", queryParam["HighestRecord"].ToString(), DbType.String); strSql.Append(" AND t.HighestRecord = @HighestRecord "); } if (!queryParam["CompilationCategory"].IsEmpty())//人员身份 { dp.Add("CompilationCategory", queryParam["CompilationCategory"].ToString(), DbType.String); strSql.Append(" AND t.CompilationCategory = @CompilationCategory "); } if (!queryParam["CheckMark"].IsEmpty())//是否审核 { dp.Add("CheckMark", queryParam["CheckMark"].ToString(), DbType.String); strSql.Append(" AND t.CheckMark = @CheckMark "); } if (!queryParam["IsInActiveStatus"].IsEmpty())//员工状态 { dp.Add("IsInActiveStatus", queryParam["IsInActiveStatus"].ToString(), DbType.String); strSql.Append(" AND t.IsInActiveStatus = @IsInActiveStatus "); } var result = new List(); result = this.BaseRepository("CollegeMIS").FindList(strSql.ToString(), dp, pagination).ToList(); foreach (var item in result) { var certificate = this.BaseRepository().FindList(x => x.TCName == item.EmpId); if (certificate.Any()) { item.CertificateNames = string.Join(",", certificate.Select(x => x.TCType).ToArray()); item.CertificateDates = string.Join(",", certificate.Select(x => x.TCTime).ToArray()); } } return result; } 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); } } } public IEnumerable GetAllList() { try { var dept = this.BaseRepository().FindList(); var list= this.BaseRepository("CollegeMIS").FindList(); foreach (var item in list) { item.DepartmentName = dept.FirstOrDefault(x=>x.F_DepartmentId==item.F_DepartmentId)?.F_FullName; item.DepartmentNo = dept.FirstOrDefault(x => x.F_DepartmentId == item.F_DepartmentId)?.F_EnCode; ; } return list; } 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 "); strSql.Append(@" t.EmpId, t.EmpNo, t.EmpName, t.F_CompanyId, t.F_DepartmentId, t.DeptNo, t.GenderNo, t.Photo, t.Birthday, t.NationalityNo, t.PartyFaceNo, t.IdentityCardNo, t.CultureDegreeNo, t.DegreeNo, t.mobile, t.EMail "); strSql.Append(" FROM EmpInfo t "); strSql.Append(" WHERE 1=1 "); var queryParam = queryJson.ToJObject(); // 虚拟参数 var dp = new DynamicParameters(new { }); return this.BaseRepository("CollegeMIS").FindList(strSql.ToString(), dp); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 获取EmpInfo表实体数据 /// 主键 /// /// public EmpInfoEntity GetEmpInfoEntity(string keyValue) { try { return this.BaseRepository("CollegeMIS").FindEntity(keyValue); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } public EmpInfoEntity GetEmpInfoEntityByNo(string keyValue) { try { return this.BaseRepository("CollegeMIS").FindEntity(m => m.EmpNo == keyValue); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } public List GetEmpInfoEntityByDepartment(string keyValue) { try { return this.BaseRepository("CollegeMIS").FindList(m => m.F_DepartmentId == keyValue).ToList(); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } public EmpInfoEntity GetEmpInfoEntityById(string keyValue) { try { return this.BaseRepository("CollegeMIS").FindEntity(m => m.EmpId == keyValue); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } public IEnumerable GetEmpInfoEntitiesByName(string name) { try { return this.BaseRepository("CollegeMIS").FindList(x => x.EmpName == name); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } public EmpInfoEntity GetEmpInfoEntityByIdCard(string idcard) { try { return this.BaseRepository("CollegeMIS").FindEntity(m => m.IdentityCardNo == idcard); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 教师年龄比例 /// /// public EmpInfoEntity GetEmpInfoAgeRate() { try { var strSql = new StringBuilder(); strSql.Append(@"select sum(case when DATEDIFF(YYYY, t.Birthday, GETDATE()) > 60 then 1 else 0 end) as age1, sum(case when DATEDIFF(YYYY, t.Birthday, GETDATE()) > 50 and DATEDIFF(YYYY, t.Birthday, GETDATE()) <= 60 then 1 else 0 end) as age2, sum(case when DATEDIFF(YYYY, t.Birthday, GETDATE()) > 40 and DATEDIFF(YYYY, t.Birthday, GETDATE()) <= 50 then 1 else 0 end) as age3, sum(case when DATEDIFF(YYYY, t.Birthday, GETDATE()) > 30 and DATEDIFF(YYYY, t.Birthday, GETDATE()) <= 40 then 1 else 0 end) as age4, sum(case when DATEDIFF(YYYY, t.Birthday, GETDATE()) > 20 and DATEDIFF(YYYY, t.Birthday, GETDATE()) <= 30 then 1 else 0 end) as age5 from empinfo t where t.Birthday is not null"); return this.BaseRepository("CollegeMIS").FindEntity(strSql.ToString(), null); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } #endregion #region 提交数据 /// /// 生成教师帐号 /// public void GenerateAccout(string empId = null) { try { var teacherList = new List(); if (empId != null) { var listIds = empId.Split(','); teacherList = this.BaseRepository("CollegeMIS") .FindList(a => listIds.Contains(a.EmpId) && a.CheckMark == true).ToList(); } else { teacherList = this.BaseRepository("CollegeMIS").FindList(a => a.CheckMark == true).ToList(); } UserRelationIBLL userRelationIBLL = new UserRelationBLL(); UserIBLL userIBLL = new UserBLL(); var alluserlist = userIBLL.GetAllList().Where(m => m.F_Description == "教师"); var roleId = Config.GetValue("GenerateTeachersRoleId"); 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 teacherList) { if (alluserlist.Count(m => m.F_Account == tEntity.EmpNo) > 0) { continue; } var annexesFileEntity = this.BaseRepository().FindEntity(a => a.F_FolderId == tEntity.Photo); var url = ""; if (annexesFileEntity != null) { url = annexesFileEntity.F_FilePath; url = "/Resource/" + url.Substring(url.IndexOf(annexesFileEntity.F_CreateUserId), url.Length - url.IndexOf(annexesFileEntity.F_CreateUserId)); } UserEntity userbase = new UserEntity(); userbase.F_Account = tEntity.EmpNo; userbase.F_RealName = tEntity.EmpName; userbase.F_EnCode = tEntity.EmpNo; 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_CompanyId; userbase.F_DepartmentId = tEntity.F_DepartmentId; userbase.F_IdentityCardNo = tEntity.IdentityCardNo; userbase.F_Order = tEntity.F_Order; 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(string empId = null) { try { UserIBLL userIBLL = new UserBLL(); var teacherList = new List(); if (empId != null) { var listIds = empId.Split(','); teacherList = this.BaseRepository("CollegeMIS") .FindList(a => listIds.Contains(a.EmpId)).ToList(); } else { teacherList = this.BaseRepository("CollegeMIS").FindList().ToList(); } var baseTeacherList = userIBLL.GetAllList().Where(m => m.F_Description == "教师"); foreach (var baseTeacher in baseTeacherList) { var num = 0; var teacher = teacherList.FirstOrDefault(a => a.EmpNo == baseTeacher.F_Account); if (teacher != null) { 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_CompanyId) { baseTeacher.F_CompanyId = teacher.F_CompanyId; num++; } if (baseTeacher.F_DepartmentId != teacher.F_DepartmentId) { baseTeacher.F_DepartmentId = teacher.F_DepartmentId; num++; } if (baseTeacher.F_RealName != teacher.EmpName) { baseTeacher.F_RealName = teacher.EmpName; 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 void Lock(string keyValue) { var db = this.BaseRepository("CollegeMIS").BeginTrans(); try { //单个启用 //this.BaseRepository("CollegeMIS").ExecuteBySql("update EmpInfo set CheckMark=1 where EmpId='" + keyValue + "'"); //多个启用 var keyValueArr = keyValue.Split(','); foreach (var item in keyValueArr) { db.ExecuteBySql("update EmpInfo set CheckMark=1 where EmpId='" + item + "'"); } db.Commit(); } catch (Exception ex) { db.Rollback(); if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } public void UnLock(string keyValue) { var db = this.BaseRepository("CollegeMIS").BeginTrans(); try { //单个停用 //this.BaseRepository("CollegeMIS").ExecuteBySql("update EmpInfo set CheckMark=0 where EmpId='" + keyValue + "'"); //多个停用 var keyValueArr = keyValue.Split(','); foreach (var item in keyValueArr) { db.ExecuteBySql("update EmpInfo set CheckMark=0 where EmpId='" + item + "'"); } db.Commit(); } catch (Exception ex) { db.Rollback(); if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 审核全部 /// public void CheckAll() { try { this.BaseRepository("CollegeMIS").ExecuteBySql("update EmpInfo set CheckMark=1 "); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 删除实体数据 /// 主键 /// /// public void DeleteEntity(string keyValue) { try { //单个删除 //this.BaseRepository("CollegeMIS").Delete(t => t.EmpId == keyValue); //多个删除 var keyValueArr = keyValue.Split(','); foreach (var item in keyValueArr) { var empinfo = this.BaseRepository("CollegeMIS").FindEntity(t => t.EmpId == item); var userinfo = BaseRepository().FindEntity(m => m.F_Account == empinfo.EmpNo); if (userinfo != null) { BaseRepository().Delete(m => m.F_UserId == userinfo.F_UserId); BaseRepository().Delete(userinfo); } this.BaseRepository("CollegeMIS").Delete(empinfo); } } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 保存实体数据(新增、修改) /// 主键 /// /// public void SaveEntity(string keyValue, EmpInfoEntity entity) { try { UserIBLL userIBLL = new UserBLL(); if (!string.IsNullOrEmpty(keyValue)) { entity.Modify(keyValue); this.BaseRepository("CollegeMIS").Update(entity); 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")); } var baseUser = userIBLL.GetEntityByAccount(entity.EmpNo); if (baseUser != null) { baseUser.F_HeadIcon = url; baseUser.F_RealName = entity.EmpName; baseUser.F_IdentityCardNo = entity.IdentityCardNo; baseUser.F_Mobile = entity.mobile; userIBLL.SaveEntity(baseUser.F_UserId, baseUser); } } else { if (string.IsNullOrEmpty(entity.EmpId)) { //生成编号 var ruleName = ConfigurationManager.AppSettings["EmpNoRule"];// if (ruleName == "jy") { var strHead = DateTime.Now.ToString("yyyyMM"); var SerialNum = 1; var empInfoEntities = this.BaseRepository("CollegeMIS").FindList(a => a.EmpNo.Contains(strHead)); if (empInfoEntities.Count() > 0) { var aa = empInfoEntities.Where(a => a.EmpNo.Length >= 8); var bb = aa.Select(a => a.EmpNo.Substring(a.EmpNo.Length - 2, 2)); var cc = bb.Select(a => int.Parse(a)); SerialNum = cc.Max() + 1; } entity.EmpNo = strHead + SerialNum.ToString().PadLeft(2, '0'); } entity.Create(); } this.BaseRepository("CollegeMIS").Insert(entity); } } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } public void UpdatePhoto(string id, string photo) { BaseRepository("CollegeMIS").ExecuteBySql("update EmpInfo set Photo='" + photo + "' where EmpId='" + id + "'"); } /// /// 保存实体数据(新增、修改) /// 主键 /// /// public void SaveEntity(UserInfo userInfo, string keyValue, EmpInfoEntity entity) { try { if (!string.IsNullOrEmpty(keyValue)) { entity.Modify(keyValue, userInfo); this.BaseRepository("CollegeMIS").Update(entity); } else { entity.Create(userInfo); this.BaseRepository("CollegeMIS").Insert(entity); } } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 保存部门、系部 /// 主键 /// /// public void SaveEditEntity(string keyValue, EmpInfoEntity entity) { var db = this.BaseRepository("CollegeMIS").BeginTrans(); try { if (!string.IsNullOrEmpty(keyValue)) { if (keyValue.IndexOf(',') == -1) { var model = db.FindEntity(keyValue); if (model != null) { if (!string.IsNullOrEmpty(entity.F_CompanyId)) { model.F_CompanyId = entity.F_CompanyId; } if (!string.IsNullOrEmpty(entity.F_DepartmentId)) { model.F_DepartmentId = entity.F_DepartmentId; } if (!string.IsNullOrEmpty(entity.DeptNo)) { model.DeptNo = entity.DeptNo; } db.Update(model); } } else { foreach (var item in keyValue.Split(',')) { var model = db.FindEntity(item); if (model != null) { if (!string.IsNullOrEmpty(entity.F_CompanyId)) { model.F_CompanyId = entity.F_CompanyId; } if (!string.IsNullOrEmpty(entity.F_DepartmentId)) { model.F_DepartmentId = entity.F_DepartmentId; } if (!string.IsNullOrEmpty(entity.DeptNo)) { model.DeptNo = entity.DeptNo; } db.Update(model); } } } } db.Commit(); } catch (Exception ex) { db.Rollback(); if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } /// /// 修改二维码状态 /// /// /// public void UpdateQRCodeStatus(string keyValue, int QRCodeStatus) { try { if (keyValue.Contains(",")) { keyValue = string.Join("','", keyValue.Split(',')); } this.BaseRepository("CollegeMIS").ExecuteBySql($"update EmpInfo set QRCodeStatus='{QRCodeStatus}' where EmpId in ('{keyValue}')"); } catch (Exception ex) { if (ex is ExceptionEx) { throw; } else { throw ExceptionEx.ThrowServiceException(ex); } } } #endregion } }