0

оптимизация: выделен общий алгоритм

This commit is contained in:
2016-06-08 02:01:08 +03:00
parent 77b396b564
commit f4b37596d8
6 changed files with 27 additions and 73 deletions

View File

@@ -9,10 +9,7 @@ import org.slf4j.LoggerFactory;
import ru.dmitriymx.astralcheckreport.AstralSession;
import ru.dmitriymx.astralcheckreport.ExcelDataRow;
import ru.dmitriymx.astralcheckreport.Main;
import ru.dmitriymx.astralcheckreport.objects.Cert;
import ru.dmitriymx.astralcheckreport.objects.LeftObject;
import ru.dmitriymx.astralcheckreport.objects.Organization;
import ru.dmitriymx.astralcheckreport.objects.Product;
import ru.dmitriymx.astralcheckreport.objects.*;
import java.util.List;
@@ -45,7 +42,7 @@ public abstract class AbstractTarifProcessor {
}
}
protected int countActiveCert(List<Cert> historyCert) {
int countActiveCert(List<Cert> historyCert) {
int result = 0;
for (Cert cert : historyCert) {
if (cert.endCertDate.after(Main.currentDate)) {
@@ -56,5 +53,21 @@ public abstract class AbstractTarifProcessor {
return result;
}
boolean checkDateCert(Organization organization) {
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);
if (cert.startCertDate.before(tarif.date_initialDate)) {
logger.error("({}/{}): Ошибка: сертификат выдан раньше тарифа!", organization.inn, organization.kpp);
return false;
}
return true;
}
protected abstract void process0(AstralSession astral, Organization organization, ExcelDataRow data);
}

View File

@@ -52,18 +52,7 @@ public class Akcia3MountTarifProcessor extends AbstractTarifProcessor {
// Step III: Проверяем разницу дат.
// Сертификат должен быть выдан в тот же день или позже, чем тариф
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;
}
checkDateCert(organization);
}
else {
logger.trace("Тариф игнорируется: \"{}\"", tarif.name);

View File

@@ -20,22 +20,10 @@ public class BasicTarifProcessor extends AbstractTarifProcessor {
protected void process0(AstralSession astral, Organization organization, ExcelDataRow data) {
// 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;
}
if (!checkDateCert(organization)) return;
// Step II: Проверяем кол-во Направлений
Product product = organization.products.get(0);
if (!calcRecipients2(product, data)) { //TODO надо проверять по категориям
logger.warn("({}/{}): Внимание! Не соответствие количества направлений!", organization.inn, organization.kpp);
}

View File

@@ -25,22 +25,10 @@ public class GroupCompanyTarifProcessor extends AbstractTarifProcessor {
// Step II: Проверяем разницу дат.
// Сертификат должен быть выдан в тот же день или позже, чем тариф
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;
}
if (!checkDateCert(organization)) return;
// Step III: Проверяем кол-во Направлений
Product product = organization.products.get(0);
if (!calcRecipients4(product, data)) { //TODO надо проверять по категориям
logger.warn("({}/{}): Внимание! Не соответствие количества направлений!", organization.inn, organization.kpp);
}

View File

@@ -19,22 +19,10 @@ public class OptimalniyTarifProcessor extends AbstractTarifProcessor {
protected void process0(AstralSession astral, Organization organization, ExcelDataRow data) {
// 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;
}
if (!checkDateCert(organization)) return;
// Step II: Проверяем кол-во Направлений
Product product = organization.products.get(0);
if (!calcRecipients4(product, data)) { //TODO надо проверять по категориям
logger.warn("({}/{}): Внимание! Не соответствие количества направлений!", organization.inn, organization.kpp);
}

View File

@@ -20,22 +20,10 @@ public class StartTarifProcessor extends AbstractTarifProcessor {
protected void process0(AstralSession astral, Organization organization, ExcelDataRow data) {
// 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;
}
if (!checkDateCert(organization)) return;
// Step II: Проверяем кол-во Направлений
Product product = organization.products.get(0);
if (!calcRecipients1(product, data)) { //TODO надо проверять по категориям
logger.warn("({}/{}): Внимание! Не соответствие количества направлений!", organization.inn, organization.kpp);
}