From 4522aec93f071cd730ea7254d2f19940da9be5b5 Mon Sep 17 00:00:00 2001 From: AKurakin Date: Thu, 3 Aug 2023 11:16:41 +0300 Subject: [PATCH] =?UTF-8?q?dbf-importer=20SDf06Table=20=D0=BF=D0=BE=D0=BF?= =?UTF-8?q?=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=20=D1=84=D0=BE=D1=80=D0=BC=D0=B0?= =?UTF-8?q?=D1=82=20inn,=20bic?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../logic/data/tables/SDf06Table.java | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf06Table.java b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf06Table.java index b5cd585c2..e16ca8cdb 100644 --- a/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf06Table.java +++ b/clearing-parent/dbf-importer/src/main/java/ru/spcex/clearing/dbf/importer/logic/data/tables/SDf06Table.java @@ -21,22 +21,32 @@ public class SDf06Table extends AbstractTable { public SDf06 getEntity(Object[] entity) { SDf06 result = new SDf06(); result.setAccount((String) entity[0]); - if (entity[1] instanceof BigDecimal) { - result.setSum((BigDecimal) entity[1]); - } else if (entity[1] instanceof String) { - result.setSum(new BigDecimal((String) entity[1])); - } + result.setSum(anyNumberToBigDecimal(entity[1])); result.setMarket((String) entity[2]); result.setType((String) entity[3]); result.setDeal((String) entity[4]); result.setClientN((String) entity[5]); - result.setInn((BigDecimal) entity[6]); - result.setBic((BigDecimal) entity[7]); + result.setInn(anyNumberToBigDecimal(entity[6])); + result.setBic(anyNumberToBigDecimal(entity[7])); result.setSpec((String) entity[8]); - result.setNumber((BigDecimal) entity[9]); + result.setNumber(anyNumberToBigDecimal(entity[9])); result.setFileName(filename); result.setGenerationTime(Instant.now()); result.setGenerationId(fileId); return result; } + + BigDecimal anyNumberToBigDecimal(Object value) { + if (value == null) return null; + if (value instanceof BigDecimal) { + return (BigDecimal) value; + } + if (value instanceof String) { + return BigDecimal.valueOf(Long.parseLong((String)value)); + } + if (value instanceof Number) { + return BigDecimal.valueOf(((Number)value).longValue()); + } + throw new IllegalArgumentException("Can not convert to BigDecimal " + value.getClass().getName() + " " + value); + } } \ No newline at end of file