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> 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.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<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) {

View file

@ -204,6 +204,10 @@ public class SignalService {
return mapper.findFullSubjectsData(packageId);
}
public void setHits(List<HitsData> 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;
}
}

View file

@ -62,6 +62,14 @@
</foreach>
</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 signals_phone_fid_map
SET fid = #{fid}, flag_debt5000 = #{flagDebt5000}, flag_90_12 = #{flag90}