Added updating hits

This commit is contained in:
Mikhail Trofimov 2025-06-23 17:21:36 +03:00
parent d43a95e564
commit adb134c8bb
4 changed files with 51 additions and 6 deletions

View file

@ -37,4 +37,6 @@ public interface SignalMapper {
List<SignalService.PackageData> findPackageDataList(@Param("userId") String userId); List<SignalService.PackageData> findPackageDataList(@Param("userId") String userId);
List<SignalService.PackageData> findPackagesByStatus(@Param("status") String status); List<SignalService.PackageData> findPackagesByStatus(@Param("status") String status);
void setHits(@Param("hits") List<SignalService.HitsData> hits);
} }

View file

@ -19,10 +19,7 @@ import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Collections; import java.util.*;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.zip.GZIPInputStream; import java.util.zip.GZIPInputStream;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream; import java.util.zip.ZipOutputStream;
@ -44,6 +41,7 @@ public class MonitoringService {
this.signalService = signalService; this.signalService = signalService;
this.xmlUtilService = xmlUtilService; this.xmlUtilService = xmlUtilService;
this.config = config; this.config = config;
monitor();
} }
public void monitor() { public void monitor() {
@ -74,7 +72,10 @@ public class MonitoringService {
} }
MonitoringSignalResponse response = generateResponse(packageData, report.getPersons().getPersons()); 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; return response;
} }
private void createResponseFile(SignalService.PackageData packageData, MonitoringSignalResponse response) { private String createResponseFile(SignalService.PackageData packageData, MonitoringSignalResponse response) {
try { try {
String fileName = CTUtil.generateResponseReportFileName(packageData.getUserId(), packageData.getPackageName()); String fileName = CTUtil.generateResponseReportFileName(packageData.getUserId(), packageData.getPackageName());
String filePath = config.getLoadDir() + File.separator + packageData.getUserId().substring(0, 6) + File.separator; String filePath = config.getLoadDir() + File.separator + packageData.getUserId().substring(0, 6) + File.separator;
@ -136,9 +137,28 @@ public class MonitoringService {
zos.write(xmlBytes); zos.write(xmlBytes);
zos.closeEntry(); zos.closeEntry();
} }
return fileName;
} catch (Exception e) { } catch (Exception e) {
log.error("Ошибка при записи отчета пользователя в файл: ", e); log.error("Ошибка при записи отчета пользователя в файл: ", e);
} }
return null;
}
private void updateSignalHits(SignalService.PackageData packageData, MonitoringSignalResponse response, String reportFileName) {
LocalDateTime responseSentAt = LocalDateTime.now();
List<SignalService.HitsData> 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) { private OnlineDownloadReport loadReport(String reportName) {

View file

@ -204,6 +204,10 @@ public class SignalService {
return mapper.findFullSubjectsData(packageId); return mapper.findFullSubjectsData(packageId);
} }
public void setHits(List<HitsData> hits) {
mapper.setHits(hits);
}
@Getter @Getter
@Setter @Setter
public static class PackageData { public static class PackageData {
@ -227,4 +231,15 @@ public class SignalService {
private Integer flag90days; private Integer flag90days;
private LocalDateTime calculatedAt; 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;
}
} }

View file

@ -62,6 +62,14 @@
</foreach> </foreach>
</insert> </insert>
<insert id="setHits" parameterType="java.util.List">
INSERT INTO signals_hits (package_id, subject_id, signal_type, response_sent_at, report_file_name)
values
<foreach collection="hits" item="hit" separator=",">
(#{hit.packageId}, #{hit.subjectId}, #{hit.signalType}, #{hit.responseSentAt}, #{hit.reportFileName})
</foreach>
</insert>
<update id="registerSubjectsFidAndDebts"> <update id="registerSubjectsFidAndDebts">
UPDATE signals_phone_fid_map UPDATE signals_phone_fid_map
SET fid = #{fid}, flag_debt5000 = #{flagDebt5000}, flag_90_12 = #{flag90} SET fid = #{fid}, flag_debt5000 = #{flagDebt5000}, flag_90_12 = #{flag90}