Адаптер |
Идентификатор |
Роль |
ERP |
ERP_01 |
Источник |
EAM |
EAM_01 |
Приемник |
Источник ERP
Сопоставление с сущностями ИС адаптера ERP
Основная |
Сущность ИС |
Отслеживать операции |
Полное наименование |
Отключено |
True |
KATPODR |
Создание;Изменение;Удаление |
Galaktika.ESB.Adapter.Atlantis.Api.KATPODR |
False |
False |
ATTRVAL |
Создание;Изменение |
Galaktika.ESB.Adapter.Atlantis.Api.ATTRVAL |
False |
KATPODR
Сопоставление
Свойство приложения |
Тип свойства приложения |
Свойство модели |
Тип свойства модели |
Не используется |
KOD |
Свойство |
code |
Свойство |
False |
NAME |
Свойство |
name |
Свойство |
False |
CPODR |
Свойство |
parent_id |
Свойство |
False |
Условие публикации
// Если операция удаления
if (OperationType == Galaktika.ESB.Contract.TypeStorageOperation.Delete)
{
LogService.Info("Публикация удаления (D---1): dept");
return true;
}
// Если операция создания или изменения
// Проверка на существование объекта
if (AppEntity == null)
{
LogService.Error("Условие публикации (D---1): dept => AppEntity == null");
return false;
}
// Публикация
bool res = true;
if (res)
{
LogService.Info("Публикация (D---1): dept => NREC = {0}", AppEntity.NREC);
return res;
}
После сопоставления
Logger.LogInformation("После сопоставления (B): dept");
// Служебные объекты
var appDataService = GetAppDataService(context);
// Получение значений "Дата начала действия", "Дата окончания действия"
var extCatLinks = appDataService.GetAppEntity<T2.DIP.ERP.DataTypes.Storage.EXTCATLINKS>(
ecl => ecl.OBJTYPE == 11 && ecl.MODTYPE == 1 && ecl.EXTCAT == appEntity.NREC);
if (extCatLinks != null)
{
var pipeContext = context.GetAppDataContext();
var cat = pipeContext.AppDataService.GetAppEntityByKey<T2.DIP.ERP.DataTypes.Storage.CATALOGS>(extCatLinks.STAFFCAT.ToString());
if (cat != null)
{
mainEntity.date_in = cat.DATN;
mainEntity.date_out = cat.DATOK;
}
}
Logger.LogInformation("После сопоставления (E): dept");
ATTRVAL
Условие публикации
// Если операция удаления
if (OperationType == Galaktika.ESB.Contract.TypeStorageOperation.Delete)
return false;
// Если операция создания или изменения
// Проверка на существование объекта
if (AppEntity == null)
{
LogService.Error("Условие публикации (D---1): dept => ATTRVAL => AppEntity == null");
return false;
}
// Публикация
if (AppEntity.WTABLE == 1413) // KatPodr
{
if (AppEntity.CREC > 0)
{
var katpodr = restier.GetAppEntityByKey<Galaktika.ESB.Adapter.Atlantis.Api.KATPODR>(Session, AppEntity.CREC.ToString(), true);
if (katpodr != null)
{
LogService.Info("Публикация (D---1): dept => ATTRVAL => NREC = {0}", AppEntity.NREC);
publisher.PublishMainEntity<Galaktika.ESB.Adapter.Atlantis.Api.KATPODR>(
katpodr.NREC.ToString(),
Galaktika.ESB.Contract.TypeStorageOperation.Update,
typeof(#currentModelNS#.dept),
Galaktika.ESB.Core.Contract.PubContext.DbTracking);
}
}
}
//return false;
Приемник EAM
Сопоставление с сущностями ИС адаптера EAM
Основная |
Сущность ИС |
Отслеживать операции |
Полное наименование |
Отключено |
True |
ПроизводственнаяЕдиница |
Не задано |
PromAktiv.Core.CD.Module.RES.ПроизводственнаяЕдиница |
False |
ПроизводственнаяЕдиница
Сопоставление
Свойство приложения |
Тип свойства приложения |
Свойство модели |
Тип свойства модели |
Не используется |
Код |
Свойство |
code |
Свойство |
False |
Наименование |
Свойство |
name |
Свойство |
False |
Вышестоящий |
Свойство |
parent_id |
Свойство |
False |
ДатаВвода |
Свойство |
date_in |
Свойство |
False |
ДатаСнятия |
Свойство |
date_out |
Свойство |
False |
После сопоставления
LogService.Info("После сопоставления (B): dept");
//
ISession Session = context.GetSession(true);
var cache = context.GetEsbCache(true);
// Учет ограничения по длине строки для наименования
if (MainEntity.name != null && MainEntity.name.Length > 300)
AppEntity.Наименование = MainEntity.name.Substring(0, 300);
else
AppEntity.Наименование = MainEntity.name;
// Перенесоно в скрипт "Получение объекта"
//// Установка уровня ПЕ
//if (MainEntity.dept_type == 0)
// AppEntity.УровеньПЕ = PromAktiv.Core.CD.Module.RES.УровеньПЕ.Подразделение;
//else
// AppEntity.УровеньПЕ = PromAktiv.Core.CD.Module.RES.УровеньПЕ.МестоХранения;
// Перенесоно в скрипт "Получение объекта"
//// Установка статуса объекта
//if ((MainEntity.status != null) && (MainEntity.status != 0))
// AppEntity.СтатусОбъекта = Xafari.BC.StatusTypes.Archive;
//else
// AppEntity.СтатусОбъекта = Xafari.BC.StatusTypes.Published;
// Установка графика работы, если не задан
if (AppEntity.График == null)
{
var график = AppEntity.Session.FindObject<PromAktiv.Core.CD.Module.RES.Calendar.ГрафикРаботы>(
DevExpress.Data.Filtering.CriteriaOperator.Parse("Наименование = ?", "Стандартный график работы предприятия"));
AppEntity.График = график;
}
// Установка/сброс ссылки на объект МВЗ
var мвз = AppEntity.Session.FindObject<PromAktiv.Cost.Module.МВЗ>(
DevExpress.Data.Filtering.CriteriaOperator.Parse("Код = ?", AppEntity.Код));
if (мвз == null)
{
if (AppEntity.CostLocation != null)
AppEntity.CostLocation = null;
}
else
{
if (мвз.СтатусОбъекта == Xafari.BC.StatusTypes.Archive)
{
if (AppEntity.CostLocation != null)
AppEntity.CostLocation = null;
}
else
{
if (AppEntity.CostLocation != мвз)
AppEntity.CostLocation = мвз;
}
}
// ПИР 102.206326
// Анализ признака "Используется в EAM"
if (MainEntity.eam_used != 1)
AppEntity.СтатусОбъекта = Xafari.BC.StatusTypes.Archive;
else
AppEntity.СтатусОбъекта = Xafari.BC.StatusTypes.Published;
//16.07.2019 (B) перенос атрибута "Уровень подразделения"
if (!string.IsNullOrEmpty(MainEntity.level))
{
Int16 iEnumValue = 0;
if (Int16.TryParse(MainEntity.level, out iEnumValue))
{
if (iEnumValue == 0 ||
iEnumValue == 10 ||
iEnumValue == 20 ||
iEnumValue == 30 ||
iEnumValue == 40 ||
iEnumValue == 50 ||
iEnumValue == 60 ||
iEnumValue == 61)
AppEntity.УровеньПЕ = (PromAktiv.Core.CD.Module.RES.УровеньПЕ)System.Enum.ToObject(typeof(PromAktiv.Core.CD.Module.RES.УровеньПЕ), iEnumValue);
else
LogService.Info("После сопоставления (D--1): dept => Недопустимое значение нумератора: {0}", iEnumValue);
}
else
{
LogService.Info("После сопоставления (D--2): dept => Ошибка конвертации значения нумератора: {0}", MainEntity.level);
}
}
//16.07.2019 (E) перенос атрибута "Уровень подразделения"
// Заполнение коллекции связанных ОТП
var otps = context.Mapper.Map<List<PromAktiv.Core.CD.Module.RES.OwnershipInManufUnit>>(
MainEntity.otp_collections,
options =>
{
options.Items.Add("esbCache", cache);
options.Items.Add("session", Session);
});
LogService.Info("После сопоставления (E): dept");
Получение объекта
LogService.Info("Получение объекта (B): dept");
//
Result.CreationHandled = false; // Не финальная обработка
Result.CreatedObject = restier.CreateAppEntity<PromAktiv.Core.CD.Module.RES.ПроизводственнаяЕдиница>(Session);
// Установка уровня ПЕ
if (MainEntity.dept_type == 0)
((PromAktiv.Core.CD.Module.RES.ПроизводственнаяЕдиница)Result.CreatedObject).УровеньПЕ = PromAktiv.Core.CD.Module.RES.УровеньПЕ.РабочийЦентр; // В ТН это "Подразделение"
else
((PromAktiv.Core.CD.Module.RES.ПроизводственнаяЕдиница)Result.CreatedObject).УровеньПЕ = PromAktiv.Core.CD.Module.RES.УровеньПЕ.МестоХранения;
// ПИР 102.206326 (код ниже неактуален)
//// Установка статуса объекта "Неактивный"
//((PromAktiv.Core.CD.Module.RES.ПроизводственнаяЕдиница)Result.CreatedObject).СтатусОбъекта = Xafari.BC.StatusTypes.Draft;
restier.SaveChanges(Session);
// Запись в таблицу EntityKey
var oid = restier.GetKey(Session, Result.CreatedObject);
if (!String.IsNullOrEmpty(oid))
{
var mainEntityTypeId = locator.GetMainEntityTypeId(typeof(#currentModelNS#.dept));
var appEntityTypeId = locator.GetAppEntityTypeId(parameters.AdapterId, typeof(PromAktiv.Core.CD.Module.RES.ПроизводственнаяЕдиница));
locator.GetOrAddAppEntityKey(mainEntityTypeId, MainEntity.object_id, appEntityTypeId, oid);
}
LogService.Info("Получение объекта (E): dept");