From b8975cb4155dac7c72f2a4d2090fc27395cb6134 Mon Sep 17 00:00:00 2001 From: Mikhail Trofimov Date: Mon, 21 Jul 2025 10:39:42 +0300 Subject: [PATCH] Use signals_phone_fid_map.id instead of subjectId for nbki service mapping; Remove unique id validation --- .../builder/PersonFactoryBuilder.java | 4 ++-- .../entities/response/online_download/Person.java | 2 +- .../entities/signal_package/Person.java | 2 +- .../ru/nbch/credit_tracker/enums/SignalError.java | 1 - .../mapper/signal/PhoneFidMapMapper.java | 2 +- .../credit_tracker/service/MonitoringService.java | 2 +- .../credit_tracker/service/SignalService.java | 6 +++--- .../service/signal/PhoneFidMapService.java | 4 ++-- .../OnlineDownloadReportPersonsStaxReader.java | 11 +++++++++-- .../service/xml/stax/SignalsStaxXmlWriter.java | 2 +- .../nbch/credit_tracker/utils/ValidationUtil.java | 7 ------- .../mybatis/mapper/signal/PhoneFidMapMapper.xml | 4 ++-- .../ru/nbch/credit_tracker/utils/UtilTest.java | 5 ----- .../monitoring_request/no_unique_ids_request.zip | Bin 417 -> 0 bytes 14 files changed, 23 insertions(+), 29 deletions(-) delete mode 100644 src/test/resources/monitoring_request/no_unique_ids_request.zip diff --git a/src/main/java/ru/nbch/credit_tracker/builder/PersonFactoryBuilder.java b/src/main/java/ru/nbch/credit_tracker/builder/PersonFactoryBuilder.java index acdac56..cfc9803 100644 --- a/src/main/java/ru/nbch/credit_tracker/builder/PersonFactoryBuilder.java +++ b/src/main/java/ru/nbch/credit_tracker/builder/PersonFactoryBuilder.java @@ -31,7 +31,7 @@ public class PersonFactoryBuilder { private PersonService.PersonData personData; - private String uid; + private Integer uid; public static PersonFactoryBuilder builder() { return new PersonFactoryBuilder(); @@ -42,7 +42,7 @@ public class PersonFactoryBuilder { return this; } - public PersonFactoryBuilder uid(String uid) { + public PersonFactoryBuilder uid(Integer uid) { this.uid = uid; return this; } diff --git a/src/main/java/ru/nbch/credit_tracker/entities/response/online_download/Person.java b/src/main/java/ru/nbch/credit_tracker/entities/response/online_download/Person.java index 10da451..9a2fdb5 100644 --- a/src/main/java/ru/nbch/credit_tracker/entities/response/online_download/Person.java +++ b/src/main/java/ru/nbch/credit_tracker/entities/response/online_download/Person.java @@ -16,7 +16,7 @@ import java.util.List; public class Person { @XmlAttribute(name = "uid", required = true) - protected String uid; + protected Integer uid; @XmlElement(name = "Inquiry", required = true) protected List inquiries; diff --git a/src/main/java/ru/nbch/credit_tracker/entities/signal_package/Person.java b/src/main/java/ru/nbch/credit_tracker/entities/signal_package/Person.java index 3a8210d..b19f32c 100644 --- a/src/main/java/ru/nbch/credit_tracker/entities/signal_package/Person.java +++ b/src/main/java/ru/nbch/credit_tracker/entities/signal_package/Person.java @@ -15,7 +15,7 @@ public class Person { @XmlValue protected String value; @XmlAttribute(name = "uid", required = true) - protected String uid; + protected Integer uid; @XmlAttribute(name = "oksm", required = true) protected String oksm; @XmlAttribute(name = "s", required = true) diff --git a/src/main/java/ru/nbch/credit_tracker/enums/SignalError.java b/src/main/java/ru/nbch/credit_tracker/enums/SignalError.java index 5323fdb..64e75cd 100644 --- a/src/main/java/ru/nbch/credit_tracker/enums/SignalError.java +++ b/src/main/java/ru/nbch/credit_tracker/enums/SignalError.java @@ -4,7 +4,6 @@ public enum SignalError implements IEnumKeyCode { ERROR_001("001", "Ошибка распаковки архива"), ERROR_002("002", "Отсутствует обязательный элемент: "), ERROR_003("003", "Элемент ClientId не соответствует формату XXXXXXXXX"), - ERROR_004("004", "Указан неуникальный Id в пакете: "), ERROR_005("005", "Неверный логин или пароль"), ERROR_006("006", "Доступ к услуге закрыт, обратитесь к курирующему менеджеру"), ERROR_007("007", "В системе уже существует пакет с таким именем"), diff --git a/src/main/java/ru/nbch/credit_tracker/mapper/signal/PhoneFidMapMapper.java b/src/main/java/ru/nbch/credit_tracker/mapper/signal/PhoneFidMapMapper.java index 9060229..c8c29d8 100644 --- a/src/main/java/ru/nbch/credit_tracker/mapper/signal/PhoneFidMapMapper.java +++ b/src/main/java/ru/nbch/credit_tracker/mapper/signal/PhoneFidMapMapper.java @@ -18,5 +18,5 @@ public interface PhoneFidMapMapper { void updatePhoneFidMaps(@Param("subjects") List subjects); - PhoneFidMap findPhoneFidMap(@Param("packageId") Integer packageId, @Param("subjectId") String subjectId); + PhoneFidMap findPhoneFidMapById(@Param("id") Integer packageId); } 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 87c008a..6a2b8a2 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/MonitoringService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/MonitoringService.java @@ -174,7 +174,7 @@ public class MonitoringService { // Если есть хотя бы один заполненный сигнал, значит заполняем остальные данные if (!signals.getSignals().isEmpty()) { - PhoneFidMap subjectData = signalService.findPhoneFidMapBySubjectId(userPackage.getId(), person.getUid()); + PhoneFidMap subjectData = signalService.findPhoneFidMapById(person.getUid()); if (subjectData != null) { Subject subject = new Subject(); subject.setId(subjectData.getSubjectId()); // Уникальный идентификатор субъекта (равен Id из XML-пакета при установке мониторинга) 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 e839a70..da5143a 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/SignalService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/SignalService.java @@ -231,7 +231,7 @@ public class SignalService { PersonService.PersonData personData = personFidMap.get(data.getFid()); Person person = PersonFactoryBuilder.builder() .personData(personData) - .uid(data.getSubjectId()) + .uid(data.getId()) .build(); if (person != null) { persons.add(person); @@ -265,7 +265,7 @@ public class SignalService { userPackageService.updatePackageLastDownloadedReport(id, fileName); } - public PhoneFidMap findPhoneFidMapBySubjectId(Integer packageId, String subjectId) { - return phoneFidMapService.findPhoneFidMap(packageId, subjectId); + public PhoneFidMap findPhoneFidMapById(Integer id) { + return phoneFidMapService.findPhoneFidMapById(id); } } diff --git a/src/main/java/ru/nbch/credit_tracker/service/signal/PhoneFidMapService.java b/src/main/java/ru/nbch/credit_tracker/service/signal/PhoneFidMapService.java index 836a73d..1766fc1 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/signal/PhoneFidMapService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/signal/PhoneFidMapService.java @@ -32,7 +32,7 @@ public class PhoneFidMapService { mapper.updatePhoneFidMaps(subjects); } - public PhoneFidMap findPhoneFidMap(Integer packageId, String subjectId) { - return mapper.findPhoneFidMap(packageId, subjectId); + public PhoneFidMap findPhoneFidMapById(Integer id) { + return mapper.findPhoneFidMapById(id); } } diff --git a/src/main/java/ru/nbch/credit_tracker/service/xml/stax/OnlineDownloadReportPersonsStaxReader.java b/src/main/java/ru/nbch/credit_tracker/service/xml/stax/OnlineDownloadReportPersonsStaxReader.java index 4c765ee..c85fef8 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/xml/stax/OnlineDownloadReportPersonsStaxReader.java +++ b/src/main/java/ru/nbch/credit_tracker/service/xml/stax/OnlineDownloadReportPersonsStaxReader.java @@ -44,8 +44,15 @@ public class OnlineDownloadReportPersonsStaxReader extends BaseStaxReader - obj.getCurrentPerson().setUid(text); + case "uid" -> { + try { + int uid = Integer.parseInt(text); + obj.getCurrentPerson().setUid(uid); + } catch (NumberFormatException e) { + log.error("Couldn't parse uid: {}", text); + throw new RuntimeException(e); + } + } case "date" -> obj.getCurrentPerson().getCurrentInquiry().setDate(text); case "bus_category" -> diff --git a/src/main/java/ru/nbch/credit_tracker/service/xml/stax/SignalsStaxXmlWriter.java b/src/main/java/ru/nbch/credit_tracker/service/xml/stax/SignalsStaxXmlWriter.java index 03d68c1..b009e4b 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/xml/stax/SignalsStaxXmlWriter.java +++ b/src/main/java/ru/nbch/credit_tracker/service/xml/stax/SignalsStaxXmlWriter.java @@ -76,7 +76,7 @@ public class SignalsStaxXmlWriter extends StaxXmlWriter { return; } writerWrapper.addStartElement(name); - writerWrapper.addAttribute("uid", person.getUid()); + writerWrapper.addAttribute("uid", String.valueOf(person.getUid())); writerWrapper.addAttribute("oksm", person.getOksm()); writerWrapper.addAttribute("s", person.getS()); writerWrapper.addAttribute("n", person.getN()); diff --git a/src/main/java/ru/nbch/credit_tracker/utils/ValidationUtil.java b/src/main/java/ru/nbch/credit_tracker/utils/ValidationUtil.java index 4251522..bdfb989 100644 --- a/src/main/java/ru/nbch/credit_tracker/utils/ValidationUtil.java +++ b/src/main/java/ru/nbch/credit_tracker/utils/ValidationUtil.java @@ -6,8 +6,6 @@ import ru.nbch.credit_tracker.enums.SignalError; import ru.nbch.credit_tracker.enums.XmlErrorFormat; import ru.nbch.credit_tracker.exceptions.SignalClientException; -import java.util.HashSet; -import java.util.Set; import java.util.regex.Pattern; import static ru.nbch.credit_tracker.utils.error.ExceptionUtils.clientExcp; @@ -47,7 +45,6 @@ public class ValidationUtil { throw clientExcp(SignalError.ERROR_008, XmlErrorFormat.MonitoringError); } - Set uniqueIds = new HashSet<>(); for (Subject subject : request.getSubjects().getSubject()) { if (!validatePhone(subject.getClientId())) { throw clientExcp(SignalError.ERROR_003, XmlErrorFormat.MonitoringError); @@ -55,10 +52,6 @@ public class ValidationUtil { if (!validateNPId(subject.getId())) { throw clientExcp(SignalError.ERROR_010, XmlErrorFormat.MonitoringError); } - // проверка на уникальность Id внутри одного пакета - if (!uniqueIds.add(subject.getId())) { - throw clientExcp(SignalError.ERROR_004, XmlErrorFormat.MonitoringError, subject.getId()); - } } } diff --git a/src/main/resources/mybatis/mapper/signal/PhoneFidMapMapper.xml b/src/main/resources/mybatis/mapper/signal/PhoneFidMapMapper.xml index 1d80a1c..ce9c028 100644 --- a/src/main/resources/mybatis/mapper/signal/PhoneFidMapMapper.xml +++ b/src/main/resources/mybatis/mapper/signal/PhoneFidMapMapper.xml @@ -63,7 +63,7 @@ LIMIT #{limit} OFFSET #{offset} - SELECT id, package_id, subject_id, @@ -73,7 +73,7 @@ flag_debt5000, calculated_at FROM signals_phone_fid_map - WHERE package_id = #{packageId} AND subject_id = #{subjectId} + WHERE id = #{id} LIMIT 1 diff --git a/src/test/java/ru/nbch/credit_tracker/utils/UtilTest.java b/src/test/java/ru/nbch/credit_tracker/utils/UtilTest.java index b2cf3c4..c737601 100644 --- a/src/test/java/ru/nbch/credit_tracker/utils/UtilTest.java +++ b/src/test/java/ru/nbch/credit_tracker/utils/UtilTest.java @@ -119,11 +119,6 @@ public class UtilTest { "/monitoring_request/invalid_id_request.zip", SignalError.ERROR_010, Collections.emptyList().toArray(new Object[0]) - ), - Arguments.of( - "/monitoring_request/no_unique_ids_request.zip", - SignalError.ERROR_004, - new Object[]{"abc125"} ) ); } diff --git a/src/test/resources/monitoring_request/no_unique_ids_request.zip b/src/test/resources/monitoring_request/no_unique_ids_request.zip deleted file mode 100644 index ee9204970b1392e35382fd18f4dcf21fff2a790a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 417 zcmWIWW@Zs#U|`^2u*rB7^{u~t=}REbn2CWw5=iIe$Cu`17M7;QXQmX#7o`GO#U*+b zxjAbmTKgY15NS>Sq`m0P1NWRDmFuDU>T3 zJ*W8Z&!uX+&szO!KP8=hoOAbLPo8ZBOE<1A43duCb?d&7UZl~*iL)%Tn^qgtwC~sb zv0$-9SiIb-=|RC>H*5NA`?_S#nAM-&yFNDbRfD$3%ar+|`+su9edc{}^ZTQhAB%tO zNhoSbb-ol6oh`?qIbCycQ+Ks%)q3WMeIdIccUxWSQ>^=j-R@ZV^0etzGnF|67223#Se0t_P% rPymy7!ix*4gpomlA-<+2+~W0ZMyMV*72wUv2I4RRVK$If0IL81cv6~v