From 517a5fc433ba078e8706f2c7458921e782914750 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Sat, 4 Jun 2016 17:15:29 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=9F=D1=80=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D1=8B=D0=B9=20=D0=BF=D0=BE=D0=B4=D1=81=D1=87=D0=B5?= =?UTF-8?q?=D1=82=20=D1=81=D0=B5=D1=80=D1=82=D0=B8=D1=84=D0=B8=D0=BA=D0=B0?= =?UTF-8?q?=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Считаются только действующие --- .../ru/dmitriymx/astralcheckreport/Main.java | 34 +++++++++++++++---- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/src/main/java/ru/dmitriymx/astralcheckreport/Main.java b/src/main/java/ru/dmitriymx/astralcheckreport/Main.java index 5db014b..eee198d 100644 --- a/src/main/java/ru/dmitriymx/astralcheckreport/Main.java +++ b/src/main/java/ru/dmitriymx/astralcheckreport/Main.java @@ -26,6 +26,7 @@ public class Main implements Runnable { private Properties properties = new Properties(); public static long sleepThread = 100; private SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy"); + private static Date currentDate = new Date(System.currentTimeMillis()); public static void main(String[] args) { new Main().start(); @@ -150,9 +151,9 @@ public class Main implements Runnable { // - либо один // - либо соответствовать формуле "1 + доп.сертификаты" JsonObject historyCert = astral.historyCert(product.id); - int totalCert = historyCert.get("records").getAsInt(); - if (totalCert > 1) { - if (totalCert != (1 + data.getAddonCert())) { + int totalActiveCerts = countActiveCert(historyCert); + if (totalActiveCerts > 1) { + if (totalActiveCerts != (1 + data.getAddonCert())) { logger.error("({}/{}): Ошибка количества сертификатов!", organization.inn, organization.kpp); } } @@ -287,11 +288,11 @@ public class Main implements Runnable { // Step I: Проверяем Product product = organization.products.get(0); JsonObject historyCert = astral.historyCert(product.id); - int totalCert = historyCert.get("records").getAsInt(); - if (totalCert < 1 + data.getAddonCert()) { + int totalActiveCerts = countActiveCert(historyCert); + if (totalActiveCerts < 1 + data.getAddonCert()) { logger.warn("({}/{}): Странно... Сертификатов меньше чем надо", organization.inn, organization.kpp); } - else if (totalCert > 1 + data.getAddonCert()) { + else if (totalActiveCerts > 1 + data.getAddonCert()) { logger.error("({}/{}): Ошибка: сертификатов больше чем нужно!", organization.inn, organization.kpp); return; } @@ -399,4 +400,25 @@ public class Main implements Runnable { return boolFNS && boolFSS && boolRosstat && boolPFR && boolRosalco && boolRPN; } + + private int countActiveCert(JsonObject historyCert) { + JsonArray rows = historyCert.get("rows").getAsJsonArray(); + int result = 0; + for (JsonElement element : rows) { + JsonObject jsonObject = element.getAsJsonObject(); + Date endDate; + try { + endDate = sdf.parse(jsonObject.get("cell").getAsJsonArray().get(2).getAsString()); + } catch (ParseException e) { + logger.error("Ошибка при форматировании даты"); + return 0; + } + + if (endDate.after(currentDate)) { + result++; + } + } + + return result; + } }