/// <summary> /// 简化程序(把学生数据分为六张表,分为六个方法进行) Dorm_DormStudent /// </summary> /// <param name="oldDb"></param> /// <param name="newDb"></param> public void ProcessSchoolStudentSysUserDormStudent(NanHangAccept oldDb, NHModel newDb) { var oldData = oldDb.Dorm_DormStudent.ToList(); var newData = newDb.StudentInfoes.Select(p => new Dorm_DormStudent { F_Student_ID = p.studentId, F_Memo = p.studentBuildingId, F_Sex = p.studentSex }); var StudentIds = oldData.Select(p => p.F_Student_ID).ToList(); var InsertStudent = new List <Dorm_DormStudent>(); foreach (var info in newData) { if (StudentIds.Contains(info.F_Student_ID)) { string[] split = info.F_Memo.Trim().Replace("栋", "#").Split('#'); if (split.Length == 2) { string ClassRoomId = oldDb.dorm_dorm.Where(p => p.F_Title.Equals(info.F_Memo)).Select(p => p.F_Id).ToList().FirstOrDefault(); oldDb.Set <Dorm_DormStudent>().Where(p => p.F_Student_ID == info.F_Student_ID).Update(p => new Dorm_DormStudent { F_DormId = ClassRoomId, F_Bed_ID = "", F_Sex = info.F_Sex, F_Memo = info.F_Memo }); } } else { try { string[] split = info.F_Memo.Trim().Replace("栋", "#").Split('#'); if (split.Length == 2) { string ClassRoomId = oldDb.dorm_dorm.Where(p => p.F_Title.Equals(info.F_Memo)).Select(p => p.F_Id).ToList().FirstOrDefault(); var student = new Dorm_DormStudent(); student.F_Id = Guid.NewGuid().ToString(); student.F_CreatorTime = DateTime.Now; student.F_Student_ID = info.F_Student_ID; student.F_DormId = ClassRoomId; student.F_Bed_ID = ""; student.F_Sex = info.F_Sex; student.F_Memo = info.F_Memo; InsertStudent.Add(student); } } catch { } } } //oldDb.BulkInsert(InsertStudent); oldDb.Dorm_DormStudent.AddRange(InsertStudent); oldDb.SaveChanges(); }
/// <summary> /// 处理同步组织机构信息(学生组织结构) /// </summary> public void ProcessOrgInfoStu() { Console.WriteLine("开始同步组织机构信息: 南航项目 --> " + DateTime.Now.ToLocalTime()); var sw = new Stopwatch(); sw.Start(); //校方数据集(分为两种:修改数据和新增数据) var newDb = new NHModel(); var newData = newDb.OrganizationInfo_stu.Select(p => new Sys_Organize { F_Id = p.OrgId, F_FullName = p.OrgName, F_ParentId = p.ParentOrgId, F_CreatorTime = p.CreatedTime, F_LastModifyTime = p.LastUpdatedTime, F_EnCode = p.OrgId, F_DeleteMark = false }).ToList(); //获取生产环境数据库数据集 var oldDb = new NanHangAccept(); //var oldData = oldDb.Sys_Organize.Select(p => new Sys_Organize { F_Id = p.F_Id, F_FullName = p.F_FullName, F_ParentId = p.F_ParentId, F_CreatorTime = p.F_CreatorTime, F_LastModifyTime = p.F_LastModifyTime }).ToList(); var oldData = oldDb.Sys_Organize.ToList(); var interList = newData.Intersect(oldData).ToList(); //取交集 (不作任何操作) oldData = oldData.Except(interList).ToList(); //将交集从内存删除,以节省内存空间并减少循环次数 newData = newData.Except(interList).ToList(); var addList = newData.Except(oldData).ToList(); //取差集 (新增和修改数据) var idList = oldData.Select(p => p.F_Id).ToList(); var endList = new List <Sys_Organize>(); foreach (var org in addList) { if (org.F_ParentId == null) { org.F_ParentId = "2"; } if (idList.Contains(org.F_Id)) { oldDb.Set <Sys_Organize>().Where(p => p.F_Id == org.F_Id).Update(p => new Sys_Organize { F_ParentId = org.F_ParentId, F_FullName = org.F_FullName, F_CreatorTime = org.F_CreatorTime, F_LastModifyTime = org.F_LastModifyTime }); } else { endList.Add(org); } } //newDb.BulkDelete(newDb.OrganizationInfo_stu.ToList()); //操作完成后,删除取出来的数据 //oldDb.BulkInsert(endList); oldDb.Sys_Organize.AddRange(endList); oldDb.SaveChanges(); oldDb.Dispose(); newDb.Dispose(); sw.Stop(); Console.WriteLine("南航项目:同步组织机构信息结束 --> 合计耗时:" + sw.ElapsedMilliseconds / 1000 + "s"); }
/// <summary> /// 简化程序(把学生数据分为六张表,分为六个方法进行) Sys_User /// </summary> /// <param name="oldDb"></param> /// <param name="newDb"></param> public void ProcessSchoolStudentSysUser(NanHangAccept oldDb, NHModel newDb) { var oldData = oldDb.Sys_User.ToList(); var newData = newDb.StudentInfoes.Select(p => new Sys_User { F_Id = p.studentId, F_RealName = p.studentName, F_Account = p.LoginId, F_OrganizeId = p.orgId, F_MobilePhone = p.studentPhone, F_CreatorTime = DateTime.Now, F_DepartmentId = p.studentClass, F_HeadIcon = p.ImgUri }); var Ids = oldData.Select(p => p.F_Id).ToList(); var insertList = new List <Sys_User>(); foreach (var sysUser in newData) { sysUser.F_RoleId = "student"; sysUser.F_DutyId = "studentDuty"; sysUser.F_CreatorTime = DateTime.Now; sysUser.F_DeleteMark = false; sysUser.F_EnabledMark = true; if (Ids.Contains(sysUser.F_Id)) { oldDb.Set <Sys_User>().Where(p => p.F_Id == sysUser.F_Id).Update(p => new Sys_User { F_RealName = sysUser.F_RealName, F_Account = sysUser.F_Account, F_OrganizeId = sysUser.F_OrganizeId, F_MobilePhone = sysUser.F_MobilePhone, F_RoleId = sysUser.F_RoleId, F_DutyId = sysUser.F_DutyId, F_CreatorTime = sysUser.F_CreatorTime, F_DeleteMark = false, F_EnabledMark = true, F_DepartmentId = sysUser.F_DepartmentId }); } else { insertList.Add(sysUser); } } //oldDb.BulkInsert(insertList); oldDb.Sys_User.AddRange(insertList); oldDb.SaveChanges(); }
/// <summary> /// 简化程序(把教师数据分为四张表,分为四个方法进行) Sys_User /// </summary> /// <param name="oldDb"></param> /// <param name="newData"></param> public void ProcessSchoolTeacherSysUser(NanHangAccept oldDb, NHModel newDb) { var newData = newDb.TeacherInfoes.Select(p => new Sys_User { F_Id = p.teacherId, F_RealName = p.teacherName, F_Account = p.LoginId, F_OrganizeId = p.orgId, F_MobilePhone = p.teacherPhone, F_CreatorTime = DateTime.Now, F_DepartmentId = p.orgId, F_HeadIcon = p.ImgUri }); var oldData = oldDb.Sys_User.ToList(); var addList = newData; var Ids = oldData.Select(p => p.F_Id).ToList(); var InsertList = new List <Sys_User>(); foreach (var tea in addList) { tea.F_RoleId = "teacher"; tea.F_DutyId = "teacherDuty"; tea.F_CreatorTime = DateTime.Now; tea.F_DeleteMark = false; tea.F_EnabledMark = true; if (Ids.Contains(tea.F_Id)) { oldDb.Set <Sys_User>().Where(p => p.F_Id == tea.F_Id).Update(p => new Sys_User { F_RealName = tea.F_RealName, F_Account = tea.F_Account, F_OrganizeId = tea.F_OrganizeId, F_MobilePhone = tea.F_MobilePhone, F_RoleId = tea.F_RoleId, F_DutyId = tea.F_DutyId, F_CreatorTime = tea.F_CreatorTime, F_DeleteMark = false, F_EnabledMark = true, F_DepartmentId = tea.F_DepartmentId }); } else { InsertList.Add(tea); } } //oldDb.BulkInsert(InsertList); oldDb.Sys_User.AddRange(InsertList); oldDb.SaveChanges(); }
/// <summary> /// 简化程序(把学生数据分为六张表,分为六个方法进行) School_Students /// </summary> /// <param name="oldDb"></param> /// <param name="newDb"></param> public void ProcessSchoolStudentInfo(NanHangAccept oldDb, NHModel newDb) { var oldData = oldDb.School_Students.ToList(); var newData = newDb.StudentInfoes.Select(p => new School_Students { F_Id = p.studentId, F_Name = p.studentName, F_Users_ID = p.studentId, F_StudentNum = p.studentNo, //F_Class_ID = p.orgId, F_Class_ID = p.studentClass, F_Gender = p.studentSex, F_CredType = p.certificateType, F_CredNum = p.certificateNo, F_Introduction = p.studentMeto, F_FacePic_File = p.ImgUri, F_Tel = p.studentPhone }).ToList(); var Ids = oldData.Select(p => p.F_Id).ToList(); var insertList = new List <School_Students>(); foreach (var stu in newData) { string GradeID = oldDb.Sys_Organize.Where(p => p.F_Id == stu.F_Class_ID).Select(p => p.F_ParentId).ToList().FirstOrDefault(); stu.F_Grade_ID = GradeID; stu.F_Divis_ID = oldDb.Sys_Organize.Where(p => p.F_Id == GradeID).Select(p => p.F_ParentId).ToList().FirstOrDefault(); stu.F_DeleteMark = false; stu.F_EnabledMark = true; if (Ids.Contains(stu.F_Id)) { oldDb.Set <School_Students>().Where(p => p.F_Id == stu.F_Id).Update(p => new School_Students { F_Id = stu.F_Id, F_Name = stu.F_Name, F_Users_ID = stu.F_Users_ID, F_StudentNum = stu.F_StudentNum, F_Class_ID = stu.F_Class_ID, F_Gender = stu.F_Gender, F_CredType = stu.F_CredType, F_CredNum = stu.F_CredNum, F_Introduction = stu.F_Introduction, //F_FacePic_File = stu.F_FacePic_File, F_Tel = stu.F_Tel, F_Grade_ID = stu.F_Grade_ID, F_Divis_ID = stu.F_Divis_ID, F_DeleteMark = false, F_EnabledMark = true }); //修改大华闸机学生数据 //PersonMoudle personMoudle = contactMoudleStudent(oldDb, stu.F_Id); //personMoudle.roleId = "student001"; //DHAccount.PUSH_DH_UPDATE_PERSON(personMoudle); } else { insertList.Add(stu); } } //oldDb.BulkInsert(insertList); oldDb.School_Students.AddRange(insertList); oldDb.SaveChanges(); //修改sys_user表的主机id为自动生成的ID,并修改student表的sys_userID为sys_user表生成的主机id //string updateSql = "update student set student.F_User_ID = sysUser.F_ID from sys_user sysUser, school_student student where sysUser.F_Account = student.F_User_ID"; //SqlHelper.ExecuteNonQuery(updateSql); //开始增量数据至大华闸机 //foreach (School_Students stu in insertList) //{ // PersonMoudle personMoudle = contactMoudleStudent(oldDb, stu.F_Id); // personMoudle.roleId = "student001"; // DHAccount.PUSH_DH_ADD_PERSON(personMoudle); //} }
/// <summary> /// 简化程序(把教师数据分为四张表,分为四个方法进行) School_Teachers /// </summary> /// <param name="oldDb"></param> /// <param name="newData"></param> public void ProcessSchoolTeacherInfo(NanHangAccept oldDb, NHModel newDb) { //获取学校的数据集 var newData = newDb.TeacherInfoes.Select(p => new School_Teachers { F_Id = p.teacherId, F_Name = p.teacherName, F_User_ID = p.teacherId, F_Divis_ID = p.orgId, F_Num = p.teacherNo, F_MobilePhone = p.teacherPhone, F_CredType = p.certificateType, F_CredNum = p.certificateNo, F_FacePhoto = p.ImgUri, F_Gender = p.Sex.ToString() }).ToList(); //获取本地生产环境数据集 var oldData = oldDb.School_Teachers.ToList(); var addList = newData.Except(oldData).ToList(); //取新数据对于生产环境数据的差集,这个结果就是添加或修改的数据集 var ids = oldData.Select(p => p.F_Id).ToList(); var InsertList = new List <School_Teachers>(); //批量新增数据集 foreach (var tea in addList) { if (ids.Contains(tea.F_Id)) { oldDb.Set <School_Teachers>().Where(p => p.F_Id == tea.F_Id).Update(p => new School_Teachers { F_Name = tea.F_Name, F_User_ID = tea.F_User_ID, F_Divis_ID = tea.F_Divis_ID, F_Num = tea.F_Num, F_MobilePhone = tea.F_MobilePhone, F_CredType = tea.F_CredType, F_CredNum = tea.F_CredNum, //F_FacePhoto = tea.F_FacePhoto, F_LastModifyTime = DateTime.Now, F_Gender = tea.F_Gender, F_DeleteMark = false, F_EnabledMark = true }); //修改大华闸机学生数据 //PersonMoudle personMoudle = contackMoudleTeacher(oldDb, tea.F_Id); //personMoudle.roleId = "teacher001"; //DHAccount.PUSH_DH_UPDATE_PERSON(personMoudle); } else { tea.F_CreatorTime = DateTime.Now; tea.F_LastModifyTime = DateTime.Now; tea.F_DeleteMark = false; tea.F_EnabledMark = true; InsertList.Add(tea); } } //oldDb.BulkInsert(InsertList); oldDb.School_Teachers.AddRange(InsertList); oldDb.SaveChanges(); //修改sys_user表的主机id为自动生成的ID,并修改teacher表的sys_userID为sys_user表生成的主机id //string updateSql = "update teacher set teacher.F_User_ID = sysUser.F_ID from sys_user sysUser, school_teacher teacher where sysUser.F_Account = teacher.F_User_ID"; //SqlHelper.ExecuteNonQuery(updateSql); //开始增量数据至大华闸机 //foreach (School_Teachers teacher in InsertList) //{ // PersonMoudle personMoudle = contackMoudleTeacher(oldDb, teacher.F_Id); // personMoudle.roleId = "teacher001"; // DHAccount.PUSH_DH_ADD_PERSON(personMoudle); //} }