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 dc03aad..505e815 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 @@ -37,4 +37,6 @@ public interface SignalMapper { List findPackageDataList(@Param("userId") String userId); List findPackagesByStatus(@Param("status") String status); + + void setHits(@Param("hits") List hits); } 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 33508c5..7fa2d84 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/MonitoringService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/MonitoringService.java @@ -19,10 +19,7 @@ import java.io.File; import java.io.FileOutputStream; import java.nio.charset.Charset; import java.time.LocalDateTime; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; -import java.util.Optional; +import java.util.*; import java.util.zip.GZIPInputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; @@ -44,6 +41,7 @@ public class MonitoringService { this.signalService = signalService; this.xmlUtilService = xmlUtilService; this.config = config; + monitor(); } public void monitor() { @@ -74,7 +72,10 @@ public class MonitoringService { } MonitoringSignalResponse response = generateResponse(packageData, report.getPersons().getPersons()); - createResponseFile(packageData, response); + String fileName = createResponseFile(packageData, response); + if (fileName != null) { + updateSignalHits(packageData, response, fileName); + } } } @@ -114,7 +115,7 @@ public class MonitoringService { return response; } - private void createResponseFile(SignalService.PackageData packageData, MonitoringSignalResponse response) { + private String createResponseFile(SignalService.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; @@ -136,9 +137,28 @@ public class MonitoringService { zos.write(xmlBytes); zos.closeEntry(); } + return fileName; } catch (Exception e) { log.error("Ошибка при записи отчета пользователя в файл: ", e); } + return null; + } + + private void updateSignalHits(SignalService.PackageData packageData, MonitoringSignalResponse response, String reportFileName) { + LocalDateTime responseSentAt = LocalDateTime.now(); + List hits = new ArrayList<>(); + response.getSubjects().getSubjects().forEach(subject -> { + subject.getSignals().getSignals().forEach(signal -> { + SignalService.HitsData hitsData = new SignalService.HitsData(); + hitsData.setPackageId(packageData.getId()); + hitsData.setSubjectId(subject.getId()); + hitsData.setSignalType(1); + hitsData.setResponseSentAt(responseSentAt); + hitsData.setReportFileName(reportFileName); + hits.add(hitsData); + }); + }); + signalService.setHits(hits); } private OnlineDownloadReport loadReport(String reportName) { 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 ff858ff..53136f8 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/SignalService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/SignalService.java @@ -204,6 +204,10 @@ public class SignalService { return mapper.findFullSubjectsData(packageId); } + public void setHits(List hits) { + mapper.setHits(hits); + } + @Getter @Setter public static class PackageData { @@ -227,4 +231,15 @@ public class SignalService { 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/resources/mybatis/mapper/signal/SignalMapper.xml b/src/main/resources/mybatis/mapper/signal/SignalMapper.xml index 32b2973..7fd8ef4 100644 --- a/src/main/resources/mybatis/mapper/signal/SignalMapper.xml +++ b/src/main/resources/mybatis/mapper/signal/SignalMapper.xml @@ -62,6 +62,14 @@ + + INSERT INTO signals_hits (package_id, subject_id, signal_type, response_sent_at, report_file_name) + values + + (#{hit.packageId}, #{hit.subjectId}, #{hit.signalType}, #{hit.responseSentAt}, #{hit.reportFileName}) + + + UPDATE signals_phone_fid_map SET fid = #{fid}, flag_debt5000 = #{flagDebt5000}, flag_90_12 = #{flag90}