diff --git a/src/main/java/ru/nbch/credit_tracker/builder/PersonFactoryBuilder.java b/src/main/java/ru/nbch/credit_tracker/builder/PersonFactoryBuilder.java new file mode 100644 index 0000000..90fe789 --- /dev/null +++ b/src/main/java/ru/nbch/credit_tracker/builder/PersonFactoryBuilder.java @@ -0,0 +1,91 @@ +package ru.nbch.credit_tracker.builder; + +import org.apache.commons.lang3.StringUtils; +import ru.nbch.credit_tracker.entities.signal_package.Person; +import ru.nbch.credit_tracker.service.indic.PersonService; +import ru.nbch.credit_tracker.utils.CTUtil; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.time.LocalDate; + +public class PersonFactoryBuilder { + private final static DateFormat DATE_FORMAT = new SimpleDateFormat("dd.MM.yyyy"); + + private final static String DEFAULT_DATE = "01.01.2000"; + private final static String IP = "0"; + private final static String OKSM = "999"; + private final static String CONSENT_PURPOSE = "16"; + private final static String REPORT_USER = "АО «НБКИ»"; + private final static String LIABILITY = "1"; + private final static String CONSENT_PERIOD = "3"; + private final static String REPORT_USER_REG_NUM = "1057746710713"; + private final static String REPORT_USER_TAX_ID = "7703548386"; + private final static String CONSENT_HASH = "hash"; + private final static String CONSENT_DIV_CODE = "000-000"; + private final static String INQ_PURPOSE = "16"; + + + private PersonService.PersonData personData; + private String uid; + + public static PersonFactoryBuilder builder() { + return new PersonFactoryBuilder(); + } + + public PersonFactoryBuilder personData(PersonService.PersonData personData) { + this.personData = personData; + return this; + } + + public PersonFactoryBuilder uid(String uid) { + this.uid = uid; + return this; + } + + public Person build() { + if (personData == null) { + return null; + } + PersonService.NameData nameData = personData.getName(); + PersonService.PassportData passportData = personData.getPassport(); + Person person = new Person(); + person.setS(nameData.getLastName()); + person.setN(nameData.getFirstName()); + person.setM(StringUtils.isNotBlank(nameData.getMiddleName()) ? nameData.getMiddleName() : null); + person.setD(DATE_FORMAT.format(CTUtil.localDatetoDate(nameData.getBirthDate()))); + + person.setPn(getPn(passportData.getSerNum(), passportData.getIdNum())); + person.setPd(passportData.getIssDate() != null ? DATE_FORMAT.format(CTUtil.localDatetoDate(passportData.getIssDate())) : DEFAULT_DATE); + person.setDt(StringUtils.isNotBlank(passportData.getIdType2()) ? passportData.getIdType2() : passportData.getIdType()); + person.setIp(IP); + person.setUid(uid); + person.setOksm(OKSM); + person.setConsentDate(DATE_FORMAT.format(CTUtil.localDatetoDate(LocalDate.now()))); + person.setConsentPurpose(CONSENT_PURPOSE); + person.setReportUser(REPORT_USER); + person.setLiability(LIABILITY); + person.setConsentPeriod(CONSENT_PERIOD); + person.setAgrDate(DATE_FORMAT.format(CTUtil.localDatetoDate(LocalDate.now()))); + person.setReportUserRegNum(REPORT_USER_REG_NUM); + person.setReportUserTaxID(REPORT_USER_TAX_ID); + person.setConsentHash(CONSENT_HASH); + + person.setCs(person.getS()); + person.setConsentN(person.getN()); + person.setConsentM(person.getM()); + person.setConsentBd(person.getD()); + person.setConsentPn(person.getPn()); + person.setConsentPd(person.getPd()); + person.setConsentDivCode(CONSENT_DIV_CODE); + person.setConsentDt(person.getDt()); + person.setInqPurpose(INQ_PURPOSE); + return person; + } + + private String getPn(String serNum, String idNum) { + String normSerNum = CTUtil.normalize(serNum); + String normIdNum = CTUtil.normalize(idNum); + return StringUtils.isNotBlank(normSerNum) ? normSerNum + normIdNum : normIdNum; + } +} diff --git a/src/main/java/ru/nbch/credit_tracker/service/SignalService.java b/src/main/java/ru/nbch/credit_tracker/service/SignalService.java index f12367f..a4866f6 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/SignalService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/SignalService.java @@ -1,8 +1,8 @@ package ru.nbch.credit_tracker.service; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import ru.nbch.credit_tracker.builder.PersonFactoryBuilder; import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings; import ru.nbch.credit_tracker.entities.dto.Hit; import ru.nbch.credit_tracker.entities.dto.PhoneFidMap; @@ -19,11 +19,7 @@ import ru.nbch.credit_tracker.service.indic.PhoneService; import ru.nbch.credit_tracker.service.signal.HitsService; import ru.nbch.credit_tracker.service.signal.PhoneFidMapService; import ru.nbch.credit_tracker.service.signal.UserPackageService; -import ru.nbch.credit_tracker.utils.CTUtil; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.time.LocalDate; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -34,8 +30,6 @@ import java.util.Objects; @Service public class SignalService { - private final static DateFormat DATE_FORMAT = new SimpleDateFormat("dd.MM.yyyy"); - private final CreditTrackerSettings config; private final HitsService hitsService; private final UserPackageService userPackageService; @@ -100,9 +94,24 @@ public class SignalService { PhoneFidMap subject; if (data.getFid() != null) { FlagsService.FlagsData flagsData = flagsDataMap.get(data.getFid()); - subject = new PhoneFidMap(data.getId(), packageId, data.getSubjectId(), data.getPhone(), data.getFid(), flagsData.getFlagDebt5000(), flagsData.getFlag90days(), calculatedAt); + subject = PhoneFidMap.builder() + .id(data.getId()) + .packageId(packageId) + .subjectId(data.getSubjectId()) + .phone(data.getPhone()) + .fid(data.getFid()) + .flagDebt5000(flagsData.getFlagDebt5000()) + .flag90days(flagsData.getFlag90days()) + .calculatedAt(calculatedAt) + .build(); } else { - subject = new PhoneFidMap(data.getId(), packageId, data.getSubjectId(), data.getPhone(), null, null, null, calculatedAt); + subject = PhoneFidMap.builder() + .id(data.getId()) + .packageId(packageId) + .subjectId(data.getSubjectId()) + .phone(data.getPhone()) + .calculatedAt(calculatedAt) + .build(); } subjectToUpdate.add(subject); }); @@ -158,7 +167,10 @@ public class SignalService { fidsPhoneData.forEach(data -> { if (data.getFid() != null) { PersonService.PersonData personData = personFidMap.get(data.getFid()); - Person person = getPerson(personData, data.getSubjectId()); + Person person = PersonFactoryBuilder.builder() + .personData(personData) + .uid(data.getSubjectId()) + .build(); if (person != null) { persons.add(person); } @@ -167,53 +179,6 @@ public class SignalService { return persons; } - private Person getPerson(PersonService.PersonData personData, String id) { - if (personData == null) { - return null; - } - PersonService.NameData nameData = personData.getName(); - PersonService.PassportData passportData = personData.getPassport(); - Person person = new Person(); - person.setS(nameData.getLastName()); - person.setN(nameData.getFirstName()); - person.setM(StringUtils.isNotBlank(nameData.getMiddleName()) ? nameData.getMiddleName() : null); - person.setD(DATE_FORMAT.format(CTUtil.localDatetoDate(nameData.getBirthDate()))); - - person.setPn(getPn(passportData.getSerNum(), passportData.getIdNum())); - person.setPd(passportData.getIssDate() != null ? DATE_FORMAT.format(CTUtil.localDatetoDate(passportData.getIssDate())) : "01.01.2000"); - person.setDt(StringUtils.isNotBlank(passportData.getIdType2()) ? passportData.getIdType2() : passportData.getIdType()); - person.setIp("0"); - person.setUid(id); - person.setOksm("999"); - person.setConsentDate(DATE_FORMAT.format(CTUtil.localDatetoDate(LocalDate.now()))); - person.setConsentPurpose("16"); - person.setReportUser("АО «НБКИ»"); - person.setLiability("1"); - person.setConsentPeriod("3"); - person.setAgrDate(DATE_FORMAT.format(CTUtil.localDatetoDate(LocalDate.now()))); - person.setReportUserRegNum("1057746710713"); - person.setReportUserTaxID("7703548386"); - person.setConsentHash("hash"); - - person.setCs(person.getS()); - person.setConsentN(person.getN()); - person.setConsentM(person.getM()); - person.setConsentBd(person.getD()); - person.setConsentPn(person.getPn()); - person.setConsentPd(person.getPd()); - person.setConsentDivCode("000-000"); - person.setConsentDt(person.getDt()); - person.setInqPurpose("16"); - return person; - } - - private String getPn(String serNum, String idNum) { - String normSerNum = CTUtil.normalize(serNum); - String normIdNum = CTUtil.normalize(idNum); - return StringUtils.isNotBlank(normSerNum) ? normSerNum + normIdNum : normIdNum; - } - - public List findActivePackages(String userId) { return userPackageService.findUserPackages(userId, Status.ON_MONITORING); }