From 8dbc0625a1fe64a6f48f028ef5f8fa6e5934a63c Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Sat, 28 May 2016 22:12:31 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=BF=D1=82=D0=B8=D0=BC=D0=B0=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D1=8B=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru/dmitriymx/astralcheckreport/Main.java | 51 ++++++++++++++++--- src/main/resources/log4j2.xml | 2 +- 2 files changed, 44 insertions(+), 9 deletions(-) diff --git a/src/main/java/ru/dmitriymx/astralcheckreport/Main.java b/src/main/java/ru/dmitriymx/astralcheckreport/Main.java index c312ca9..44805dc 100644 --- a/src/main/java/ru/dmitriymx/astralcheckreport/Main.java +++ b/src/main/java/ru/dmitriymx/astralcheckreport/Main.java @@ -83,7 +83,8 @@ public class Main implements Runnable { ExcelDataRow data; while( !Thread.currentThread().isInterrupted() && ((data = nextData()) != null) ) { if (!data.tarif.equalsIgnoreCase("Акция 3 месяца") && - !data.tarif.equalsIgnoreCase("Группа компаний")) + !data.tarif.equalsIgnoreCase("Группа компаний") && + !data.tarif.equalsIgnoreCase("Оптимальный, 4 направ.")) continue; //FIXME logger.info("Проверяю {} / {} ...", data.inn, data.kpp); @@ -100,7 +101,10 @@ public class Main implements Runnable { tarif_Akcia3Mount(astral, organization, data); } else if (data.tarif.equalsIgnoreCase("Группа компаний")) { - tarif_GroupCompany(astral, organization, data); + tarif_GroupCompany(organization, data); + } + else if (data.tarif.equalsIgnoreCase("Оптимальный, 4 направ.")) { + tarif_Optimalniy(astral, organization, data); } safeSleep(sleepThread); @@ -161,7 +165,7 @@ public class Main implements Runnable { } // Тариф: Группа компаний - private void tarif_GroupCompany(AstralSession astral, Organization organization, ExcelDataRow data) { + private void tarif_GroupCompany(Organization organization, ExcelDataRow data) { // Step 0: Количество доступных продуктов if (organization.products.size() == 0) { logger.warn("({}/{}): Нет доступных продуктов!", organization.inn, organization.kpp); @@ -197,13 +201,44 @@ public class Main implements Runnable { } } + // Тариф: Оптимальный, 4 направ. + private void tarif_Optimalniy(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); + Tarif tarif = product.contractTariffs.get(0); + if (product.certs.size() > 1) { + logger.warn("({}/{}): Обнаружено более 1 сертификата!", organization.inn, organization.kpp); + } + Cert cert = product.certs.get(0); + + long tarifDateLong = tarif.date_initialDate.getTime(); + long certDateLong = cert.startCertDate.getTime(); + + if (certDateLong < tarifDateLong) { + logger.error("({}/{}): Ошибка: сертификат выдан раньше тарифа!", organization.inn, organization.kpp); + return; + } + + // Step II: Проверяем кол-во Направлений + if (!calcRecipients(product, data)) { //TODO надо проверять по категориям + logger.warn("({}/{}): Внимание! Не соответствие количества направлений!", organization.inn, organization.kpp); + } + } + private boolean calcRecipients(Product product, ExcelDataRow data) { int countFNS = 0, - countFSS = 0, - countRosstat = 0, - countPFR = 0, - countRosalco = 0, - countRPN = 0; + countFSS = 0, + countRosstat = 0, + countPFR = 0, + countRosalco = 0, + countRPN = 0; for (Recipient recipient : product.recipients) { switch (recipient.protocolId) { diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml index e4ea581..85d00b2 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml @@ -1,5 +1,5 @@ - +