Для более удобной работы с числом с плавающей запятой (valueDouble), в support реализованы вспомогательные методы, позволяющие получить необходимые данные как для вычисления, так и для формирования строковых обозначений:
BigDecimal getDoubleValue(valueDouble value, Integer precision, BigDecimal koef) – получить основное значение в базовой единице измерений, домноженное на коэффициент (koef) и округленное до заданного количества знаков (precision). Если value равно null, то функция вернет 0. В любом из параметров может быть передан null, в этом случае функция вернет число без домножения на коэффициент (koef) и/или округления до заданного количества знаков (precision). Функция вернет значение только для getValueType(): NORMAL, DEFLECTION, в противном случае функция вернет ошибку;
BigDecimal getLeftDoubleValue(valueDouble value, Integer precision, BigDecimal koef) – получить значение слева в базовой единице измерений, домноженное на коэффициент (koef) и округленное до заданного количества знаков (precision). Если value равно null, то функция вернет 0. В любом из параметров может быть передан null, в этом случае функция вернет число без домножения на коэффициент (koef) и/или округления до заданного количества знаков (precision). Функция вернет значение только для getValueType: dtRange, dtDeflection, в противном случае функция вернут ошибку;
BigDecimal getRightDoubleValue(valueDouble value, Integer precision, BigDecimal koef) – получить значение справа в базовой единице измерений, домноженное на коэффициент (koef) и округленное до заданного количества знаков (precision). Если value равно null, то функция вернет 0. В любом из параметров может быть передан null, в этом случае функция вернет число без домножения на коэффициент (koef) и/или округления до заданного количества знаков (precision). Функция вернет значение только для getValueType: dtRange, dtDeflection, в противном случае функция вернут ошибку;
DoubleFormatType getValueType(valueDouble value) – получить тип числа:
NORMAL – простое число;
RANGE – диапазон;
DEFLECTION – число с отклонениями;
Integer getEiPrecision(valueDouble value) – получить количество знаков после запятой (точность), заданное пользователем при вводе. Если точность не определена, то вернуть null;
String getEiCode(valueDouble value) – получить GUID единицы измерения, в которой пользователь задал значение. Если ЕИ не определена для атрибута, то вернет null;
BigDecimal getEiKoef(valueDouble value) – получить коэффициент пересчета в базовую ЕИ. Если коэффициент запрашивается для базовой ЕИ, то будет возвращена 1;
String getEiGuid(valueDouble value) - получить GUID единицы измерения. Если value==null, то вернуть пустую строку;
BigDecimal getValueInBaseEi(BigDecimal value, String EiGuid) - пересчитать значение (value) из заданной ЕИ (EiGuid) в базовую ЕИ. Если EiGuid является базовой или содержит null или пустую строку, то вернуть значение value без модификаций;
createDblSimpleValue(BigDecimal value, Integer precision, String eiGuid) - создать valueDouble на основе переданного числа value, в заданной единице измерения (eiGuid), которое надо отображать пользователю с заданной точностью precision. Если точность не указана (null), то значение не будет округляться для пользователя. Если eiGuid не указана (null), то считается что значение value передается в базовой единице измерения;
createDblRangeValue(BigDecimal leftValue, BigDecimal rightValue, Integer precision, String eiGuid) - создать valueDouble на основе переданного диапазона leftValue и rightValue, в заданной единице измерения (eiGuid), которые надо отображать пользователю с заданной точностью. Если точность не указана (null), то значение не будет округляться для пользователя. Если eiGuid не указана (null), то считается что значения leftValue и rightValue передаются в базовой единице измерения;
createDblDeflectionValue(BigDecimal value, leftValue, rightValue, Integer precision, String eiGuid) - создать valueDouble на основе переданного числа value c отклонениями leftValue и rightValue, в заданной единице измерения (eiGuid), которые надо отображать пользователю с заданной точностью precision. Если точность не указана (null), то значение и отклонения не будут округляться для пользователя. Если eiGuid не указана (null), то считается что значение value и отклонения leftValue и rightValue передаются в базовой единице измерения.