From 01ffd932281b0581b6436c02e6fdeee7a83f562d Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Sat, 4 Jun 2016 16:54:22 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=83=D1=81=D1=82=D0=BE=D0=B9=20=D1=82?= =?UTF-8?q?=D0=B0=D1=80=D0=B8=D1=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru/dmitriymx/astralcheckreport/Main.java | 49 ++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/src/main/java/ru/dmitriymx/astralcheckreport/Main.java b/src/main/java/ru/dmitriymx/astralcheckreport/Main.java index 91d91fc..5db014b 100644 --- a/src/main/java/ru/dmitriymx/astralcheckreport/Main.java +++ b/src/main/java/ru/dmitriymx/astralcheckreport/Main.java @@ -4,6 +4,8 @@ */ package ru.dmitriymx.astralcheckreport; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; import com.google.gson.JsonObject; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.slf4j.Logger; @@ -13,6 +15,9 @@ import ru.dmitriymx.astralcheckreport.objects.*; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.Properties; public class Main implements Runnable { @@ -20,6 +25,7 @@ public class Main implements Runnable { private ExcelReader excel; private Properties properties = new Properties(); public static long sleepThread = 100; + private SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy"); public static void main(String[] args) { new Main().start(); @@ -107,6 +113,9 @@ public class Main implements Runnable { else if (data.getTarif().equalsIgnoreCase("Базовый, 2 направ.")) { tarif_Basic(astral, organization, data); } + else if (data.getTarif().equals("")) { + tarif_Empty(astral, organization, data); + } else { logger.info("Не задана логика для тарифа: \"{}\"", data.getTarif()); } @@ -141,7 +150,7 @@ public class Main implements Runnable { // - либо один // - либо соответствовать формуле "1 + доп.сертификаты" JsonObject historyCert = astral.historyCert(product.id); - int totalCert = historyCert.get("total").getAsInt(); + int totalCert = historyCert.get("records").getAsInt(); if (totalCert > 1) { if (totalCert != (1 + data.getAddonCert())) { logger.error("({}/{}): Ошибка количества сертификатов!", organization.inn, organization.kpp); @@ -267,6 +276,44 @@ public class Main implements Runnable { } } + // Тариф: (пустое значение) + private void tarif_Empty(AstralSession astral, Organization organization, ExcelDataRow data) { + // Step 0: Количество доступных продуктов + if (organization.products.size() == 0) { + logger.warn("({}/{}): Нет доступных продуктов!", organization.inn, organization.kpp); + return; + } + + // 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()) { + logger.warn("({}/{}): Странно... Сертификатов меньше чем надо", organization.inn, organization.kpp); + } + else if (totalCert > 1 + data.getAddonCert()) { + logger.error("({}/{}): Ошибка: сертификатов больше чем нужно!", organization.inn, organization.kpp); + return; + } + + Tarif tarif = product.contractTariffs.get(0); + JsonArray certArr = historyCert.get("rows").getAsJsonArray(); + for (JsonElement element : certArr) { + JsonObject jsonObject = element.getAsJsonObject(); + Date certDate; + try { + certDate = sdf.parse(jsonObject.get("cell").getAsJsonArray().get(1).getAsString()); + } catch (ParseException e) { + logger.error("({}/{}): Ошибка при форматировании даты", organization.inn, organization.kpp); + return; + } + + if (certDate.before(tarif.date_initialDate)) { + logger.error("({}/{}): Ошибка: сертификат выдан раньше тарифа!", organization.inn, organization.kpp); + } + } + } + private boolean calcRecipients(Product product, ExcelDataRow data) { int countFNS = 0, countFSS = 0,