public void ExecuteTrans(T_EXT_SyncHistory entity) { var _responses = JsonConvert.DeserializeObject <ReturnResponse <ProductTypeResponse> >(entity.DataJson); foreach (var response in _responses.Data.List) { var _result = ProductItemTypeDomainService.GetInfoByGuid(entity.FromSystem, response.ID.ToString()); if (_result == null) { _result = new T_EXT_ItemType(); } _result.FromSystem = entity.FromSystem; _result.TeachLevelOneOrgID = response.OrgID; _result.TeachLevelOneOrgName = response.OrgName; _result.ProductTypeID = response.ID.ToString(); _result.ProductTypeName = response.Name; _result.NodeFlag = response.ParentID == Guid.Empty ? 1 : 2; _result.ParentProductTypeID = response.ParentID.ToString(); _result.ItemTypeStatus = response.Status; _result.ProductCreatedDate = response.CreateTime; _result.ProductUpdateDate = response.UpdateTime; _result.Describe = response.Describe; _result.POCSource = entity.POCSource; _result.History = entity; if (_result.Id == 0) { ProductItemTypeDomainService.Add(_result); } else { ProductItemTypeDomainService.Save(_result); } } }
public void ExecuteTrans(T_EXT_SyncHistory entity) { var _responses = JsonConvert.DeserializeObject <ReturnResponse <ClassResponse> >(entity.DataJson); //优化查询方法,100条查询一次 List <T_EXT_Class> productClassList = new List <T_EXT_Class>(); if (_responses.Data.List != null && _responses.Data.List.Count > 0) { var count = Math.Ceiling(Convert.ToDecimal(_responses.Data.List.Count) / 100); for (int i = 0; i < count; i++) { string[] classIDs = _responses.Data.List.Select(x => x.ID.ToString()).Skip(i * 100).Take(100).ToArray(); productClassList.AddRange(ProductClassDomainService.GetInfoByGuids(entity.FromSystem, classIDs)); } } foreach (var response in _responses.Data.List) { var _class = productClassList.Where(x => x.FromSystem == entity.FromSystem && Guid.Parse(x.ClassID) == response.ID).FirstOrDefault(); if (_class == null) { _class = new T_EXT_Class(); } _class.FromSystem = entity.FromSystem; _class.TeachLevelOneOrgID = response.OrgID; _class.TeachLevelOneOrgName = response.OrgName; _class.CampusID = response.CampusID.ToString(); _class.TeachNetOrgID = response.AngLiCampusID; _class.TeachNetOrgName = response.CampusName; _class.TeachOrgFinaUnitEOSID = int.Parse(string.IsNullOrEmpty(response.EOSID) ? "0" : response.EOSID); _class.ClassID = response.ID.ToString(); _class.ClassName = response.Name; _class.CourseID = response.ShiftID.ToString(); _class.ClassYear = response.Year; _class.TermID = response.TermID.ToString(); _class.TermName = response.TermName; _class.OpenDate = response.OpenDate; _class.CloseDate = response.CloseDate; _class.MinStudentAmoun = 0; _class.MaxStudentAmoun = response.MaxStudentAmount; _class.TotalClassHour = response.CourseTimes; _class.TotalClassHourName = response.UnitName; _class.ClassMasterUserID = response.AngLiMasterID.ToString(); _class.ClassMasterUserName = response.MasterUserName; _class.ClassStatus = response.Status; _class.ProductCreatedDate = response.CreateTime; _class.ProductUpdateDate = response.UpdateTime; _class.Describe = response.Describe; _class.CourseStartTime = response.CourseStartTime; _class.CourseEndTime = response.CourseEndTime; _class.POCSource = entity.POCSource; _class.History = entity; if (_class.Id == 0) { ProductClassDomainService.Add(_class); } else { ProductClassDomainService.Save(_class); } TeachTimeDomainService.DeleteTeachTime(_class.Id); foreach (var time in response.ClassTimeList) { var _teach = new T_EXT_ClassTeachTime(); _teach.ProductClass = _class; _teach.ClassID = time.ClassID.ToString(); _teach.WeekDay = time.WeekDay; _teach.StartTime = time.StartTime; _teach.EndTime = time.EndTime; _teach.TeacherUserID = time.AngLiTeacherID.HasValue ? time.AngLiTeacherID.Value : Guid.Empty; _teach.TeacherUserName = time.TeacherName; _teach.ClassroomID = time.ClassroomID.ToString(); _teach.ClassroomName = time.ClassroomName; _teach.POCSource = entity.POCSource; _teach.History = entity; TeachTimeDomainService.Add(_teach); } } }
private async Task GetProductDataAsync(JobDataRequest jobData) { await Task.Run(() => { try { _Log4Net.Info($"产品体系同步,日期:{DateTime.Now}"); string url = string.Empty; switch (jobData.DataType.ToString()) { case "ProductTypeList": url = "{1}/angli/GetProductTypeListByUpdateTime?UpdateTime={0}"; break; case "ShiftList": url = "{1}/angli/GetShiftListByUpdateTime?UpdateTime={0}"; break; case "ClassList": url = "{1}/angli/GetClassListByUpdateTime?UpdateTime={0}"; break; } foreach (var system in XgjInterfaceConfigureService.GetInterfaceConfigure(XGJInterfaceConfigureStatus.ProductEnable, XGJInterfaceConfigureCategory.XGJInSideInterface, jobData).Systems) { List <PushConfig> configList = new List <PushConfig>(); configList = system.Configs.ToList(); foreach (var config in configList) { T_EXT_SyncHistory _data = new T_EXT_SyncHistory(); _data.FromSystem = config.FromSystem; _data.TeachLevelOneOrgID = Guid.Parse(config.Value); _data.TeachLevelOneOrgName = config.Name; _data.POCSource = config.POCSource; _data.DataAPIPath = string.Format(url, jobData.QueryDate, ConfigVal.SchoolKeeperURL); _Log4Net.Info($"同步开始,Url:{_data.DataAPIPath}"); try { bool invalid_access_token = true;//token是否失效 默认设置失效 重新获取 (ehs系统每次信息推送都会重新获取token 员工等信息更新,大型事业部过于频繁 所以每次重新获取token) int count = 0; while (invalid_access_token == true && count < 5) { var _token = ConnectTool.GetToken(config, "api"); _Log4Net.Info($"本次同步token:{_token}"); _Log4Net.Info($"开始-请求校管家接口:{_data.DataAPIPath}"); _data.DataJson = ConnectTool.HttpGet(_data.DataAPIPath, _token).Result; _Log4Net.Info($"结束-请求校管家接口:{_data.DataJson}"); var _json = (JObject)JsonConvert.DeserializeObject(_data.DataJson); if (_json["ErrorCode"].ToString() == "200") { _data.SyncStatus = SynchroStatus.ManualSuccess; invalid_access_token = false; } else { _Log4Net.Info($"ErrorCode信息:{_json}"); if (_json["ErrorCode"].ToString() == "401") { invalid_access_token = true; } if (count == 4) { throw new Exception(_json["ErrorMsg"].ToString()); } } count++; } _Log4Net.Info("开始添加数据"); //IoC.Resolve<ITransform>(_data.DataType.ToString()).ExecuteTrans(_data); switch (jobData.DataType.ToString()) { case "ProductTypeList": new PruductTypeTransform().ExecuteTrans(_data); break; case "ShiftList": new ShiftTransform().ExecuteTrans(_data); break; case "ClassList": new ClassTransform().ExecuteTrans(_data); break; } var _unit = UnitOfWorkResult.GetCurrentUow(); if (_unit.IsSuccess) { _unit.Commit(); _Log4Net.Info($"{_data.DataAPIPath}同步数据完成"); } else { _Log4Net.Info($"{_data.DataAPIPath}同步数据提交失败"); } } catch (Exception ex) { if (string.IsNullOrWhiteSpace(_data.DataJson)) { _data.DataJson = ""; } _Log4Net.Error($"产品体系同步数据处理异常:{ex}"); _data.SyncStatus = SynchroStatus.ManualFailure; _data.ErrorMessage = ex.ToString(); var _unit = UnitOfWorkResult.GetCurrentUow(); if (_unit.IsSuccess) { _unit.Commit(); } } } } } catch (Exception ex) { _Log4Net.Error(ex.ToString()); throw ex; } }); }
public void ExecuteTrans(T_EXT_SyncHistory entity) { var _responses = JsonConvert.DeserializeObject <ReturnResponse <ShiftResponse> >(entity.DataJson); foreach (var response in _responses.Data.List) { var _course = ProductCourseDomainService.GetInfoByGuid(entity.FromSystem, response.ID.ToString()); if (_course == null) { _course = new T_EXT_Course(); } _course.FromSystem = entity.FromSystem; _course.TeachLevelOneOrgID = response.OrgID; _course.TeachLevelOneOrgName = response.OrgName; _course.CourseID = response.ID.ToString(); _course.CourseName = response.Name; _course.ProductTypeOneID = response.ProductTypeID.Split('|').FirstOrDefault(); _course.ProductTypeTwoID = response.ProductTypeID.Split('|').LastOrDefault(); _course.CourseYear = response.Year; _course.TermID = response.TermID.ToString(); _course.TermName = response.TermName; _course.GradeID = response.GradeID.ToString(); _course.GradeName = response.GradeName; _course.ClassTypeID = response.ClassType.ToString(); _course.ClassTypeName = response.ClassTypeName; _course.FlagID = response.Flag.ToString(); _course.FlagName = response.FlagName; _course.SubjectID = response.SubjectID.ToString(); _course.SubjectName = response.SubjectName; _course.CategoryID = response.CategoryID.ToString(); _course.CategoryName = response.CategoryName; _course.TotalClassHour = response.CourseTimes; _course.TotalClassHourName = response.UnitName; _course.FeeUnitPrice = response.UnitPrice; _course.FeeUnitPriceName = response.UnitPriceName; _course.CourseStatus = response.Status; _course.ProductCreatedDate = response.CreateTime; _course.ProductUpdateDate = response.UpdateTime; _course.Describe = response.Describe; _course.POCSource = entity.POCSource; _course.History = entity; if (_course.Id == 0) { _course.ExtractStatus = 1000; ProductCourseDomainService.Add(_course); } else { ProductCourseDomainService.Save(_course); } CampusRangeDomainService.DeleteCampusRange(_course.Id); foreach (var permit in response.PermitList) { var _range = new T_EXT_CourseRange(); _range.ProductCourse = _course; _range.CourseID = permit.ShiftID.ToString(); _range.CampusID = permit.CampusID.ToString(); _range.TeachNetOrgID = permit.AngLiCampusID; _range.TeachNetOrgName = permit.CampusName; _range.TeachOrgFinaUnitEOSID = int.Parse(string.IsNullOrEmpty(permit.ESOID) ? "0" : permit.ESOID); _range.FeeUnitPrice = permit.UnitPrice; _range.FeePriceName = response.UnitPriceName; _range.POCSource = entity.POCSource; _range.History = entity; CampusRangeDomainService.Add(_range); } } }