Use signals_phone_fid_map.id instead of subjectId for nbki service mapping; Remove unique id validation
This commit is contained in:
parent
5c824ef0cd
commit
b8975cb415
14 changed files with 23 additions and 29 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<Inquiry> inquiries;
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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", "В системе уже существует пакет с таким именем"),
|
||||
|
|
|
|||
|
|
@ -18,5 +18,5 @@ public interface PhoneFidMapMapper {
|
|||
|
||||
void updatePhoneFidMaps(@Param("subjects") List<PhoneFidMap> subjects);
|
||||
|
||||
PhoneFidMap findPhoneFidMap(@Param("packageId") Integer packageId, @Param("subjectId") String subjectId);
|
||||
PhoneFidMap findPhoneFidMapById(@Param("id") Integer packageId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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-пакета при установке мониторинга)
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,8 +44,15 @@ public class OnlineDownloadReportPersonsStaxReader extends BaseStaxReader<Person
|
|||
for (int i = 0; i < reader.getAttributeCount(); i++) {
|
||||
String text = reader.getAttributeValue(i);
|
||||
switch (reader.getAttributeLocalName(i)) {
|
||||
case "uid" ->
|
||||
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" ->
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ public class SignalsStaxXmlWriter extends StaxXmlWriter<Signals, Person> {
|
|||
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());
|
||||
|
|
|
|||
|
|
@ -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<String> 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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@
|
|||
LIMIT #{limit} OFFSET #{offset}
|
||||
</select>
|
||||
|
||||
<select id="findPhoneFidMap" resultMap="PhoneFidMapResultMap" resultType="ru.nbch.credit_tracker.entities.dto.PhoneFidMap">
|
||||
<select id="findPhoneFidMapById" resultMap="PhoneFidMapResultMap" resultType="ru.nbch.credit_tracker.entities.dto.PhoneFidMap">
|
||||
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
|
||||
</select>
|
||||
|
||||
|
|
|
|||
|
|
@ -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"}
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
|
|||
Binary file not shown.
Loading…
Add table
Reference in a new issue