This commit is contained in:
Mikhail Trofimov 2025-10-16 14:01:17 +03:00
parent 8784b4e4f3
commit 10257b9cb2
22 changed files with 71 additions and 57 deletions

View file

@ -30,7 +30,7 @@ public class PersonFactoryBuilder {
private PersonService.PersonData personData;
private Integer uid;
private Long uid;
public static PersonFactoryBuilder builder() {
return new PersonFactoryBuilder();
@ -41,7 +41,7 @@ public class PersonFactoryBuilder {
return this;
}
public PersonFactoryBuilder uid(Integer uid) {
public PersonFactoryBuilder uid(Long uid) {
this.uid = uid;
return this;
}

View file

@ -8,8 +8,8 @@ import java.time.LocalDateTime;
@Getter
@Setter
public class Hit {
private Integer id;
private Integer packageId;
private Long id;
private Long packageId;
private String subjectId;
private Integer signalType;
private LocalDateTime responseSentAt;

View file

@ -10,8 +10,8 @@ import java.time.LocalDateTime;
@NoArgsConstructor
@Builder
public class PhoneFidMap {
private Integer id;
private Integer packageId;
private Long id;
private Long packageId;
private String subjectId;
private String phone;
private Integer fid;

View file

@ -10,7 +10,7 @@ import java.time.LocalDateTime;
@Setter
@Builder
public class UserPackage {
private Integer id;
private Long id;
private String userId;
private String packageName;
private LocalDateTime createdAt;

View file

@ -15,7 +15,7 @@ public class Person {
@XmlValue
protected String value;
@XmlAttribute(name = "uid", required = true)
protected Integer uid;
protected Long uid;
@XmlAttribute(name = "oksm", required = true)
protected String oksm;
@XmlAttribute(name = "s", required = true)

View file

@ -63,7 +63,7 @@ public class MonitoringReportErrors {
public static class P {
@XmlAttribute(name = "uid")
protected Integer uid;
protected Long uid;
@XmlValue
protected String value;

View file

@ -16,7 +16,7 @@ import java.util.List;
public class Person {
@XmlAttribute(name = "uid", required = true)
protected Integer uid;
protected Long uid;
@XmlElement(name = "Inquiry", required = true)
protected List<Inquiry> inquiries;

View file

@ -103,7 +103,7 @@ public class SignalFacade {
// Валидация Архива на количетсво файлов, размер и расширение
MonitoringRequest monitoringRequest;
Integer packageId;
Long packageId;
ZipInputStream zipInputStream = null;
String filePath;
try {
@ -224,7 +224,7 @@ public class SignalFacade {
}
@SetAndClearMdc(argIndex = 1)
public void registerFidsAndDebts(Integer packageId, String packageName, String filePath) {
public void registerFidsAndDebts(Long packageId, String packageName, String filePath) {
Map<String, String> context = MDC.getCopyOfContextMap();
executor.execute(() -> {
if (context != null) {

View file

@ -10,15 +10,15 @@ import java.util.List;
@Mapper
public interface PhoneFidMapMapper {
void registerSubjects(@Param("subjects") List<Subject> subjects, @Param("packageId") Integer packageId);
void registerSubjects(@Param("subjects") List<Subject> subjects, @Param("packageId") Long packageId);
List<PhoneFidMap> findFullPhoneFidMap(@Param("packageId") Integer packageId, @Param("offset") int offset, @Param("limit") int limit);
List<PhoneFidMap> findFullPhoneFidMap(@Param("packageId") Long packageId, @Param("offset") int offset, @Param("limit") int limit);
void updatePhoneFidMaps(@Param("subjects") List<PhoneFidMap> subjects);
void updatePhoneFidMapsErrors(@Param("subjects") List<PhoneFidMap> subjects);
PhoneFidMap findPhoneFidMapById(@Param("id") Integer packageId);
PhoneFidMap findPhoneFidMapById(@Param("id") Long packageId);
boolean hasNonNullFids(@Param("packageId") Integer packageId);
boolean hasNonNullFids(@Param("packageId") Long packageId);
}

View file

@ -18,15 +18,15 @@ 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);
Integer insertPackage(@Param("userPackage") UserPackage userPackage);
Long insertPackage(@Param("userPackage") UserPackage userPackage);
void updatePackageStatus(@Param("packageId") Integer packageId, @Param("status") String status);
void updatePackageStatus(@Param("packageId") Long packageId, @Param("status") String status);
void updatePackageLastDownloadedReport(@Param("id") Integer id, @Param("fileName") String fileName);
void updatePackageLastDownloadedReport(@Param("id") Long id, @Param("fileName") String fileName);
void updatePackageOnMonitoringSuccess(@Param("id")Integer id, @Param("monitoringAt") LocalDateTime monitoringAt);
void updatePackageOnMonitoringSuccess(@Param("id") Long id, @Param("monitoringAt") LocalDateTime monitoringAt);
UserPackage findPackage(@Param("id") Integer id);
UserPackage findPackage(@Param("id") Long id);
List<UserPackage> findUserPackages(@Param("userId") String userId, @Param("statuses") List<String> status);

View file

@ -25,13 +25,13 @@ public class MonitoringErrorProcesingService {
this.signalRestService = signalRestService;
}
public void findErrors(Integer packageId) {
public void findErrors(Long packageId) {
UserPackage userPackage = signalService.findPackage(packageId);
getCurrentProxy().processPackage(userPackage, packageId);
}
@SetAndClearMdc
public void processPackage(UserPackage userPackage, Integer packageId) {
public void processPackage(UserPackage userPackage, Long packageId) {
if (userPackage != null) {
String packCode = userPackage.getUserId().substring(0, 6) + "_" + userPackage.getPackageName();
log.info("Проверка на ошибки при постановке на мониторинг. packCode={}, packageId={}", packCode, packageId);

View file

@ -312,7 +312,7 @@ public class MonitoringService {
log.info("Signal hits updated for package {}", userPackage.getPackageName());
}
public String loadReport(Integer packageId, String reportName) {
public String loadReport(Long packageId, String reportName) {
return signalRestService.downloadReport(packageId, reportName);
}

View file

@ -72,7 +72,7 @@ public class SignalService {
return userPackageService.isPackageNotUnique(request.getUserId(), request.getPackageName());
}
public Integer registerPackage(MonitoringRequest request) {
public Long registerPackage(MonitoringRequest request) {
UserPackage userPackage = UserPackage.builder()
.userId(request.getUserId())
.packageName(request.getPackageName())
@ -82,7 +82,7 @@ public class SignalService {
return userPackageService.insertPackage(userPackage);
}
public void registerSubjects(String filePath, Integer packageId) {
public void registerSubjects(String filePath, Long packageId) {
log.info("Start registering subjects. PackageId: {}", packageId);
try (BufferedInputStream in = new BufferedInputStream(Files.newInputStream(Path.of(filePath)), 8 * 1024 * 1024)) {
staxXmlProcessor.read(in, MonitoringRequest.class,
@ -105,7 +105,7 @@ public class SignalService {
/**
* Обрабатывает все PhoneFidMap по packageId, выгружая их пачками и фильтруя по переданному фильтру
*/
public UpdateResult updateSubjects(Integer packageId, Predicate<PhoneFidMap> filter) {
public UpdateResult updateSubjects(Long packageId, Predicate<PhoneFidMap> filter) {
boolean updated = false;
boolean noFidsFound = true;
int offset = 0;
@ -141,7 +141,7 @@ public class SignalService {
* Обрабатывает пачку PhoneFidMap: обновляет фиды и флаги просрочек
* @return fidsFound true - если хотя бы по одному номеру был найден фид, false - в противном случае
*/
public boolean updateFlags(List<PhoneFidMap> subjects, Integer packageId) {
public boolean updateFlags(List<PhoneFidMap> subjects, Long packageId) {
log.info("Start calculating fids and flags for subjects batch. PackageId: {}", packageId);
Map<String, Integer> fidsMap = phoneService.findFidsPhoneData(subjects);
LocalDateTime calculatedAt = LocalDateTime.now();
@ -197,11 +197,11 @@ public class SignalService {
userPackageService.insertPackage(userPackage);
}
public void updatePackageStatus(Integer packageId, Status status) {
public void updatePackageStatus(Long packageId, Status status) {
userPackageService.updatePackageStatus(packageId, status);
}
public void updatePackageOnMonitoringSuccess(Integer packageId, LocalDateTime monitoringAt) {
public void updatePackageOnMonitoringSuccess(Long packageId, LocalDateTime monitoringAt) {
userPackageService.updatePackageOnMonitoringSuccess(packageId, monitoringAt);
}
@ -210,7 +210,7 @@ public class SignalService {
*
* @return Путь к файлу запроса к официальному сервису сигналов на постановку на мониторинг
*/
public String writeSignals(Integer packageId) {
public String writeSignals(Long packageId) {
String folderPath = config.getLoadDir() + File.separator + "tmp_folder" + File.separator;
String filePath = folderPath + UUID.randomUUID() + "_output.xml";
CTUtil.createFolder(folderPath);
@ -226,7 +226,7 @@ public class SignalService {
return filePath;
}
private Signals buildSignals(Integer packageId) {
private Signals buildSignals(Long packageId) {
UserPackage userPackage = userPackageService.findPackage(packageId);
Signals signals = new Signals();
signals.setOnline("2"); // Всегда=2 (только онлайн-сигналы)
@ -242,7 +242,7 @@ public class SignalService {
* Обрабатывает все PhoneFidMap по packageId, выгружая их пачками и фильтруя по переданному фильтру.
* writer записывает пачку сразу в файл
*/
private void buildPersons(Integer packageId, Consumer<List<Person>> writer) {
private void buildPersons(Long packageId, Consumer<List<Person>> writer) {
int offset = 0;
List<PhoneFidMap> batch;
do {
@ -282,7 +282,7 @@ public class SignalService {
return persons;
}
public void updateSubjectsErrors(String filePath, Integer packageId) {
public void updateSubjectsErrors(String filePath, Long packageId) {
log.info("Start updating subjects errors. PackageId: {}", packageId);
try (BufferedInputStream in = new BufferedInputStream(Files.newInputStream(Path.of(filePath)), 8 * 1024 * 1024)) {
staxXmlProcessor.read(in, MonitoringReportErrors.class,
@ -341,19 +341,19 @@ public class SignalService {
hitsService.insertHits(hits);
}
public void updateLastDownloadedReport(Integer id, String fileName) {
public void updateLastDownloadedReport(Long id, String fileName) {
userPackageService.updatePackageLastDownloadedReport(id, fileName);
}
public PhoneFidMap findPhoneFidMapById(Integer id) {
public PhoneFidMap findPhoneFidMapById(Long id) {
return phoneFidMapService.findPhoneFidMapById(id);
}
public boolean hasNonNullfids(Integer packageId) {
public boolean hasNonNullfids(Long packageId) {
return phoneFidMapService.hasNonNullfids(packageId);
}
public UserPackage findPackage(Integer packageId) {
public UserPackage findPackage(Long packageId) {
return userPackageService.findPackage(packageId);
}

View file

@ -45,7 +45,7 @@ public class UpdateProcessingPackagesService {
}
@SetAndClearMdc(argIndex = 1)
public void process(Integer packageId, String packageName) {
public void process(Long packageId, String packageName) {
try {
SignalService.UpdateResult updateResult = signalService.updateSubjects(packageId, null);
if (updateResult.isNoFidsFound()) {

View file

@ -61,7 +61,7 @@ public class UpdatingFlagsService {
}
private void updateFlags(UserPackage userPackage) {
Integer packageId = userPackage.getId();
Long packageId = userPackage.getId();
String packageName = userPackage.getPackageName();
try {
signalService.updatePackageStatus(packageId, Status.PROCESSING);

View file

@ -16,11 +16,11 @@ public class PhoneFidMapService {
this.mapper = mapper;
}
public void registerSubjects(List<Subject> subjects, Integer packageId) {
public void registerSubjects(List<Subject> subjects, Long packageId) {
mapper.registerSubjects(subjects, packageId);
}
public List<PhoneFidMap> findFullPhoneFidMap(Integer packageId, int offset, int limit) {
public List<PhoneFidMap> findFullPhoneFidMap(Long packageId, int offset, int limit) {
return mapper.findFullPhoneFidMap(packageId, offset, limit);
}
@ -32,11 +32,11 @@ public class PhoneFidMapService {
mapper.updatePhoneFidMapsErrors(subjects);
}
public PhoneFidMap findPhoneFidMapById(Integer id) {
public PhoneFidMap findPhoneFidMapById(Long id) {
return mapper.findPhoneFidMapById(id);
}
public boolean hasNonNullfids(Integer packageId) {
public boolean hasNonNullfids(Long packageId) {
return mapper.hasNonNullFids(packageId);
}
}

View file

@ -68,7 +68,7 @@ public class SignalRestService {
* Ставит пакет на мониторинг в официальный сервис сигналов
* @return true - если пакет успешно поставился на мониторинг. false - в противном случае
*/
public boolean setupMonitoring(Integer packageId) throws Exception {
public boolean setupMonitoring(Long packageId) throws Exception {
String path = signalService.writeSignals(packageId);
Resource request = compressFile(path);
@ -105,7 +105,7 @@ public class SignalRestService {
/**
* @return имя файла с ошибками по поставленному на мониторинг отчету
*/
public String getErrorFileName(Integer packageId, String packCode) {
public String getErrorFileName(Long packageId, String packCode) {
String url = GET_REPORT_URI + "?packCode=" + packCode;
HttpHeaders headers = new HttpHeaders();
@ -148,7 +148,7 @@ public class SignalRestService {
*
* @return путь к разархивированному файлу. Пример: <loadDir>/tmp_folder/<package_id>/0001XX_MY_BATCH_223112.1.errors.xml.gz
*/
public String loadErrorFile(Integer packageId, String fileName) {
public String loadErrorFile(Long packageId, String fileName) {
String url = DOWNLOAD_REPORT_URI + "?fNameRequest=" + fileName;
HttpHeaders headers = new HttpHeaders();
@ -229,7 +229,7 @@ public class SignalRestService {
*
* @return путь к разархивированному файлу. Пример: <loadDir>/tmp_folder/<package_id>/0001XX_MY_BATCH_204.1.online.2025-07-08T20-00-46.xml.gz.xml
*/
public String downloadReport(Integer packageId, String reportName) {
public String downloadReport(Long packageId, String reportName) {
String url = DOWNLOAD_ONLINE_REPORT_URI + "?fNameReport=" + reportName;
HttpHeaders headers = new HttpHeaders();
@ -247,7 +247,7 @@ public class SignalRestService {
return unzipReport(response,packageId, reportName);
}
private String unzipReport(ResponseEntity<byte[]> response, Integer packageId, String reportName) {
private String unzipReport(ResponseEntity<byte[]> response, Long packageId, String reportName) {
boolean isGzipped = response.getHeaders().getContentType() != null
&& response.getHeaders().getContentType().toString().equals("application/x-gzip");

View file

@ -34,23 +34,23 @@ public class UserPackageService {
mapper.deletePackage(userId.substring(0, 6), packageName, newStatus.name(), previousStatus.name(), deactivatedAt);
}
public Integer insertPackage(UserPackage userPackage) {
public Long insertPackage(UserPackage userPackage) {
return mapper.insertPackage(userPackage);
}
public void updatePackageStatus(Integer packageId, Status status) {
public void updatePackageStatus(Long packageId, Status status) {
mapper.updatePackageStatus(packageId, status.name());
}
public void updatePackageLastDownloadedReport(Integer id, String fileName) {
public void updatePackageLastDownloadedReport(Long id, String fileName) {
mapper.updatePackageLastDownloadedReport(id, fileName);
}
public void updatePackageOnMonitoringSuccess(Integer id, LocalDateTime monitoringAt) {
public void updatePackageOnMonitoringSuccess(Long id, LocalDateTime monitoringAt) {
mapper.updatePackageOnMonitoringSuccess(id, monitoringAt);
}
public UserPackage findPackage(Integer id) {
public UserPackage findPackage(Long id) {
return mapper.findPackage(id);
}

View file

@ -55,7 +55,7 @@ public class MonitoringReportErrorsStaxtReader extends BaseStaxReader<Monitoring
switch (reader.getAttributeLocalName(i)) {
case "uid" -> {
try {
int uid = Integer.parseInt(text);
Long uid = Long.parseLong(text);
obj.getCurrentPerson().setUid(uid);
} catch (NumberFormatException e) {
log.error("Couldn't parse uid: {}", text);

View file

@ -46,7 +46,7 @@ public class OnlineDownloadReportPersonsStaxReader extends BaseStaxReader<Person
switch (reader.getAttributeLocalName(i)) {
case "uid" -> {
try {
int uid = Integer.parseInt(text);
Long uid = Long.parseLong(text);
obj.getCurrentPerson().setUid(uid);
} catch (NumberFormatException e) {
log.error("Couldn't parse uid: {}", text);

View file

@ -52,7 +52,7 @@
#{previousStatus}
</update>
<select id="insertPackage" resultType="java.lang.Integer"
<select id="insertPackage" resultType="java.lang.Long"
parameterType="ru.nbch.credit_tracker.entities.dto.UserPackage">
INSERT INTO signals_user_packages (membercode, package_name, created_at, status)
values (#{userPackage.userId}, #{userPackage.packageName}, #{userPackage.createdAt}, #{userPackage.status}) RETURNING id

View file

@ -0,0 +1,14 @@
alter table signals_user_packages
alter column id type bigint using id::bigint;
alter table signals_phone_fid_map
alter column id type bigint using id::bigint;
alter table signals_phone_fid_map
alter column package_id type bigint using package_id::bigint;
alter table signals_hits
alter column id type bigint using id::bigint;
alter table signals_hits
alter column package_id type bigint using package_id::bigint;