Prepare data for writing
This commit is contained in:
parent
4633a83a64
commit
d9f23cdff9
5 changed files with 81 additions and 1 deletions
|
|
@ -0,0 +1,30 @@
|
||||||
|
package ru.nbch.credit_tracker.entities.external_request.kafka;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.JsonParser;
|
||||||
|
import com.fasterxml.jackson.core.JsonToken;
|
||||||
|
import com.fasterxml.jackson.databind.DeserializationContext;
|
||||||
|
import com.fasterxml.jackson.databind.JsonDeserializer;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class InquiryDateDeserializer extends JsonDeserializer<LocalDateTime> {
|
||||||
|
@Override
|
||||||
|
public LocalDateTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
|
||||||
|
if (p.currentToken() == JsonToken.START_ARRAY) {
|
||||||
|
List<Integer> dateParts = p.readValueAs(List.class);
|
||||||
|
if (dateParts.size() >= 6) {
|
||||||
|
int year = dateParts.get(0);
|
||||||
|
int month = dateParts.get(1);
|
||||||
|
int day = dateParts.get(2);
|
||||||
|
int hour = dateParts.get(3);
|
||||||
|
int minute = dateParts.get(4);
|
||||||
|
int second = dateParts.get(5);
|
||||||
|
int nano = dateParts.size() > 6 ? dateParts.get(6) : 0;
|
||||||
|
return LocalDateTime.of(year, month, day, hour, minute, second, nano);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,10 +1,14 @@
|
||||||
package ru.nbch.credit_tracker.entities.external_request.kafka;
|
package ru.nbch.credit_tracker.entities.external_request.kafka;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@Getter
|
@Getter
|
||||||
|
|
@ -12,4 +16,26 @@ import lombok.Setter;
|
||||||
public class PackageMessage {
|
public class PackageMessage {
|
||||||
private Integer fid;
|
private Integer fid;
|
||||||
private String memberCode;
|
private String memberCode;
|
||||||
|
@JsonDeserialize(using = InquiryDateDeserializer.class)
|
||||||
|
private LocalDateTime inquiryDate;
|
||||||
|
private String inquiryPurpose;
|
||||||
|
private Long inquiryAmount;
|
||||||
|
private String billingCode;
|
||||||
|
private Integer inquiryType;
|
||||||
|
private List<Person> persons;
|
||||||
|
|
||||||
|
public boolean isNaturalPerson() {
|
||||||
|
return persons != null && !persons.isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public static class Person {
|
||||||
|
private String lastName;
|
||||||
|
private String firstName;
|
||||||
|
private String middleName;
|
||||||
|
private List<Integer> birthDate;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package ru.nbch.credit_tracker.model;
|
package ru.nbch.credit_tracker.model;
|
||||||
|
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
|
import ru.nbch.credit_tracker.entities.external_request.kafka.PackageMessage;
|
||||||
import ru.nbch.credit_tracker.enums.EventType;
|
import ru.nbch.credit_tracker.enums.EventType;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
|
|
@ -12,4 +13,12 @@ public class SignalKafkaEvent {
|
||||||
private EventType eventType;
|
private EventType eventType;
|
||||||
|
|
||||||
private UserPackagePhoneData userPackagePhoneData;
|
private UserPackagePhoneData userPackagePhoneData;
|
||||||
|
private PackageMessage packageMessage;
|
||||||
|
|
||||||
|
private String subjectId;
|
||||||
|
private Integer flagDebt5000;
|
||||||
|
private Integer flag90days;
|
||||||
|
private String signalType;
|
||||||
|
private String busCategory;
|
||||||
|
private Integer segment;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import org.springframework.scheduling.concurrent.CustomizableThreadFactory;
|
||||||
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.app.UserPackage;
|
import ru.nbch.credit_tracker.entities.app.UserPackage;
|
||||||
|
import ru.nbch.credit_tracker.entities.external_request.kafka.PackageMessage;
|
||||||
import ru.nbch.credit_tracker.enums.EventType;
|
import ru.nbch.credit_tracker.enums.EventType;
|
||||||
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;
|
||||||
|
|
@ -17,6 +18,7 @@ import ru.nbch.credit_tracker.utils.error.ExceptionUtils;
|
||||||
|
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.BlockingQueue;
|
import java.util.concurrent.BlockingQueue;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
|
|
@ -82,9 +84,22 @@ public class SignalKafkaEventWriterService {
|
||||||
|
|
||||||
if (!exists) {
|
if (!exists) {
|
||||||
Files.createFile(targetFilePathWithExt);
|
Files.createFile(targetFilePathWithExt);
|
||||||
|
String packageName = packagePhoneData.getPackageName();
|
||||||
// TODO начать запись
|
// TODO начать запись
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String id = packagePhoneData.getSubjectId();
|
||||||
|
Long clientId = packagePhoneData.getPhone();
|
||||||
|
Integer flagDebt5000 = event.getFlagDebt5000();
|
||||||
|
Integer flag90day = event.getFlag90days();
|
||||||
|
|
||||||
|
PackageMessage message = event.getPackageMessage();
|
||||||
|
String signalType = event.getSignalType();
|
||||||
|
String busCategory = event.getBusCategory();
|
||||||
|
LocalDateTime inquiryDate = message.getInquiryDate();
|
||||||
|
String inquiryPurpose = message.getInquiryPurpose();
|
||||||
|
Integer segment = event.getSegment();
|
||||||
|
|
||||||
// TODO записать сигнал
|
// TODO записать сигнал
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("Report was not created for PackageId = {}, PackageName = {}. {}", packagePhoneData.getPackageId(), packagePhoneData.getPackageName(), ExceptionUtils.getStackTrace(e));
|
log.error("Report was not created for PackageId = {}, PackageName = {}. {}", packagePhoneData.getPackageId(), packagePhoneData.getPackageName(), ExceptionUtils.getStackTrace(e));
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@
|
||||||
FROM json_to_recordset(#{json}::json) AS t(
|
FROM json_to_recordset(#{json}::json) AS t(
|
||||||
phone bigint
|
phone bigint
|
||||||
))
|
))
|
||||||
select sup.id AS packageId, sup.signal_types AS signalTypes, spr.phone_l AS phone, spr.subject_id AS subjectId
|
select sup.id AS packageId, sup.signal_types AS signalTypes, sup.membercode AS userId, sup.package_name AS packageName, spr.phone_l AS phone, spr.subject_id AS subjectId
|
||||||
FROM signals_phone_fid_map spr
|
FROM signals_phone_fid_map spr
|
||||||
join signals_user_packages sup on sup.id = spr.package_id
|
join signals_user_packages sup on sup.id = spr.package_id
|
||||||
where spr.phone_l in (select * from src) and sup.status = 'ON_MONITORING'
|
where spr.phone_l in (select * from src) and sup.status = 'ON_MONITORING'
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue