/// <summary> /// Обработка элемента <see cref="Classifier"/>. /// </summary> /// <param name="classifier">Элемент <see cref="Classifier"/>.</param> /// <param name="noActual">Значение, которое нужно проставить в поле ForeignCatValue.NoActual.</param> protected void ProcessClassifier(Classifier classifier, DateTime?noActual) { if (classifier == null) { return; } // Получение справочника, создаем если его нет. var aliasType = typeof(Classifier).GetCustomAttribute <AliasType>().Alias; var catalog = _catalogLoader.LoadCatalog(aliasType); if (catalog == null) { catalog = new Catalog(); catalog.Code = aliasType; catalog.Name = "Классификатор мер социальной защиты"; catalog.CreateTime = DateTime.Now; } var foreignCatValue = _foreignCatValueLoader.LoadForeignCatValueByCode(classifier.Social.Code); if (foreignCatValue == null) { foreignCatValue = new ForeignCatValue(); foreignCatValue.Code = classifier.Social.Code; catalog.Values.Add(foreignCatValue); } foreignCatValue.Description = classifier.Social.Name.Trim(); foreignCatValue.NoActual = noActual; foreignCatValue.FullValue = _syncLogItem.DataSet; foreignCatValue.ParentGuid = null; _ds.UpdateObject(catalog); }
/// <summary> /// Обработка элемента <see cref="FiasAddressObjects"/>. /// </summary> /// <param name="fhStructures">Элемент <see cref="FiasAddressObjects"/>.</param> protected void ProcessFiasAddressObjects(FiasAddressObjects faObjects) { if (faObjects == null) { return; } // Получение справочника, создаем если его нет. var aliasType = typeof(FiasAddressObjects).GetCustomAttribute <AliasType>().Alias; var catalog = _catalogLoader.LoadCatalog(aliasType); if (catalog == null) { catalog = new Catalog(); catalog.Code = aliasType; catalog.Name = "ФИАС - адресообразующие элементы"; catalog.Description = "Справочник территорий, улиц"; catalog.CreateTime = DateTime.Now; } var foreignCatValue = _foreignCatValueLoader.LoadForeignCatValueByCode(faObjects.AOGUID); if (foreignCatValue == null) { foreignCatValue = new ForeignCatValue(); foreignCatValue.Code = faObjects.AOGUID; catalog.Values.Add(foreignCatValue); } else if (faObjects.CURRSTATUS != 0) { return; } foreignCatValue.Description = $"{faObjects.SHORTNAME?.Trim()} {faObjects.FORMALNAME?.Trim()}"; foreignCatValue.NoActual = faObjects.ENDDATE; foreignCatValue.FullValue = _syncLogItem.DataSet; if (!string.IsNullOrEmpty(faObjects.PARENTGUID)) { var parent = _foreignCatValueLoader.LoadForeignCatValueByCode(faObjects.PARENTGUID); if (parent == null) { var parentForeignCatValueCreatedMessage = $"При обработке сообщения {_syncLogItem.Description} (primaryKey={_syncLogItem.__PrimaryKey}) для объекта с Code={faObjects.AOGUID} из ForeignCatValue не был найден родительский объект с Code={faObjects.PARENTGUID}, поэтому был создан новый ForeignCatValue с Code={faObjects.PARENTGUID}."; parent = new ForeignCatValue(); parent.Code = faObjects.PARENTGUID; parent.Catalog = catalog; _toUpdateDef.Add(parent); _messagesToLog.Add(parentForeignCatValueCreatedMessage); } foreignCatValue.ParentGuid = parent; } _toUpdateDef.Add(catalog); }
/// <summary> /// Обработка элемента <see cref="FiasHousesStructures"/>. /// </summary> /// <param name="fhStructures">Элемент <see cref="FiasHousesStructures"/>.</param> protected void ProcessFiasHousesStructures(FiasHousesStructures fhStructures) { if (fhStructures == null) { return; } // Получение справочника, создаем если его нет. var aliasType = typeof(FiasHousesStructures).GetCustomAttribute <AliasType>().Alias; var catalog = _catalogLoader.LoadCatalog(aliasType); if (catalog == null) { catalog = new Catalog(); catalog.Code = aliasType; catalog.Name = "ФИАС - здания, строения, сооружения"; catalog.CreateTime = DateTime.Now; } var foreignCatValue = _foreignCatValueLoader.LoadForeignCatValueByCode(fhStructures.HOUSEGUID); if (foreignCatValue == null) { foreignCatValue = new ForeignCatValue(); foreignCatValue.Code = fhStructures.HOUSEGUID; catalog.Values.Add(foreignCatValue); } foreignCatValue.Description = $"{fhStructures.HOUSENUM?.Trim()} {fhStructures.BUILDNUM?.Trim()} {fhStructures.STRUCNUM?.Trim()}"; foreignCatValue.NoActual = fhStructures.ENDDATE; foreignCatValue.FullValue = _syncLogItem.DataSet; if (!string.IsNullOrEmpty(fhStructures.AOGUID)) { var fiasAddressObjectsCatalog = _catalogLoader.LoadCatalog(typeof(FiasAddressObjects).GetCustomAttribute <AliasType>().Alias); var parent = _foreignCatValueLoader.LoadForeignCatValueByCode(fhStructures.AOGUID); if (parent == null) { var parentForeignCatValueCreatedMessage = $"При обработке сообщения {_syncLogItem.Description} (primaryKey={_syncLogItem.__PrimaryKey}) для объекта с Code={fhStructures.HOUSEGUID} из ForeignCatValue не был найден родительский объект с Code={fhStructures.AOGUID}, поэтому был создан новый ForeignCatValue с Code={fhStructures.AOGUID}."; parent = new ForeignCatValue(); parent.Code = fhStructures.AOGUID; parent.Catalog = fiasAddressObjectsCatalog; _toUpdateDef.Add(parent); _messagesToLog.Add(parentForeignCatValueCreatedMessage); } foreignCatValue.ParentGuid = parent; } _toUpdateDef.Add(catalog); }