diff --git a/src/main/java/ru/nbch/credit_tracker/entities/dto/HitsData.java b/src/main/java/ru/nbch/credit_tracker/entities/dto/HitsData.java new file mode 100644 index 0000000..4b94cc2 --- /dev/null +++ b/src/main/java/ru/nbch/credit_tracker/entities/dto/HitsData.java @@ -0,0 +1,17 @@ +package ru.nbch.credit_tracker.entities.dto; + +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDateTime; + +@Getter +@Setter +public class HitsData { + private Integer id; + private Integer packageId; + private String subjectId; + private Integer signalType; + private LocalDateTime responseSentAt; + private String reportFileName; +} diff --git a/src/main/java/ru/nbch/credit_tracker/entities/dto/PackageData.java b/src/main/java/ru/nbch/credit_tracker/entities/dto/PackageData.java new file mode 100644 index 0000000..57e79ce --- /dev/null +++ b/src/main/java/ru/nbch/credit_tracker/entities/dto/PackageData.java @@ -0,0 +1,17 @@ +package ru.nbch.credit_tracker.entities.dto; + +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDateTime; + +@Getter +@Setter +public class PackageData { + private Integer id; + private String userId; + private String packageName; + private LocalDateTime createdAt; + private String status; + private String lastDownloadedReport; +} diff --git a/src/main/java/ru/nbch/credit_tracker/entities/dto/SubjectData.java b/src/main/java/ru/nbch/credit_tracker/entities/dto/SubjectData.java new file mode 100644 index 0000000..f3cf750 --- /dev/null +++ b/src/main/java/ru/nbch/credit_tracker/entities/dto/SubjectData.java @@ -0,0 +1,19 @@ +package ru.nbch.credit_tracker.entities.dto; + +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDateTime; + +@Getter +@Setter +public class SubjectData { + private Integer id; + private Integer packageId; + private String subjectId; + private String phone; + private Integer fid; + private Integer flagDebt5000; + private Integer flag90days; + private LocalDateTime calculatedAt; +} diff --git a/src/main/java/ru/nbch/credit_tracker/mapper/signal/SignalMapper.java b/src/main/java/ru/nbch/credit_tracker/mapper/signal/SignalMapper.java index 4321232..aed0544 100644 --- a/src/main/java/ru/nbch/credit_tracker/mapper/signal/SignalMapper.java +++ b/src/main/java/ru/nbch/credit_tracker/mapper/signal/SignalMapper.java @@ -2,9 +2,11 @@ package ru.nbch.credit_tracker.mapper.signal; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import ru.nbch.credit_tracker.entities.dto.HitsData; +import ru.nbch.credit_tracker.entities.dto.PackageData; +import ru.nbch.credit_tracker.entities.dto.SubjectData; import ru.nbch.credit_tracker.entities.request.monitoring_request.MonitoringRequest; import ru.nbch.credit_tracker.entities.request.monitoring_request.Subject; -import ru.nbch.credit_tracker.service.SignalService; import java.time.LocalDateTime; import java.util.List; @@ -28,17 +30,17 @@ public interface SignalMapper { void setPackageStatus(@Param("packageId") Integer packageId, @Param("status") String status); - List findSubjectsData(@Param("packageId") Integer packageId); + List findSubjectsData(@Param("packageId") Integer packageId); - List findFullSubjectsData(@Param("packageId") Integer packageId); + List findFullSubjectsData(@Param("packageId") Integer packageId); - SignalService.PackageData findPackageData(@Param("id") Integer id); + PackageData findPackageData(@Param("id") Integer id); - List findPackageDataList(@Param("userId") String userId); + List findPackageDataList(@Param("userId") String userId); - List findPackagesByStatus(@Param("status") String status); + List findPackagesByStatus(@Param("status") String status); - void setHits(@Param("hits") List hits); + void setHits(@Param("hits") List hits); void setPackageLastDownloadedReport(@Param("id") Integer id, @Param("fileName") String fileName); } diff --git a/src/main/java/ru/nbch/credit_tracker/service/MonitoringService.java b/src/main/java/ru/nbch/credit_tracker/service/MonitoringService.java index 50633a1..d4665a9 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/MonitoringService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/MonitoringService.java @@ -3,6 +3,9 @@ package ru.nbch.credit_tracker.service; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings; +import ru.nbch.credit_tracker.entities.dto.HitsData; +import ru.nbch.credit_tracker.entities.dto.PackageData; +import ru.nbch.credit_tracker.entities.dto.SubjectData; import ru.nbch.credit_tracker.entities.response.monitoring_signal_response.*; import ru.nbch.credit_tracker.entities.response.online_download.Inquiry; import ru.nbch.credit_tracker.entities.response.online_download.OnlineDownloadReport; @@ -53,8 +56,8 @@ public class MonitoringService { } private void monitor() { - List packages = signalService.findPackagesOnMonitoring(); - for (SignalService.PackageData packageData : packages) { + List packages = signalService.findPackagesOnMonitoring(); + for (PackageData packageData : packages) { SgnlOnlineReport onlineReports = signalRestService.getReports(packageData.getUserId().substring(0, 6) + "_" + packageData.getPackageName()); List fileNames = onlineReports.getOperationReport().getReports().getReports().stream().map(Report::getFilename) @@ -88,11 +91,11 @@ public class MonitoringService { } } - private MonitoringSignalResponse generateResponse(SignalService.PackageData packageData, List persons) { + private MonitoringSignalResponse generateResponse(PackageData packageData, List persons) { MonitoringSignalResponse response = new MonitoringSignalResponse(); response.setPackageName(packageData.getPackageName()); // Имя пакета, переданного при установке Subjects subjects = new Subjects(); - List subjectDataList = signalService.findFullSubjectsData(packageData.getId()); + List subjectDataList = signalService.findFullSubjectsData(packageData.getId()); for (Person person : persons) { Signals signals = new Signals(); for (Inquiry inquiry : person.getInquiries()) { @@ -124,7 +127,7 @@ public class MonitoringService { return response; } - private String createResponseFile(SignalService.PackageData packageData, MonitoringSignalResponse response) { + private String createResponseFile(PackageData packageData, MonitoringSignalResponse response) { try { String fileName = CTUtil.generateResponseReportFileName(packageData.getUserId(), packageData.getPackageName()); String filePath = config.getLoadDir() + File.separator + packageData.getUserId().substring(0, 6) + File.separator; @@ -153,12 +156,12 @@ public class MonitoringService { return null; } - private void updateSignalHits(SignalService.PackageData packageData, MonitoringSignalResponse response, String reportFileName) { + private void updateSignalHits(PackageData packageData, MonitoringSignalResponse response, String reportFileName) { LocalDateTime responseSentAt = LocalDateTime.now(); - List hits = new ArrayList<>(); + List hits = new ArrayList<>(); response.getSubjects().getSubjects().forEach(subject -> { subject.getSignals().getSignals().forEach(signal -> { - SignalService.HitsData hitsData = new SignalService.HitsData(); + HitsData hitsData = new HitsData(); hitsData.setPackageId(packageData.getId()); hitsData.setSubjectId(subject.getId()); hitsData.setSignalType(1); 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 c820bb7..8f78b2b 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/SignalService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/SignalService.java @@ -1,10 +1,11 @@ package ru.nbch.credit_tracker.service; -import lombok.Getter; -import lombok.Setter; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings; +import ru.nbch.credit_tracker.entities.dto.HitsData; +import ru.nbch.credit_tracker.entities.dto.PackageData; +import ru.nbch.credit_tracker.entities.dto.SubjectData; import ru.nbch.credit_tracker.entities.request.monitoring_request.MonitoringRequest; import ru.nbch.credit_tracker.entities.response.active_packages.MonitoringActivePackagesResponse; import ru.nbch.credit_tracker.entities.response.active_packages.Package; @@ -18,13 +19,12 @@ import ru.nbch.credit_tracker.mapper.signal.SignalMapper; import ru.nbch.credit_tracker.service.indic.FlagsService; import ru.nbch.credit_tracker.service.indic.PersonService; import ru.nbch.credit_tracker.service.indic.PhoneService; +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.time.ZoneId; -import java.util.Date; import java.util.List; @Service @@ -109,20 +109,20 @@ public class SignalService { person.setS(nameData.getLastName()); person.setN(nameData.getFirstName()); person.setM(StringUtils.isNotBlank(nameData.getMiddleName()) ? nameData.getMiddleName() : null); - person.setD(DATE_FORMAT.format(toDate(nameData.getBirthDate()))); + person.setD(DATE_FORMAT.format(CTUtil.localDatetoDate(nameData.getBirthDate()))); person.setPn(getPn(passportData.getSerNum(), passportData.getIdNum())); - person.setPd(passportData.getIssDate() != null ? DATE_FORMAT.format(toDate(passportData.getIssDate())) : "01.01.2000"); + 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(toDate(LocalDate.now()))); + 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(toDate(LocalDate.now()))); + person.setAgrDate(DATE_FORMAT.format(CTUtil.localDatetoDate(LocalDate.now()))); person.setReportUserRegNum("1057746710713"); person.setReportUserTaxID("7703548386"); person.setConsentHash("hash"); @@ -140,26 +140,11 @@ public class SignalService { } private String getPn(String serNum, String idNum) { - String normSerNum = normalize(serNum); - String normIdNum = normalize(idNum); + String normSerNum = CTUtil.normalize(serNum); + String normIdNum = CTUtil.normalize(idNum); return StringUtils.isNotBlank(normSerNum) ? normSerNum + normIdNum : normIdNum; } - // TODO move to utility service - private String normalize(String value) { - if (value == null) - return null; - value = value.replaceAll("[^А-Яа-яA-Za-z0-9]", ""); - return value.replaceFirst("^0+", ""); - } - - // TODO move to utility service - private Date toDate(LocalDate date) { - if (date == null) { - return null; - } - return Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant()); - } public MonitoringActivePackagesResponse findActivePackages(String userId) { String memberCode = userId.substring(0, 6); @@ -212,38 +197,4 @@ public class SignalService { mapper.setPackageLastDownloadedReport(id, fileName); } - @Getter - @Setter - public static class PackageData { - private Integer id; - private String userId; - private String packageName; - private LocalDateTime createdAt; - private String status; - private String lastDownloadedReport; - } - - @Getter - @Setter - public static class SubjectData { - private Integer id; - private Integer packageId; - private String subjectId; - private String phone; - private Integer fid; - private Integer flagDebt5000; - private Integer flag90days; - private LocalDateTime calculatedAt; - } - - @Getter - @Setter - public static class HitsData { - private Integer id; - private Integer packageId; - private String subjectId; - private Integer signalType; - private LocalDateTime responseSentAt; - private String reportFileName; - } } diff --git a/src/main/java/ru/nbch/credit_tracker/service/indic/PhoneService.java b/src/main/java/ru/nbch/credit_tracker/service/indic/PhoneService.java index ce2ceb7..f456f22 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/indic/PhoneService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/indic/PhoneService.java @@ -4,8 +4,8 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; import org.springframework.stereotype.Service; +import ru.nbch.credit_tracker.entities.dto.SubjectData; import ru.nbch.credit_tracker.mapper.indic.PhoneMapper; -import ru.nbch.credit_tracker.service.SignalService; import java.util.ArrayList; import java.util.List; @@ -19,7 +19,7 @@ public class PhoneService { this.mapper = mapper; } - public List findFidsPhoneData(List subjects) { + public List findFidsPhoneData(List subjects) { List fidsPhoneDataList = new ArrayList<>(); subjects.forEach(subject -> { String phone = "9" + subject.getPhone(); diff --git a/src/main/java/ru/nbch/credit_tracker/utils/CTUtil.java b/src/main/java/ru/nbch/credit_tracker/utils/CTUtil.java index 3c66fe7..a66cbfd 100644 --- a/src/main/java/ru/nbch/credit_tracker/utils/CTUtil.java +++ b/src/main/java/ru/nbch/credit_tracker/utils/CTUtil.java @@ -2,8 +2,11 @@ package ru.nbch.credit_tracker.utils; import org.apache.commons.lang3.StringUtils; +import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.ZoneId; import java.time.format.DateTimeFormatter; +import java.util.Date; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -49,4 +52,18 @@ public class CTUtil { return null; } } + + public static String normalize(String value) { + if (value == null) + return null; + value = value.replaceAll("[^А-Яа-яA-Za-z0-9]", ""); + return value.replaceFirst("^0+", ""); + } + + public static Date localDatetoDate(LocalDate date) { + if (date == null) { + return null; + } + return Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant()); + } } diff --git a/src/main/resources/mybatis/mapper/signal/SignalMapper.xml b/src/main/resources/mybatis/mapper/signal/SignalMapper.xml index 09d9601..49980e9 100644 --- a/src/main/resources/mybatis/mapper/signal/SignalMapper.xml +++ b/src/main/resources/mybatis/mapper/signal/SignalMapper.xml @@ -5,7 +5,7 @@ - + @@ -16,7 +16,7 @@ - + @@ -100,19 +100,19 @@ WHERE package_id = #{packageId} - SELECT membercode, package_name FROM signals_user_packages WHERE id = #{id} LIMIT 1 - SELECT package_name, created_at FROM signals_user_packages WHERE membercode IS NOT NULL AND LEFT(membercode, 6) = #{userId} - SELECT id, membercode, package_name, created_at, last_downloaded_report FROM signals_user_packages WHERE status = #{status}