Renamed dtos; Renamed mappers and services methods

This commit is contained in:
Mikhail Trofimov 2025-07-01 19:22:16 +03:00
parent 9c4e5ed13c
commit ead8638d3e
17 changed files with 172 additions and 192 deletions

View file

@ -7,7 +7,7 @@ import java.time.LocalDateTime;
@Getter @Getter
@Setter @Setter
public class HitsData { public class Hit {
private Integer id; private Integer id;
private Integer packageId; private Integer packageId;
private String subjectId; private String subjectId;

View file

@ -1,10 +1,6 @@
package ru.nbch.credit_tracker.entities.dto; package ru.nbch.credit_tracker.entities.dto;
import lombok.AllArgsConstructor; import lombok.*;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -13,7 +9,7 @@ import java.time.LocalDateTime;
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@Builder @Builder
public class SubjectData { public class PhoneFidMap {
private Integer id; private Integer id;
private Integer packageId; private Integer packageId;
private String subjectId; private String subjectId;

View file

@ -1,5 +1,6 @@
package ru.nbch.credit_tracker.entities.dto; package ru.nbch.credit_tracker.entities.dto;
import lombok.Builder;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@ -7,7 +8,8 @@ import java.time.LocalDateTime;
@Getter @Getter
@Setter @Setter
public class PackageData { @Builder
public class UserPackage {
private Integer id; private Integer id;
private String userId; private String userId;
private String packageName; private String packageName;

View file

@ -1,14 +1,5 @@
package ru.nbch.credit_tracker.facade; package ru.nbch.credit_tracker.facade;
import java.io.File;
import java.io.IOException;
import java.util.HashSet;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.ExecutorService;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.core.io.FileUrlResource; import org.springframework.core.io.FileUrlResource;
@ -21,11 +12,7 @@ import ru.nbch.credit_tracker.entities.request.active_packages.MonitoringActiveP
import ru.nbch.credit_tracker.entities.request.monitoring_request.MonitoringRequest; 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.entities.request.monitoring_request.Subject;
import ru.nbch.credit_tracker.entities.response.active_packages.MonitoringActivePackagesResponse; import ru.nbch.credit_tracker.entities.response.active_packages.MonitoringActivePackagesResponse;
import ru.nbch.credit_tracker.entities.response.errors.MonitoringActivePackagesError; import ru.nbch.credit_tracker.entities.response.errors.*;
import ru.nbch.credit_tracker.entities.response.errors.MonitoringDownloadError;
import ru.nbch.credit_tracker.entities.response.errors.MonitoringError;
import ru.nbch.credit_tracker.entities.response.errors.MonitoringPackageDeleteError;
import ru.nbch.credit_tracker.entities.response.errors.MonitoringReportListError;
import ru.nbch.credit_tracker.entities.response.success.MonitoringPackageDeleteResponse; import ru.nbch.credit_tracker.entities.response.success.MonitoringPackageDeleteResponse;
import ru.nbch.credit_tracker.entities.response.success.MonitoringReportListResponse; import ru.nbch.credit_tracker.entities.response.success.MonitoringReportListResponse;
import ru.nbch.credit_tracker.entities.response.success.MonitoringResponse; import ru.nbch.credit_tracker.entities.response.success.MonitoringResponse;
@ -44,6 +31,17 @@ import ru.nbch.credit_tracker.service.xml.jaxb.XmlUtilService;
import ru.nbch.credit_tracker.utils.CTUtil; import ru.nbch.credit_tracker.utils.CTUtil;
import ru.nbch.credit_tracker.utils.ValidationUtil; import ru.nbch.credit_tracker.utils.ValidationUtil;
import ru.nbch.credit_tracker.utils.ZipUtils; import ru.nbch.credit_tracker.utils.ZipUtils;
import java.io.File;
import java.io.IOException;
import java.util.HashSet;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.ExecutorService;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import static ru.nbch.credit_tracker.utils.error.ExceptionUtils.excp; import static ru.nbch.credit_tracker.utils.error.ExceptionUtils.excp;
@Slf4j @Slf4j
@ -221,14 +219,14 @@ public class SignalFacade {
// TODO validate xsd? // TODO validate xsd?
if (signalRestService.update(signals)) { if (signalRestService.update(signals)) {
log.info("Package was successfully registered in signal service. PackageId: {} PackageName: {}", packageId, packageName); log.info("Package was successfully registered in signal service. PackageId: {} PackageName: {}", packageId, packageName);
signalService.setPackageStatus(packageId, Status.ON_MONITORING); signalService.updatePackageStatus(packageId, Status.ON_MONITORING);
} else { } else {
log.info("Package registration was rejected by signal service. PackageId: {} PackageName: {}", packageId, packageName); log.info("Package registration was rejected by signal service. PackageId: {} PackageName: {}", packageId, packageName);
signalService.setPackageStatus(packageId, Status.ERROR); signalService.updatePackageStatus(packageId, Status.ERROR);
} }
} }
} catch (Exception e) { } catch (Exception e) {
signalService.setPackageStatus(packageId, Status.ERROR); signalService.updatePackageStatus(packageId, Status.ERROR);
log.error("Ошибка при поиске фидов или расчете флагов просрочек. Package_id {}", packageId, e); log.error("Ошибка при поиске фидов или расчете флагов просрочек. Package_id {}", packageId, e);
} }
}); });

View file

@ -2,13 +2,13 @@ package ru.nbch.credit_tracker.mapper.signal;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import ru.nbch.credit_tracker.entities.dto.HitsData; import ru.nbch.credit_tracker.entities.dto.Hit;
import java.util.List; import java.util.List;
@Mapper @Mapper
public interface HitsMapper { public interface HitsMapper {
void setHits(@Param("hits") List<HitsData> hits); void insertHits(@Param("hits") List<Hit> hits);
} }

View file

@ -2,10 +2,9 @@ package ru.nbch.credit_tracker.mapper.signal;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import ru.nbch.credit_tracker.entities.dto.SubjectData; import ru.nbch.credit_tracker.entities.dto.PhoneFidMap;
import ru.nbch.credit_tracker.entities.request.monitoring_request.Subject; import ru.nbch.credit_tracker.entities.request.monitoring_request.Subject;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;
@Mapper @Mapper
@ -13,12 +12,10 @@ public interface PhoneFidMapMapper {
void registerSubjects(@Param("subjects") List<Subject> subjects, @Param("packageId") Integer packageId); void registerSubjects(@Param("subjects") List<Subject> subjects, @Param("packageId") Integer packageId);
void registerSubjectsFidAndDebts(@Param("id") Integer id, @Param("fid") Integer fid, @Param("flagDebt5000") Integer flagDebt5000, @Param("flag90") Integer flag90, @Param("calculatedAt") LocalDateTime calculatedAt); List<PhoneFidMap> findPhoneFidMaps(@Param("packageId") Integer packageId);
List<SubjectData> findSubjectsData(@Param("packageId") Integer packageId); List<PhoneFidMap> findFullPhoneFidMap(@Param("packageId") Integer packageId);
List<SubjectData> findFullSubjectsData(@Param("packageId") Integer packageId); void updatePhoneFidMaps(@Param("subjects") List<PhoneFidMap> subjects);
void updateSubjects(@Param("subjects") List<SubjectData> subjects);
} }

View file

@ -2,8 +2,7 @@ package ru.nbch.credit_tracker.mapper.signal;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import ru.nbch.credit_tracker.entities.dto.PackageData; import ru.nbch.credit_tracker.entities.dto.UserPackage;
import ru.nbch.credit_tracker.entities.request.monitoring_request.MonitoringRequest;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
@ -17,16 +16,16 @@ public interface UserPackageMapper {
void deletePackage(@Param("userId") String userId, @Param("packageName") String packageName, @Param("status") String newStatus, @Param("previousStatus") String previousStatus, @Param("deactivatedAt") LocalDateTime deactivatedAt); void deletePackage(@Param("userId") String userId, @Param("packageName") String packageName, @Param("status") String newStatus, @Param("previousStatus") String previousStatus, @Param("deactivatedAt") LocalDateTime deactivatedAt);
Integer insertPackage(@Param("request") MonitoringRequest request, @Param("creadedAt") LocalDateTime creadedAt, @Param("status") String status); Integer insertPackage(@Param("userPackage") UserPackage userPackage);
void setPackageStatus(@Param("packageId") Integer packageId, @Param("status") String status); void updatePackageStatus(@Param("packageId") Integer packageId, @Param("status") String status);
void setPackageLastDownloadedReport(@Param("id") Integer id, @Param("fileName") String fileName); void updatePackageLastDownloadedReport(@Param("id") Integer id, @Param("fileName") String fileName);
PackageData findPackageData(@Param("id") Integer id); UserPackage findPackage(@Param("id") Integer id);
List<PackageData> findPackageDataList(@Param("userId") String userId, @Param("status") String status); List<UserPackage> findUserPackages(@Param("userId") String userId, @Param("status") String status);
List<PackageData> findPackagesByStatus(@Param("status") String status); List<UserPackage> findAllPackagesByStatus(@Param("status") String status);
} }

View file

@ -3,9 +3,9 @@ package ru.nbch.credit_tracker.service;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings; import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
import ru.nbch.credit_tracker.entities.dto.HitsData; import ru.nbch.credit_tracker.entities.dto.Hit;
import ru.nbch.credit_tracker.entities.dto.PackageData; import ru.nbch.credit_tracker.entities.dto.PhoneFidMap;
import ru.nbch.credit_tracker.entities.dto.SubjectData; import ru.nbch.credit_tracker.entities.dto.UserPackage;
import ru.nbch.credit_tracker.entities.response.monitoring_signal_response.*; 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.Inquiry;
import ru.nbch.credit_tracker.entities.response.online_download.OnlineDownloadReport; import ru.nbch.credit_tracker.entities.response.online_download.OnlineDownloadReport;
@ -57,13 +57,13 @@ public class MonitoringService {
private void monitor() { private void monitor() {
log.info("Start monitoring"); log.info("Start monitoring");
List<PackageData> packages = signalService.findPackagesOnMonitoring(); List<UserPackage> packages = signalService.findPackagesOnMonitoring();
for (PackageData packageData : packages) { for (UserPackage userPackage : packages) {
log.info("Processing package {}", packageData.getPackageName()); log.info("Processing package {}", userPackage.getPackageName());
SgnlOnlineReport onlineReports = signalRestService.getReports(packageData.getUserId().substring(0, 6) + "_" + packageData.getPackageName()); SgnlOnlineReport onlineReports = signalRestService.getReports(userPackage.getUserId().substring(0, 6) + "_" + userPackage.getPackageName());
if (onlineReports == null) { if (onlineReports == null) {
log.info("No reports found for package {}", packageData.getPackageName()); log.info("No reports found for package {}", userPackage.getPackageName());
continue; continue;
} }
@ -71,7 +71,7 @@ public class MonitoringService {
.filter(fileName -> CTUtil.parseDateFromReportFileName(fileName) != null).toList(); // TODO оптимизировать .filter(fileName -> CTUtil.parseDateFromReportFileName(fileName) != null).toList(); // TODO оптимизировать
if (fileNames.isEmpty()) { if (fileNames.isEmpty()) {
log.info("No new report found for package {}", packageData.getPackageName()); log.info("No new report found for package {}", userPackage.getPackageName());
continue; continue;
} }
@ -79,16 +79,16 @@ public class MonitoringService {
.orElseGet(Collections::emptyList) .orElseGet(Collections::emptyList)
.stream().max(Comparator.comparing(CTUtil::parseDateFromReportFileName)); // отфильтровали только те имена, которые парсятся в дату, так что null тут не придет .stream().max(Comparator.comparing(CTUtil::parseDateFromReportFileName)); // отфильтровали только те имена, которые парсятся в дату, так что null тут не придет
LocalDateTime lastDownloadedReportDate = CTUtil.parseDateFromReportFileName(packageData.getLastDownloadedReport()); LocalDateTime lastDownloadedReportDate = CTUtil.parseDateFromReportFileName(userPackage.getLastDownloadedReport());
if (packageData.getLastDownloadedReport() != null) { if (userPackage.getLastDownloadedReport() != null) {
log.info("Last downloaded report found for package {}. Last Downloaded Report Name: {}", packageData.getPackageName(), packageData.getLastDownloadedReport()); log.info("Last downloaded report found for package {}. Last Downloaded Report Name: {}", userPackage.getPackageName(), userPackage.getLastDownloadedReport());
} else { } else {
log.info("Last Downloaded Report Name is empty"); log.info("Last Downloaded Report Name is empty");
} }
OnlineDownloadReport report = null; OnlineDownloadReport report = null;
if (packageData.getLastDownloadedReport() == null && newReport.isPresent()) { if (userPackage.getLastDownloadedReport() == null && newReport.isPresent()) {
report = loadReport(newReport.get()); // по этому пакету еще не было загруженных отчетов, продолжаем работу с полученным report = loadReport(newReport.get()); // по этому пакету еще не было загруженных отчетов, продолжаем работу с полученным
} else if (lastDownloadedReportDate != null && newReport.isPresent()) { } else if (lastDownloadedReportDate != null && newReport.isPresent()) {
LocalDateTime newReportDate = CTUtil.parseDateFromReportFileName(newReport.get()); LocalDateTime newReportDate = CTUtil.parseDateFromReportFileName(newReport.get());
@ -97,28 +97,28 @@ public class MonitoringService {
} }
} }
if (report == null) { if (report == null) {
log.info("Report was not loaded for package {}", packageData.getPackageName()); log.info("Report was not loaded for package {}", userPackage.getPackageName());
continue; continue;
} }
MonitoringSignalResponse response = generateResponse(packageData, report.getPersons().getPersons()); MonitoringSignalResponse response = generateResponse(userPackage, report.getPersons().getPersons());
String fileName = createResponseFile(packageData, response); String fileName = createResponseFile(userPackage, response);
if (fileName != null) { if (fileName != null) {
log.info("New report fileName: {}", fileName); log.info("New report fileName: {}", fileName);
updateSignalHits(packageData, response, fileName); updateSignalHits(userPackage, response, fileName);
signalService.updateLastDownloadedReport(packageData.getId(), newReport.get()); signalService.updateLastDownloadedReport(userPackage.getId(), newReport.get());
} else { } else {
log.info("Report was not created for package {}", packageData.getPackageName()); log.info("Report was not created for package {}", userPackage.getPackageName());
} }
} }
log.info("Finish monitoring"); log.info("Finish monitoring");
} }
private MonitoringSignalResponse generateResponse(PackageData packageData, List<Person> persons) { private MonitoringSignalResponse generateResponse(UserPackage userPackage, List<Person> persons) {
MonitoringSignalResponse response = new MonitoringSignalResponse(); MonitoringSignalResponse response = new MonitoringSignalResponse();
response.setPackageName(packageData.getPackageName()); // Имя пакета, переданного при установке response.setPackageName(userPackage.getPackageName()); // Имя пакета, переданного при установке
Subjects subjects = new Subjects(); Subjects subjects = new Subjects();
List<SubjectData> subjectDataList = signalService.findFullSubjectsData(packageData.getId()); List<PhoneFidMap> phoneFidMapList = signalService.findFullSubjectsData(userPackage.getId());
for (Person person : persons) { for (Person person : persons) {
Signals signals = new Signals(); Signals signals = new Signals();
for (Inquiry inquiry : person.getInquiries()) { for (Inquiry inquiry : person.getInquiries()) {
@ -135,7 +135,7 @@ public class MonitoringService {
// Если есть хотя бы один заполненный сигнал, значит заполняем остальные данные // Если есть хотя бы один заполненный сигнал, значит заполняем остальные данные
if (!signals.getSignals().isEmpty()) { if (!signals.getSignals().isEmpty()) {
subjectDataList.stream().filter(p -> p.getSubjectId().equals(person.getUid())).findFirst().ifPresent(subjectData -> { phoneFidMapList.stream().filter(p -> p.getSubjectId().equals(person.getUid())).findFirst().ifPresent(subjectData -> {
Subject subject = new Subject(); Subject subject = new Subject();
subject.setId(subjectData.getSubjectId()); // Уникальный идентификатор субъекта (равен Id из XML-пакета при установке мониторинга) subject.setId(subjectData.getSubjectId()); // Уникальный идентификатор субъекта (равен Id из XML-пакета при установке мониторинга)
subject.setClientId(subjectData.getPhone()); subject.setClientId(subjectData.getPhone());
@ -150,10 +150,10 @@ public class MonitoringService {
return response; return response;
} }
private String createResponseFile(PackageData packageData, MonitoringSignalResponse response) { private String createResponseFile(UserPackage userPackage, MonitoringSignalResponse response) {
try { try {
String fileName = CTUtil.generateResponseReportFileName(packageData.getUserId(), packageData.getPackageName()); String fileName = CTUtil.generateResponseReportFileName(userPackage.getUserId(), userPackage.getPackageName());
String filePath = config.getLoadDir() + File.separator + packageData.getUserId().substring(0, 6) + File.separator; String filePath = config.getLoadDir() + File.separator + userPackage.getUserId().substring(0, 6) + File.separator;
File folder = new File(filePath); File folder = new File(filePath);
if (!folder.exists()) { if (!folder.exists()) {
@ -179,23 +179,23 @@ public class MonitoringService {
return null; return null;
} }
private void updateSignalHits(PackageData packageData, MonitoringSignalResponse response, String reportFileName) { private void updateSignalHits(UserPackage userPackage, MonitoringSignalResponse response, String reportFileName) {
log.info("Updating signal hits for {}", packageData.getPackageName()); log.info("Updating signal hits for {}", userPackage.getPackageName());
LocalDateTime responseSentAt = LocalDateTime.now(); LocalDateTime responseSentAt = LocalDateTime.now();
List<HitsData> hits = new ArrayList<>(); List<Hit> hits = new ArrayList<>();
response.getSubjects().getSubjects().forEach(subject -> { response.getSubjects().getSubjects().forEach(subject -> {
subject.getSignals().getSignals().forEach(signal -> { subject.getSignals().getSignals().forEach(signal -> {
HitsData hitsData = new HitsData(); Hit hit = new Hit();
hitsData.setPackageId(packageData.getId()); hit.setPackageId(userPackage.getId());
hitsData.setSubjectId(subject.getId()); hit.setSubjectId(subject.getId());
hitsData.setSignalType(1); hit.setSignalType(1);
hitsData.setResponseSentAt(responseSentAt); hit.setResponseSentAt(responseSentAt);
hitsData.setReportFileName(reportFileName); hit.setReportFileName(reportFileName);
hits.add(hitsData); hits.add(hit);
}); });
}); });
signalService.setHits(hits); signalService.insertHits(hits);
log.info("Signal hits updated for package {}", packageData.getPackageName()); log.info("Signal hits updated for package {}", userPackage.getPackageName());
} }
private OnlineDownloadReport loadReport(String reportName) { private OnlineDownloadReport loadReport(String reportName) {

View file

@ -4,9 +4,9 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings; import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
import ru.nbch.credit_tracker.entities.dto.HitsData; import ru.nbch.credit_tracker.entities.dto.Hit;
import ru.nbch.credit_tracker.entities.dto.PackageData; import ru.nbch.credit_tracker.entities.dto.PhoneFidMap;
import ru.nbch.credit_tracker.entities.dto.SubjectData; import ru.nbch.credit_tracker.entities.dto.UserPackage;
import ru.nbch.credit_tracker.entities.request.monitoring_request.MonitoringRequest; 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.entities.request.monitoring_request.Subject;
import ru.nbch.credit_tracker.entities.response.active_packages.MonitoringActivePackagesResponse; import ru.nbch.credit_tracker.entities.response.active_packages.MonitoringActivePackagesResponse;
@ -67,41 +67,46 @@ public class SignalService {
} }
public boolean isPackageNotUnique(MonitoringRequest request) { public boolean isPackageNotUnique(MonitoringRequest request) {
String userId = request.getUserId(); return userPackageService.isPackageNotUnique(request.getUserId(), request.getPackageName());
return userPackageService.isPackageNotUnique(userId.substring(0, 6), request.getPackageName());
} }
public Integer registerPackage(MonitoringRequest request) { public Integer registerPackage(MonitoringRequest request) {
Integer packageId = userPackageService.insertPackage(request, LocalDateTime.now(), Status.PROCESSING); UserPackage userPackage = UserPackage.builder()
.userId(request.getUserId())
.packageName(request.getPackageName())
.createdAt(LocalDateTime.now())
.status(Status.PROCESSING.name())
.build();
Integer packageId = userPackageService.insertPackage(userPackage);
List<Subject> subjects = request.getSubjects().getSubject(); List<Subject> subjects = request.getSubjects().getSubject();
for (int i = 0; i < subjects.size(); i += batchSize) { for (int i = 0; i < subjects.size(); i += batchSize) {
int end = Math.min(i + batchSize, subjects.size()); int end = Math.min(i + batchSize, subjects.size());
phoneFidMapService.registerSubjects(subjects.subList(i, end), packageId); phoneFidMapService.registerSubjects(subjects.subList(i, end), packageId); // TODO преобразовывать список в List<PhoneFidMap> ?
} }
return packageId; return packageId;
} }
public List<PhoneService.FidsPhoneData> registerSubjectsFidAndDebts(Integer packageId) { public List<PhoneService.FidsPhoneData> registerSubjectsFidAndDebts(Integer packageId) {
List<SubjectData> subjects = phoneFidMapService.findSubjectsData(packageId); List<PhoneFidMap> subjects = phoneFidMapService.findPhoneFidMaps(packageId);
return updateFlags(subjects, packageId); return updateFlags(subjects, packageId);
} }
public List<PhoneService.FidsPhoneData> updateFlags(List<SubjectData> subjects, Integer packageId) { public List<PhoneService.FidsPhoneData> updateFlags(List<PhoneFidMap> subjects, Integer packageId) {
List<PhoneService.FidsPhoneData> fidsPhoneDataList = phoneService.findFidsPhoneData(subjects, true); List<PhoneService.FidsPhoneData> fidsPhoneDataList = phoneService.findFidsPhoneData(subjects);
LocalDateTime calculatedAt = LocalDateTime.now(); LocalDateTime calculatedAt = LocalDateTime.now();
for (int i = 0; i < fidsPhoneDataList.size(); i += batchSize) { for (int i = 0; i < fidsPhoneDataList.size(); i += batchSize) {
int end = Math.min(i + batchSize, fidsPhoneDataList.size()); int end = Math.min(i + batchSize, fidsPhoneDataList.size());
List<PhoneService.FidsPhoneData> currentList = fidsPhoneDataList.subList(i, end); List<PhoneService.FidsPhoneData> currentList = fidsPhoneDataList.subList(i, end);
Map<Integer, FlagsService.FlagsData> flagsDataMap = flagsService.findFlags(currentList.stream().map(PhoneService.FidsPhoneData::getFid).filter(Objects::nonNull).toList()); Map<Integer, FlagsService.FlagsData> flagsDataMap = flagsService.findFlags(currentList.stream().map(PhoneService.FidsPhoneData::getFid).filter(Objects::nonNull).toList());
List<SubjectData> subjectToUpdate = new ArrayList<>(); List<PhoneFidMap> subjectToUpdate = new ArrayList<>();
currentList.forEach(data -> { currentList.forEach(data -> {
SubjectData subject; PhoneFidMap subject;
if (data.getFid() != null) { if (data.getFid() != null) {
FlagsService.FlagsData flagsData = flagsDataMap.get(data.getFid()); FlagsService.FlagsData flagsData = flagsDataMap.get(data.getFid());
subject = new SubjectData(data.getId(), packageId, data.getSubjectId(), data.getPhone(), data.getFid(), flagsData.getFlagDebt5000(), flagsData.getFlag90days(), calculatedAt); subject = new PhoneFidMap(data.getId(), packageId, data.getSubjectId(), data.getPhone(), data.getFid(), flagsData.getFlagDebt5000(), flagsData.getFlag90days(), calculatedAt);
} else { } else {
subject = new SubjectData(data.getId(), packageId, data.getSubjectId(), data.getPhone(), null, null, null, calculatedAt); subject = new PhoneFidMap(data.getId(), packageId, data.getSubjectId(), data.getPhone(), null, null, null, calculatedAt);
} }
subjectToUpdate.add(subject); subjectToUpdate.add(subject);
}); });
@ -109,7 +114,7 @@ public class SignalService {
int updateBatchSize = batchSize / 8; // 8 параметров на одну запись для обновления. Максимальное количество параметров ~65000 int updateBatchSize = batchSize / 8; // 8 параметров на одну запись для обновления. Максимальное количество параметров ~65000
for (int j = 0; j < subjectToUpdate.size(); j += updateBatchSize) { for (int j = 0; j < subjectToUpdate.size(); j += updateBatchSize) {
int endIndex = Math.min(j + updateBatchSize, subjectToUpdate.size()); int endIndex = Math.min(j + updateBatchSize, subjectToUpdate.size());
phoneFidMapService.updateSubjects(subjectToUpdate.subList(j, endIndex)); phoneFidMapService.updatePhoneFidMaps(subjectToUpdate.subList(j, endIndex));
} }
} }
@ -117,18 +122,24 @@ public class SignalService {
} }
public void rejectPackage(MonitoringRequest request) { public void rejectPackage(MonitoringRequest request) {
userPackageService.insertPackage(request, LocalDateTime.now(), Status.REJECTED); UserPackage userPackage = UserPackage.builder()
.userId(request.getUserId())
.packageName(request.getPackageName())
.createdAt(LocalDateTime.now())
.status(Status.REJECTED.name())
.build();
userPackageService.insertPackage(userPackage);
} }
public void setPackageStatus(Integer packageId, Status status) { public void updatePackageStatus(Integer packageId, Status status) {
userPackageService.setPackageStatus(packageId, status); userPackageService.updatePackageStatus(packageId, status);
} }
public Signals buildSignals(Integer packageId, List<PhoneService.FidsPhoneData> fids) { public Signals buildSignals(Integer packageId, List<PhoneService.FidsPhoneData> fids) {
PackageData packageData = userPackageService.findPackageData(packageId); UserPackage userPackage = userPackageService.findPackage(packageId);
Signals signals = new Signals(); Signals signals = new Signals();
signals.setOnline("2"); // Всегда=2 (только онлайн-сигналы) signals.setOnline("2"); // Всегда=2 (только онлайн-сигналы)
signals.setId(packageData.getUserId().substring(0, 6) + "_" + packageData.getPackageName()); // <MEMBERCODE>_<PackageName> signals.setId(userPackage.getUserId().substring(0, 6) + "_" + userPackage.getPackageName()); // <MEMBERCODE>_<PackageName>
Auth auth = new Auth(); Auth auth = new Auth();
auth.setUser(config.getSignalsuser()); auth.setUser(config.getSignalsuser());
signals.setAuth(auth); signals.setAuth(auth);
@ -208,12 +219,11 @@ public class SignalService {
public MonitoringActivePackagesResponse findActivePackages(String userId) { public MonitoringActivePackagesResponse findActivePackages(String userId) {
String memberCode = userId.substring(0, 6);
MonitoringActivePackagesResponse activePackages = new MonitoringActivePackagesResponse(); MonitoringActivePackagesResponse activePackages = new MonitoringActivePackagesResponse();
activePackages.setStatus("OK"); activePackages.setStatus("OK");
activePackages.setMembercode(memberCode); activePackages.setMembercode(userId.substring(0, 6));
Packages packages = new Packages(); Packages packages = new Packages();
userPackageService.findPackageDataList(memberCode, Status.ON_MONITORING).forEach(data -> { userPackageService.findUserPackages(userId, Status.ON_MONITORING).forEach(data -> {
Package pack = new Package(); Package pack = new Package();
pack.setPackageName(data.getPackageName()); pack.setPackageName(data.getPackageName());
pack.setCreatedAt(data.getCreatedAt() != null ? data.getCreatedAt().toString() : null); pack.setCreatedAt(data.getCreatedAt() != null ? data.getCreatedAt().toString() : null);
@ -228,12 +238,12 @@ public class SignalService {
} }
public boolean isPackageExists(String username, String packageName) { public boolean isPackageExists(String username, String packageName) {
return userPackageService.isPackageExists(username.substring(0, 6), packageName, Status.ON_MONITORING); return userPackageService.isPackageExists(username, packageName, Status.ON_MONITORING);
} }
public MonitoringPackageDeleteResponse deletePackage(String username, String packageName) { public MonitoringPackageDeleteResponse deletePackage(String username, String packageName) {
LocalDateTime deactivatedAt = LocalDateTime.now(); LocalDateTime deactivatedAt = LocalDateTime.now();
userPackageService.deletePackage(username.substring(0, 6), packageName, Status.DELETED, Status.ON_MONITORING, deactivatedAt); userPackageService.deletePackage(username, packageName, Status.DELETED, Status.ON_MONITORING, deactivatedAt);
MonitoringPackageDeleteResponse deleteResponse = new MonitoringPackageDeleteResponse(); MonitoringPackageDeleteResponse deleteResponse = new MonitoringPackageDeleteResponse();
deleteResponse.setStatus("Deleted"); deleteResponse.setStatus("Deleted");
@ -242,19 +252,19 @@ public class SignalService {
return deleteResponse; return deleteResponse;
} }
public List<PackageData> findPackagesOnMonitoring() { public List<UserPackage> findPackagesOnMonitoring() {
return userPackageService.findPackagesByStatus(Status.ON_MONITORING); return userPackageService.findAllPackagesByStatus(Status.ON_MONITORING);
} }
public List<SubjectData> findFullSubjectsData(Integer packageId) { public List<PhoneFidMap> findFullSubjectsData(Integer packageId) {
return phoneFidMapService.findFullSubjectsData(packageId); return phoneFidMapService.findFullPhoneFidMap(packageId);
} }
public void setHits(List<HitsData> hits) { public void insertHits(List<Hit> hits) {
hitsService.setHits(hits); hitsService.insertHits(hits);
} }
public void updateLastDownloadedReport(Integer id, String fileName) { public void updateLastDownloadedReport(Integer id, String fileName) {
userPackageService.setPackageLastDownloadedReport(id, fileName); userPackageService.updatePackageLastDownloadedReport(id, fileName);
} }
} }

View file

@ -3,8 +3,8 @@ package ru.nbch.credit_tracker.service;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings; import ru.nbch.credit_tracker.config.settings.CreditTrackerSettings;
import ru.nbch.credit_tracker.entities.dto.PackageData; import ru.nbch.credit_tracker.entities.dto.PhoneFidMap;
import ru.nbch.credit_tracker.entities.dto.SubjectData; import ru.nbch.credit_tracker.entities.dto.UserPackage;
import ru.nbch.credit_tracker.entities.signal_package.Signals; import ru.nbch.credit_tracker.entities.signal_package.Signals;
import ru.nbch.credit_tracker.enums.Status; import ru.nbch.credit_tracker.enums.Status;
import ru.nbch.credit_tracker.service.indic.PhoneService; import ru.nbch.credit_tracker.service.indic.PhoneService;
@ -42,32 +42,32 @@ public class UpdatingFlagsService {
private void update() { private void update() {
log.info("Start updating flags"); log.info("Start updating flags");
List<PackageData> packages = signalService.findPackagesOnMonitoring(); List<UserPackage> packages = signalService.findPackagesOnMonitoring();
for (PackageData packageData : packages) { for (UserPackage userPackage : packages) {
log.info("Updating flags for Package {}", packageData.getPackageName()); log.info("Updating flags for Package {}", userPackage.getPackageName());
List<SubjectData> subjects = signalService.findFullSubjectsData(packageData.getId()) List<PhoneFidMap> subjects = signalService.findFullSubjectsData(userPackage.getId())
.stream().filter(subject -> subject.getCalculatedAt() != null && hasDaysPassed(subject.getCalculatedAt())).toList(); .stream().filter(subject -> subject.getCalculatedAt() != null && hasDaysPassed(subject.getCalculatedAt())).toList();
updateFlags(packageData.getId(), subjects, packageData.getPackageName()); updateFlags(userPackage.getId(), subjects, userPackage.getPackageName());
} }
log.info("Finish updating flags"); log.info("Finish updating flags");
} }
private void updateFlags(Integer packageId, List<SubjectData> subjects, String packageName) { private void updateFlags(Integer packageId, List<PhoneFidMap> subjects, String packageName) {
try { try {
signalService.setPackageStatus(packageId, Status.PROCESSING); signalService.updatePackageStatus(packageId, Status.PROCESSING);
List<PhoneService.FidsPhoneData> phoneFidsData = signalService.updateFlags(subjects, packageId); List<PhoneService.FidsPhoneData> phoneFidsData = signalService.updateFlags(subjects, packageId);
if (!phoneFidsData.isEmpty()) { if (!phoneFidsData.isEmpty()) {
Signals signals = signalService.buildSignals(packageId, phoneFidsData); Signals signals = signalService.buildSignals(packageId, phoneFidsData);
if (signalRestService.update(signals)) { if (signalRestService.update(signals)) {
log.info("Flags were updated successfully. PackageId: {} PackageName: {}. Package status changed to ON_MONITORING", packageId, packageName); log.info("Flags were updated successfully. PackageId: {} PackageName: {}. Package status changed to ON_MONITORING", packageId, packageName);
signalService.setPackageStatus(packageId, Status.ON_MONITORING); signalService.updatePackageStatus(packageId, Status.ON_MONITORING);
} else { } else {
log.info("Updated package registration was rejected by signal service. PackageId: {} PackageName: {}", packageId, packageName); log.info("Updated package registration was rejected by signal service. PackageId: {} PackageName: {}", packageId, packageName);
signalService.setPackageStatus(packageId, Status.ERROR); signalService.updatePackageStatus(packageId, Status.ERROR);
} }
} else { } else {
log.info("No flags were updated for package id {}. Package status changed to ON_MONITORING", packageId); log.info("No flags were updated for package id {}. Package status changed to ON_MONITORING", packageId);
signalService.setPackageStatus(packageId, Status.ON_MONITORING); signalService.updatePackageStatus(packageId, Status.ON_MONITORING);
} }
} catch (Exception e) { } catch (Exception e) {
log.error("Ошибка при поиске фидов или перерасчете флагов просрочек. Package_id {}", packageId, e); log.error("Ошибка при поиске фидов или перерасчете флагов просрочек. Package_id {}", packageId, e);

View file

@ -4,7 +4,7 @@ import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import ru.nbch.credit_tracker.entities.dto.SubjectData; import ru.nbch.credit_tracker.entities.dto.PhoneFidMap;
import ru.nbch.credit_tracker.mapper.indic.PhoneMapper; import ru.nbch.credit_tracker.mapper.indic.PhoneMapper;
import java.time.LocalDate; import java.time.LocalDate;
@ -20,16 +20,12 @@ public class PhoneService {
this.mapper = mapper; this.mapper = mapper;
} }
public List<FidsPhoneData> findFidsPhoneData(List<SubjectData> subjects) { public List<FidsPhoneData> findFidsPhoneData(List<PhoneFidMap> subjects) {
return findFidsPhoneData(subjects, false);
}
public List<FidsPhoneData> findFidsPhoneData(List<SubjectData> subjects, boolean processNullFids) {
List<FidsPhoneData> fidsPhoneDataList = new ArrayList<>(); List<FidsPhoneData> fidsPhoneDataList = new ArrayList<>();
int batchSize = 10000; int batchSize = 10000;
for (int i = 0; i < subjects.size(); i += batchSize) { for (int i = 0; i < subjects.size(); i += batchSize) {
int end = Math.min(i + batchSize, subjects.size()); int end = Math.min(i + batchSize, subjects.size());
List<SubjectData> currentSubjects = subjects.subList(i, end); List<PhoneFidMap> currentSubjects = subjects.subList(i, end);
List<String> phones = currentSubjects.stream().map(subject -> "9" + subject.getPhone()).toList(); List<String> phones = currentSubjects.stream().map(subject -> "9" + subject.getPhone()).toList();
List<FidsData> fidsData = mapper.findFids(phones); List<FidsData> fidsData = mapper.findFids(phones);
@ -40,7 +36,7 @@ public class PhoneService {
Integer fid = fidsMap.get(phone); Integer fid = fidsMap.get(phone);
if (fid != null) { if (fid != null) {
fidsPhoneDataList.add(new FidsPhoneData(subject.getId(), fid, subject.getPhone(), subject.getSubjectId())); fidsPhoneDataList.add(new FidsPhoneData(subject.getId(), fid, subject.getPhone(), subject.getSubjectId()));
} else if (processNullFids) { } else {
fidsPhoneDataList.add(new FidsPhoneData(subject.getId(), null, subject.getPhone(), subject.getSubjectId())); fidsPhoneDataList.add(new FidsPhoneData(subject.getId(), null, subject.getPhone(), subject.getSubjectId()));
} }
}); });

View file

@ -1,7 +1,7 @@
package ru.nbch.credit_tracker.service.signal; package ru.nbch.credit_tracker.service.signal;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import ru.nbch.credit_tracker.entities.dto.HitsData; import ru.nbch.credit_tracker.entities.dto.Hit;
import ru.nbch.credit_tracker.mapper.signal.HitsMapper; import ru.nbch.credit_tracker.mapper.signal.HitsMapper;
import java.util.List; import java.util.List;
@ -15,7 +15,7 @@ public class HitsService {
this.mapper = mapper; this.mapper = mapper;
} }
public void setHits(List<HitsData> hits) { public void insertHits(List<Hit> hits) {
mapper.setHits(hits); mapper.insertHits(hits);
} }
} }

View file

@ -1,11 +1,10 @@
package ru.nbch.credit_tracker.service.signal; package ru.nbch.credit_tracker.service.signal;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import ru.nbch.credit_tracker.entities.dto.SubjectData; import ru.nbch.credit_tracker.entities.dto.PhoneFidMap;
import ru.nbch.credit_tracker.entities.request.monitoring_request.Subject; import ru.nbch.credit_tracker.entities.request.monitoring_request.Subject;
import ru.nbch.credit_tracker.mapper.signal.PhoneFidMapMapper; import ru.nbch.credit_tracker.mapper.signal.PhoneFidMapMapper;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;
@Service @Service
@ -21,19 +20,15 @@ public class PhoneFidMapService {
mapper.registerSubjects(subjects, packageId); mapper.registerSubjects(subjects, packageId);
} }
public void registerSubjectsFidAndDebts(Integer id, Integer fid, Integer flagDebt5000, Integer flag90, LocalDateTime calculatedAt) { public List<PhoneFidMap> findPhoneFidMaps(Integer packageId) {
mapper.registerSubjectsFidAndDebts(id, fid, flagDebt5000, flag90, calculatedAt); return mapper.findPhoneFidMaps(packageId);
} }
public List<SubjectData> findSubjectsData(Integer packageId) { public List<PhoneFidMap> findFullPhoneFidMap(Integer packageId) {
return mapper.findSubjectsData(packageId); return mapper.findFullPhoneFidMap(packageId);
} }
public List<SubjectData> findFullSubjectsData( Integer packageId) { public void updatePhoneFidMaps(List<PhoneFidMap> subjects) {
return mapper.findFullSubjectsData(packageId); mapper.updatePhoneFidMaps(subjects);
}
public void updateSubjects(List<SubjectData> subjects) {
mapper.updateSubjects(subjects);
} }
} }

View file

@ -1,8 +1,7 @@
package ru.nbch.credit_tracker.service.signal; package ru.nbch.credit_tracker.service.signal;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import ru.nbch.credit_tracker.entities.dto.PackageData; import ru.nbch.credit_tracker.entities.dto.UserPackage;
import ru.nbch.credit_tracker.entities.request.monitoring_request.MonitoringRequest;
import ru.nbch.credit_tracker.enums.Status; import ru.nbch.credit_tracker.enums.Status;
import ru.nbch.credit_tracker.mapper.signal.UserPackageMapper; import ru.nbch.credit_tracker.mapper.signal.UserPackageMapper;
@ -19,38 +18,38 @@ public class UserPackageService {
} }
public boolean isPackageNotUnique(String userId, String packageName) { public boolean isPackageNotUnique(String userId, String packageName) {
return mapper.isPackageNotUnique(userId, packageName); return mapper.isPackageNotUnique(userId.substring(0, 6), packageName);
} }
public boolean isPackageExists(String userId, String packageName, Status status) { public boolean isPackageExists(String userId, String packageName, Status status) {
return mapper.isPackageExists(userId, packageName, status.name()); return mapper.isPackageExists(userId.substring(0, 6), packageName, status.name());
} }
public void deletePackage(String userId, String packageName, Status newStatus, Status previousStatus, LocalDateTime deactivatedAt) { public void deletePackage(String userId, String packageName, Status newStatus, Status previousStatus, LocalDateTime deactivatedAt) {
mapper.deletePackage(userId, packageName, newStatus.name(), previousStatus.name(), deactivatedAt); mapper.deletePackage(userId.substring(0, 6), packageName, newStatus.name(), previousStatus.name(), deactivatedAt);
} }
public Integer insertPackage(MonitoringRequest request, LocalDateTime creadedAt, Status status) { public Integer insertPackage(UserPackage userPackage) {
return mapper.insertPackage(request, creadedAt, status.name()); return mapper.insertPackage(userPackage);
} }
public void setPackageStatus(Integer packageId, Status status) { public void updatePackageStatus(Integer packageId, Status status) {
mapper.setPackageStatus(packageId, status.name()); mapper.updatePackageStatus(packageId, status.name());
} }
public void setPackageLastDownloadedReport(Integer id, String fileName) { public void updatePackageLastDownloadedReport(Integer id, String fileName) {
mapper.setPackageLastDownloadedReport(id, fileName); mapper.updatePackageLastDownloadedReport(id, fileName);
} }
public PackageData findPackageData(Integer id) { public UserPackage findPackage(Integer id) {
return mapper.findPackageData(id); return mapper.findPackage(id);
} }
public List<PackageData> findPackageDataList(String userId, Status status) { public List<UserPackage> findUserPackages(String userId, Status status) {
return mapper.findPackageDataList(userId, status.name()); return mapper.findUserPackages(userId.substring(0, 6), status.name());
} }
public List<PackageData> findPackagesByStatus(Status status) { public List<UserPackage> findAllPackagesByStatus(Status status) {
return mapper.findPackagesByStatus(status.name()); return mapper.findAllPackagesByStatus(status.name());
} }
} }

View file

@ -5,7 +5,7 @@
<mapper namespace="ru.nbch.credit_tracker.mapper.signal.HitsMapper"> <mapper namespace="ru.nbch.credit_tracker.mapper.signal.HitsMapper">
<insert id="setHits" parameterType="java.util.List"> <insert id="insertHits" parameterType="java.util.List">
INSERT INTO signals_hits (package_id, subject_id, signal_type, response_sent_at, report_file_name) INSERT INTO signals_hits (package_id, subject_id, signal_type, response_sent_at, report_file_name)
values values
<foreach collection="hits" item="hit" separator=","> <foreach collection="hits" item="hit" separator=",">

View file

@ -5,7 +5,7 @@
<mapper namespace="ru.nbch.credit_tracker.mapper.signal.PhoneFidMapMapper"> <mapper namespace="ru.nbch.credit_tracker.mapper.signal.PhoneFidMapMapper">
<resultMap id="subjectDataResultMap" type="ru.nbch.credit_tracker.entities.dto.SubjectData"> <resultMap id="PhoneFidMapResultMap" type="ru.nbch.credit_tracker.entities.dto.PhoneFidMap">
<result property="id" column="id"/> <result property="id" column="id"/>
<result property="packageId" column="package_id"/> <result property="packageId" column="package_id"/>
<result property="subjectId" column="subject_id"/> <result property="subjectId" column="subject_id"/>
@ -25,7 +25,7 @@
</insert> </insert>
<update id="updateSubjects" parameterType="java.util.List"> <update id="updatePhoneFidMaps" parameterType="java.util.List">
<foreach collection="subjects" item="subject" separator=";"> <foreach collection="subjects" item="subject" separator=";">
UPDATE signals_phone_fid_map UPDATE signals_phone_fid_map
SET SET
@ -40,19 +40,13 @@
</foreach> </foreach>
</update> </update>
<update id="registerSubjectsFidAndDebts"> <select id="findPhoneFidMaps" resultMap="PhoneFidMapResultMap" resultType="java.util.List">
UPDATE signals_phone_fid_map
SET fid = #{fid}, flag_debt5000 = #{flagDebt5000}, flag_90_12 = #{flag90}, calculated_at = #{calculatedAt}
WHERE id = #{id}
</update>
<select id="findSubjectsData" resultMap="subjectDataResultMap" resultType="java.util.List">
SELECT id, subject_id, phone SELECT id, subject_id, phone
FROM signals_phone_fid_map FROM signals_phone_fid_map
WHERE package_id = #{packageId} WHERE package_id = #{packageId}
</select> </select>
<select id="findFullSubjectsData" resultMap="subjectDataResultMap" resultType="java.util.List"> <select id="findFullPhoneFidMap" resultMap="PhoneFidMapResultMap" resultType="java.util.List">
SELECT id, SELECT id,
package_id, package_id,
subject_id, subject_id,

View file

@ -5,7 +5,7 @@
<mapper namespace="ru.nbch.credit_tracker.mapper.signal.UserPackageMapper"> <mapper namespace="ru.nbch.credit_tracker.mapper.signal.UserPackageMapper">
<resultMap id="packageDataResultMap" type="ru.nbch.credit_tracker.entities.dto.PackageData"> <resultMap id="packageDataResultMap" type="ru.nbch.credit_tracker.entities.dto.UserPackage">
<result property="id" column="id"/> <result property="id" column="id"/>
<result property="userId" column="membercode"/> <result property="userId" column="membercode"/>
<result property="packageName" column="package_name"/> <result property="packageName" column="package_name"/>
@ -38,40 +38,34 @@
#{previousStatus} #{previousStatus}
</update> </update>
<select id="registerPackage" resultType="java.lang.Integer" <select id="insertPackage" resultType="java.lang.Integer"
parameterType="ru.nbch.credit_tracker.entities.request.monitoring_request.MonitoringRequest"> parameterType="ru.nbch.credit_tracker.entities.request.monitoring_request.MonitoringRequest">
INSERT INTO signals_user_packages (membercode, package_name, created_at, status) INSERT INTO signals_user_packages (membercode, package_name, created_at, status)
values (#{request.userId}, #{request.packageName}, #{creadedAt}, #{status}) RETURNING id values (#{userPackage.userId}, #{userPackage.packageName}, #{userPackage.creadedAt}, #{userPackage.status}) RETURNING id
</select> </select>
<insert id="insertPackage" <update id="updatePackageStatus">
parameterType="ru.nbch.credit_tracker.entities.request.monitoring_request.MonitoringRequest">
INSERT INTO signals_user_packages (membercode, package_name, created_at, status)
values (#{request.userId}, #{request.packageName}, #{creadedAt}, #{status})
</insert>
<update id="setPackageStatus">
UPDATE signals_user_packages UPDATE signals_user_packages
SET status = #{status} SET status = #{status}
WHERE id = #{packageId} WHERE id = #{packageId}
</update> </update>
<update id="setPackageLastDownloadedReport"> <update id="updatePackageLastDownloadedReport">
UPDATE signals_user_packages UPDATE signals_user_packages
SET last_downloaded_report = #{fileName} SET last_downloaded_report = #{fileName}
WHERE id = #{id} WHERE id = #{id}
</update> </update>
<select id="findPackageData" resultMap="packageDataResultMap" <select id="findPackage" resultMap="packageDataResultMap"
resultType="ru.nbch.credit_tracker.entities.dto.PackageData"> resultType="ru.nbch.credit_tracker.entities.dto.UserPackage">
SELECT membercode, package_name SELECT membercode, package_name
FROM signals_user_packages FROM signals_user_packages
WHERE id = #{id} WHERE id = #{id}
LIMIT 1 LIMIT 1
</select> </select>
<select id="findPackageDataList" resultMap="packageDataResultMap" <select id="findUserPackages" resultMap="packageDataResultMap"
resultType="ru.nbch.credit_tracker.entities.dto.PackageData"> resultType="ru.nbch.credit_tracker.entities.dto.UserPackage">
SELECT package_name, created_at SELECT package_name, created_at
FROM signals_user_packages FROM signals_user_packages
WHERE membercode IS NOT NULL WHERE membercode IS NOT NULL
@ -79,8 +73,8 @@
AND status = #{status} AND status = #{status}
</select> </select>
<select id="findPackagesByStatus" resultMap="packageDataResultMap" <select id="findAllPackagesByStatus" resultMap="packageDataResultMap"
resultType="ru.nbch.credit_tracker.entities.dto.PackageData"> resultType="ru.nbch.credit_tracker.entities.dto.UserPackage">
SELECT id, membercode, package_name, created_at, last_downloaded_report SELECT id, membercode, package_name, created_at, last_downloaded_report
FROM signals_user_packages FROM signals_user_packages
WHERE status = #{status} WHERE status = #{status}