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 ee92049..0000000 Binary files a/src/test/resources/monitoring_request/no_unique_ids_request.zip and /dev/null differ