Обработка исходящего значения#

Позволяет перехватить, обработать и отформатировать исходящее значение атрибута при чтении юнита.

Варианты использования#

  • определение формата типа при отображении

Подключение#

  • реализуем - ru.sbt.swtr.track.core.service.hook.attribute.type.output.ConvertValueToView

  • аннотируем - ru.sbt.swtr.track.core.service.hook.attribute.type.annotation.AttributeTypeMapper

Пример#

  • Простой тип:

    @AttributeMapper(code = "custom_date")
    public class CustomTypeDateTimeView implements ConvertValueToView<Instant, String> {
        @Override
        public String convert(final Instant output) {return output.toString();}
    }
    
  • Мультиселект:

    @AttributeTypeMapper(code = "multiselect_type")
    public class CustomTypeLabelsView implements ConvertValueToView<Collection<ExampleValueEntity>, Collection<String>> {
        @Override
        public Collection<String> convert(Collection<LabelValueEntity> output) {
            return output.stream()
                    .filter(Objects::nonNull)
                    .map(ExampleValueEntity::getCode) //<= {"example" : ["code1", "code2"]}
                    .toList();
        }
    }
    

Использование#

Сервис будет добавлен в контекст и выполнен для всех атрибутов с типом custom_date.