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);
                }
            }
        }
Esempio n. 2
0
        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);
                }
            }
        }
Esempio n. 3
0
        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;
                }
            });
        }
Esempio n. 4
0
        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);
                }
            }
        }