protected override void DataSync(StringBuilder logBuilder, StringBuilder insertBuilder, StringBuilder updateBuilder, StringBuilder hiddenBuilder, int insertCount, int updateCount, int hiddenCount) { this.studentsEntity.DbEntityDataChangeLogEvent += new DbEntityDataChangeLogHandler(delegate(string head, string content) { this.AppendLog(logBuilder, string.Format("head:{0},content:{1}", head, content)); }); this.classStudentEntity.DbEntityDataChangeLogEvent += new DbEntityDataChangeLogHandler(delegate(string head, string content) { this.AppendLog(logBuilder, string.Format("head:{0},content:{1}", head, content)); }); List<SFITSchools> schools = new SFITSchoolsEntity().LoadAllowSyncData(); IDataSync dataSync = this.DataPoxy; int count = 0; if (schools != null && dataSync != null && (count = schools.Count) > 0) { SFITClassEntity classEntity = new SFITClassEntity(); for (int i = 0; i < count; i++) { List<SFITClass> listClass = classEntity.LoadAllowSyncData(schools[i].SchoolID); if (listClass != null && listClass.Count > 0) { foreach (SFITClass c in listClass) { List<GUIDEx> list = new List<GUIDEx>(); SyncStudents students = dataSync.SyncAllStudents(schools[i].SchoolName, string.Format("{0}", c.JoinYear), c.ClassName); if (students != null && students.Count > 0) { for (int k = 0; k < students.Count; k++) { #region 更新数据。 SFITStudents data = new SFITStudents(); data.StudentID = this.studentsEntity.GetStudentIDByCode(students[k].Code); if (data.StudentID.IsValid) { this.studentsEntity.LoadRecord(ref data); } data.StudentCode = students[k].Code; data.StudentName = students[k].Name; data.IDNumber = students[k].IDCard; data.JoinYear = int.Parse(students[k].JoinYear); data.Gender = this.TransGender(students[k].Gender); data.LastSyncTime = DateTime.Now; data.SyncStatus = 0x02; if (!data.StudentID.IsValid) { data.StudentID = GUIDEx.New; this.AppendLog(insertBuilder, string.Format("(学生ID:{0})[学号:{1}][名称:{2}][性别:{3}][入学年份:{4}][身份证号:{5}];", data.StudentID, data.StudentCode, data.StudentName, data.Gender, data.JoinYear, data.IDNumber)); insertCount++; } else { this.AppendLog(updateBuilder, string.Format("(学生ID:{0})[学号:{1}][名称:{2}][性别:{3}][入学年份:{4}][身份证号:{5}];", data.StudentID, data.StudentCode, data.StudentName, data.Gender, data.JoinYear, data.IDNumber)); updateCount++; } if (this.studentsEntity.UpdateRecord(data)) { //添加到集合。 list.Add(data.StudentID); //建立学生班级关系。 this.classStudentEntity.Delete(data.StudentID); if (!this.classStudentEntity.ExistsData(c.ClassID, data.StudentID)) { SFITClassStudents csdata = new SFITClassStudents(); csdata.ClassID = c.ClassID; csdata.StudentID = data.StudentID; csdata.LastSyncTime = DateTime.Now; this.AppendLog(insertBuilder, string.Format("班级学生关系:[班级ID:{0}][班级代码:{1}][班级名称:{2}] -> [学生ID:{3}][学号:{4}][姓名:{5}]", c.ClassID, c.ClassCode, c.ClassName, data.StudentID, data.StudentCode, data.StudentName)); this.classStudentEntity.UpdateRecord(csdata); } //设置学生角色。 this.SetStudentAccessRole(data); } #endregion } } //未同步的学生将设置为停止同步。 this.studentsEntity.StopSync(c.ClassID, list, ref hiddenBuilder, ref hiddenCount); } } } } }
/// <summary> /// 设置学生角色。 /// </summary> /// <param name="data"></param> void SetStudentAccessRole(SFITStudents data) { if (data != null) { SecurityRoleEmployee roleEmp = new SecurityRoleEmployee(); roleEmp.EmployeeID = data.StudentID; roleEmp.EmployeeName = data.StudentName; roleEmp.RoleID = this.studentUserRoleID; if (roleEmp.RoleID.IsValid) { this.roleEmployeeEntity.UpdateRecord(roleEmp); } } }